Index: lams_tool_leader/.classpath =================================================================== diff -u --- lams_tool_leader/.classpath (revision 0) +++ lams_tool_leader/.classpath (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_leader/.cvsignore =================================================================== diff -u --- lams_tool_leader/.cvsignore (revision 0) +++ lams_tool_leader/.cvsignore (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,3 @@ +build +.myeclipse +.mymetadata Index: lams_tool_leader/.project =================================================================== diff -u --- lams_tool_leader/.project (revision 0) +++ lams_tool_leader/.project (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,49 @@ + + + lams_tool_leader + + + + + + com.genuitec.eclipse.j2eedt.core.WebClasspathBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.genuitec.eclipse.j2eedt.core.J2EEProjectValidator + + + + + com.genuitec.eclipse.j2eedt.core.DeploymentDescriptorValidator + + + + + com.ibm.etools.validation.validationbuilder + + + + + com.ibm.sse.model.structuredbuilder + + + + + com.genuitec.eclipse.hibernate.HibernateBuilder + + + + + + com.genuitec.eclipse.hibernate.hibernatenature + com.genuitec.eclipse.j2eedt.core.webnature + org.eclipse.jdt.core.javanature + + Index: lams_tool_leader/build.properties =================================================================== diff -u --- lams_tool_leader/build.properties (revision 0) +++ lams_tool_leader/build.properties (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,7 @@ +# Minimum compatible version of server +min.server.version.number=2.0 + +signature=lalead11 +tool.version=20130422 +tool.hide=false +tool.short.name=leaderselection Index: lams_tool_leader/build.xml =================================================================== diff -u --- lams_tool_leader/build.xml (revision 0) +++ lams_tool_leader/build.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,7 @@ + + + + + + + Index: lams_tool_leader/conf/hibernate/mappings/hibernate.cfg.xml =================================================================== diff -u --- lams_tool_leader/conf/hibernate/mappings/hibernate.cfg.xml (revision 0) +++ lams_tool_leader/conf/hibernate/mappings/hibernate.cfg.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,12 @@ + + + + + @db.username@ + @db.password@ + @db.url.run@ + @db.driver@ + org.hibernate.dialect.MySQLDialect + + Index: lams_tool_leader/conf/language/lams/ApplicationResources.properties =================================================================== diff -u --- lams_tool_leader/conf/language/lams/ApplicationResources.properties (revision 0) +++ lams_tool_leader/conf/language/lams/ApplicationResources.properties (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,11 @@ +appName = leader +#language code: en +#locale code: AU + + # CVS ID: $Id$ Exported from the LAMS Community by Ernie Ghiglione on Thu Aug 30 09:17:50 CST 2012 + +#=================== labels for Notebook =================# + + + +#======= End labels: Exported 113 labels for en AU ===== Index: lams_tool_leader/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u --- lams_tool_leader/conf/language/lams/ApplicationResources_en_AU.properties (revision 0) +++ lams_tool_leader/conf/language/lams/ApplicationResources_en_AU.properties (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,65 @@ +appName = leader +#language code: en +#locale code: AU + + # CVS ID: $Id$ Exported from the LAMS Community by Ernie Ghiglione on Thu Aug 30 09:17:50 CST 2012 + +#=================== labels for Notebook =================# + +tool.display.name =Leader Selection +tool.description =Leader Selection Tool +activity.title =Leader Selection +activity.description =Leader Selection Tool +activity.helptext =Leader Selection +pageTitle.authoring =Leader Selection Authoring +button.basic =Basic +label.authoring.basic.title =Title: +label.authoring.basic.instructions =Instructions: +message.unsavedChanges =Page contains unsaved changes +message.defineLaterSet =Please wait for the instructor to complete the contents of this activity +message.runOfflineSet =This activity is not being done on the computer. Please see your instructor for details. +pageTitle.monitoring =Leader Selection Monitoring +button.summary =Summary +button.editActivity =Edit Activity +button.statistics =Statistics +titleHeading.summary =Summary +titleHeading.instructions =Instructions +titleHeading.statistics =Statistics +titleHeading.editActivity =Edit Activity +titleHeading.exportPortfolio =Export Portfolio +heading.group =Group {0}: +heading.totalLearners =Number of Learners: +heading.totalLearnersInGroup =Total Number of Learners in Group: +heading.totalFinishedLearnersInGroup =Number of Finished Learners: +message.contentInUseSet =Modification of content is not allowed since one or more learners has attempted the activity. +message.summary =There is no summary available for this tool. +heading.learner =Learner +button.cancel =Cancel +button.save =Save +button.finish =Next Activity +button.submit =Finish +authoring.msg.cancel.save =Do you want to close this window without saving? +button.try.again =Try Again +message.alertContentEdit =Warning: One of more learners have accessed this activity. Changing this content will result in learners getting different information. +textsearch.heading =Entry that... +textsearch.all.words =has all these words: +textsearch.phrase =has this exact wording or phrase: +textsearch.any.words =has one or more of these words: +output.desc.all.users.entries.definition.notebook =Each student's entry in Leader Selection +output.desc.user.is.leader =Is user a leader +label.group.leader =Group Leader: +label.are.you.going.to.be.leader =Are you going to be a leader of this group? +label.leader.selection =Leader selection +label.users.from.group =Users participating in current group: +label.yes.become.leader =Yes, I want to become a leader +label.no =No +label.refresh =Refresh +label.waiting.for.leader =Please, wait while somebody will become a group leader. +label.manage.leaders =Manage Leaders +label.plese.select.leaders =Please, select leaders +label.no.leader.yet =no +heading.leader =Group Leader +monitoring.label.group =Group + + +#======= End labels: Exported 113 labels for en AU ===== Index: lams_tool_leader/conf/xdoclet/error-pages.xml =================================================================== diff -u --- lams_tool_leader/conf/xdoclet/error-pages.xml (revision 0) +++ lams_tool_leader/conf/xdoclet/error-pages.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,13 @@ + + 500 + /error.jsp + + + 403 + /403.jsp + + + 404 + /404.jsp + + Index: lams_tool_leader/conf/xdoclet/filter-mappings.xml =================================================================== diff -u --- lams_tool_leader/conf/xdoclet/filter-mappings.xml (revision 0) +++ lams_tool_leader/conf/xdoclet/filter-mappings.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,21 @@ + + UrlRewriteFilter + /* + REQUEST + FORWARD + + + + SystemSessionFilter + /* + + + + hibernateFilter + /* + + + + LocaleFilter + /* + Index: lams_tool_leader/conf/xdoclet/filters.xml =================================================================== diff -u --- lams_tool_leader/conf/xdoclet/filters.xml (revision 0) +++ lams_tool_leader/conf/xdoclet/filters.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,29 @@ + + UrlRewriteFilter + org.tuckey.web.filters.urlrewrite.UrlRewriteFilter + + + + SystemSessionFilter + + org.lamsfoundation.lams.web.session.SystemSessionFilter + + + + + hibernateFilter + + org.lamsfoundation.lams.util.CustomizedOpenSessionInViewFilter + + + sessionFactoryBeanName + coreSessionFactory + + + + + LocaleFilter + + org.lamsfoundation.lams.web.filter.LocaleFilter + + Index: lams_tool_leader/conf/xdoclet/global-forwards.xml =================================================================== diff -u --- lams_tool_leader/conf/xdoclet/global-forwards.xml (revision 0) +++ lams_tool_leader/conf/xdoclet/global-forwards.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,3 @@ + + + Index: lams_tool_leader/conf/xdoclet/listeners.xml =================================================================== diff -u --- lams_tool_leader/conf/xdoclet/listeners.xml (revision 0) +++ lams_tool_leader/conf/xdoclet/listeners.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,11 @@ + + + org.springframework.web.context.ContextLoaderListener + + + + + org.lamsfoundation.lams.web.session.SetMaxTimeoutListener + + + Index: lams_tool_leader/conf/xdoclet/servlet-mappings.xml =================================================================== diff -u --- lams_tool_leader/conf/xdoclet/servlet-mappings.xml (revision 0) +++ lams_tool_leader/conf/xdoclet/servlet-mappings.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,15 @@ + + action + *.do + + + + + Connector + /ckeditor/filemanager/browser/default/connectors/jsp/connector + + + + exportPortfolio + /exportPortfolio + Index: lams_tool_leader/conf/xdoclet/servlets.xml =================================================================== diff -u --- lams_tool_leader/conf/xdoclet/servlets.xml (revision 0) +++ lams_tool_leader/conf/xdoclet/servlets.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,43 @@ + + action + org.apache.struts.action.ActionServlet + + config + /WEB-INF/struts-config.xml + + + debug + 999 + + + detail + 2 + + + validate + true + + 1 + + + + + + Connector + net.fckeditor.connector.ConnectorServlet + + baseDir + /UserFiles/ + + + debug + false + + 1 + + + + exportPortfolio + org.lamsfoundation.lams.tool.leaderselection.web.servlets.ExportServlet + + Index: lams_tool_leader/conf/xdoclet/struts-actions.xml =================================================================== diff -u --- lams_tool_leader/conf/xdoclet/struts-actions.xml (revision 0) +++ lams_tool_leader/conf/xdoclet/struts-actions.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1 @@ \ No newline at end of file Index: lams_tool_leader/conf/xdoclet/struts-forms.xml =================================================================== diff -u --- lams_tool_leader/conf/xdoclet/struts-forms.xml (revision 0) +++ lams_tool_leader/conf/xdoclet/struts-forms.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1 @@ \ No newline at end of file Index: lams_tool_leader/conf/xdoclet/struts-message-resources.xml =================================================================== diff -u --- lams_tool_leader/conf/xdoclet/struts-message-resources.xml (revision 0) +++ lams_tool_leader/conf/xdoclet/struts-message-resources.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1 @@ + Index: lams_tool_leader/conf/xdoclet/struts-plugins.xml =================================================================== diff -u --- lams_tool_leader/conf/xdoclet/struts-plugins.xml (revision 0) +++ lams_tool_leader/conf/xdoclet/struts-plugins.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,9 @@ + + + + Index: lams_tool_leader/conf/xdoclet/taglibs.xml =================================================================== diff -u --- lams_tool_leader/conf/xdoclet/taglibs.xml (revision 0) +++ lams_tool_leader/conf/xdoclet/taglibs.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,89 @@ + + + + + + + tags-bean + /WEB-INF/tlds/struts/struts-bean.tld + + + + tags-html + /WEB-INF/tlds/struts/struts-html.tld + + + + tags-logic + /WEB-INF/tlds/struts/struts-logic.tld + + + + tags-tiles + /WEB-INF/tlds/struts/struts-tiles.tld + + + + tags-bean-el + /WEB-INF/tlds/struts/struts-bean-el.tld + + + tags-html-el + /WEB-INF/tlds/struts/struts-html-el.tld + + + tags-logic-el + /WEB-INF/tlds/struts/struts-logic-el.tld + + + tags-tiles-el + /WEB-INF/tlds/struts/struts-tiles-el.tld + + + + + + + tags-fmt + /WEB-INF/tlds/jstl/fmt.tld + + + + tags-core + /WEB-INF/tlds/jstl/c.tld + + + + tags-function + /WEB-INF/tlds/jstl/fn.tld + + + + tags-xml + /WEB-INF/tlds/jstl/x.tld + + + + + + + tags-permittedTaglibs + /WEB-INF/tlds/jstl/permittedTaglibs.tld + + + + tags-scriptfree + /WEB-INF/tlds/jstl/scriptfree.tld + + + + + + + + tags-lams + /WEB-INF/tlds/lams/lams.tld + + + + Index: lams_tool_leader/conf/xdoclet/web-security.xml =================================================================== diff -u --- lams_tool_leader/conf/xdoclet/web-security.xml (revision 0) +++ lams_tool_leader/conf/xdoclet/web-security.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,103 @@ + + + + Secure Content + *.jsp + *.html + *.do + + + LEARNER + TEACHER + MONITOR + AUTHOR + ADMIN + SYSADMIN + AUTHOR ADMIN + + + + + + Authoring Update + /authoring.do + + + AUTHOR + AUTHOR ADMIN + SYSADMIN + + + + + + Staff Content + /monitoring.do + + + MONITOR + TEACHER + + + + + + + Download Files + /download/ + + + AUTHOR + MONITOR + TEACHER + ADMIN + SYSADMIN + AUTHOR ADMIN + + + + + + FORM + LAMS + + /login.jsp + /login.jsp?failed=y + + + + + + + Student + LEARNER + + + Student + TEACHER + + + + Can create/modify a learning design + AUTHOR + + + + Can running and monitoring a learning session + MONITOR + + + + Can add/remove users to the system, set up classes of users for sessions + ADMIN + + + + Can add/remove users to the system, set up classes of users for sessions + SYSADMIN + + + + Can create/modify a learning design and edit default tool content + AUTHOR ADMIN + Index: lams_tool_leader/conf/xdoclet/web-settings.xml =================================================================== diff -u --- lams_tool_leader/conf/xdoclet/web-settings.xml (revision 0) +++ lams_tool_leader/conf/xdoclet/web-settings.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,24 @@ + + + + javax.servlet.jsp.jstl.fmt.localizationContext + org.lamsfoundation.lams.tool.leaderselection.ApplicationResources + + + + contextClass + org.jboss.spring.factory.VFSXmlWebApplicationContext + + + contextConfigLocation + classpath:/org/lamsfoundation/lams/tool/leaderselection/dbupdates/autopatchContext.xml + + + locatorFactorySelector + classpath:/org/lamsfoundation/lams/beanRefContext.xml + + + parentContextKey + context.central + + Index: lams_tool_leader/db/model/leaderselection_tool.clay =================================================================== diff -u --- lams_tool_leader/db/model/leaderselection_tool.clay (revision 0) +++ lams_tool_leader/db/model/leaderselection_tool.clay (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,628 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
Index: lams_tool_leader/db/sql/activity_insert.sql =================================================================== diff -u --- lams_tool_leader/db/sql/activity_insert.sql (revision 0) +++ lams_tool_leader/db/sql/activity_insert.sql (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,80 @@ +-- CVS ID: $Id$ + +INSERT INTO lams_learning_activity +( +activity_ui_id +, description +, title +, help_text +, xcoord +, ycoord +, parent_activity_id +, parent_ui_id +, learning_activity_type_id +, grouping_support_type_id +, apply_grouping_flag +, grouping_id +, grouping_ui_id +, order_id +, define_later_flag +, learning_design_id +, learning_library_id +, create_date_time +, run_offline_flag +, max_number_of_options +, min_number_of_options +, options_instructions +, tool_id +, tool_content_id +, activity_category_id +, gate_activity_level_id +, gate_open_flag +, gate_start_time_offset +, gate_end_time_offset +, gate_start_date_time +, gate_end_date_time +, library_activity_ui_image +, create_grouping_id +, create_grouping_ui_id +, library_activity_id +, language_file +) +VALUES +( +NULL +, 'Leaderselection Tool' +, 'Leaderselection Tool' +, 'Put some help text here.' +, NULL +, NULL +, NULL +, NULL +, 1 +, 2 +, 0 +, NULL +, NULL +, NULL +, 0 +, NULL +, ${learning_library_id} +, NOW() +, 0 +, NULL +, NULL +, NULL +, ${tool_id} +, NULL +, 6 +, NULL +, NULL +, NULL +, NULL +, NULL +, NULL +, 'tool/lalead11/images/icon_leaderselection.swf' +, NULL +, NULL +, NULL +, 'org.lamsfoundation.lams.tool.leaderselection.ApplicationResources' +) Index: lams_tool_leader/db/sql/create_lams_tool_leaderselection.sql =================================================================== diff -u --- lams_tool_leader/db/sql/create_lams_tool_leaderselection.sql (revision 0) +++ lams_tool_leader/db/sql/create_lams_tool_leaderselection.sql (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,30 @@ +-- CVS ID: $Id$ + +SET FOREIGN_KEY_CHECKS=0; +DROP TABLE IF EXISTS tl_lalead11_leaderselection; +DROP TABLE IF EXISTS tl_lalead11_session; +DROP TABLE IF EXISTS tl_lalead11_user; +CREATE TABLE tl_lalead11_leaderselection (uid BIGINT NOT NULL AUTO_INCREMENT, create_date DATETIME, update_date DATETIME, create_by BIGINT, title VARCHAR(255), instructions TEXT, run_offline BIT, content_in_use BIT, define_later BIT, tool_content_id BIGINT, PRIMARY KEY (uid))ENGINE=InnoDB; +CREATE TABLE tl_lalead11_session (uid BIGINT NOT NULL AUTO_INCREMENT, session_end_date DATETIME, session_start_date DATETIME, status integer, session_id BIGINT, session_name VARCHAR(250), leaderselection_uid BIGINT, group_leader_uid BIGINT, PRIMARY KEY (uid))ENGINE=InnoDB; +CREATE TABLE tl_lalead11_user (uid BIGINT NOT NULL AUTO_INCREMENT, user_id BIGINT, last_name VARCHAR(255), login_name VARCHAR(255), first_name VARCHAR(255), finishedActivity BIT, leaderselection_session_uid BIGINT, PRIMARY KEY (uid))ENGINE=InnoDB; +ALTER TABLE tl_lalead11_session ADD INDEX FK_NEW_1316293302_B7C198E2FC940906 (leaderselection_uid), ADD CONSTRAINT FK_NEW_1316293302_B7C198E2FC940906 FOREIGN KEY (leaderselection_uid) REFERENCES tl_lalead11_leaderselection (uid); +ALTER TABLE tl_lalead11_session ADD INDEX FK_lalead11_1 (group_leader_uid), ADD CONSTRAINT FK_lalead11_1 FOREIGN KEY (group_leader_uid) REFERENCES tl_lalead11_user (uid); +ALTER TABLE tl_lalead11_user ADD INDEX FK_NEW_1316293302_CB8A58FFA3B0FADF (leaderselection_session_uid), ADD CONSTRAINT FK_NEW_1316293302_CB8A58FFA3B0FADF FOREIGN KEY (leaderselection_session_uid) REFERENCES tl_lalead11_session (uid); + +INSERT INTO tl_lalead11_leaderselection ( + title, + instructions, + tool_content_id, + run_offline, + content_in_use, + define_later) +VALUES( + "Leader Selection", + "Instructions", + ${default_content_id}, + 0, + 0, + 0 +); + +SET FOREIGN_KEY_CHECKS=1; Index: lams_tool_leader/db/sql/db_version_insert.sql =================================================================== diff -u --- lams_tool_leader/db/sql/db_version_insert.sql (revision 0) +++ lams_tool_leader/db/sql/db_version_insert.sql (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,2 @@ +-- $Id$ +INSERT INTO patches VALUES ('@signature@', '@tool_version@', NOW(), 'F'); Index: lams_tool_leader/db/sql/drop_lams_tool_leaderselection.sql =================================================================== diff -u --- lams_tool_leader/db/sql/drop_lams_tool_leaderselection.sql (revision 0) +++ lams_tool_leader/db/sql/drop_lams_tool_leaderselection.sql (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,12 @@ +-- CVS ID: $Id$ + +SET FOREIGN_KEY_CHECKS=0; +DROP TABLE IF EXISTS tl_lalead11_user; +DROP TABLE IF EXISTS tl_lalead11_session; +DROP TABLE IF EXISTS tl_lalead11_leaderselection; +SET FOREIGN_KEY_CHECKS=1; + + + + + Index: lams_tool_leader/db/sql/library_insert.sql =================================================================== diff -u --- lams_tool_leader/db/sql/library_insert.sql (revision 0) +++ lams_tool_leader/db/sql/library_insert.sql (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,16 @@ +-- CVS ID: $Id$ + +INSERT INTO lams_learning_library +( +description, +title, +valid_flag, +create_date_time +) +VALUES +( +'Leaderselection Tool', +'Leaderselection', +0, +NOW() +) Index: lams_tool_leader/db/sql/table-schema.sql =================================================================== diff -u --- lams_tool_leader/db/sql/table-schema.sql (revision 0) +++ lams_tool_leader/db/sql/table-schema.sql (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,15 @@ +alter table tl_lalead11_session drop foreign key FK_NEW_1316293302_B7C198E2FC940906; +alter table tl_lalead11_user drop foreign key FK_NEW_1316293302_CB8A58FFA3B0FADF; +drop table if exists lams_branch_condition; +drop table if exists lams_text_search_condition; +drop table if exists tl_lalead11_leaderselection; +drop table if exists tl_lalead11_session; +drop table if exists tl_lalead11_user; +create table lams_branch_condition (condition_id bigint not null auto_increment, condition_ui_id integer, order_id integer, name varchar(255), display_name varchar(255), type varchar(255), start_value varchar(255), end_value varchar(255), exact_match_value varchar(255), primary key (condition_id)); +create table lams_text_search_condition (condition_id bigint not null, text_search_all_words varchar(255), text_search_phrase varchar(255), text_search_any_words varchar(255), text_search_excluded_words varchar(255), primary key (condition_id)); +create table tl_lalead11_leaderselection (uid bigint not null auto_increment, create_date datetime, update_date datetime, create_by bigint, title varchar(255), instructions longtext, run_offline bit, lock_on_finished bit, allow_rich_editor bit, online_instructions longtext, offline_instructions longtext, content_in_use bit, define_later bit, submission_deadline datetime, tool_content_id bigint, primary key (uid)); +create table tl_lalead11_session (uid bigint not null auto_increment, session_end_date datetime, session_start_date datetime, status integer, session_id bigint, session_name varchar(250), leaderselection_uid bigint, primary key (uid)); +create table tl_lalead11_user (uid bigint not null auto_increment, user_id bigint, last_name varchar(255), login_name varchar(255), first_name varchar(255), finishedActivity bit, leaderselection_session_uid bigint, entry_uid bigint, primary key (uid)); +alter table lams_text_search_condition add index FK_NEW_1316293302_69B884B21E70F543 (condition_id), add constraint FK_NEW_1316293302_69B884B21E70F543 foreign key (condition_id) references lams_branch_condition (condition_id); +alter table tl_lalead11_session add index FK_NEW_1316293302_B7C198E2FC940906 (leaderselection_uid), add constraint FK_NEW_1316293302_B7C198E2FC940906 foreign key (leaderselection_uid) references tl_lalead11_leaderselection (uid); +alter table tl_lalead11_user add index FK_NEW_1316293302_CB8A58FFA3B0FADF (leaderselection_session_uid), add constraint FK_NEW_1316293302_CB8A58FFA3B0FADF foreign key (leaderselection_session_uid) references tl_lalead11_session (uid); Index: lams_tool_leader/db/sql/tool_insert.sql =================================================================== diff -u --- lams_tool_leader/db/sql/tool_insert.sql (revision 0) +++ lams_tool_leader/db/sql/tool_insert.sql (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,60 @@ +-- CVS ID: $Id$ + +INSERT INTO lams_tool +( +tool_signature, +service_name, +tool_display_name, +description, +tool_identifier, +tool_version, +learning_library_id, +default_tool_content_id, +valid_flag, +grouping_support_type_id, +supports_run_offline_flag, +learner_url, +learner_preview_url, +learner_progress_url, +author_url, +monitor_url, +define_later_url, +export_pfolio_learner_url, +export_pfolio_class_url, +contribute_url, +moderation_url, +help_url, +language_file, +create_date_time, +modified_date_time, +supports_outputs +) +VALUES +( +'lalead11', +'leaderselectionService', +'Leaderselection', +'Leaderselection', +'leaderselection', +'@tool_version@', +NULL, +NULL, +0, +2, +1, +'tool/lalead11/learning.do?mode=learner', +'tool/lalead11/learning.do?mode=author', +'tool/lalead11/learning.do?mode=teacher', +'tool/lalead11/authoring.do', +'tool/lalead11/monitoring.do', +'tool/lalead11/authoring.do?mode=teacher', +'tool/lalead11/exportPortfolio?mode=learner', +'tool/lalead11/exportPortfolio?mode=teacher', +'tool/lalead11/contribute.do', +'tool/lalead11/moderate.do', +'http://wiki.lamsfoundation.org/display/lamsdocs/lalead11', +'org.lamsfoundation.lams.tool.leaderselection.ApplicationResources', +NOW(), +NOW(), +1 +) Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/ILeaderselectionDAO.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/ILeaderselectionDAO.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/ILeaderselectionDAO.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,42 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.dao; + +import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.tool.leaderselection.model.Leaderselection; + +/** + * DAO for accessing the Leaderselection objects - interface defining methods to be implemented by the Hibernate or + * other implementation. + */ +public interface ILeaderselectionDAO extends IBaseDAO { + + Leaderselection getByContentId(Long toolContentId); + + void saveOrUpdate(Leaderselection toContent); + + void releaseFromCache(Object o); + +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/ILeaderselectionSessionDAO.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/ILeaderselectionSessionDAO.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/ILeaderselectionSessionDAO.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,41 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.dao; + +import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionSession; + +/** + * DAO for accessing the LeaderselectionSession objects - interface defining methods to be implemented by the Hibernate + * or other implementation. + */ +public interface ILeaderselectionSessionDAO extends IBaseDAO { + + void saveOrUpdate(LeaderselectionSession session); + + LeaderselectionSession getBySessionId(Long toolSessionId); + + void deleteBySessionID(Long toolSessionID); +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/ILeaderselectionUserDAO.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/ILeaderselectionUserDAO.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/ILeaderselectionUserDAO.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,55 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.dao; + +import java.util.List; + +import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionUser; + +/** + * DAO for accessing the LeaderselectionUser objects - interface defining methods to be implemented by the Hibernate or + * other implementation. + */ +public interface ILeaderselectionUserDAO extends IBaseDAO { + /** + * + * @param userId + * @param toolSessionId + * @return + */ + LeaderselectionUser getByUserIdAndSessionId(Long userId, Long toolSessionId); + + void saveOrUpdate(LeaderselectionUser leaderselectionUser); + + /** + * + * @param uid + * @return + */ + LeaderselectionUser getByUID(Long uid); + + List getBySessionId(Long sessionId); +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/hibernate/LeaderselectionDAO.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/hibernate/LeaderselectionDAO.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/hibernate/LeaderselectionDAO.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,61 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.dao.hibernate; + +import java.util.List; + +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.tool.leaderselection.dao.ILeaderselectionDAO; +import org.lamsfoundation.lams.tool.leaderselection.model.Leaderselection; + +/** + * DAO for accessing the Leaderselection objects - Hibernate specific code. + */ +public class LeaderselectionDAO extends BaseDAO implements ILeaderselectionDAO { + + private static final String FIND_FORUM_BY_CONTENTID = "from Leaderselection leaderselection where leaderselection.toolContentId=?"; + + @Override + public Leaderselection getByContentId(Long toolContentId) { + List list = getHibernateTemplate().find(LeaderselectionDAO.FIND_FORUM_BY_CONTENTID, toolContentId); + if (list != null && list.size() > 0) { + return (Leaderselection) list.get(0); + } else { + return null; + } + } + + @Override + public void saveOrUpdate(Leaderselection leaderselection) { + this.getHibernateTemplate().saveOrUpdate(leaderselection); + this.getHibernateTemplate().flush(); + } + + @Override + public void releaseFromCache(Object o) { + getSession().evict(o); + + } +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/hibernate/LeaderselectionSessionDAO.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/hibernate/LeaderselectionSessionDAO.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/hibernate/LeaderselectionSessionDAO.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,63 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.dao.hibernate; + +import java.util.List; + +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.tool.leaderselection.dao.ILeaderselectionSessionDAO; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionSession; + +/** + * DAO for accessing the LeaderselectionSession objects - Hibernate specific code. + */ +public class LeaderselectionSessionDAO extends BaseDAO implements ILeaderselectionSessionDAO { + + public static final String SQL_QUERY_FIND_BY_SESSION_ID = "from " + LeaderselectionSession.class.getName() + + " where session_id=?"; + + @Override + public void saveOrUpdate(LeaderselectionSession session) { + this.getHibernateTemplate().saveOrUpdate(session); + this.getHibernateTemplate().flush(); + } + + @Override + public LeaderselectionSession getBySessionId(Long toolSessionId) { + List list = this.getHibernateTemplate().find(SQL_QUERY_FIND_BY_SESSION_ID, toolSessionId); + if (list == null || list.isEmpty()) + return null; + return (LeaderselectionSession) list.get(0); + } + + @Override + public void deleteBySessionID(Long toolSessionID) { + LeaderselectionSession session = getBySessionId(toolSessionID); + if (session != null) { + this.getHibernateTemplate().delete(session); + this.getHibernateTemplate().flush(); + } + } +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/hibernate/LeaderselectionUserDAO.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/hibernate/LeaderselectionUserDAO.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dao/hibernate/LeaderselectionUserDAO.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,80 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.dao.hibernate; + +import java.util.List; + +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.tool.leaderselection.dao.ILeaderselectionUserDAO; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionUser; + +/** + * DAO for accessing the LeaderselectionUser objects - Hibernate specific code. + */ +public class LeaderselectionUserDAO extends BaseDAO implements ILeaderselectionUserDAO { + + public static final String SQL_QUERY_FIND_BY_USER_ID_SESSION_ID = "from " + LeaderselectionUser.class.getName() + + " as f" + " where user_id=? and f.leaderselectionSession.sessionId=?"; + + public static final String SQL_QUERY_FIND_BY_LOGIN_NAME_SESSION_ID = "from " + LeaderselectionUser.class.getName() + + " as f where login_name=? and f.leaderselectionSession.sessionId=?"; + + private static final String SQL_QUERY_FIND_BY_UID = "from " + LeaderselectionUser.class.getName() + " where uid=?"; + + private static final String FIND_BY_SESSION_ID = "from " + LeaderselectionUser.class.getName() + + " as u where u.leaderselectionSession.sessionId=?"; + + @Override + public LeaderselectionUser getByUserIdAndSessionId(Long userId, Long toolSessionId) { + List list = this.getHibernateTemplate().find(SQL_QUERY_FIND_BY_USER_ID_SESSION_ID, + new Object[] { userId, toolSessionId }); + + if (list == null || list.isEmpty()) + return null; + + return (LeaderselectionUser) list.get(0); + } + + @Override + public void saveOrUpdate(LeaderselectionUser leaderselectionUser) { + this.getHibernateTemplate().saveOrUpdate(leaderselectionUser); + this.getHibernateTemplate().flush(); + } + + @Override + public LeaderselectionUser getByUID(Long uid) { + List list = this.getHibernateTemplate().find(SQL_QUERY_FIND_BY_UID, new Object[] { uid }); + + if (list == null || list.isEmpty()) + return null; + + return (LeaderselectionUser) list.get(0); + } + + @Override + public List getBySessionId(Long sessionId) { + return this.getHibernateTemplate().find(FIND_BY_SESSION_ID, sessionId); + } +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dbupdates/autopatchContext.xml =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dbupdates/autopatchContext.xml (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dbupdates/autopatchContext.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,11 @@ + + + + + + + + + + + Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dto/LeaderselectionDTO.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dto/LeaderselectionDTO.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dto/LeaderselectionDTO.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,120 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.tool.leaderselection.dto; + +import java.util.Date; +import java.util.Iterator; +import java.util.Set; +import java.util.TreeSet; + +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.tool.leaderselection.model.Leaderselection; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionSession; + +public class LeaderselectionDTO { + + private static Logger logger = Logger.getLogger(LeaderselectionDTO.class); + + private Long toolContentId; + + private String title; + + private String instructions; + + private boolean defineLater; + + private boolean contentInUse; + + private Set sessionDTOs = new TreeSet(); + + private Long currentTab; + + /* Constructors */ + public LeaderselectionDTO() { + } + + public LeaderselectionDTO(Leaderselection leaderselection) { + toolContentId = leaderselection.getToolContentId(); + title = leaderselection.getTitle(); + instructions = leaderselection.getInstructions(); + contentInUse = leaderselection.isContentInUse(); + + for (LeaderselectionSession session : (Set)leaderselection.getLeaderselectionSessions()) { + LeaderselectionSessionDTO sessionDTO = new LeaderselectionSessionDTO(session); + + sessionDTOs.add(sessionDTO); + } + } + + /* Getters / Setters */ + public Set getSessionDTOs() { + return sessionDTOs; + } + + public void setSessionDTOs(Set sessionDTOs) { + this.sessionDTOs = sessionDTOs; + } + + public String getInstructions() { + return instructions; + } + + public void setInstructions(String instructions) { + this.instructions = instructions; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Long getToolContentId() { + return toolContentId; + } + + public void setToolContentId(Long toolContentID) { + this.toolContentId = toolContentID; + } + + public Boolean getContentInUse() { + return contentInUse; + } + + public void setContentInUse(Boolean contentInUse) { + this.contentInUse = contentInUse; + } + + public Long getCurrentTab() { + return currentTab; + } + + public void setCurrentTab(Long currentTab) { + this.currentTab = currentTab; + } +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dto/LeaderselectionSessionDTO.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dto/LeaderselectionSessionDTO.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dto/LeaderselectionSessionDTO.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,128 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.tool.leaderselection.dto; + +import java.util.Iterator; +import java.util.Set; +import java.util.TreeSet; + +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionSession; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionUser; + +public class LeaderselectionSessionDTO implements Comparable { + + private Long sessionID; + + private String sessionName; + + private LeaderselectionUser groupLeader; + + private Set userDTOs = new TreeSet(); + + private int numberOfLearners; + + private int numberOfFinishedLearners;; + + public LeaderselectionSessionDTO(LeaderselectionSession session) { + this.sessionID = session.getSessionId(); + this.sessionName = session.getSessionName(); + this.groupLeader = session.getGroupLeader(); + + numberOfFinishedLearners = 0; + for (Iterator iterator = session.getUsers().iterator(); iterator.hasNext();) { + LeaderselectionUser user = (LeaderselectionUser) iterator.next(); + LeaderselectionUserDTO userDTO = new LeaderselectionUserDTO(user); + if (userDTO.isFinishedActivity()) { + numberOfFinishedLearners++; + } + userDTOs.add(userDTO); + } + + numberOfLearners = userDTOs.size(); + + } + + public LeaderselectionSessionDTO() { + } + + public Long getSessionID() { + return sessionID; + } + + public void setSessionID(Long sessionID) { + this.sessionID = sessionID; + } + + public String getSessionName() { + return sessionName; + } + + public void setSessionName(String sessionName) { + this.sessionName = sessionName; + } + + public LeaderselectionUser getGroupLeader() { + return groupLeader; + } + + public void setGroupLeader(LeaderselectionUser groupLeader) { + this.groupLeader = groupLeader; + } + + public int compareTo(Object o) { + int returnValue; + LeaderselectionSessionDTO toSession = (LeaderselectionSessionDTO) o; + returnValue = this.sessionName.compareTo(toSession.sessionName); + if (returnValue == 0) { + returnValue = this.sessionID.compareTo(toSession.sessionID); + } + return returnValue; + } + + public Set getUserDTOs() { + return userDTOs; + } + + public void setUserDTOs(Set leaderselectionUsers) { + this.userDTOs = leaderselectionUsers; + } + + public int getNumberOfLearners() { + return numberOfLearners; + } + + public void setNumberOfLearners(int numberOfLearners) { + this.numberOfLearners = numberOfLearners; + } + + public int getNumberOfFinishedLearners() { + return numberOfFinishedLearners; + } + + public void setNumberOfFinishedLearners(int numberOfFinishedLearners) { + this.numberOfFinishedLearners = numberOfFinishedLearners; + } +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dto/LeaderselectionUserDTO.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dto/LeaderselectionUserDTO.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/dto/LeaderselectionUserDTO.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,108 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.tool.leaderselection.dto; + +import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionUser; + +public class LeaderselectionUserDTO implements Comparable { + + private Long uid; + + private String loginName; + + private String firstName; + + private String lastName; + + private boolean finishedActivity; + + public LeaderselectionUserDTO(LeaderselectionUser user, NotebookEntry entry) { + this.uid = user.getUid(); + this.loginName = user.getLoginName(); + this.firstName = user.getFirstName(); + this.lastName = user.getLastName(); + this.finishedActivity = user.isFinishedActivity(); + } + + public LeaderselectionUserDTO(LeaderselectionUser user) { + this.uid = user.getUid(); + this.loginName = user.getLoginName(); + this.firstName = user.getFirstName(); + this.lastName = user.getLastName(); + this.finishedActivity = user.isFinishedActivity(); + } + + public int compareTo(Object o) { + int returnValue; + LeaderselectionUserDTO toUser = (LeaderselectionUserDTO) o; + returnValue = this.lastName.compareTo(toUser.lastName); + if (returnValue == 0) { + returnValue = this.uid.compareTo(toUser.uid); + } + return returnValue; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getLoginName() { + return loginName; + } + + public void setLoginName(String loginName) { + this.loginName = loginName; + } + + public Long getUid() { + return uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + public boolean isFinishedActivity() { + return finishedActivity; + } + + public void setFinishedActivity(boolean finishedActivity) { + this.finishedActivity = finishedActivity; + } +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/leaderselectionApplicationContext.xml =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/leaderselectionApplicationContext.xml (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/leaderselectionApplicationContext.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + org.lamsfoundation.lams.tool.leaderselection.ApplicationResources + + + + + + + + + + + + + + + + + + + + + + + + + + + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/model/Leaderselection.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/model/Leaderselection.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/model/Leaderselection.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,273 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.model; + +import java.util.Date; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; + +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; +import org.lamsfoundation.lams.tool.leaderselection.service.LeaderselectionService; + +/** + * @hibernate.class table="tl_lalead11_leaderselection" + */ + +public class Leaderselection implements java.io.Serializable, Cloneable { + + private static final long serialVersionUID = 579733009969321015L; + + static Logger log = Logger.getLogger(LeaderselectionService.class.getName()); + + // Fields + private Long uid; + + private Date createDate; + + private Date updateDate; + + private Long createBy; + + private String title; + + private String instructions; + + private boolean runOffline; + + private boolean contentInUse; + + private boolean defineLater; + + private Long toolContentId; + + private Set leaderselectionSessions; + + // Property accessors + /** + * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" + * + */ + public Long getUid() { + return uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + /** + * @hibernate.property column="create_date" + * + */ + public Date getCreateDate() { + return createDate; + } + + public void setCreateDate(Date createDate) { + this.createDate = createDate; + } + + /** + * @hibernate.property column="update_date" + * + */ + public Date getUpdateDate() { + return updateDate; + } + + public void setUpdateDate(Date updateDate) { + this.updateDate = updateDate; + } + + /** + * @hibernate.property column="create_by" length="20" + * + */ + public Long getCreateBy() { + return createBy; + } + + public void setCreateBy(Long createBy) { + this.createBy = createBy; + } + + /** + * @hibernate.property column="title" length="255" + * + */ + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + /** + * @hibernate.property column="instructions" length="65535" + * + */ + public String getInstructions() { + return instructions; + } + + public void setInstructions(String instructions) { + this.instructions = instructions; + } + + /** + * @hibernate.property column="run_offline" length="1" + * + */ + public boolean isRunOffline() { + return runOffline; + } + + public void setRunOffline(boolean runOffline) { + this.runOffline = runOffline; + } + + /** + * @hibernate.property column="content_in_use" length="1" + * + */ + public boolean isContentInUse() { + return contentInUse; + } + + public void setContentInUse(boolean contentInUse) { + this.contentInUse = contentInUse; + } + + /** + * @hibernate.property column="define_later" length="1" + * + */ + public boolean isDefineLater() { + return defineLater; + } + + public void setDefineLater(boolean defineLater) { + this.defineLater = defineLater; + } + + /** + * @hibernate.property column="tool_content_id" length="20" + * + */ + public Long getToolContentId() { + return toolContentId; + } + + public void setToolContentId(Long toolContentId) { + this.toolContentId = toolContentId; + } + + /** + * @hibernate.set lazy="true" inverse="true" cascade="none" + * @hibernate.collection-key column="leaderselection_uid" + * @hibernate.collection-one-to-many + * class="org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionSession" + * + */ + public Set getLeaderselectionSessions() { + return leaderselectionSessions; + } + + public void setLeaderselectionSessions(Set leaderselectionSessions) { + this.leaderselectionSessions = leaderselectionSessions; + } + + /** + * toString + * + * @return String + */ + @Override + public String toString() { + StringBuffer buffer = new StringBuffer(); + + buffer.append(getClass().getName()).append("@").append(Integer.toHexString(hashCode())).append(" ["); + buffer.append("title").append("='").append(getTitle()).append("' "); + buffer.append("instructions").append("='").append(getInstructions()).append("' "); + buffer.append("toolContentId").append("='").append(getToolContentId()).append("' "); + buffer.append("]"); + + return buffer.toString(); + } + + @Override + public boolean equals(Object other) { + if (this == other) { + return true; + } + if (other == null) { + return false; + } + if (!(other instanceof Leaderselection)) { + return false; + } + Leaderselection castOther = (Leaderselection) other; + + return this.getUid() == castOther.getUid() || this.getUid() != null && castOther.getUid() != null + && this.getUid().equals(castOther.getUid()); + } + + @Override + public int hashCode() { + int result = 17; + result = 37 * result + (getUid() == null ? 0 : this.getUid().hashCode()); + return result; + } + + public static Leaderselection newInstance(Leaderselection fromContent, Long toContentId, + IToolContentHandler leaderselectionToolContentHandler) { + Leaderselection toContent = new Leaderselection(); + toContent = (Leaderselection) fromContent.clone(); + toContent.setToolContentId(toContentId); + toContent.setCreateDate(new Date()); + return toContent; + } + + @Override + protected Object clone() { + + Leaderselection leaderselection = null; + try { + leaderselection = (Leaderselection) super.clone(); + leaderselection.setUid(null); + + // create an empty set for the leaderselectionSession + leaderselection.leaderselectionSessions = new HashSet(); + + } catch (CloneNotSupportedException cnse) { + Leaderselection.log.error("Error cloning " + Leaderselection.class); + } + return leaderselection; + } + +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/model/LeaderselectionSession.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/model/LeaderselectionSession.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/model/LeaderselectionSession.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,252 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.model; + +import java.util.Date; +import java.util.HashSet; +import java.util.Set; + +import org.apache.log4j.Logger; + +/** + * + * Represents the tool session. + * + * @hibernate.class table="tl_lalead11_session" + */ + +public class LeaderselectionSession implements java.io.Serializable { + + private static Logger log = Logger.getLogger(LeaderselectionSession.class); + private static final long serialVersionUID = 4407078136514639026L; + + // Fields + private Long uid; + + private Date sessionEndDate; + + private Date sessionStartDate; + + private Integer status; + + private Long sessionId; + + private String sessionName; + + private Leaderselection leaderselection; + + private Set users; + + private LeaderselectionUser groupLeader; + + // Constructors + + /** default constructor */ + public LeaderselectionSession() { + } + + /** full constructor */ + public LeaderselectionSession(Date sessionEndDate, Date sessionStartDate, Integer status, Long sessionId, + String sessionName, Leaderselection leaderselection, Set users) { + this.sessionEndDate = sessionEndDate; + this.sessionStartDate = sessionStartDate; + this.status = status; + this.sessionId = sessionId; + this.sessionName = sessionName; + this.leaderselection = leaderselection; + this.users = users; + } + + // Property accessors + /** + * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" + * + */ + + public Long getUid() { + return this.uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + /** + * @hibernate.property column="session_end_date" + * + */ + + public Date getSessionEndDate() { + return this.sessionEndDate; + } + + public void setSessionEndDate(Date sessionEndDate) { + this.sessionEndDate = sessionEndDate; + } + + /** + * @hibernate.property column="session_start_date" + * + */ + + public Date getSessionStartDate() { + return this.sessionStartDate; + } + + public void setSessionStartDate(Date sessionStartDate) { + this.sessionStartDate = sessionStartDate; + } + + /** + * @hibernate.property column="status" length="11" + * + */ + + public Integer getStatus() { + return this.status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + /** + * @hibernate.property column="session_id" length="20" + * + */ + + public Long getSessionId() { + return this.sessionId; + } + + public void setSessionId(Long sessionId) { + this.sessionId = sessionId; + } + + /** + * @hibernate.property column="session_name" length="250" + * + */ + + public String getSessionName() { + return this.sessionName; + } + + public void setSessionName(String sessionName) { + this.sessionName = sessionName; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="leaderselection_uid" + * + */ + + public Leaderselection getLeaderselection() { + return this.leaderselection; + } + + public void setLeaderselection(Leaderselection leaderselection) { + this.leaderselection = leaderselection; + } + + /** + * @hibernate.set lazy="true" inverse="true" cascade="none" + * @hibernate.collection-key column="leaderselection_session_uid" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionUser" + * + */ + + public Set getUsers() { + return this.users; + } + + public void setUsers(Set leaderselectionUsers) { + this.users = leaderselectionUsers; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="group_leader_uid" + */ + public LeaderselectionUser getGroupLeader() { + return this.groupLeader; + } + + public void setGroupLeader(LeaderselectionUser groupLeader) { + this.groupLeader = groupLeader; + } + + /** + * toString + * + * @return String + */ + public String toString() { + StringBuffer buffer = new StringBuffer(); + + buffer.append(getClass().getName()).append("@").append(Integer.toHexString(hashCode())).append(" ["); + buffer.append("sessionEndDate").append("='").append(getSessionEndDate()).append("' "); + buffer.append("sessionStartDate").append("='").append(getSessionStartDate()).append("' "); + buffer.append("status").append("='").append(getStatus()).append("' "); + buffer.append("sessionID").append("='").append(getSessionId()).append("' "); + buffer.append("sessionName").append("='").append(getSessionName()).append("' "); + buffer.append("]"); + + return buffer.toString(); + } + + public boolean equals(Object other) { + if ((this == other)) + return true; + if ((other == null)) + return false; + if (!(other instanceof LeaderselectionSession)) + return false; + LeaderselectionSession castOther = (LeaderselectionSession) other; + + return ((this.getUid() == castOther.getUid()) || (this.getUid() != null && castOther.getUid() != null && this + .getUid().equals(castOther.getUid()))); + } + + public int hashCode() { + int result = 17; + result = 37 * result + (getUid() == null ? 0 : this.getUid().hashCode()); + return result; + } + + public Object clone() { + + LeaderselectionSession session = null; + try { + session = (LeaderselectionSession) super.clone(); + session.users = new HashSet(); + } catch (CloneNotSupportedException e) { + log.error("When clone " + LeaderselectionSession.class + " failed"); + } + return session; + } + +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/model/LeaderselectionUser.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/model/LeaderselectionUser.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/model/LeaderselectionUser.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,200 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.model; + +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; + +/** + * + * Caches the user details. This allows the tool to be more efficient at displaying user names but means that when + * people's names change, they won't change in the "old" tool data. + * + * @hibernate.class table="tl_lalead11_user" + */ + +public class LeaderselectionUser implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -3701664859818409197L; + + // Fields + private Long uid; + + private Long userId; + + private String lastName; + + private String firstName; + + private String loginName; + + private LeaderselectionSession leaderselectionSession; + + private boolean finishedActivity; + + // Constructors + + /** default constructor */ + public LeaderselectionUser() { + } + + public LeaderselectionUser(UserDTO user, LeaderselectionSession leaderselectionSession) { + this.userId = new Long(user.getUserID().intValue()); + this.firstName = user.getFirstName(); + this.lastName = user.getLastName(); + this.loginName = user.getLogin(); + this.leaderselectionSession = leaderselectionSession; + this.finishedActivity = false; + } + + /** full constructor */ + public LeaderselectionUser(Long userId, String lastName, String firstName, + LeaderselectionSession leaderselectionSession) { + this.userId = userId; + this.lastName = lastName; + this.firstName = firstName; + this.leaderselectionSession = leaderselectionSession; + } + + // Property accessors + /** + * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" + */ + public Long getUid() { + return this.uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + /** + * @hibernate.property column="user_id" length="20" + * + */ + public Long getUserId() { + return this.userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + /** + * @hibernate.property column="last_name" length="255" + * + */ + public String getLastName() { + return this.lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + /** + * @hibernate.property column="login_name" length="255" + * + */ + public String getLoginName() { + return loginName; + } + + public void setLoginName(String loginName) { + this.loginName = loginName; + } + + /** + * @hibernate.property column="first_name" length="255" + * + */ + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + /** + * @hibernate.property column="finishedActivity" + */ + public boolean isFinishedActivity() { + return finishedActivity; + } + + public void setFinishedActivity(boolean finishedActivity) { + this.finishedActivity = finishedActivity; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="leaderselection_session_uid" + * + */ + public LeaderselectionSession getLeaderselectionSession() { + return this.leaderselectionSession; + } + + public void setLeaderselectionSession(LeaderselectionSession leaderselectionSession) { + this.leaderselectionSession = leaderselectionSession; + } + + /** + * toString + * + * @return String + */ + public String toString() { + StringBuffer buffer = new StringBuffer(); + + buffer.append(getClass().getName()).append("@").append(Integer.toHexString(hashCode())).append(" ["); + buffer.append("userId").append("='").append(getUserId()).append("' "); + buffer.append("]"); + + return buffer.toString(); + } + + public boolean equals(Object other) { + if ((this == other)) + return true; + if ((other == null)) + return false; + if (!(other instanceof LeaderselectionUser)) + return false; + LeaderselectionUser castOther = (LeaderselectionUser) other; + + return ((this.getUid() == castOther.getUid()) || (this.getUid() != null && castOther.getUid() != null && this + .getUid().equals(castOther.getUid()))); + } + + public int hashCode() { + int result = 17; + result = 37 * result + (getUid() == null ? 0 : this.getUid().hashCode()); + return result; + } +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/ILeaderselectionService.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/ILeaderselectionService.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/ILeaderselectionService.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,159 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.service; + +import java.util.List; + +import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.tool.leaderselection.model.Leaderselection; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionSession; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionUser; +import org.lamsfoundation.lams.tool.leaderselection.util.LeaderselectionException; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; + +/** + * Defines the services available to the web layer from the Leaderselection Service + */ +public interface ILeaderselectionService { + + /** + * Get users by given toolSessionId. + * + * @param long1 + * @return + */ + List getUsersBySession(Long toolSessionId); + + /** + * Set specified user as a leader. Also the previous leader (if any) is marked as non-leader. + * + * @param userId + * @param toolSessionId + */ + void setGroupLeader(Long userId, Long toolSessionId); + + /** + * Makes a copy of the default content and assigns it a newContentID + * + * @params newContentID + * @return + */ + Leaderselection copyDefaultContent(Long newContentID); + + /** + * Returns an instance of the Leaderselection tools default content. + * + * @return + */ + Leaderselection getDefaultContent(); + + /** + * @param toolSignature + * @return + */ + Long getDefaultContentIdBySignature(String toolSignature); + + /** + * @param toolContentID + * @return + */ + Leaderselection getContentByContentId(Long toolContentID); + + boolean isUserLeader(Long userId, Long toolSessionId); + + /** + * @param leaderselection + */ + void saveOrUpdateLeaderselection(Leaderselection leaderselection); + + /** + * @param toolSessionId + * @return + */ + LeaderselectionSession getSessionBySessionId(Long toolSessionId); + + /** + * @param leaderselectionSession + */ + void saveOrUpdateSession(LeaderselectionSession leaderselectionSession); + + /** + * + * @param userId + * @param toolSessionId + * @return + */ + LeaderselectionUser getUserByUserIdAndSessionId(Long userId, Long toolSessionId); + + /** + * + * @param uid + * @return + */ + LeaderselectionUser getUserByUID(Long uid); + + /** + * + * @param leaderselectionUser + */ + void saveOrUpdateUser(LeaderselectionUser leaderselectionUser); + + /** + * + * @param user + * @param leaderselectionSession + * @return + */ + LeaderselectionUser createLeaderselectionUser(UserDTO user, LeaderselectionSession leaderselectionSession); + + /** + * + * @param id + * @param idType + * @param signature + * @param userID + * @param title + * @param entry + * @return + */ + Long createNotebookEntry(Long id, Integer idType, String signature, Integer userID, String entry); + + /** + * + * @param uid + * @return + */ + NotebookEntry getEntry(Long uid); + + /** + * + * @param uid + * @param title + * @param entry + */ + void updateEntry(Long uid, String entry); + + boolean isGroupedActivity(long toolContentID); +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionOutputFactory.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionOutputFactory.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionOutputFactory.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,107 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.tool.leaderselection.service; + +import java.util.List; +import java.util.SortedMap; +import java.util.TreeMap; + +import org.lamsfoundation.lams.tool.OutputFactory; +import org.lamsfoundation.lams.tool.ToolOutput; +import org.lamsfoundation.lams.tool.ToolOutputDefinition; +import org.lamsfoundation.lams.tool.exception.ToolException; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionSession; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionUser; +import org.lamsfoundation.lams.tool.leaderselection.util.LeaderselectionConstants; + +/** + * Output factory for Leaderselection tool. Currently it provides only one output - boolean whether user is a leader and + * another dataflow type of output - the leader's userId. + */ +public class LeaderselectionOutputFactory extends OutputFactory { + + @Override + public SortedMap getToolOutputDefinitions(Object toolContentObject, int definitionType) + throws ToolException { + SortedMap definitionMap = new TreeMap(); + switch (definitionType) { + case ToolOutputDefinition.DATA_OUTPUT_DEFINITION_TYPE_CONDITION: + ToolOutputDefinition definition = buildBooleanOutputDefinition(LeaderselectionConstants.OUTPUT_NAME_IS_LEARNER_A_LEADER); + definitionMap.put(LeaderselectionConstants.OUTPUT_NAME_IS_LEARNER_A_LEADER, definition); + break; + case ToolOutputDefinition.DATA_OUTPUT_DEFINITION_TYPE_DATA_FLOW: + ToolOutputDefinition leaderDefinition = buildRangeDefinition( + LeaderselectionConstants.OUTPUT_NAME_LEADER_USERID, new Long(0), null); + definitionMap.put(LeaderselectionConstants.OUTPUT_NAME_LEADER_USERID, leaderDefinition); + break; + } + + return definitionMap; + } + + /** + * Follows {@link LeaderselectionService#getToolOutput(List, Long, Long)}. + */ + public SortedMap getToolOutput(List names, + ILeaderselectionService leaderselectionService, Long toolSessionId, Long learnerId) { + + TreeMap outputs = new TreeMap(); + + if (names == null || names.contains(LeaderselectionConstants.OUTPUT_NAME_IS_LEARNER_A_LEADER)) { + outputs.put( + LeaderselectionConstants.OUTPUT_NAME_IS_LEARNER_A_LEADER, + getToolOutput(LeaderselectionConstants.OUTPUT_NAME_IS_LEARNER_A_LEADER, leaderselectionService, + toolSessionId, learnerId)); + } + if (names == null || names.contains(LeaderselectionConstants.OUTPUT_NAME_LEADER_USERID)) { + outputs.put( + LeaderselectionConstants.OUTPUT_NAME_LEADER_USERID, + getToolOutput(LeaderselectionConstants.OUTPUT_NAME_LEADER_USERID, leaderselectionService, + toolSessionId, learnerId)); + } + + return outputs; + + } + + public ToolOutput getToolOutput(String name, ILeaderselectionService leaderselectionService, Long toolSessionId, + Long learnerId) { + if (name.equals(LeaderselectionConstants.OUTPUT_NAME_IS_LEARNER_A_LEADER)) { + + boolean isUserLeader = leaderselectionService.isUserLeader(learnerId, toolSessionId); + return new ToolOutput(name, getI18NText(LeaderselectionConstants.OUTPUT_NAME_IS_LEARNER_A_LEADER, true), + isUserLeader); + + } else if (name.equals(LeaderselectionConstants.OUTPUT_NAME_LEADER_USERID)) { + LeaderselectionSession session = leaderselectionService.getSessionBySessionId(toolSessionId); + LeaderselectionUser groupLeader = session.getGroupLeader(); + if (groupLeader != null) { + return new ToolOutput(name, getI18NText(LeaderselectionConstants.OUTPUT_NAME_LEADER_USERID, true), + groupLeader.getUserId()); + } + + } + return null; + } +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionService.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionService.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionService.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,547 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.service; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Hashtable; +import java.util.List; +import java.util.SortedMap; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.apache.struts.upload.FormFile; +import org.lamsfoundation.lams.contentrepository.AccessDeniedException; +import org.lamsfoundation.lams.contentrepository.ICredentials; +import org.lamsfoundation.lams.contentrepository.ITicket; +import org.lamsfoundation.lams.contentrepository.InvalidParameterException; +import org.lamsfoundation.lams.contentrepository.LoginException; +import org.lamsfoundation.lams.contentrepository.NodeKey; +import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException; +import org.lamsfoundation.lams.contentrepository.WorkspaceNotFoundException; +import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; +import org.lamsfoundation.lams.contentrepository.service.IRepositoryService; +import org.lamsfoundation.lams.contentrepository.service.SimpleCredentials; +import org.lamsfoundation.lams.learning.service.ILearnerService; +import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException; +import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; +import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; +import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; +import org.lamsfoundation.lams.tool.ToolContentImport102Manager; +import org.lamsfoundation.lams.tool.ToolContentManager; +import org.lamsfoundation.lams.tool.ToolOutput; +import org.lamsfoundation.lams.tool.ToolOutputDefinition; +import org.lamsfoundation.lams.tool.ToolSessionExportOutputData; +import org.lamsfoundation.lams.tool.ToolSessionManager; +import org.lamsfoundation.lams.tool.exception.DataMissingException; +import org.lamsfoundation.lams.tool.exception.SessionDataExistsException; +import org.lamsfoundation.lams.tool.exception.ToolException; +import org.lamsfoundation.lams.tool.leaderselection.dao.ILeaderselectionDAO; +import org.lamsfoundation.lams.tool.leaderselection.dao.ILeaderselectionSessionDAO; +import org.lamsfoundation.lams.tool.leaderselection.dao.ILeaderselectionUserDAO; +import org.lamsfoundation.lams.tool.leaderselection.model.Leaderselection; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionSession; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionUser; +import org.lamsfoundation.lams.tool.leaderselection.util.LeaderselectionConstants; +import org.lamsfoundation.lams.tool.leaderselection.util.LeaderselectionException; +import org.lamsfoundation.lams.tool.leaderselection.util.LeaderselectionToolContentHandler; +import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.audit.IAuditService; + +/** + * An implementation of the ILeaderselectionService interface. + * + * As a requirement, all LAMS tool's service bean must implement ToolContentManager and ToolSessionManager. + */ + +public class LeaderselectionService implements ToolSessionManager, ToolContentManager, ILeaderselectionService, + ToolContentImport102Manager { + + static Logger logger = Logger.getLogger(LeaderselectionService.class.getName()); + + private ILeaderselectionDAO leaderselectionDAO = null; + + private ILeaderselectionSessionDAO leaderselectionSessionDAO = null; + + private ILeaderselectionUserDAO leaderselectionUserDAO = null; + + private ILearnerService learnerService; + + private ILamsToolService toolService; + + private IToolContentHandler leaderselectionToolContentHandler = null; + + private IRepositoryService repositoryService = null; + + private IExportToolContentService exportContentService; + + private ICoreNotebookService coreNotebookService; + + private LeaderselectionOutputFactory leaderselectionOutputFactory; + + public LeaderselectionService() { + super(); + } + + /* ************ Methods from ToolSessionManager ************* */ + @Override + public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { + if (logger.isDebugEnabled()) { + logger.debug("entering method createToolSession:" + " toolSessionId = " + toolSessionId + + " toolSessionName = " + toolSessionName + " toolContentId = " + toolContentId); + } + + LeaderselectionSession session = new LeaderselectionSession(); + session.setSessionId(toolSessionId); + session.setSessionName(toolSessionName); + // learner starts + // TODO need to also set other fields. + Leaderselection leaderselection = leaderselectionDAO.getByContentId(toolContentId); + session.setLeaderselection(leaderselection); + leaderselectionSessionDAO.saveOrUpdate(session); + } + + @Override + public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { + return learnerService.completeToolSession(toolSessionId, learnerId); + } + + @Override + public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { + return null; + } + + @Override + public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, + ToolException { + return null; + } + + @Override + public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { + leaderselectionSessionDAO.deleteBySessionID(toolSessionId); + } + + @Override + public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { + return getLeaderselectionOutputFactory().getToolOutput(names, this, toolSessionId, learnerId); + } + + @Override + public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { + return getLeaderselectionOutputFactory().getToolOutput(name, this, toolSessionId, learnerId); + } + + /* ************ Methods from ToolContentManager ************************* */ + @Override + public void copyToolContent(Long fromContentId, Long toContentId) throws ToolException { + + if (logger.isDebugEnabled()) { + logger.debug("entering method copyToolContent:" + " fromContentId=" + fromContentId + " toContentId=" + + toContentId); + } + + if (toContentId == null) { + String error = "Failed to copy tool content: toContentID is null"; + throw new ToolException(error); + } + + Leaderselection fromContent = null; + if (fromContentId != null) { + fromContent = leaderselectionDAO.getByContentId(fromContentId); + } + if (fromContent == null) { + // create the fromContent using the default tool content + fromContent = getDefaultContent(); + } + Leaderselection toContent = Leaderselection.newInstance(fromContent, toContentId, + leaderselectionToolContentHandler); + leaderselectionDAO.saveOrUpdate(toContent); + } + + @Override + public void setAsDefineLater(Long toolContentId, boolean value) throws DataMissingException, ToolException { + Leaderselection content = leaderselectionDAO.getByContentId(toolContentId); + if (content == null) { + throw new ToolException("Could not find tool with toolContentID: " + toolContentId); + } + content.setDefineLater(value); + leaderselectionDAO.saveOrUpdate(content); + } + + @Override + public void setAsRunOffline(Long toolContentId, boolean value) throws DataMissingException, ToolException { + Leaderselection content = leaderselectionDAO.getByContentId(toolContentId); + if (content == null) { + throw new ToolException("Could not find tool with toolContentID: " + toolContentId); + } + content.setRunOffline(value); + leaderselectionDAO.saveOrUpdate(content); + } + + @Override + public void removeToolContent(Long toolContentId, boolean removeSessionData) throws SessionDataExistsException, + ToolException { + } + + @Override + public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException { + Leaderselection content = leaderselectionDAO.getByContentId(toolContentId); + if (content == null) { + content = getDefaultContent(); + } + if (content == null) { + throw new DataMissingException("Unable to find default content for the leaderselection tool"); + } + + // set ResourceToolContentHandler as null to avoid copy file node in + // repository again. + content = Leaderselection.newInstance(content, toolContentId, null); + content.setLeaderselectionSessions(null); + try { + exportContentService.exportToolContent(toolContentId, content, leaderselectionToolContentHandler, rootPath); + } catch (ExportToolContentException e) { + throw new ToolException(e); + } + } + + @Override + public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion, + String toVersion) throws ToolException { + try { + + Object toolPOJO = exportContentService.importToolContent(toolContentPath, + leaderselectionToolContentHandler, fromVersion, toVersion); + if (!(toolPOJO instanceof Leaderselection)) { + throw new ImportToolContentException( + "Import Leaderselection tool content failed. Deserialized object is " + toolPOJO); + } + Leaderselection content = (Leaderselection) toolPOJO; + + // reset it to new toolContentId + content.setToolContentId(toolContentId); + content.setCreateBy(new Long(newUserUid.longValue())); + + leaderselectionDAO.saveOrUpdate(content); + } catch (ImportToolContentException e) { + throw new ToolException(e); + } + } + + @Override + public SortedMap getToolOutputDefinitions(Long toolContentId, int definitionType) + throws ToolException { + Leaderselection content = getLeaderselectionDAO().getByContentId(toolContentId); + if (content == null) { + content = getDefaultContent(); + } + return getLeaderselectionOutputFactory().getToolOutputDefinitions(content, definitionType); + } + + public String getToolContentTitle(Long toolContentId) { + return getContentByContentId(toolContentId).getTitle(); + } + + /* ********** ILeaderselectionService Methods ********************************* */ + + @Override + public void setGroupLeader(Long userUid, Long toolSessionId) { + if (userUid == null || toolSessionId == null) { + return; + } + + LeaderselectionSession session = getSessionBySessionId(toolSessionId); + LeaderselectionUser newLeader = getUserByUID(userUid); + if (session == null || newLeader == null) { + logger.error("Wrong parameters supplied. SessionId=" + toolSessionId + " UserId=" + userUid); + return; + } + + session.setGroupLeader(newLeader); + saveOrUpdateSession(session); + } + + @Override + public boolean isUserLeader(Long userId, Long toolSessionId) { + if (userId == null || toolSessionId == null) { + throw new LeaderselectionException("Wrong parameters supplied: userId or toolSessionId is null. SessionId=" + + toolSessionId + " UserId=" + userId); + } + + LeaderselectionSession session = getSessionBySessionId(toolSessionId); + LeaderselectionUser groupLeader = session.getGroupLeader(); + boolean isUserLeader = (groupLeader != null) && groupLeader.getUserId().equals(userId); + return isUserLeader; + } + + @Override + public List getUsersBySession(Long toolSessionId) { + return leaderselectionUserDAO.getBySessionId(toolSessionId); + } + + @Override + public Long createNotebookEntry(Long id, Integer idType, String signature, Integer userID, String entry) { + return coreNotebookService.createNotebookEntry(id, idType, signature, userID, "", entry); + } + + @Override + public NotebookEntry getEntry(Long uid) { + return coreNotebookService.getEntry(uid); + } + + @Override + public void updateEntry(Long uid, String entry) { + coreNotebookService.updateEntry(uid, "", entry); + } + + @Override + public Long getDefaultContentIdBySignature(String toolSignature) { + Long toolContentId = null; + toolContentId = new Long(toolService.getToolDefaultContentIdBySignature(toolSignature)); + if (toolContentId == null) { + String error = "Could not retrieve default content id for this tool"; + logger.error(error); + throw new LeaderselectionException(error); + } + return toolContentId; + } + + @Override + public Leaderselection getDefaultContent() { + Long defaultContentID = getDefaultContentIdBySignature(LeaderselectionConstants.TOOL_SIGNATURE); + Leaderselection defaultContent = getContentByContentId(defaultContentID); + if (defaultContent == null) { + String error = "Could not retrieve default content record for this tool"; + logger.error(error); + throw new LeaderselectionException(error); + } + return defaultContent; + } + + @Override + public Leaderselection copyDefaultContent(Long newContentID) { + + if (newContentID == null) { + String error = "Cannot copy the Leaderselection tools default content: + " + "newContentID is null"; + logger.error(error); + throw new LeaderselectionException(error); + } + + Leaderselection defaultContent = getDefaultContent(); + // create new leaderselection using the newContentID + Leaderselection newContent = new Leaderselection(); + newContent = Leaderselection.newInstance(defaultContent, newContentID, leaderselectionToolContentHandler); + leaderselectionDAO.saveOrUpdate(newContent); + return newContent; + } + + @Override + public Leaderselection getContentByContentId(Long toolContentID) { + Leaderselection leaderselection = leaderselectionDAO.getByContentId(toolContentID); + if (leaderselection == null) { + logger.debug("Could not find the content with toolContentID:" + toolContentID); + } + return leaderselection; + } + + @Override + public LeaderselectionSession getSessionBySessionId(Long toolSessionId) { + LeaderselectionSession leaderselectionSession = leaderselectionSessionDAO.getBySessionId(toolSessionId); + if (leaderselectionSession == null) { + logger.debug("Could not find the leaderselection session with toolSessionID:" + toolSessionId); + } + return leaderselectionSession; + } + + @Override + public LeaderselectionUser getUserByUserIdAndSessionId(Long userId, Long toolSessionId) { + return leaderselectionUserDAO.getByUserIdAndSessionId(userId, toolSessionId); + } + + @Override + public LeaderselectionUser getUserByUID(Long uid) { + return leaderselectionUserDAO.getByUID(uid); + } + + @Override + public void saveOrUpdateLeaderselection(Leaderselection leaderselection) { + leaderselectionDAO.saveOrUpdate(leaderselection); + } + + @Override + public void saveOrUpdateSession(LeaderselectionSession leaderselectionSession) { + leaderselectionSessionDAO.saveOrUpdate(leaderselectionSession); + } + + @Override + public void saveOrUpdateUser(LeaderselectionUser leaderselectionUser) { + leaderselectionUserDAO.saveOrUpdate(leaderselectionUser); + } + + @Override + public LeaderselectionUser createLeaderselectionUser(UserDTO user, LeaderselectionSession leaderselectionSession) { + LeaderselectionUser leaderselectionUser = new LeaderselectionUser(user, leaderselectionSession); + saveOrUpdateUser(leaderselectionUser); + return leaderselectionUser; + } + + /** + * This method verifies the credentials of the SubmitFiles Tool and gives it the Ticket to login and + * access the Content Repository. + * + * A valid ticket is needed in order to access the content from the repository. This method would be called evertime + * the tool needs to upload/download files from the content repository. + * + * @return ITicket The ticket for repostory access + * @throws SubmitFilesException + */ + private ITicket getRepositoryLoginTicket() throws LeaderselectionException { + ICredentials credentials = new SimpleCredentials(LeaderselectionToolContentHandler.repositoryUser, + LeaderselectionToolContentHandler.repositoryId); + try { + ITicket ticket = repositoryService.login(credentials, + LeaderselectionToolContentHandler.repositoryWorkspaceName); + return ticket; + } catch (AccessDeniedException ae) { + throw new LeaderselectionException("Access Denied to repository." + ae.getMessage()); + } catch (WorkspaceNotFoundException we) { + throw new LeaderselectionException("Workspace not found." + we.getMessage()); + } catch (LoginException e) { + throw new LeaderselectionException("Login failed." + e.getMessage()); + } + } + + /* ===============Methods implemented from ToolContentImport102Manager =============== */ + + @Override + public void import102ToolContent(Long toolContentId, UserDTO user, Hashtable importValues) { + } + + @Override + public void setReflectiveData(Long toolContentId, String title, String description) throws ToolException, + DataMissingException { + + Leaderselection leaderselection = getContentByContentId(toolContentId); + if (leaderselection == null) { + throw new DataMissingException("Unable to set reflective data titled " + title + + " on activity toolContentId " + toolContentId + " as the tool content does not exist."); + } + + leaderselection.setInstructions(description); + } + + // ========================================================================================= + /* ********** Used by Spring to "inject" the linked objects ************* */ + + public ILeaderselectionDAO getLeaderselectionDAO() { + return leaderselectionDAO; + } + + public void setLeaderselectionDAO(ILeaderselectionDAO leaderselectionDAO) { + this.leaderselectionDAO = leaderselectionDAO; + } + + public IToolContentHandler getLeaderselectionToolContentHandler() { + return leaderselectionToolContentHandler; + } + + public void setLeaderselectionToolContentHandler(IToolContentHandler leaderselectionToolContentHandler) { + this.leaderselectionToolContentHandler = leaderselectionToolContentHandler; + } + + public ILeaderselectionSessionDAO getLeaderselectionSessionDAO() { + return leaderselectionSessionDAO; + } + + public void setLeaderselectionSessionDAO(ILeaderselectionSessionDAO sessionDAO) { + leaderselectionSessionDAO = sessionDAO; + } + + public ILamsToolService getToolService() { + return toolService; + } + + public void setToolService(ILamsToolService toolService) { + this.toolService = toolService; + } + + public ILeaderselectionUserDAO getLeaderselectionUserDAO() { + return leaderselectionUserDAO; + } + + public void setLeaderselectionUserDAO(ILeaderselectionUserDAO userDAO) { + leaderselectionUserDAO = userDAO; + } + + public ILearnerService getLearnerService() { + return learnerService; + } + + public void setLearnerService(ILearnerService learnerService) { + this.learnerService = learnerService; + } + + public IExportToolContentService getExportContentService() { + return exportContentService; + } + + public void setExportContentService(IExportToolContentService exportContentService) { + this.exportContentService = exportContentService; + } + + public ICoreNotebookService getCoreNotebookService() { + return coreNotebookService; + } + + public void setCoreNotebookService(ICoreNotebookService coreNotebookService) { + this.coreNotebookService = coreNotebookService; + } + + public IRepositoryService getRepositoryService() { + return repositoryService; + } + + public void setRepositoryService(IRepositoryService repositoryService) { + this.repositoryService = repositoryService; + } + + public LeaderselectionOutputFactory getLeaderselectionOutputFactory() { + return leaderselectionOutputFactory; + } + + public void setLeaderselectionOutputFactory(LeaderselectionOutputFactory leaderselectionOutputFactory) { + this.leaderselectionOutputFactory = leaderselectionOutputFactory; + } + + public boolean isGroupedActivity(long toolContentID) { + return toolService.isGroupedActivity(toolContentID); + } + + public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { + return getLeaderselectionOutputFactory().getSupportedDefinitionClasses(definitionType); + } +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionServiceProxy.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionServiceProxy.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionServiceProxy.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,77 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.service; + +import javax.servlet.ServletContext; + +import org.lamsfoundation.lams.tool.ToolContentManager; +import org.lamsfoundation.lams.tool.ToolSessionManager; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +/** + *

+ * This class act as the proxy between web layer and service layer. It is designed to decouple the presentation logic + * and business logic completely. In this way, the presentation tier will no longer be aware of the changes in service + * layer. Therefore we can feel free to switch the business logic implementation. + *

+ */ + +public class LeaderselectionServiceProxy { + + public static final ILeaderselectionService getLeaderselectionService(ServletContext servletContext) { + return (ILeaderselectionService) getLeaderselectionDomainService(servletContext); + } + + private static Object getLeaderselectionDomainService(ServletContext servletContext) { + WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); + return wac.getBean("leaderselectionService"); + } + + /* + * Return the leaderselection tool version of tool session manager implementation. It will delegate to the Spring + * helper method to retrieve the proper bean from Spring bean factory. + * + * @param servletContext the servletContext for current application + * + * @return noticeboard service object. + */ + public static final ToolSessionManager getLeaderselectionSessionManager(ServletContext servletContext) { + return (ToolSessionManager) getLeaderselectionDomainService(servletContext); + } + + /* + * Return the leaderselection tool version of tool content manager implementation. It will delegate to the Spring + * helper method to retrieve the proper bean from Spring bean factory. + * + * @param servletContext the servletContext for current application + * + * @return noticeboard service object. + */ + public static final ToolContentManager getLeaderselectionContentManager(ServletContext servletContext) { + return (ToolContentManager) getLeaderselectionDomainService(servletContext); + } + +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/util/LeaderselectionConstants.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/util/LeaderselectionConstants.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/util/LeaderselectionConstants.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,43 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.util; + +public interface LeaderselectionConstants { + public static final String TOOL_SIGNATURE = "lalead11"; + + // Attribute names + public static final String ATTR_SESSION_MAP = "sessionMap"; + public static final String ATTR_GROUP_LEADER = "groupLeader"; + public static final String ATTR_GROUP_USERS = "groupUsers"; + public static final String ATTR_TOOL_SESSION_ID = "toolSessionId"; + public static final String ATTR_CONTENT = "content"; + public static final String ATTR_IS_GROUPED_ACTIVITY = "isGroupedActivity"; + + public static final String ATTR_SESSION_MAP_ID = "sessionMapID"; + + public static final String OUTPUT_NAME_IS_LEARNER_A_LEADER = "user.is.leader"; + public static final String OUTPUT_NAME_LEADER_USERID = "leader.user.id"; + public static final String SUCCESS = "success"; +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/util/LeaderselectionException.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/util/LeaderselectionException.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/util/LeaderselectionException.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,55 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.util; + +/** + * + */ +public class LeaderselectionException extends RuntimeException { + + /** + * + */ + private static final long serialVersionUID = -5518806968051758859L; + + public LeaderselectionException(String message) { + super(message); + } + + public LeaderselectionException(String message, Throwable cause) { + super(message, cause); + } + + public LeaderselectionException() { + super(); + + } + + public LeaderselectionException(Throwable cause) { + super(cause); + + } + +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/util/LeaderselectionToolContentHandler.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/util/LeaderselectionToolContentHandler.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/util/LeaderselectionToolContentHandler.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,76 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.util; + +import org.lamsfoundation.lams.contentrepository.client.ToolContentHandler; + +/** + * Simple client for accessing the content repository. + */ +public class LeaderselectionToolContentHandler extends ToolContentHandler { + + // TODO these three fields were changed to public, since accessor methods + // cannot be made static. Check if we can do this a better way. + public static String repositoryWorkspaceName = "leaderselectionworkspace"; + + public static String repositoryUser = "leaderselection"; + + public static char[] repositoryId = { 'l', 'a', 'm', 's', '-', 'e', 'x' }; + + /** + * + */ + public LeaderselectionToolContentHandler() { + super(); + } + + /* + * (non-Javadoc) + * + * @see org.lamsfoundation.lams.contentrepository.client.ToolContentHandler#getRepositoryWorkspaceName() + */ + public String getRepositoryWorkspaceName() { + return repositoryWorkspaceName; + } + + /* + * (non-Javadoc) + * + * @see org.lamsfoundation.lams.contentrepository.client.ToolContentHandler#getRepositoryUser() + */ + public String getRepositoryUser() { + return repositoryUser; + } + + /* + * (non-Javadoc) + * + * @see org.lamsfoundation.lams.contentrepository.client.ToolContentHandler#getRepositoryId() + */ + public char[] getRepositoryId() { + return repositoryId; + } + +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/actions/AuthoringAction.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/actions/AuthoringAction.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/actions/AuthoringAction.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,185 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.web.actions; + +import java.util.Date; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ActionMessages; +import org.apache.struts.upload.FormFile; +import org.lamsfoundation.lams.authoring.web.AuthoringConstants; +import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; +import org.lamsfoundation.lams.tool.ToolAccessMode; +import org.lamsfoundation.lams.tool.leaderselection.model.Leaderselection; +import org.lamsfoundation.lams.tool.leaderselection.service.ILeaderselectionService; +import org.lamsfoundation.lams.tool.leaderselection.service.LeaderselectionServiceProxy; +import org.lamsfoundation.lams.tool.leaderselection.util.LeaderselectionConstants; +import org.lamsfoundation.lams.tool.leaderselection.web.forms.AuthoringForm; +import org.lamsfoundation.lams.util.FileValidatorUtil; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.action.LamsDispatchAction; +import org.lamsfoundation.lams.web.util.AttributeNames; +import org.lamsfoundation.lams.web.util.SessionMap; + +/** + * @struts.action path="/authoring" name="authoringForm" parameter="dispatch" scope="request" validate="false" + * + * @struts.action-forward name="success" path="tiles:/authoring/main" + */ +public class AuthoringAction extends LamsDispatchAction { + + private static Logger logger = Logger.getLogger(AuthoringAction.class); + + public ILeaderselectionService leaderselectionService; + + // Authoring SessionMap key names + private static final String KEY_TOOL_CONTENT_ID = "toolContentID"; + private static final String KEY_CONTENT_FOLDER_ID = "contentFolderID"; + private static final String KEY_MODE = "mode"; + + /** + * Default method when no dispatch parameter is specified. It is expected that the parameter + * toolContentID will be passed in. This will be used to retrieve content for this tool. + * + */ + @Override + protected ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + + // Extract toolContentID from parameters. + Long toolContentID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); + + String contentFolderID = WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID); + + ToolAccessMode mode = WebUtil.readToolAccessModeParam(request, "mode", true); + + // set up leaderselectionService + if (leaderselectionService == null) { + leaderselectionService = LeaderselectionServiceProxy.getLeaderselectionService(this.getServlet() + .getServletContext()); + } + + // retrieving Leaderselection with given toolContentID + Leaderselection leaderselection = leaderselectionService.getContentByContentId(toolContentID); + if (leaderselection == null) { + leaderselection = leaderselectionService.copyDefaultContent(toolContentID); + leaderselection.setCreateDate(new Date()); + leaderselectionService.saveOrUpdateLeaderselection(leaderselection); + // TODO NOTE: this causes DB orphans when LD not saved. + } + + if (mode != null && mode.isTeacher()) { + // Set the defineLater flag so that learners cannot use content + // while we + // are editing. This flag is released when updateContent is called. + leaderselection.setDefineLater(true); + leaderselectionService.saveOrUpdateLeaderselection(leaderselection); + } + + // Set up the authForm. + AuthoringForm authForm = (AuthoringForm) form; + authForm.setTitle(leaderselection.getTitle()); + authForm.setInstructions(leaderselection.getInstructions()); + + // Set up sessionMap + SessionMap map = new SessionMap(); + map.put(AuthoringAction.KEY_MODE, getAccessMode(request)); + map.put(AuthoringAction.KEY_CONTENT_FOLDER_ID, contentFolderID); + map.put(AuthoringAction.KEY_TOOL_CONTENT_ID, toolContentID); + authForm.setSessionMapID(map.getSessionID()); + + // add the sessionMap to HTTPSession. + request.getSession().setAttribute(map.getSessionID(), map); + request.setAttribute(LeaderselectionConstants.ATTR_SESSION_MAP, map); + + return mapping.findForward("success"); + } + + public ActionForward updateContent(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + // TODO need error checking. + + // get authForm and session map. + AuthoringForm authForm = (AuthoringForm) form; + SessionMap map = (SessionMap) request.getSession().getAttribute(authForm.getSessionMapID()); + + // get leaderselection content. + Leaderselection leaderselection = leaderselectionService.getContentByContentId((Long) map + .get(AuthoringAction.KEY_TOOL_CONTENT_ID)); + + // update leaderselection content using form inputs. + ToolAccessMode mode = (ToolAccessMode) map.get(AuthoringAction.KEY_MODE); + leaderselection.setTitle(authForm.getTitle()); + leaderselection.setInstructions(authForm.getInstructions()); + + // set the update date + leaderselection.setUpdateDate(new Date()); + + // releasing defineLater flag so that learner can start using the tool. + leaderselection.setDefineLater(false); + + leaderselectionService.saveOrUpdateLeaderselection(leaderselection); + + request.setAttribute(AuthoringConstants.LAMS_AUTHORING_SUCCESS_FLAG, Boolean.TRUE); + + // add the sessionMapID to form + authForm.setSessionMapID(map.getSessionID()); + + request.setAttribute(LeaderselectionConstants.ATTR_SESSION_MAP, map); + + return mapping.findForward("success"); + } + + /* ========== Private Methods ********** */ + + /** + * Get ToolAccessMode from HttpRequest parameters. Default value is AUTHOR mode. + * + * @param request + * @return + */ + private ToolAccessMode getAccessMode(HttpServletRequest request) { + ToolAccessMode mode; + String modeStr = request.getParameter(AttributeNames.ATTR_MODE); + if (StringUtils.equalsIgnoreCase(modeStr, ToolAccessMode.TEACHER.toString())) { + mode = ToolAccessMode.TEACHER; + } else { + mode = ToolAccessMode.AUTHOR; + } + return mode; + } +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/actions/ClearSessionAction.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/actions/ClearSessionAction.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/actions/ClearSessionAction.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,47 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.tool.leaderselection.web.actions; + +import javax.servlet.http.HttpSession; + +import org.lamsfoundation.lams.authoring.web.LamsAuthoringFinishAction; +import org.lamsfoundation.lams.tool.ToolAccessMode; + +/** + * This class give a chance to clear HttpSession when user save/close authoring page. + * + * @struts:action path="/clearsession" validate="false" + * + */ +public class ClearSessionAction extends LamsAuthoringFinishAction { + + @Override + public void clearSession(String customiseSessionID, HttpSession session, ToolAccessMode mode) { + if (mode.isAuthor()) { + session.removeAttribute(customiseSessionID); + } + } + +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/actions/LearningAction.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/actions/LearningAction.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/actions/LearningAction.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,202 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.web.actions; + +import java.io.IOException; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.log4j.Logger; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; +import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; +import org.lamsfoundation.lams.tool.ToolAccessMode; +import org.lamsfoundation.lams.tool.ToolSessionManager; +import org.lamsfoundation.lams.tool.exception.DataMissingException; +import org.lamsfoundation.lams.tool.exception.ToolException; +import org.lamsfoundation.lams.tool.leaderselection.model.Leaderselection; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionSession; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionUser; +import org.lamsfoundation.lams.tool.leaderselection.service.ILeaderselectionService; +import org.lamsfoundation.lams.tool.leaderselection.service.LeaderselectionServiceProxy; +import org.lamsfoundation.lams.tool.leaderselection.util.LeaderselectionConstants; +import org.lamsfoundation.lams.tool.leaderselection.util.LeaderselectionException; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.action.LamsDispatchAction; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; + +/** + * @struts.action path="/learning" parameter="dispatch" scope="request" + * @struts.action-forward name="leaderselection" path="tiles:/learning/main" + * @struts.action-forward name="runOffline" path="tiles:/learning/runOffline" + * @struts.action-forward name="defineLater" path="tiles:/learning/defineLater" + */ +public class LearningAction extends LamsDispatchAction { + + private static Logger log = Logger.getLogger(LearningAction.class); + + private ILeaderselectionService service; + + public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + + // 'toolSessionID' and 'mode' paramters are expected to be present. + ToolAccessMode mode = WebUtil.readToolAccessModeParam(request, AttributeNames.PARAM_MODE, false); + // set up service + initService(); + + // Retrieve the session and content. + Long toolSessionId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); + LeaderselectionSession session = service.getSessionBySessionId(toolSessionId); + if (session == null) { + throw new LeaderselectionException("Cannot retrieve session with toolSessionID" + toolSessionId); + } + + Leaderselection content = session.getLeaderselection(); + request.setAttribute(LeaderselectionConstants.ATTR_CONTENT, content); + + // check defineLater + if (content.isDefineLater()) { + return mapping.findForward("defineLater"); + } + + // set mode, toolSessionID and LeaderselectionDTO + request.setAttribute("mode", mode.toString()); + request.setAttribute(AttributeNames.PARAM_TOOL_SESSION_ID, toolSessionId); + + // Set the content in use flag. + if (!content.isContentInUse()) { + content.setContentInUse(new Boolean(true)); + service.saveOrUpdateLeaderselection(content); + } + + LearningWebUtil.putActivityPositionInRequestByToolSessionId(toolSessionId, request, getServlet() + .getServletContext()); + + // check runOffline + if (content.isRunOffline()) { + return mapping.findForward("runOffline"); + } + + LeaderselectionUser user; + if (mode.equals(ToolAccessMode.TEACHER)) { + Long userID = WebUtil.readLongParam(request, AttributeNames.PARAM_USER_ID, false); + user = service.getUserByUserIdAndSessionId(userID, toolSessionId); + } else { + user = getCurrentUser(toolSessionId); + } + + LeaderselectionUser groupLeader = session.getGroupLeader(); + request.setAttribute(LeaderselectionConstants.ATTR_GROUP_LEADER, groupLeader); + List groupUsers = service.getUsersBySession(toolSessionId); + request.setAttribute(LeaderselectionConstants.ATTR_GROUP_USERS, groupUsers); + request.setAttribute(LeaderselectionConstants.ATTR_TOOL_SESSION_ID, toolSessionId); + + // checks whether to display dialog prompting to become a leader + boolean isSelectLeaderActive = (groupLeader == null) && !user.isFinishedActivity() && !mode.isTeacher(); + request.setAttribute("isSelectLeaderActive", isSelectLeaderActive); + + return mapping.findForward("leaderselection"); + } + + /** + * Sets current user as a leader of a group. + */ + public ActionForward becomeLeader(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException { + initService(); + Long toolSessionId = new Long(request.getParameter(AttributeNames.PARAM_TOOL_SESSION_ID)); + LeaderselectionSession session = service.getSessionBySessionId(toolSessionId); + + LeaderselectionUser groupLeader = session.getGroupLeader(); + // check there is no leader yet. Just in case somebody has pressed "Yes" button faster + if (groupLeader == null) { + LeaderselectionUser user = getCurrentUser(toolSessionId); + service.setGroupLeader(user.getUid(), toolSessionId); + } + + return null; + } + + public ActionForward finishActivity(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + + Long toolSessionID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); + + LeaderselectionUser user = getCurrentUser(toolSessionID); + + if (user != null) { + user.setFinishedActivity(true); + service.saveOrUpdateUser(user); + } else { + log.error("finishActivity(): couldn't find LeaderselectionUser with id: " + user.getUserId() + + "and toolSessionID: " + toolSessionID); + } + + ToolSessionManager sessionMgrService = LeaderselectionServiceProxy + .getLeaderselectionSessionManager(getServlet().getServletContext()); + + String nextActivityUrl; + try { + nextActivityUrl = sessionMgrService.leaveToolSession(toolSessionID, user.getUserId()); + response.sendRedirect(nextActivityUrl); + } catch (DataMissingException e) { + throw new LeaderselectionException(e); + } catch (ToolException e) { + throw new LeaderselectionException(e); + } catch (IOException e) { + throw new LeaderselectionException(e); + } + + return null; + } + + private void initService() { + if (service == null) { + service = LeaderselectionServiceProxy.getLeaderselectionService(this.getServlet().getServletContext()); + } + } + + private LeaderselectionUser getCurrentUser(Long toolSessionId) { + UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); + + // attempt to retrieve user using userId and toolSessionId + LeaderselectionUser leaderselectionUser = service.getUserByUserIdAndSessionId(new Long(user.getUserID() + .intValue()), toolSessionId); + + if (leaderselectionUser == null) { + LeaderselectionSession leaderselectionSession = service.getSessionBySessionId(toolSessionId); + leaderselectionUser = service.createLeaderselectionUser(user, leaderselectionSession); + } + + return leaderselectionUser; + } +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/actions/MonitoringAction.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/actions/MonitoringAction.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/actions/MonitoringAction.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,146 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.leaderselection.web.actions; + +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.log4j.Logger; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.tool.leaderselection.dto.LeaderselectionDTO; +import org.lamsfoundation.lams.tool.leaderselection.dto.LeaderselectionSessionDTO; +import org.lamsfoundation.lams.tool.leaderselection.dto.LeaderselectionUserDTO; +import org.lamsfoundation.lams.tool.leaderselection.model.Leaderselection; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionUser; +import org.lamsfoundation.lams.tool.leaderselection.service.ILeaderselectionService; +import org.lamsfoundation.lams.tool.leaderselection.service.LeaderselectionServiceProxy; +import org.lamsfoundation.lams.tool.leaderselection.util.LeaderselectionConstants; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.action.LamsDispatchAction; +import org.lamsfoundation.lams.web.util.AttributeNames; +import org.lamsfoundation.lams.web.util.SessionMap; + +/** + * @struts.action path="/monitoring" parameter="dispatch" scope="request" name="monitoringForm" validate="false" + * + * @struts.action-forward name="success" path="tiles:/monitoring/main" + * @struts.action-forward name="manageLeaders" path="/pages/monitoring/manageLeaders.jsp" + */ +public class MonitoringAction extends LamsDispatchAction { + + private static Logger log = Logger.getLogger(MonitoringAction.class); + + private ILeaderselectionService service; + + public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + + initService(); + // initialize Session Map + SessionMap sessionMap = new SessionMap(); + request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); + request.setAttribute(LeaderselectionConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + + Long toolContentID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); + String contentFolderID = WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID); + Leaderselection content = service.getContentByContentId(toolContentID); + if (content == null) { + // TODO error page. + } + + // // cache into sessionMap + boolean isGroupedActivity = service.isGroupedActivity(toolContentID); + sessionMap.put(LeaderselectionConstants.ATTR_IS_GROUPED_ACTIVITY, isGroupedActivity); + // sessionMap.put(ScratchieConstants.PAGE_EDITABLE, scratchie.isContentInUse()); + // sessionMap.put(ScratchieConstants.ATTR_SCRATCHIE, scratchie); + // sessionMap.put(ScratchieConstants.ATTR_TOOL_CONTENT_ID, toolContentID); + // sessionMap.put(AttributeNames.PARAM_CONTENT_FOLDER_ID, + // WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID)); + // sessionMap.put(ScratchieConstants.ATTR_REFLECTION_ON, scratchie.isReflectOnActivity()); + + LeaderselectionDTO leaderselectionDT0 = new LeaderselectionDTO(content); + sessionMap.put("leaderselectionDT0", leaderselectionDT0); + + Long currentTab = WebUtil.readLongParam(request, AttributeNames.PARAM_CURRENT_TAB, true); + leaderselectionDT0.setCurrentTab(currentTab); + + request.setAttribute("leaderselectionDTO", leaderselectionDT0); + request.setAttribute("contentFolderID", contentFolderID); + request.setAttribute("isGroupedActivity", isGroupedActivity); + + return mapping.findForward(LeaderselectionConstants.SUCCESS); + } + + /** + * Show leaders manage page + */ + public ActionForward manageLeaders(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + String sessionMapID = request.getParameter(LeaderselectionConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute( + sessionMapID); + request.setAttribute(LeaderselectionConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + return mapping.findForward("manageLeaders"); + } + + /** + * Save selected users as a leaders + */ + public ActionForward saveLeaders(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + String sessionMapID = request.getParameter(LeaderselectionConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute( + sessionMapID); + request.setAttribute(LeaderselectionConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + initService(); + + LeaderselectionDTO leaderselectionDT0 = (LeaderselectionDTO) sessionMap.get("leaderselectionDT0"); + for (LeaderselectionSessionDTO sessionDto : leaderselectionDT0.getSessionDTOs()) { + Long toolSessionId = sessionDto.getSessionID(); + Long leaderUserUid = WebUtil.readLongParam(request, "sessionId" + toolSessionId, true); + + // save selected users as a leaders + if (leaderUserUid != null) { + service.setGroupLeader(leaderUserUid, toolSessionId); + } + } + + return null; + } + + /** + * set up service + */ + private void initService() { + if (service == null) { + service = LeaderselectionServiceProxy.getLeaderselectionService(this.getServlet().getServletContext()); + } + } +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/forms/AuthoringForm.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/forms/AuthoringForm.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/forms/AuthoringForm.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,144 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.tool.leaderselection.web.forms; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ActionMessage; +import org.apache.struts.action.ActionMessages; +import org.apache.struts.upload.FormFile; +import org.lamsfoundation.lams.web.util.SessionMap; + +/** + * @struts.form name="authoringForm" + */ +public class AuthoringForm extends ActionForm { + + private static final long serialVersionUID = 3950453134542135495L; + + // Properties + + private String title; + + private String instructions; + + private String offlineInstruction; + + private String onlineInstruction; + + private String currentTab; + + private String dispatch; + + private String sessionMapID; + + private Long deleteFileUuid; + + private SessionMap sessionMap; + + @Override + public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) { + ActionErrors ac = new ActionErrors(); + ac.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("this is an error")); + + return ac; + } + + public String getSessionMapID() { + return sessionMapID; + } + + public void setSessionMapID(String sessionMapID) { + this.sessionMapID = sessionMapID; + } + + public String getCurrentTab() { + return currentTab; + } + + public void setCurrentTab(String currentTab) { + this.currentTab = currentTab; + } + + public String getDispatch() { + return dispatch; + } + + public void setDispatch(String dispatch) { + this.dispatch = dispatch; + } + + public String getInstructions() { + return instructions; + } + + public void setInstructions(String instructions) { + this.instructions = instructions; + } + + public String getOfflineInstruction() { + return offlineInstruction; + } + + public void setOfflineInstruction(String offlineInstruction) { + this.offlineInstruction = offlineInstruction; + } + + public String getOnlineInstruction() { + return onlineInstruction; + } + + public void setOnlineInstruction(String onlineInstruction) { + this.onlineInstruction = onlineInstruction; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public void setSessionMap(SessionMap sessionMap) { + this.sessionMap = sessionMap; + } + + public SessionMap getSessionMap() { + return sessionMap; + } + + public Long getDeleteFileUuid() { + return deleteFileUuid; + } + + public void setDeleteFileUuid(Long deleteFile) { + this.deleteFileUuid = deleteFile; + } +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/forms/MonitoringForm.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/forms/MonitoringForm.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/forms/MonitoringForm.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,94 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.tool.leaderselection.web.forms; + +import org.apache.struts.action.ActionForm; + +/** + * @struts.form name="monitoringForm" + */ +public class MonitoringForm extends ActionForm { + + private static final long serialVersionUID = 9096908688391850595L; + + String dispatch; + boolean teacherVisible; + Long toolSessionID; + + // editing message page. + Long messageUID; + String messageBody; + boolean messageHidden; + + public String getMessageBody() { + return messageBody; + } + + public void setMessageBody(String messageBody) { + this.messageBody = messageBody; + } + + public Long getMessageUID() { + return messageUID; + } + + public void setMessageUID(Long messageUID) { + this.messageUID = messageUID; + } + + public String getDispatch() { + return dispatch; + } + + public void setDispatch(String dispatch) { + this.dispatch = dispatch; + } + + public Long getToolSessionID() { + return toolSessionID; + } + + public void setToolSessionID(Long toolSessionID) { + this.toolSessionID = toolSessionID; + } + + public boolean isTeacherVisible() { + return teacherVisible; + } + + public void setTeacherVisible(boolean visible) { + this.teacherVisible = visible; + } + + public boolean isMessageHidden() { + return messageHidden; + } + + public void setMessageHidden(boolean messageHidden) { + this.messageHidden = messageHidden; + } + +} Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/servlets/ExportServlet.java =================================================================== diff -u --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/servlets/ExportServlet.java (revision 0) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/web/servlets/ExportServlet.java (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,166 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.tool.leaderselection.web.servlets; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.tool.ToolAccessMode; +import org.lamsfoundation.lams.tool.leaderselection.dto.LeaderselectionDTO; +import org.lamsfoundation.lams.tool.leaderselection.dto.LeaderselectionSessionDTO; +import org.lamsfoundation.lams.tool.leaderselection.dto.LeaderselectionUserDTO; +import org.lamsfoundation.lams.tool.leaderselection.model.Leaderselection; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionSession; +import org.lamsfoundation.lams.tool.leaderselection.model.LeaderselectionUser; +import org.lamsfoundation.lams.tool.leaderselection.service.ILeaderselectionService; +import org.lamsfoundation.lams.tool.leaderselection.service.LeaderselectionServiceProxy; +import org.lamsfoundation.lams.tool.leaderselection.util.LeaderselectionException; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.servlet.AbstractExportPortfolioServlet; +import org.lamsfoundation.lams.web.util.AttributeNames; + +public class ExportServlet extends AbstractExportPortfolioServlet { + + private static final long serialVersionUID = -2829707715037631881L; + + private static Logger logger = Logger.getLogger(ExportServlet.class); + + private final String FILENAME = "leaderselection_main.html"; + + private ILeaderselectionService leaderselectionService; + + protected String doExport(HttpServletRequest request, HttpServletResponse response, String directoryName, + Cookie[] cookies) { + + if (leaderselectionService == null) { + leaderselectionService = LeaderselectionServiceProxy.getLeaderselectionService(getServletContext()); + } + + try { + if (StringUtils.equals(mode, ToolAccessMode.LEARNER.toString())) { + request.getSession().setAttribute(AttributeNames.ATTR_MODE, ToolAccessMode.LEARNER); + doLearnerExport(request, response, directoryName, cookies); + } else if (StringUtils.equals(mode, ToolAccessMode.TEACHER.toString())) { + request.getSession().setAttribute(AttributeNames.ATTR_MODE, ToolAccessMode.TEACHER); + doTeacherExport(request, response, directoryName, cookies); + } + } catch (LeaderselectionException e) { + logger.error("Cannot perform export for leaderselection tool."); + } + + String basePath = WebUtil.getBaseServerURL() + + request.getContextPath(); + writeResponseToFile(basePath + "/pages/export/exportPortfolio.jsp", directoryName, FILENAME, cookies); + + return FILENAME; + } + + protected String doOfflineExport(HttpServletRequest request, HttpServletResponse response, String directoryName, + Cookie[] cookies) { + if (toolContentID == null && toolSessionID == null) { + logger.error("Tool content Id or and session Id are null. Unable to activity title"); + } else { + if (leaderselectionService == null) { + leaderselectionService = LeaderselectionServiceProxy.getLeaderselectionService(getServletContext()); + } + + Leaderselection content = null; + if (toolContentID != null) { + content = leaderselectionService.getContentByContentId(toolContentID); + } else { + LeaderselectionSession session = leaderselectionService.getSessionBySessionId(toolSessionID); + if (session != null) + content = session.getLeaderselection(); + } + if (content != null) { + activityTitle = content.getTitle(); + } + } + return super.doOfflineExport(request, response, directoryName, cookies); + } + + private void doLearnerExport(HttpServletRequest request, HttpServletResponse response, String directoryName, + Cookie[] cookies) throws LeaderselectionException { + + logger.debug("doExportLearner: toolContentID:" + toolSessionID); + + // check if toolContentID available + if (toolSessionID == null) { + String error = "Tool Session ID is missing. Unable to continue"; + logger.error(error); + throw new LeaderselectionException(error); + } + + LeaderselectionSession leaderselectionSession = leaderselectionService.getSessionBySessionId(toolSessionID); + + Leaderselection leaderselection = leaderselectionSession.getLeaderselection(); + + Long userID = WebUtil.readLongParam(request, AttributeNames.PARAM_USER_ID); + LeaderselectionUser leaderselectionUser = leaderselectionService.getUserByUserIdAndSessionId(userID, + toolSessionID); + + // construct dto's + LeaderselectionDTO leaderselectionDTO = new LeaderselectionDTO(); + leaderselectionDTO.setTitle(leaderselection.getTitle()); + leaderselectionDTO.setInstructions(leaderselection.getInstructions()); + + LeaderselectionSessionDTO sessionDTO = new LeaderselectionSessionDTO(); + sessionDTO.setSessionName(leaderselectionSession.getSessionName()); + sessionDTO.setSessionID(leaderselectionSession.getSessionId()); + + LeaderselectionUserDTO userDTO = new LeaderselectionUserDTO(leaderselectionUser); + + sessionDTO.getUserDTOs().add(userDTO); + leaderselectionDTO.getSessionDTOs().add(sessionDTO); + + request.getSession().setAttribute("leaderselectionDTO", leaderselectionDTO); + } + + private void doTeacherExport(HttpServletRequest request, HttpServletResponse response, String directoryName, + Cookie[] cookies) throws LeaderselectionException { + + logger.debug("doExportTeacher: toolContentID:" + toolContentID); + + // check if toolContentID available + if (toolContentID == null) { + String error = "Tool Content ID is missing. Unable to continue"; + logger.error(error); + throw new LeaderselectionException(error); + } + + Leaderselection leaderselection = leaderselectionService.getContentByContentId(toolContentID); + + LeaderselectionDTO leaderselectionDTO = new LeaderselectionDTO(leaderselection); + + + request.getSession().setAttribute("leaderselectionDTO", leaderselectionDTO); + } + +} Index: lams_tool_leader/web/403.jsp =================================================================== diff -u --- lams_tool_leader/web/403.jsp (revision 0) +++ lams_tool_leader/web/403.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,25 @@ +<%-- +Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) +License Information: http://lamsfoundation.org/licensing/lams/2.0/ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License version 2 as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + http://www.gnu.org/licenses/gpl.txt +--%> +<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="tags-core" prefix="c" %> + + + Index: lams_tool_leader/web/404.jsp =================================================================== diff -u --- lams_tool_leader/web/404.jsp (revision 0) +++ lams_tool_leader/web/404.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,27 @@ +<%-- +Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) +License Information: http://lamsfoundation.org/licensing/lams/2.0/ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License version 2 as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + http://www.gnu.org/licenses/gpl.txt +--%> +<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="tags-core" prefix="c" %> + + + + + Index: lams_tool_leader/web/WEB-INF/tags/AuthoringButton.tag =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tags/AuthoringButton.tag (revision 0) +++ lams_tool_leader/web/WEB-INF/tags/AuthoringButton.tag (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,133 @@ +<% +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + /** + * AuthoringButton.tag + * Author: Dapeng Ni + * Description: Creates the save/cancel button for authoring page + */ + + %> +<%@ tag body-content="scriptless" %> +<%@ taglib uri="tags-core" prefix="c" %> +<%@ taglib uri="tags-fmt" prefix="fmt" %> +<%@ taglib uri="tags-html" prefix="html" %> +<%@ taglib uri="tags-lams" prefix="lams"%> + +<%@ attribute name="formID" required="true" rtexprvalue="true" %> +<%@ attribute name="toolSignature" required="true" rtexprvalue="true" %> +<%@ attribute name="toolContentID" required="true" rtexprvalue="true" %> +<%@ attribute name="contentFolderID" required="true" rtexprvalue="true" %> +<%@ attribute name="clearSessionActionUrl" required="true" rtexprvalue="true" %> + +<%-- Optional attribute --%> +<%@ attribute name="accessMode" required="false" rtexprvalue="true" %> +<%@ attribute name="cancelButtonLabelKey" required="false" rtexprvalue="true" %> +<%@ attribute name="saveButtonLabelKey" required="false" rtexprvalue="true" %> +<%@ attribute name="cancelConfirmMsgKey" required="false" rtexprvalue="true" %> +<%@ attribute name="defineLater" required="false" rtexprvalue="true" %> +<%@ attribute name="customiseSessionID" required="false" rtexprvalue="true" %> + +<%-- Default value for message key --%> + + + + + + + + + + + + + + + + + + + + +

+ + + + + + +

+ Index: lams_tool_leader/web/WEB-INF/tags/CKEditor.tag =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tags/CKEditor.tag (revision 0) +++ lams_tool_leader/web/WEB-INF/tags/CKEditor.tag (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,91 @@ +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-lams" prefix="lams"%> + +<%@ attribute name="id" required="true" rtexprvalue="true"%> +<%@ attribute name="value" required="true" rtexprvalue="true"%> +<%@ attribute name="toolbarSet" required="false" rtexprvalue="true"%> +<%@ attribute name="height" required="false" rtexprvalue="true"%> +<%@ attribute name="width" required="false" rtexprvalue="true"%> +<%@ attribute name="contentFolderID" required="false" rtexprvalue="true"%> +<%@ attribute name="displayExpanded" required="false" rtexprvalue="true"%> +<%@ attribute name="resizeParentFrameName" required="false" rtexprvalue="true"%> + + + + + + + + + + + + + + + + + + + + + + + + + ckeditor/ + + + + Index: lams_tool_leader/web/WEB-INF/tags/Date.tag =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tags/Date.tag (revision 0) +++ lams_tool_leader/web/WEB-INF/tags/Date.tag (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,52 @@ +<% +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + /** + * Author: Fiona Malikoff + * Description: Format a date, using the locale, based on standard parameters. + * Need to use long for the date otherwise the AU locale comes out as 1/2/06 and + * full is needed to include the timezone. + */ + + %> +<%@ tag body-content="empty" %> +<%@ attribute name="value" required="true" rtexprvalue="true" type="java.util.Date" %> +<%@ attribute name="style" required="false" rtexprvalue="true"%> +<%@ attribute name="type" required="false" rtexprvalue="true"%> + +<%@ taglib uri="tags-fmt" prefix="fmt" %> +<%@ taglib uri="tags-core" prefix="c" %> + + + + + + + + + + + + + Index: lams_tool_leader/web/WEB-INF/tags/DefineLater.tag =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tags/DefineLater.tag (revision 0) +++ lams_tool_leader/web/WEB-INF/tags/DefineLater.tag (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,58 @@ + +<% + /**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + /** + * DefineLater.tag + * Author: Fiona Malikoff + * Description: Layout for "Define Later" screens - to be used in learning. + * A suggested layout - unless the tool has special requirements, this layout should be used. + * Expects to be used inside
+ */ +%> + +<%@ tag body-content="scriptless"%> +<%@ taglib uri="tags-fmt" prefix="fmt"%> +<%@ taglib uri="tags-core" prefix="c"%> + +<%@ attribute name="defineLaterMessageKey" required="false" + rtexprvalue="true"%> +<%@ attribute name="buttonTryAgainKey" required="false" + rtexprvalue="true"%> + +<%-- Default value for I18N keys --%> + + + + + + + +

+ +

+
+ +
Index: lams_tool_leader/web/WEB-INF/tags/Head.tag =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tags/Head.tag (revision 0) +++ lams_tool_leader/web/WEB-INF/tags/Head.tag (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,42 @@ +<%/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/** + * Head.tag + * Author: Fiona Malikoff + * Description: Sets up the non-cache pragma statements and the UTF-8 + * encoding. Use in place of the normal head tag. + */ +%> + +<%@ tag body-content="scriptless"%> + + + + + + + + + + Index: lams_tool_leader/web/WEB-INF/tags/ImgButtonWrapper.tag =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tags/ImgButtonWrapper.tag (revision 0) +++ lams_tool_leader/web/WEB-INF/tags/ImgButtonWrapper.tag (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,37 @@ +<% +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + /** + * ImgButtonWrapper.tag + * Author: Mitchell Seaton + * Description: Simple wrapper that will display buttons correctly when RTL page rendering is used. + */ + + %> +<%@ tag body-content="scriptless" %> +
+
+ +
+
Index: lams_tool_leader/web/WEB-INF/tags/Tab.tag =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tags/Tab.tag (revision 0) +++ lams_tool_leader/web/WEB-INF/tags/Tab.tag (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,85 @@ +<% + /**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + /** + * Tab.tag + * Author: Mitchell Seaton + * Description: Creates a tab element. + * Wiki: + */ +%> +<%@ tag body-content="empty"%> +<%@ attribute name="id" required="true" rtexprvalue="true"%> +<%@ attribute name="value" required="false" rtexprvalue="true"%> +<%@ attribute name="key" required="false" rtexprvalue="true"%> +<%@ attribute name="inactive" required="false" rtexprvalue="true"%> +<%@ attribute name="methodCall" required="false" rtexprvalue="true"%> + +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-fmt" prefix="fmt"%> +<%@ taglib uri="tags-lams" prefix="lams"%> + +<%-- Check if bundle is set --%> + + + + + + + + + + +<%-- + Usually methodCall is selectTab, but the calling code can override methodCall if desired. + this is handy if the page needs different logic on initialisation and user switching tabs +--%> + + + + + + + + + + + + + + + + + + + Index: lams_tool_leader/web/WEB-INF/tags/TabBody.tag =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tags/TabBody.tag (revision 0) +++ lams_tool_leader/web/WEB-INF/tags/TabBody.tag (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,52 @@ +<%/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/** + * TabBody.tag + * Author: Mitchell Seaton + * Description: Creates the body container for a tab element + * Wiki: + */ + + %> +<%@ tag body-content="scriptless"%> +<%@ attribute name="id" required="true" rtexprvalue="true"%> +<%@ attribute name="tabTitle" required="false" rtexprvalue="true"%> +<%@ attribute name="titleKey" required="false" rtexprvalue="true"%> +<%@ attribute name="page" required="false" rtexprvalue="true"%> +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-bean" prefix="bean"%> + + +
+ + + + + + + + + +
+ Index: lams_tool_leader/web/WEB-INF/tags/TabName.tag =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tags/TabName.tag (revision 0) +++ lams_tool_leader/web/WEB-INF/tags/TabName.tag (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,59 @@ +<%/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/** + * TabName Tag + * Author: Mitchell Seaton + * Description: Shortens name that are too long to fit inside a tab + */ + + %> +<%@ tag body-content="scriptless" %> + +<%@ attribute name="url" required="true" rtexprvalue="true"%> +<%@ attribute name="highlight" required="false" rtexprvalue="true" %> + +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-function" prefix="fn"%> + +12 + + + + + + + + + + + + + + + + + + + + Index: lams_tool_leader/web/WEB-INF/tags/Tabs.tag =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tags/Tabs.tag (revision 0) +++ lams_tool_leader/web/WEB-INF/tags/Tabs.tag (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,69 @@ +<%/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/** + * Tabs.tag + * Author: Mitchell Seaton + * Description: Create a tab list from a input collection or nested Tab tags. + * Wiki: + */ + + %> +<%@ tag body-content="scriptless"%> +<%@ attribute name="collection" type="java.util.Collection" required="false" rtexprvalue="true"%> +<%@ attribute name="control" required="false" rtexprvalue="true"%> +<%@ attribute name="useKey" required="false" rtexprvalue="true"%> +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-lams" prefix="lams"%> + + + + + + + + + + + + Index: lams_tool_leader/web/WEB-INF/tags/TextSearch.tag =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tags/TextSearch.tag (revision 0) +++ lams_tool_leader/web/WEB-INF/tags/TextSearch.tag (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,136 @@ +<% +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + /** + * TextSearch.tag + * Author: Marcin Cieslak + * Description: Displays form for creating text search conditions. + */ + + %> +<%@ tag body-content="scriptless" %> +<%@ taglib uri="tags-core" prefix="c" %> +<%@ taglib uri="tags-fmt" prefix="fmt" %> +<%@ taglib uri="tags-html" prefix="html" %> +<%@ taglib uri="tags-lams" prefix="lams" %> + +<%-- Required attributes --%> +<%@ attribute name="sessionMapID" required="true" rtexprvalue="true" %> +<%@ attribute name="wrapInFormTag" required="true" rtexprvalue="true" %> + +<%-- Optional attributes --%> +<%@ attribute name="action" required="false" rtexprvalue="true" %> +<%@ attribute name="formID" required="false" rtexprvalue="true" %> +<%@ attribute name="headingLabelKey" required="false" rtexprvalue="true" %> +<%@ attribute name="allWordsLabelKey" required="false" rtexprvalue="true" %> +<%@ attribute name="phraseLabelKey" required="false" rtexprvalue="true" %> +<%@ attribute name="anyWordsLabelKey" required="false" rtexprvalue="true" %> +<%@ attribute name="excludedWordsLabelKey" required="false" rtexprvalue="true" %> +<%@ attribute name="saveButtonLabelKey" required="false" rtexprvalue="true" %> +<%@ attribute name="cancelButtonLabelKey" required="false" rtexprvalue="true" %> +<%@ attribute name="cancelAction" required="false" rtexprvalue="true" %> + +<%-- Default value for message key --%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +

+ + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + + + + + + Index: lams_tool_leader/web/WEB-INF/tags/headItems.tag =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tags/headItems.tag (revision 0) +++ lams_tool_leader/web/WEB-INF/tags/headItems.tag (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,47 @@ +<%/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/** + * Standard Head Items + * Author: Fiona Malikoff + * Description: Includes all the standard head items e.g. the + * lams css files, sets the content type, standard javascript files. + */ +%> +<%@ tag body-content="empty"%> + +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="tags-fmt" prefix="fmt"%> + + + + + + + + + + + + Index: lams_tool_leader/web/WEB-INF/tiles-defs.xml =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tiles-defs.xml (revision 0) +++ lams_tool_leader/web/WEB-INF/tiles-defs.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_leader/web/WEB-INF/tlds/jstl/c.tld =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tlds/jstl/c.tld (revision 0) +++ lams_tool_leader/web/WEB-INF/tlds/jstl/c.tld (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,563 @@ + + + + + JSTL 1.1 core library + JSTL core + 1.1 + c + http://java.sun.com/jsp/jstl/core + + + + Provides core validation features for JSTL tags. + + + org.apache.taglibs.standard.tlv.JstlCoreTLV + + + + + + Catches any Throwable that occurs in its body and optionally + exposes it. + + catch + org.apache.taglibs.standard.tag.common.core.CatchTag + JSP + + +Name of the exported scoped variable for the +exception thrown from a nested action. The type of the +scoped variable is the type of the exception thrown. + + var + false + false + + + + + + Simple conditional tag that establishes a context for + mutually exclusive conditional operations, marked by + <when> and <otherwise> + + choose + org.apache.taglibs.standard.tag.common.core.ChooseTag + JSP + + + + + Simple conditional tag, which evalutes its body if the + supplied condition is true and optionally exposes a Boolean + scripting variable representing the evaluation of this condition + + if + org.apache.taglibs.standard.tag.rt.core.IfTag + JSP + + +The test condition that determines whether or +not the body content should be processed. + + test + true + true + boolean + + + +Name of the exported scoped variable for the +resulting value of the test condition. The type +of the scoped variable is Boolean. + + var + false + false + + + +Scope for var. + + scope + false + false + + + + + + Retrieves an absolute or relative URL and exposes its contents + to either the page, a String in 'var', or a Reader in 'varReader'. + + import + org.apache.taglibs.standard.tag.rt.core.ImportTag + org.apache.taglibs.standard.tei.ImportTEI + JSP + + +The URL of the survey to import. + + url + true + true + + + +Name of the exported scoped variable for the +survey's content. The type of the scoped +variable is String. + + var + false + false + + + +Scope for var. + + scope + false + false + + + +Name of the exported scoped variable for the +survey's content. The type of the scoped +variable is Reader. + + varReader + false + false + + + +Name of the context when accessing a relative +URL survey that belongs to a foreign +context. + + context + false + true + + + +Character encoding of the content at the input +survey. + + charEncoding + false + true + + + + + + The basic iteration tag, accepting many different + collection types and supporting subsetting and other + functionality + + forEach + org.apache.taglibs.standard.tag.rt.core.ForEachTag + org.apache.taglibs.standard.tei.ForEachTEI + JSP + + +Collection of items to iterate over. + + items + false + true + java.lang.Object + + + +If items specified: +Iteration begins at the item located at the +specified index. First item of the collection has +index 0. +If items not specified: +Iteration begins with index set at the value +specified. + + begin + false + true + int + + + +If items specified: +Iteration ends at the item located at the +specified index (inclusive). +If items not specified: +Iteration ends when index reaches the value +specified. + + end + false + true + int + + + +Iteration will only process every step items of +the collection, starting with the first one. + + step + false + true + int + + + +Name of the exported scoped variable for the +current item of the iteration. This scoped +variable has nested visibility. Its type depends +on the object of the underlying collection. + + var + false + false + + + +Name of the exported scoped variable for the +status of the iteration. Object exported is of type +javax.servlet.jsp.jstl.core.LoopTagStatus. This scoped variable has nested +visibility. + + varStatus + false + false + + + + + + Iterates over tokens, separated by the supplied delimeters + + forTokens + org.apache.taglibs.standard.tag.rt.core.ForTokensTag + JSP + + +String of tokens to iterate over. + + items + true + true + java.lang.String + + + +The set of delimiters (the characters that +separate the tokens in the string). + + delims + true + true + java.lang.String + + + +Iteration begins at the token located at the +specified index. First token has index 0. + + begin + false + true + int + + + +Iteration ends at the token located at the +specified index (inclusive). + + end + false + true + int + + + +Iteration will only process every step tokens +of the string, starting with the first one. + + step + false + true + int + + + +Name of the exported scoped variable for the +current item of the iteration. This scoped +variable has nested visibility. + + var + false + false + + + +Name of the exported scoped variable for the +status of the iteration. Object exported is of +type +javax.servlet.jsp.jstl.core.LoopTag +Status. This scoped variable has nested +visibility. + + varStatus + false + false + + + + + + Like <%= ... >, but for expressions. + + out + org.apache.taglibs.standard.tag.rt.core.OutTag + JSP + + +Expression to be evaluated. + + value + true + true + + + +Default value if the resulting value is null. + + default + false + true + + + +Determines whether characters <,>,&,'," in the +resulting string should be converted to their +corresponding character entity codes. Default value is +true. + + escapeXml + false + true + + + + + + + Subtag of <choose> that follows <when> tags + and runs only if all of the prior conditions evaluated to + 'false' + + otherwise + org.apache.taglibs.standard.tag.common.core.OtherwiseTag + JSP + + + + + Adds a parameter to a containing 'import' tag's URL. + + param + org.apache.taglibs.standard.tag.rt.core.ParamTag + JSP + + +Name of the query string parameter. + + name + true + true + + + +Value of the parameter. + + value + false + true + + + + + + Redirects to a new URL. + + redirect + org.apache.taglibs.standard.tag.rt.core.RedirectTag + JSP + + +The URL of the survey to redirect to. + + url + false + true + + + +Name of the context when redirecting to a relative URL +survey that belongs to a foreign context. + + context + false + true + + + + + + Removes a scoped variable (from a particular scope, if specified). + + remove + org.apache.taglibs.standard.tag.common.core.RemoveTag + empty + + +Name of the scoped variable to be removed. + + var + true + false + + + +Scope for var. + + scope + false + false + + + + + + Sets the result of an expression evaluation in a 'scope' + + set + org.apache.taglibs.standard.tag.rt.core.SetTag + JSP + + +Name of the exported scoped variable to hold the value +specified in the action. The type of the scoped variable is +whatever type the value expression evaluates to. + + var + false + false + + + +Expression to be evaluated. + + value + false + true + + + +Target object whose property will be set. Must evaluate to +a JavaBeans object with setter property property, or to a +java.util.Map object. + + target + false + true + + + +Name of the property to be set in the target object. + + property + false + true + + + +Scope for var. + + scope + false + false + + + + + + Creates a URL with optional query parameters. + + url + org.apache.taglibs.standard.tag.rt.core.UrlTag + JSP + + +Name of the exported scoped variable for the +processed url. The type of the scoped variable is +String. + + var + false + false + + + +Scope for var. + + scope + false + false + + + +URL to be processed. + + value + false + true + + + +Name of the context when specifying a relative URL +survey that belongs to a foreign context. + + context + false + true + + + + + + Subtag of <choose> that includes its body if its + condition evalutes to 'true' + + when + org.apache.taglibs.standard.tag.rt.core.WhenTag + JSP + + +The test condition that determines whether or not the +body content should be processed. + + test + true + true + boolean + + + + Index: lams_tool_leader/web/WEB-INF/tlds/jstl/fmt.tld =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tlds/jstl/fmt.tld (revision 0) +++ lams_tool_leader/web/WEB-INF/tlds/jstl/fmt.tld (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,671 @@ + + + + + JSTL 1.1 i18n-capable formatting library + JSTL fmt + 1.1 + fmt + http://java.sun.com/jsp/jstl/fmt + + + + Provides core validation features for JSTL tags. + + + org.apache.taglibs.standard.tlv.JstlFmtTLV + + + + + + Sets the request character encoding + + requestEncoding + org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag + empty + + +Name of character encoding to be applied when +decoding request parameters. + + value + false + true + + + + + + Stores the given locale in the locale configuration variable + + setLocale + org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag + empty + + +A String value is interpreted as the +printable representation of a locale, which +must contain a two-letter (lower-case) +language code (as defined by ISO-639), +and may contain a two-letter (upper-case) +country code (as defined by ISO-3166). +Language and country codes must be +separated by hyphen (-) or underscore +(_). + + value + true + true + + + +Vendor- or browser-specific variant. +See the java.util.Locale javadocs for +more information on variants. + + variant + false + true + + + +Scope of the locale configuration variable. + + scope + false + false + + + + + + Specifies the time zone for any time formatting or parsing actions + nested in its body + + timeZone + org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag + JSP + + +The time zone. A String value is interpreted as +a time zone ID. This may be one of the time zone +IDs supported by the Java platform (such as +"America/Los_Angeles") or a custom time zone +ID (such as "GMT-8"). See +java.util.TimeZone for more information on +supported time zone formats. + + value + true + true + + + + + + Stores the given time zone in the time zone configuration variable + + setTimeZone + org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag + empty + + +The time zone. A String value is interpreted as +a time zone ID. This may be one of the time zone +IDs supported by the Java platform (such as +"America/Los_Angeles") or a custom time zone +ID (such as "GMT-8"). See java.util.TimeZone for +more information on supported time zone +formats. + + value + true + true + + + +Name of the exported scoped variable which +stores the time zone of type +java.util.TimeZone. + + var + false + false + + + +Scope of var or the time zone configuration +variable. + + scope + false + false + + + + + + Loads a survey bundle to be used by its tag body + + bundle + org.apache.taglibs.standard.tag.rt.fmt.BundleTag + JSP + + +Survey bundle base name. This is the bundle's +fully-qualified survey name, which has the same +form as a fully-qualified class name, that is, it uses +"." as the package component separator and does not +have any file type (such as ".class" or ".properties") +suffix. + + basename + true + true + + + +Prefix to be prepended to the value of the message +key of any nested <fmt:message> action. + + prefix + false + true + + + + + + Loads a survey bundle and stores it in the named scoped variable or + the bundle configuration variable + + setBundle + org.apache.taglibs.standard.tag.rt.fmt.SetBundleTag + empty + + +Survey bundle base name. This is the bundle's +fully-qualified survey name, which has the same +form as a fully-qualified class name, that is, it uses +"." as the package component separator and does not +have any file type (such as ".class" or ".properties") +suffix. + + basename + true + true + + + +Name of the exported scoped variable which stores +the i18n localization context of type +javax.servlet.jsp.jstl.fmt.LocalizationC +ontext. + + var + false + false + + + +Scope of var or the localization context +configuration variable. + + scope + false + false + + + + + + Maps key to localized message and performs parametric replacement + + message + org.apache.taglibs.standard.tag.rt.fmt.MessageTag + JSP + + +Message key to be looked up. + + key + false + true + + + +Localization context in whose survey +bundle the message key is looked up. + + bundle + false + true + + + +Name of the exported scoped variable +which stores the localized message. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Supplies an argument for parametric replacement to a containing + <message> tag + + param + org.apache.taglibs.standard.tag.rt.fmt.ParamTag + JSP + + +Argument used for parametric replacement. + + value + false + true + + + + + + Formats a numeric value as a number, currency, or percentage + + formatNumber + org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag + JSP + + +Numeric value to be formatted. + + value + false + true + + + +Specifies whether the value is to be +formatted as number, currency, or +percentage. + + type + false + true + + + +Custom formatting pattern. + + pattern + false + true + + + +ISO 4217 currency code. Applied only +when formatting currencies (i.e. if type is +equal to "currency"); ignored otherwise. + + currencyCode + false + true + + + +Currency symbol. Applied only when +formatting currencies (i.e. if type is equal +to "currency"); ignored otherwise. + + currencySymbol + false + true + + + +Specifies whether the formatted output +will contain any grouping separators. + + groupingUsed + false + true + + + +Maximum number of digits in the integer +portion of the formatted output. + + maxIntegerDigits + false + true + + + +Minimum number of digits in the integer +portion of the formatted output. + + minIntegerDigits + false + true + + + +Maximum number of digits in the +fractional portion of the formatted output. + + maxFractionDigits + false + true + + + +Minimum number of digits in the +fractional portion of the formatted output. + + minFractionDigits + false + true + + + +Name of the exported scoped variable +which stores the formatted result as a +String. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Parses the string representation of a number, currency, or percentage + + parseNumber + org.apache.taglibs.standard.tag.rt.fmt.ParseNumberTag + JSP + + +String to be parsed. + + value + false + true + + + +Specifies whether the string in the value +attribute should be parsed as a number, +currency, or percentage. + + type + false + true + + + +Custom formatting pattern that determines +how the string in the value attribute is to be +parsed. + + pattern + false + true + + + +Locale whose default formatting pattern (for +numbers, currencies, or percentages, +respectively) is to be used during the parse +operation, or to which the pattern specified +via the pattern attribute (if present) is +applied. + + parseLocale + false + true + + + +Specifies whether just the integer portion of +the given value should be parsed. + + integerOnly + false + true + + + +Name of the exported scoped variable which +stores the parsed result (of type +java.lang.Number). + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Formats a date and/or time using the supplied styles and pattern + + formatDate + org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag + empty + + +Date and/or time to be formatted. + + value + true + true + + + +Specifies whether the time, the date, or both +the time and date components of the given +date are to be formatted. + + type + false + true + + + +Predefined formatting style for dates. Follows +the semantics defined in class +java.text.DateFormat. Applied only +when formatting a date or both a date and +time (i.e. if type is missing or is equal to +"date" or "both"); ignored otherwise. + + dateStyle + false + true + + + +Predefined formatting style for times. Follows +the semantics defined in class +java.text.DateFormat. Applied only +when formatting a time or both a date and +time (i.e. if type is equal to "time" or "both"); +ignored otherwise. + + timeStyle + false + true + + + +Custom formatting style for dates and times. + + pattern + false + true + + + +Time zone in which to represent the formatted +time. + + timeZone + false + true + + + +Name of the exported scoped variable which +stores the formatted result as a String. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Parses the string representation of a date and/or time + + parseDate + org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag + JSP + + +Date string to be parsed. + + value + false + true + + + +Specifies whether the date string in the +value attribute is supposed to contain a +time, a date, or both. + + type + false + true + + + +Predefined formatting style for days +which determines how the date +component of the date string is to be +parsed. Applied only when formatting a +date or both a date and time (i.e. if type +is missing or is equal to "date" or "both"); +ignored otherwise. + + dateStyle + false + true + + + +Predefined formatting styles for times +which determines how the time +component in the date string is to be +parsed. Applied only when formatting a +time or both a date and time (i.e. if type +is equal to "time" or "both"); ignored +otherwise. + + timeStyle + false + true + + + +Custom formatting pattern which +determines how the date string is to be +parsed. + + pattern + false + true + + + +Time zone in which to interpret any time +information in the date string. + + timeZone + false + true + + + +Locale whose predefined formatting styles +for dates and times are to be used during +the parse operation, or to which the +pattern specified via the pattern +attribute (if present) is applied. + + parseLocale + false + true + + + +Name of the exported scoped variable in +which the parsing result (of type +java.util.Date) is stored. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + Index: lams_tool_leader/web/WEB-INF/tlds/jstl/fn.tld =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tlds/jstl/fn.tld (revision 0) +++ lams_tool_leader/web/WEB-INF/tlds/jstl/fn.tld (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,207 @@ + + + + + JSTL 1.1 functions library + JSTL functions + 1.1 + fn + http://java.sun.com/jsp/jstl/functions + + + + Tests if an input string contains the specified substring. + + contains + org.apache.taglibs.standard.functions.Functions + boolean contains(java.lang.String, java.lang.String) + + <c:if test="${fn:contains(name, searchString)}"> + + + + + + Tests if an input string contains the specified substring in a case insensitive way. + + containsIgnoreCase + org.apache.taglibs.standard.functions.Functions + boolean containsIgnoreCase(java.lang.String, java.lang.String) + + <c:if test="${fn:containsIgnoreCase(name, searchString)}"> + + + + + + Tests if an input string ends with the specified suffix. + + endsWith + org.apache.taglibs.standard.functions.Functions + boolean endsWith(java.lang.String, java.lang.String) + + <c:if test="${fn:endsWith(filename, ".txt")}"> + + + + + + Escapes characters that could be interpreted as XML markup. + + escapeXml + org.apache.taglibs.standard.functions.Functions + java.lang.String escapeXml(java.lang.String) + + ${fn:escapeXml(param:info)} + + + + + + Returns the index withing a string of the first occurrence of a specified substring. + + indexOf + org.apache.taglibs.standard.functions.Functions + int indexOf(java.lang.String, java.lang.String) + + ${fn:indexOf(name, "-")} + + + + + + Joins all elements of an array into a string. + + join + org.apache.taglibs.standard.functions.Functions + java.lang.String join(java.lang.String[], java.lang.String) + + ${fn:join(array, ";")} + + + + + + Returns the number of items in a collection, or the number of characters in a string. + + length + org.apache.taglibs.standard.functions.Functions + int length(java.lang.Object) + + You have ${fn:length(shoppingCart.products)} in your shopping cart. + + + + + + Returns a string resulting from replacing in an input string all occurrences + of a "before" string into an "after" substring. + + replace + org.apache.taglibs.standard.functions.Functions + java.lang.String replace(java.lang.String, java.lang.String, java.lang.String) + + ${fn:replace(text, "-", "•")} + + + + + + Splits a string into an array of substrings. + + split + org.apache.taglibs.standard.functions.Functions + java.lang.String[] split(java.lang.String, java.lang.String) + + ${fn:split(customerNames, ";")} + + + + + + Tests if an input string starts with the specified prefix. + + startsWith + org.apache.taglibs.standard.functions.Functions + boolean startsWith(java.lang.String, java.lang.String) + + <c:if test="${fn:startsWith(product.id, "100-")}"> + + + + + + Returns a subset of a string. + + substring + org.apache.taglibs.standard.functions.Functions + java.lang.String substring(java.lang.String, int, int) + + P.O. Box: ${fn:substring(zip, 6, -1)} + + + + + + Returns a subset of a string following a specific substring. + + substringAfter + org.apache.taglibs.standard.functions.Functions + java.lang.String substringAfter(java.lang.String, java.lang.String) + + P.O. Box: ${fn:substringAfter(zip, "-")} + + + + + + Returns a subset of a string before a specific substring. + + substringBefore + org.apache.taglibs.standard.functions.Functions + java.lang.String substringBefore(java.lang.String, java.lang.String) + + Zip (without P.O. Box): ${fn:substringBefore(zip, "-")} + + + + + + Converts all of the characters of a string to lower case. + + toLowerCase + org.apache.taglibs.standard.functions.Functions + java.lang.String toLowerCase(java.lang.String) + + Product name: ${fn.toLowerCase(product.name)} + + + + + + Converts all of the characters of a string to upper case. + + toUpperCase + org.apache.taglibs.standard.functions.Functions + java.lang.String toUpperCase(java.lang.String) + + Product name: ${fn.UpperCase(product.name)} + + + + + + Removes white spaces from both ends of a string. + + trim + org.apache.taglibs.standard.functions.Functions + java.lang.String trim(java.lang.String) + + Name: ${fn.trim(name)} + + + + Index: lams_tool_leader/web/WEB-INF/tlds/jstl/x.tld =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tlds/jstl/x.tld (revision 0) +++ lams_tool_leader/web/WEB-INF/tlds/jstl/x.tld (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,448 @@ + + + + + JSTL 1.1 XML library + JSTL XML + 1.1 + x + http://java.sun.com/jsp/jstl/xml + + + + Provides validation features for JSTL XML tags. + + + org.apache.taglibs.standard.tlv.JstlXmlTLV + + + + + + Simple conditional tag that establishes a context for + mutually exclusive conditional operations, marked by + <when> and <otherwise> + + choose + org.apache.taglibs.standard.tag.common.core.ChooseTag + JSP + + + + + Like <%= ... >, but for XPath expressions. + + out + org.apache.taglibs.standard.tag.rt.xml.ExprTag + empty + + +XPath expression to be evaluated. + + select + true + false + + + +Determines whether characters <,>,&,'," in the +resulting string should be converted to their +corresponding character entity codes. Default +value is true. + + escapeXml + false + true + + + + + + XML conditional tag, which evalutes its body if the + supplied XPath expression evalutes to 'true' as a boolean + + if + org.apache.taglibs.standard.tag.common.xml.IfTag + JSP + + +The test condition that tells whether or not the +body content should be processed. + + select + true + false + + + +Name of the exported scoped variable for the +resulting value of the test condition. The type +of the scoped variable is Boolean. + + var + false + false + + + +Scope for var. + + scope + false + false + + + + + + XML iteration tag. + + forEach + org.apache.taglibs.standard.tag.common.xml.ForEachTag + JSP + + +Name of the exported scoped variable for the +current item of the iteration. This scoped variable +has nested visibility. Its type depends on the +result of the XPath expression in the select +attribute. + + var + false + false + + + +XPath expression to be evaluated. + + select + true + false + + + +Iteration begins at the item located at the +specified index. First item of the collection has +index 0. + + begin + false + true + int + + + +Iteration ends at the item located at the specified +index (inclusive). + + end + false + true + int + + + +Iteration will only process every step items of +the collection, starting with the first one. + + step + false + true + int + + + +Name of the exported scoped variable for the +status of the iteration. Object exported is of type +javax.servlet.jsp.jstl.core.LoopTagStatus. This scoped variable has nested visibility. + + varStatus + false + false + + + + + + Subtag of <choose> that follows <when> tags + and runs only if all of the prior conditions evaluated to + 'false' + + otherwise + org.apache.taglibs.standard.tag.common.core.OtherwiseTag + JSP + + + + + Adds a parameter to a containing 'transform' tag's Transformer + + param + org.apache.taglibs.standard.tag.rt.xml.ParamTag + JSP + + +Name of the transformation parameter. + + name + true + true + + + +Value of the parameter. + + value + false + true + + + + + + Parses XML content from 'source' attribute or 'body' + + parse + org.apache.taglibs.standard.tag.rt.xml.ParseTag + org.apache.taglibs.standard.tei.XmlParseTEI + JSP + + +Name of the exported scoped variable for +the parsed XML document. The type of the +scoped variable is implementation +dependent. + + var + false + false + + + +Name of the exported scoped variable for +the parsed XML document. The type of the +scoped variable is +org.w3c.dom.Document. + + varDom + false + false + + + +Scope for var. + + scope + false + false + + + +Scope for varDom. + + scopeDom + false + false + + + +Deprecated. Use attribute 'doc' instead. + + xml + false + true + + + +Source XML document to be parsed. + + doc + false + true + + + +The system identifier (URI) for parsing the +XML document. + + systemId + false + true + + + +Filter to be applied to the source +document. + + filter + false + true + + + + + + Saves the result of an XPath expression evaluation in a 'scope' + + set + org.apache.taglibs.standard.tag.common.xml.SetTag + empty + + +Name of the exported scoped variable to hold +the value specified in the action. The type of the +scoped variable is whatever type the select +expression evaluates to. + + var + true + false + + + +XPath expression to be evaluated. + + select + false + false + + + +Scope for var. + + scope + false + false + + + + + + Conducts a transformation given a source XML document + and an XSLT stylesheet + + transform + org.apache.taglibs.standard.tag.rt.xml.TransformTag + org.apache.taglibs.standard.tei.XmlTransformTEI + JSP + + +Name of the exported +scoped variable for the +transformed XML +document. The type of the +scoped variable is +org.w3c.dom.Document. + + var + false + false + + + +Scope for var. + + scope + false + false + + + +Result +Object that captures or +processes the transformation +result. + + result + false + true + + + +Deprecated. Use attribute +'doc' instead. + + xml + false + true + + + +Source XML document to be +transformed. (If exported by +<x:set>, it must correspond +to a well-formed XML +document, not a partial +document.) + + doc + false + true + + + +Deprecated. Use attribute +'docSystemId' instead. + + xmlSystemId + false + true + + + +The system identifier (URI) +for parsing the XML +document. + + docSystemId + false + true + + + +javax.xml.transform.Source +Transformation stylesheet as +a String, Reader, or +Source object. + + xslt + false + true + + + +The system identifier (URI) +for parsing the XSLT +stylesheet. + + xsltSystemId + false + true + + + + + + Subtag of <choose> that includes its body if its + expression evalutes to 'true' + + when + org.apache.taglibs.standard.tag.common.xml.WhenTag + JSP + + +The test condition that tells whether or +not the body content should be +processed + + select + true + false + + + + Index: lams_tool_leader/web/WEB-INF/tlds/lams/lams.tld =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tlds/lams/lams.tld (revision 0) +++ lams_tool_leader/web/WEB-INF/tlds/lams/lams.tld (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,485 @@ + + + + + 1.0 + lams + + LAMSTags + + + + org.lamsfoundation.lams.web.SessionListener + + + + + Output the basic URL for the current webapp. e.g. http://server/lams/tool/nb11/ + Base URL for the current web app + + + WebAppURL + org.lamsfoundation.lams.web.tag.WebAppURLTag + empty + + + + + Help tag + Help tag + + + help + org.lamsfoundation.lams.web.tag.HelpTag + empty + + + Help tag + module + false + + true + + + + Help tag + toolSignature + false + + true + + + + Help tag + page + false + + true + + + + Help tag + style + false + + true + + + + + + + Get the configuration value for the specified key + Configuration value + + + Configuration + org.lamsfoundation.lams.web.tag.ConfigurationTag + empty + + + Get the configuration value for the specified key + key + false + + true + + + + + + + Output the Server URL as defined in the lams.xml configuration file. + LAMS URL + + + LAMSURL + org.lamsfoundation.lams.web.tag.LAMSURLTag + empty + + + + + Render html tag with direction and language + Render html tag with direction and language + + + html + org.lamsfoundation.lams.web.tag.HtmlTag + JSP + + + Render html tag with direction and language + xhtml + false + + true + + + + + + + Converts text from \n or \r\n to <BR> before rendering + Converts text from \n or \r\n to <BR> before rendering + + + out + org.lamsfoundation.lams.web.tag.MultiLinesOutputTag + empty + + + Converts text from \n or \r\n to <BR> before rendering + value + true + + true + + + + Converts text from \n or \r\n to <BR> before rendering + escapeHtml + false + + true + + + + + + + Converts role name into form usable as message resources key + Converts role name into form usable as message resources key + + + role + org.lamsfoundation.lams.web.tag.RoleTag + empty + + + Converts role name into form usable as message resources key + role + true + + true + + + + + + + Output stylesheet based on the user preferences. + User's chosen stylesheet + + + css + org.lamsfoundation.lams.web.tag.CssTag + empty + + + Output stylesheet based on the user preferences. + localLinkPath + false + + true + + + + Output stylesheet based on the user preferences. + style + false + + true + + + + + + + Output details from the shared session UserDTO object + user details + + + user + org.lamsfoundation.lams.web.tag.UserTag + empty + + + Output details from the shared session UserDTO object + property + true + + true + + + + + + + STRUTS-textarea + org.lamsfoundation.lams.web.tag.MultiLinesTextareaTag + empty + + accesskey + false + true + + + alt + false + true + + + altKey + false + true + + + bundle + false + true + + + cols + false + true + + + disabled + false + true + + + errorKey + false + true + + + errorStyle + false + true + + + errorStyleClass + false + true + + + errorStyleId + false + true + + + index + false + true + + + indexed + false + true + + + name + false + true + + + onblur + false + true + + + onchange + false + true + + + onclick + false + true + + + ondblclick + false + true + + + onfocus + false + true + + + onkeydown + false + true + + + onkeypress + false + true + + + onkeyup + false + true + + + onmousedown + false + true + + + onmousemove + false + true + + + onmouseout + false + true + + + onmouseover + false + true + + + onmouseup + false + true + + + property + true + true + + + readonly + false + true + + + rows + false + true + + + style + false + true + + + styleClass + false + true + + + styleId + false + true + + + tabindex + false + true + + + title + false + true + + + titleKey + false + true + + + value + false + true + + + + Tab + /WEB-INF/tags/Tab.tag + + + Tabs + /WEB-INF/tags/Tabs.tag + + + TabBody + /WEB-INF/tags/TabBody.tag + + + TabName + /WEB-INF/tags/TabName.tag + + + CKEditor + /WEB-INF/tags/CKEditor.tag + + + AuthoringButton + /WEB-INF/tags/AuthoringButton.tag + + + headItems + /WEB-INF/tags/headItems.tag + + + Date + /WEB-INF/tags/Date.tag + + + DefineLater + /WEB-INF/tags/DefineLater.tag + + + ImgButtonWrapper + /WEB-INF/tags/ImgButtonWrapper.tag + + + TextSearch + /WEB-INF/tags/TextSearch.tag + + + textarea + org.lamsfoundation.lams.web.tag.LAMSMultiLinesTextareaTag + JSP + true + + Render text exactly same as original input, which even won't escape the input HTML tag. + + + + + name + true + true + + + + + id + false + true + + + + + onchange + false + true + + + + head + /WEB-INF/tags/Head.tag + + + Index: lams_tool_leader/web/WEB-INF/tlds/struts/struts-bean-el.tld =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tlds/struts/struts-bean-el.tld (revision 0) +++ lams_tool_leader/web/WEB-INF/tlds/struts/struts-bean-el.tld (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,212 @@ + + + + + + + + + + +1.2 +1.1 +bean +http://struts.apache.org/tags-bean-el + +include +org.apache.strutsel.taglib.bean.ELIncludeTag +org.apache.struts.taglib.bean.IncludeTei +empty + +anchor +false +true + + +forward +false +true + + +href +false +true + + +id +true +false + + +name +false +true + + +page +false +true + + +transaction +false +true + + + +message +org.apache.strutsel.taglib.bean.ELMessageTag +empty + +arg0 +false +true + + +arg1 +false +true + + +arg2 +false +true + + +arg3 +false +true + + +arg4 +false +true + + +bundle +false +true + + +key +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +page +org.apache.strutsel.taglib.bean.ELPageTag +empty + +id +true +false + + +property +true +true + + + +resource +org.apache.strutsel.taglib.bean.ELResourceTag +org.apache.struts.taglib.bean.ResourceTei +empty + +id +true +false + + +input +false +true + + +name +true +true + + + +size +org.apache.strutsel.taglib.bean.ELSizeTag +org.apache.struts.taglib.bean.SizeTei +empty + +collection +false +true + + +id +true +false + + +name +false +true + + +property +false +true + + +scope +false +true + + + +struts +org.apache.strutsel.taglib.bean.ELStrutsTag +org.apache.struts.taglib.bean.StrutsTei +empty + +id +true +false + + +formBean +false +true + + +forward +false +true + + +mapping +false +true + + + + + + Index: lams_tool_leader/web/WEB-INF/tlds/struts/struts-bean.tld =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tlds/struts/struts-bean.tld (revision 0) +++ lams_tool_leader/web/WEB-INF/tlds/struts/struts-bean.tld (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,382 @@ + + + + + + + + + + +1.2 +1.1 +bean +http://struts.apache.org/tags-bean + +cookie +org.apache.struts.taglib.bean.CookieTag +org.apache.struts.taglib.bean.CookieTei +empty + +id +true +false + + +multiple +false +true + + +name +true +true + + +value +false +true + + + +define +org.apache.struts.taglib.bean.DefineTag +org.apache.struts.taglib.bean.DefineTei +JSP + +id +true +false + + +name +false +true + + +property +false +true + + +scope +false +true + + +toScope +false +true + + +type +false +true + + +value +false +true + + + +header +org.apache.struts.taglib.bean.HeaderTag +org.apache.struts.taglib.bean.HeaderTei +empty + +id +true +false + + +multiple +false +true + + +name +true +true + + +value +false +true + + + +include +org.apache.struts.taglib.bean.IncludeTag +org.apache.struts.taglib.bean.IncludeTei +empty + +anchor +false +true + + +forward +false +true + + +href +false +true + + +id +true +false + + +name +false +true + + +page +false +true + + +transaction +false +true + + + +message +org.apache.struts.taglib.bean.MessageTag +empty + +arg0 +false +true + + +arg1 +false +true + + +arg2 +false +true + + +arg3 +false +true + + +arg4 +false +true + + +bundle +false +true + + +key +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +page +org.apache.struts.taglib.bean.PageTag +org.apache.struts.taglib.bean.PageTei +empty + +id +true +false + + +property +true +true + + + +parameter +org.apache.struts.taglib.bean.ParameterTag +org.apache.struts.taglib.bean.ParameterTei +empty + +id +true +false + + +multiple +false +true + + +name +true +true + + +value +false +true + + + +resource +org.apache.struts.taglib.bean.ResourceTag +org.apache.struts.taglib.bean.ResourceTei +empty + +id +true +false + + +input +false +true + + +name +true +true + + + +size +org.apache.struts.taglib.bean.SizeTag +org.apache.struts.taglib.bean.SizeTei +empty + +collection +false +true + + +id +true +false + + +name +false +true + + +property +false +true + + +scope +false +true + + + +struts +org.apache.struts.taglib.bean.StrutsTag +org.apache.struts.taglib.bean.StrutsTei +empty + +id +true +false + + +formBean +false +true + + +forward +false +true + + +mapping +false +true + + + +write +org.apache.struts.taglib.bean.WriteTag +empty + +bundle +false +true + + +filter +false +true + + +format +false +true + + +formatKey +false +true + + +ignore +false +true + + +locale +false +true + + +name +true +true + + +property +false +true + + +scope +false +true + + + + + + Index: lams_tool_leader/web/WEB-INF/tlds/struts/struts-html-el.tld =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tlds/struts/struts-html-el.tld (revision 0) +++ lams_tool_leader/web/WEB-INF/tlds/struts/struts-html-el.tld (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,3302 @@ + + + + + + + + + + +1.2 +1.1 +html +http://struts.apache.org/tags-html-el + +base +org.apache.strutsel.taglib.html.ELBaseTag +empty + +target +false +true + + +server +false +true + + + +button +org.apache.strutsel.taglib.html.ELButtonTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +cancel +org.apache.strutsel.taglib.html.ELCancelTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +checkbox +org.apache.strutsel.taglib.html.ELCheckboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +errors +org.apache.strutsel.taglib.html.ELErrorsTag +empty + +bundle +false +true + + +footer +false +true + + +header +false +true + + +locale +false +true + + +name +false +true + + +prefix +false +true + + +property +false +true + + +suffix +false +true + + + +file +org.apache.strutsel.taglib.html.ELFileTag + +accesskey +false +true + + +accept +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +form +org.apache.strutsel.taglib.html.ELFormTag +JSP + +action +true +true + + +acceptCharset +false +true + + +disabled +false +true + + +enctype +false +true + + +focus +false +true + + +focusIndex +false +true + + +method +false +true + + +onreset +false +true + + +onsubmit +false +true + + +readonly +false +true + + +scriptLanguage +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +target +false +true + + + +frame +org.apache.strutsel.taglib.html.ELFrameTag + +bundle +false +true + + +action +false +true + + +module +false +true + + +anchor +false +true + + +forward +false +true + + +frameborder +false +true + + +frameName +false +true + + +href +false +true + + +longdesc +false +true + + +marginheight +false +true + + +marginwidth +false +true + + +name +false +true + + +noresize +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +scrolling +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +transaction +false +true + + + +hidden +org.apache.strutsel.taglib.html.ELHiddenTag +empty + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + +write +false +true + + + +html +org.apache.strutsel.taglib.html.ELHtmlTag +JSP + +lang +false +true + + +locale +false +true + + +xhtml +false +true + + + +image +org.apache.strutsel.taglib.html.ELImageTag + +accesskey +false +true + + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +locale +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +pageKey +false +true + + +property +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +img +org.apache.strutsel.taglib.html.ELImgTag +empty + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +contextRelative +false +true + + +height +false +true + + +hspace +false +true + + +imageName +false +true + + +ismap +false +true + + +locale +false +true + + +lowsrc +false +true + + +name +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +paramId +false +true + + +page +false +true + + +pageKey +false +true + + +action +false +true + + +module +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +useLocalEncoding +false +true + + +usemap +false +true + + +vspace +false +true + + +width +false +true + + + +javascript +org.apache.strutsel.taglib.html.ELJavascriptValidatorTag +empty + +cdata +false +true + + +dynamicJavascript +false +false + + +formName +false +true + + +method +false +true + + +page +false +true + + +scriptLanguage +false +true + + +src +false +true + + +staticJavascript +false +false + + +htmlComment +false +true + + +bundle +false +true + + + +link +org.apache.strutsel.taglib.html.ELLinkTag + +accesskey +false +true + + +action +false +true + + +module +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +indexed +false +true + + +indexId +false +true + + +bundle +false +true + + +linkName +false +true + + +name +false +true + + +onblur +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +target +false +true + + +title +false +true + + +titleKey +false +true + + +transaction +false +true + + +useLocalEncoding +false +true + + + +messages +org.apache.strutsel.taglib.html.ELMessagesTag +org.apache.struts.taglib.html.MessagesTei +JSP + +id +true +false + + +bundle +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +header +false +true + + +footer +false +true + + +message +false +true + + + +multibox +org.apache.strutsel.taglib.html.ELMultiboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +option +org.apache.strutsel.taglib.html.ELOptionTag + +bundle +false +true + + +disabled +false +true + + +key +false +true + + +locale +false +true + + +style +false +true + + +styleId +false +true + + +styleClass +false +true + + +value +true +true + + + +options +org.apache.strutsel.taglib.html.ELOptionsTag +empty + +collection +false +true + + +filter +false +true + + +labelName +false +true + + +labelProperty +false +true + + +name +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + + +optionsCollection +org.apache.strutsel.taglib.html.ELOptionsCollectionTag +empty + +filter +false +true + + +label +false +true + + +name +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +value +false +true + + + +password +org.apache.strutsel.taglib.html.ELPasswordTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +redisplay +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +size +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +radio +org.apache.strutsel.taglib.html.ELRadioTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +property +true +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +true +true + + +idName +false +true + + + +reset +org.apache.strutsel.taglib.html.ELResetTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +rewrite +org.apache.strutsel.taglib.html.ELRewriteTag +empty + +action +false +true + + +module +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +name +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +transaction +false +true + + +useLocalEncoding +false +true + + + +select +org.apache.strutsel.taglib.html.ELSelectTag +JSP + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +multiple +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +size +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +submit +org.apache.strutsel.taglib.html.ELSubmitTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +text +org.apache.strutsel.taglib.html.ELTextTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +textarea +org.apache.strutsel.taglib.html.ELTextareaTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +cols +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +rows +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +xhtml +org.apache.struts.taglib.html.XhtmlTag +empty + + + Index: lams_tool_leader/web/WEB-INF/tlds/struts/struts-html.tld =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tlds/struts/struts-html.tld (revision 0) +++ lams_tool_leader/web/WEB-INF/tlds/struts/struts-html.tld (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,3302 @@ + + + + + + + + + + +1.2 +1.1 +html +http://struts.apache.org/tags-html + +base +org.apache.struts.taglib.html.BaseTag +empty + +target +false +true + + +server +false +true + + + +button +org.apache.struts.taglib.html.ButtonTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +cancel +org.apache.struts.taglib.html.CancelTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +checkbox +org.apache.struts.taglib.html.CheckboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +errors +org.apache.struts.taglib.html.ErrorsTag +empty + +bundle +false +true + + +footer +false +true + + +header +false +true + + +locale +false +true + + +name +false +true + + +prefix +false +true + + +property +false +true + + +suffix +false +true + + + +file +org.apache.struts.taglib.html.FileTag + +accesskey +false +true + + +accept +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +form +org.apache.struts.taglib.html.FormTag +JSP + +action +true +true + + +acceptCharset +false +true + + +disabled +false +true + + +enctype +false +true + + +focus +false +true + + +focusIndex +false +true + + +method +false +true + + +onreset +false +true + + +onsubmit +false +true + + +readonly +false +true + + +scriptLanguage +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +target +false +true + + + +frame +org.apache.struts.taglib.html.FrameTag + +bundle +false +true + + +action +false +true + + +module +false +true + + +anchor +false +true + + +forward +false +true + + +frameborder +false +true + + +frameName +false +true + + +href +false +true + + +longdesc +false +true + + +marginheight +false +true + + +marginwidth +false +true + + +name +false +true + + +noresize +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +scrolling +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +transaction +false +true + + + +hidden +org.apache.struts.taglib.html.HiddenTag +empty + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + +write +false +true + + + +html +org.apache.struts.taglib.html.HtmlTag +JSP + +lang +false +true + + +locale +false +true + + +xhtml +false +true + + + +image +org.apache.struts.taglib.html.ImageTag + +accesskey +false +true + + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +locale +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +pageKey +false +true + + +property +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +img +org.apache.struts.taglib.html.ImgTag +empty + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +contextRelative +false +true + + +height +false +true + + +hspace +false +true + + +imageName +false +true + + +ismap +false +true + + +locale +false +true + + +lowsrc +false +true + + +name +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +paramId +false +true + + +page +false +true + + +pageKey +false +true + + +action +false +true + + +module +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +useLocalEncoding +false +true + + +usemap +false +true + + +vspace +false +true + + +width +false +true + + + +javascript +org.apache.struts.taglib.html.JavascriptValidatorTag +empty + +cdata +false +true + + +dynamicJavascript +false +false + + +formName +false +true + + +method +false +true + + +page +false +true + + +scriptLanguage +false +true + + +src +false +true + + +staticJavascript +false +false + + +htmlComment +false +true + + +bundle +false +true + + + +link +org.apache.struts.taglib.html.LinkTag + +accesskey +false +true + + +action +false +true + + +module +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +indexed +false +true + + +indexId +false +true + + +bundle +false +true + + +linkName +false +true + + +name +false +true + + +onblur +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +target +false +true + + +title +false +true + + +titleKey +false +true + + +transaction +false +true + + +useLocalEncoding +false +true + + + +messages +org.apache.struts.taglib.html.MessagesTag +org.apache.struts.taglib.html.MessagesTei +JSP + +id +true +false + + +bundle +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +header +false +true + + +footer +false +true + + +message +false +true + + + +multibox +org.apache.struts.taglib.html.MultiboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +option +org.apache.struts.taglib.html.OptionTag + +bundle +false +true + + +disabled +false +true + + +key +false +true + + +locale +false +true + + +style +false +true + + +styleId +false +true + + +styleClass +false +true + + +value +true +true + + + +options +org.apache.struts.taglib.html.OptionsTag +empty + +collection +false +true + + +filter +false +true + + +labelName +false +true + + +labelProperty +false +true + + +name +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + + +optionsCollection +org.apache.struts.taglib.html.OptionsCollectionTag +empty + +filter +false +true + + +label +false +true + + +name +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +value +false +true + + + +password +org.apache.struts.taglib.html.PasswordTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +redisplay +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +size +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +radio +org.apache.struts.taglib.html.RadioTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +property +true +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +true +true + + +idName +false +true + + + +reset +org.apache.struts.taglib.html.ResetTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +rewrite +org.apache.struts.taglib.html.RewriteTag +empty + +action +false +true + + +module +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +name +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +transaction +false +true + + +useLocalEncoding +false +true + + + +select +org.apache.struts.taglib.html.SelectTag +JSP + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +multiple +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +size +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +submit +org.apache.struts.taglib.html.SubmitTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +text +org.apache.struts.taglib.html.TextTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +textarea +org.apache.struts.taglib.html.TextareaTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +cols +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +rows +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +xhtml +org.apache.struts.taglib.html.XhtmlTag +empty + + + Index: lams_tool_leader/web/WEB-INF/tlds/struts/struts-logic-el.tld =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tlds/struts/struts-logic-el.tld (revision 0) +++ lams_tool_leader/web/WEB-INF/tlds/struts/struts-logic-el.tld (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,382 @@ + + + + + + + + + +1.2 +1.1 +logic +http://struts.apache.org/tags-logic-el + +forward +org.apache.strutsel.taglib.logic.ELForwardTag +empty + +name +true +true + + + +iterate +org.apache.strutsel.taglib.logic.ELIterateTag +org.apache.struts.taglib.logic.IterateTei +JSP + +collection +false +true + + +id +true +false + + +indexId +false +false + + +length +false +true + + +name +false +true + + +offset +false +true + + +property +false +true + + +scope +false +true + + +type +false +true + + + +match +org.apache.strutsel.taglib.logic.ELMatchTag +JSP + +cookie +false +true + + +expr +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +messagesNotPresent +org.apache.strutsel.taglib.logic.ELMessagesNotPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +messagesPresent +org.apache.strutsel.taglib.logic.ELMessagesPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +notMatch +org.apache.strutsel.taglib.logic.ELNotMatchTag +JSP + +cookie +false +true + + +expr +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notPresent +org.apache.strutsel.taglib.logic.ELNotPresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + +present +org.apache.strutsel.taglib.logic.ELPresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + +redirect +org.apache.strutsel.taglib.logic.ELRedirectTag + +action +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +name +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +transaction +false +true + + +useLocalEncoding +false +true + + + + + + Index: lams_tool_leader/web/WEB-INF/tlds/struts/struts-logic.tld =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tlds/struts/struts-logic.tld (revision 0) +++ lams_tool_leader/web/WEB-INF/tlds/struts/struts-logic.tld (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,652 @@ + + + + + + + + + +1.2 +1.1 +logic +http://struts.apache.org/tags-logic + +empty +org.apache.struts.taglib.logic.EmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + +equal +org.apache.struts.taglib.logic.EqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +forward +org.apache.struts.taglib.logic.ForwardTag +empty + +name +true +true + + + +greaterEqual +org.apache.struts.taglib.logic.GreaterEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +greaterThan +org.apache.struts.taglib.logic.GreaterThanTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +iterate +org.apache.struts.taglib.logic.IterateTag +org.apache.struts.taglib.logic.IterateTei +JSP + +collection +false +true + + +id +true +false + + +indexId +false +false + + +length +false +true + + +name +false +true + + +offset +false +true + + +property +false +true + + +scope +false +true + + +type +false +true + + + +lessEqual +org.apache.struts.taglib.logic.LessEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +lessThan +org.apache.struts.taglib.logic.LessThanTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +match +org.apache.struts.taglib.logic.MatchTag +JSP + +cookie +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +messagesNotPresent +org.apache.struts.taglib.logic.MessagesNotPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +messagesPresent +org.apache.struts.taglib.logic.MessagesPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +notEmpty +org.apache.struts.taglib.logic.NotEmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + +notEqual +org.apache.struts.taglib.logic.NotEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notMatch +org.apache.struts.taglib.logic.NotMatchTag +JSP + +cookie +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notPresent +org.apache.struts.taglib.logic.NotPresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + +present +org.apache.struts.taglib.logic.PresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + +redirect +org.apache.struts.taglib.logic.RedirectTag + +action +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +name +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +transaction +false +true + + +useLocalEncoding +false +true + + + + + + Index: lams_tool_leader/web/WEB-INF/tlds/struts/struts-nested.tld =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tlds/struts/struts-nested.tld (revision 0) +++ lams_tool_leader/web/WEB-INF/tlds/struts/struts-nested.tld (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,3171 @@ + + + + + + + + + +1.2 +1.1 +nested +http://struts.apache.org/tags-nested + +nest +org.apache.struts.taglib.nested.NestedPropertyTag +JSP + +property +false +true + + + +writeNesting +org.apache.struts.taglib.nested.NestedWriteNestingTag +org.apache.struts.taglib.nested.NestedWriteNestingTei +JSP + +property +false +true + + +id +false +true + + +filter +false +true + + + +root +org.apache.struts.taglib.nested.NestedRootTag +JSP + +name +false +true + + + +define +org.apache.struts.taglib.nested.bean.NestedDefineTag +org.apache.struts.taglib.nested.bean.NestedDefineTei +empty + +id +true +true + + +name +false +true + + +property +false +true + + +scope +false +true + + +toScope +false +true + + +type +false +true + + +value +false +true + + + +message +org.apache.struts.taglib.nested.bean.NestedMessageTag +empty + +arg0 +false +true + + +arg1 +false +true + + +arg2 +false +true + + +arg3 +false +true + + +arg4 +false +true + + +bundle +false +true + + +key +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +size +org.apache.struts.taglib.nested.bean.NestedSizeTag +org.apache.struts.taglib.bean.SizeTei +empty + +collection +false +true + + +id +true +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +write +org.apache.struts.taglib.nested.bean.NestedWriteTag +empty + +bundle +false +true + + +filter +false +true + + +format +false +true + + +formatKey +false +true + + +ignore +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +checkbox +org.apache.struts.taglib.nested.html.NestedCheckboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +errors +org.apache.struts.taglib.nested.html.NestedErrorsTag +empty + +bundle +false +true + + +footer +false +true + + +header +false +true + + +locale +false +true + + +name +false +true + + +prefix +false +true + + +property +false +true + + +suffix +false +true + + + +file +org.apache.struts.taglib.nested.html.NestedFileTag + +accesskey +false +true + + +accept +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +form +org.apache.struts.taglib.nested.html.NestedFormTag +JSP + +action +true +true + + +acceptCharset +false +true + + +disabled +false +true + + +enctype +false +true + + +focus +false +true + + +focusIndex +false +true + + +method +false +true + + +onreset +false +true + + +onsubmit +false +true + + +readonly +false +true + + +scriptLanguage +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +target +false +true + + + +hidden +org.apache.struts.taglib.nested.html.NestedHiddenTag + +alt +false +true + + +altKey +false +true + + +indexed +false +true + + +name +false +true + + +property +true +true + + +title +false +true + + +titleKey +false +true + + +styleClass +false +true + + +styleId +false +true + + +value +false +true + + +write +false +true + + + +image +org.apache.struts.taglib.nested.html.NestedImageTag + +accesskey +false +true + + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +locale +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +pageKey +false +true + + +property +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +img +org.apache.struts.taglib.nested.html.NestedImgTag +empty + +accesskey +false +true + + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +height +false +true + + +hspace +false +true + + +imageName +false +true + + +ismap +false +true + + +locale +false +true + + +lowsrc +false +true + + +name +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +paramId +false +true + + +page +false +true + + +pageKey +false +true + + +action +false +true + + +module +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +useLocalEncoding +false +true + + +usemap +false +true + + +vspace +false +true + + +width +false +true + + + +link +org.apache.struts.taglib.nested.html.NestedLinkTag + +accesskey +false +true + + +action +false +true + + +module +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +indexed +false +true + + +indexId +false +true + + +bundle +false +true + + +linkName +false +true + + +name +false +true + + +onblur +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +target +false +true + + +title +false +true + + +titleKey +false +true + + +transaction +false +true + + +useLocalEncoding +false +true + + + +messages +org.apache.struts.taglib.nested.html.NestedMessagesTag +org.apache.struts.taglib.html.MessagesTei +JSP + +id +true +true + + +bundle +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +header +false +true + + +footer +false +true + + +message +false +true + + + +multibox +org.apache.struts.taglib.nested.html.NestedMultiboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +options +org.apache.struts.taglib.nested.html.NestedOptionsTag +empty + +collection +false +true + + +filter +false +true + + +labelName +false +true + + +labelProperty +false +true + + +name +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + + +optionsCollection +org.apache.struts.taglib.nested.html.NestedOptionsCollectionTag +empty + +filter +false +true + + +label +false +true + + +name +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +value +false +true + + + +password +org.apache.struts.taglib.nested.html.NestedPasswordTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +redisplay +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +size +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +radio +org.apache.struts.taglib.nested.html.NestedRadioTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +property +true +true + + +onmousedown +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +true +true + + +idName +false +true + + + +select +org.apache.struts.taglib.nested.html.NestedSelectTag +JSP + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +multiple +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +size +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +submit +org.apache.struts.taglib.nested.html.NestedSubmitTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +text +org.apache.struts.taglib.nested.html.NestedTextTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +textarea +org.apache.struts.taglib.nested.html.NestedTextareaTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +cols +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +rows +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +empty +org.apache.struts.taglib.nested.logic.NestedEmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + +equal +org.apache.struts.taglib.nested.logic.NestedEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +greaterEqual +org.apache.struts.taglib.nested.logic.NestedGreaterEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +greaterThan +org.apache.struts.taglib.nested.logic.NestedGreaterThanTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +iterate +org.apache.struts.taglib.nested.logic.NestedIterateTag +org.apache.struts.taglib.nested.logic.NestedIterateTei +JSP + +collection +false +true + + +id +false +true + + +indexId +false +true + + +length +false +true + + +name +false +true + + +offset +false +true + + +property +false +true + + +scope +false +true + + +type +false +true + + + +lessEqual +org.apache.struts.taglib.nested.logic.NestedLessEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +lessThan +org.apache.struts.taglib.nested.logic.NestedLessThanTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +match +org.apache.struts.taglib.nested.logic.NestedMatchTag +JSP + +cookie +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +messagesNotPresent +org.apache.struts.taglib.nested.logic.NestedMessagesNotPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +messagesPresent +org.apache.struts.taglib.nested.logic.NestedMessagesPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +notEmpty +org.apache.struts.taglib.nested.logic.NestedNotEmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + +notEqual +org.apache.struts.taglib.nested.logic.NestedNotEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notMatch +org.apache.struts.taglib.nested.logic.NestedNotMatchTag +JSP + +cookie +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notPresent +org.apache.struts.taglib.nested.logic.NestedNotPresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + +present +org.apache.struts.taglib.nested.logic.NestedPresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + + + + Index: lams_tool_leader/web/WEB-INF/tlds/struts/struts-tiles-el.tld =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tlds/struts/struts-tiles-el.tld (revision 0) +++ lams_tool_leader/web/WEB-INF/tlds/struts/struts-tiles-el.tld (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,343 @@ + + + + + + + + + + +1.2 +1.1 +tiles +http://struts.apache.org/tags-tiles-el + +insert +org.apache.strutsel.taglib.tiles.ELInsertTag +JSP + +template +false +true + + +component +false +true + + +page +false +true + + +definition +false +true + + +attribute +false +false + + +name +false +true + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +flush +false +false + + +ignore +false +true + + +role +false +true + + +controllerUrl +false +true + + +controllerClass +false +true + + + +definition +org.apache.strutsel.taglib.tiles.ELDefinitionTag +JSP + +id +true +false + + +scope +false +false + + +template +false +true + + +page +false +true + + +role +false +true + + +extends +false +true + + + +put +org.apache.strutsel.taglib.tiles.ELPutTag +JSP + +name +false +false + + +value +false +true + + +content +false +true + + +direct +false +false + + +type +false +false + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +role +false +true + + + +putList +org.apache.strutsel.taglib.tiles.ELPutListTag +JSP + +name +true +false + + + +add +org.apache.strutsel.taglib.tiles.ELAddTag +JSP + +value +false +false + + +content +false +true + + +direct +false +false + + +type +false +false + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +role +false +true + + + +get +org.apache.strutsel.taglib.tiles.ELGetTag +empty + +name +true +true + + +ignore +false +true + + +flush +false +false + + +role +false +true + + + +getAsString +org.apache.strutsel.taglib.tiles.ELGetAttributeTag +empty + +name +true +true + + +ignore +false +true + + +role +false +true + + + +useAttribute +org.apache.strutsel.taglib.tiles.ELUseAttributeTag +empty + +id +false +false + + +classname +false +false + + +scope +false +false + + +name +true +true + + +ignore +false +true + + + +importAttribute +org.apache.strutsel.taglib.tiles.ELImportAttributeTag +empty + +name +false +true + + +scope +false +false + + +ignore +false +true + + + +initComponentDefinitions +org.apache.strutsel.taglib.tiles.ELInitDefinitionsTag +empty + +file +true +false + + +classname +false +false + + + + + + Index: lams_tool_leader/web/WEB-INF/tlds/struts/struts-tiles.tld =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/tlds/struts/struts-tiles.tld (revision 0) +++ lams_tool_leader/web/WEB-INF/tlds/struts/struts-tiles.tld (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,344 @@ + + + + + + + + + + +1.2 +1.1 +tiles +http://struts.apache.org/tags-tiles + +insert +org.apache.struts.taglib.tiles.InsertTag +JSP + +template +false +true + + +component +false +true + + +page +false +true + + +definition +false +true + + +attribute +false +false + + +name +false +true + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +flush +false +false + + +ignore +false +true + + +role +false +true + + +controllerUrl +false +true + + +controllerClass +false +true + + + +definition +org.apache.struts.taglib.tiles.DefinitionTag +JSP + +id +true +false + + +scope +false +false + + +template +false +true + + +page +false +true + + +role +false +true + + +extends +false +true + + + +put +org.apache.struts.taglib.tiles.PutTag +JSP + +name +false +false + + +value +false +true + + +content +false +true + + +direct +false +false + + +type +false +false + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +role +false +true + + + +putList +org.apache.struts.taglib.tiles.PutListTag +JSP + +name +true +false + + + +add +org.apache.struts.taglib.tiles.AddTag +JSP + +value +false +false + + +content +false +true + + +direct +false +false + + +type +false +false + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +role +false +true + + + +get +org.apache.struts.taglib.tiles.GetTag +empty + +name +true +true + + +ignore +false +true + + +flush +false +false + + +role +false +true + + + +getAsString +org.apache.struts.taglib.tiles.GetAttributeTag +empty + +name +true +true + + +ignore +false +true + + +role +false +true + + + +useAttribute +org.apache.struts.taglib.tiles.UseAttributeTag +org.apache.struts.taglib.tiles.UseAttributeTei +empty + +id +false +false + + +classname +false +false + + +scope +false +false + + +name +true +true + + +ignore +false +true + + + +importAttribute +org.apache.struts.taglib.tiles.ImportAttributeTag +empty + +name +false +true + + +scope +false +false + + +ignore +false +true + + + +initComponentDefinitions +org.apache.struts.taglib.tiles.InitDefinitionsTag +empty + +file +true +false + + +classname +false +false + + + + + + Index: lams_tool_leader/web/WEB-INF/urlrewrite.xml =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/urlrewrite.xml (revision 0) +++ lams_tool_leader/web/WEB-INF/urlrewrite.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,26 @@ + + + + + + + + + The rule means that requests to tool's learning jsp will be redirected to /learning/mobile/ folder + containing mobile version of jsps. + Regexes are taken from http://detectmobilebrowser.com/download/jsp. and we might need to update it somewhere in the future. + + .*((android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino).*?i + ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-).*?i + ^/layouts/learningLayout.jsp$ + /layouts/mobileLearningLayout.jsp + + + + Index: lams_tool_leader/web/WEB-INF/validator-rules.xml =================================================================== diff -u --- lams_tool_leader/web/WEB-INF/validator-rules.xml (revision 0) +++ lams_tool_leader/web/WEB-INF/validator-rules.xml (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_leader/web/common/empty.jsp =================================================================== diff -u --- lams_tool_leader/web/common/empty.jsp (revision 0) +++ lams_tool_leader/web/common/empty.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1 @@ \ No newline at end of file Index: lams_tool_leader/web/common/footer.jsp =================================================================== diff -u --- lams_tool_leader/web/common/footer.jsp (revision 0) +++ lams_tool_leader/web/common/footer.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1 @@ +

Copyright (C) 2006 LAMS Foundation (http://lamsfoundation.org

Index: lams_tool_leader/web/common/header.jsp =================================================================== diff -u --- lams_tool_leader/web/common/header.jsp (revision 0) +++ lams_tool_leader/web/common/header.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,16 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + <fmt:message key="activity.title" /> + + + + Index: lams_tool_leader/web/common/learnerheader.jsp =================================================================== diff -u --- lams_tool_leader/web/common/learnerheader.jsp (revision 0) +++ lams_tool_leader/web/common/learnerheader.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,25 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + <fmt:message key="activity.title" /> + + + + + + + + + Index: lams_tool_leader/web/common/message.jsp =================================================================== diff -u --- lams_tool_leader/web/common/message.jsp (revision 0) +++ lams_tool_leader/web/common/message.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,5 @@ +<%@ include file="/common/taglibs.jsp"%> + +

+ ${requestScope.message}; +

Index: lams_tool_leader/web/common/messages.jsp =================================================================== diff -u --- lams_tool_leader/web/common/messages.jsp (revision 0) +++ lams_tool_leader/web/common/messages.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,8 @@ +<%-- Error Messages --%> + +

+ +
+
+

+
Index: lams_tool_leader/web/common/taglibs.jsp =================================================================== diff -u --- lams_tool_leader/web/common/taglibs.jsp (revision 0) +++ lams_tool_leader/web/common/taglibs.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,11 @@ +<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=utf-8"%> + +<%@ taglib uri="tags-bean" prefix="bean"%> +<%@ taglib uri="tags-logic" prefix="logic"%> +<%@ taglib uri="tags-tiles" prefix="tiles"%> +<%@ taglib uri="tags-html" prefix="html"%> +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-fmt" prefix="fmt"%> +<%@ taglib uri="tags-lams" prefix="lams"%> + + Index: lams_tool_leader/web/error.jsp =================================================================== diff -u --- lams_tool_leader/web/error.jsp (revision 0) +++ lams_tool_leader/web/error.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,91 @@ +<%-- +Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) +License Information: http://lamsfoundation.org/licensing/lams/2.0/ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License version 2 as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + http://www.gnu.org/licenses/gpl.txt +--%> + + + +<%@ page language="java" isErrorPage="true" pageEncoding="UTF-8" contentType="text/html;charset=utf-8"%> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-fmt" prefix="fmt"%> + + + + + + +<%-- Catch JSP Servlet Exception --%> +<% +if (exception != null) { +%> + + <%=exception.getMessage()%> + + + <%=exception.getClass().getName()%> + +<% + java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream(); + java.io.PrintStream os = new java.io.PrintStream(bos); + exception.printStackTrace(os); + String stack = new String(bos.toByteArray()); +%> + + <%=stack%> + +<% +} else if ((Exception) request.getAttribute("javax.servlet.error.exception") != null) { +%> + + + <%=((Exception) request.getAttribute("javax.servlet.error.exception")).getMessage()%> + + + <%=((Exception) request.getAttribute("javax.servlet.error.exception")).getMessage() + .getClass().getName()%> + +<% + java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream(); + java.io.PrintStream os = new java.io.PrintStream(bos); + ((Exception) request.getAttribute("javax.servlet.error.exception")).printStackTrace(os); + String stack = new String(bos.toByteArray()); +%> + + <%=stack%> + +<% +} +%> + +
+ + + +
+ + + +
Index: lams_tool_leader/web/images/cross.gif =================================================================== diff -u Binary files differ Index: lams_tool_leader/web/images/down.gif =================================================================== diff -u Binary files differ Index: lams_tool_leader/web/images/down_disabled.gif =================================================================== diff -u Binary files differ Index: lams_tool_leader/web/images/edit.gif =================================================================== diff -u Binary files differ Index: lams_tool_leader/web/images/icon_leaderselection.ai =================================================================== diff -u --- lams_tool_leader/web/images/icon_leaderselection.ai (revision 0) +++ lams_tool_leader/web/images/icon_leaderselection.ai (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,1905 @@ +%PDF-1.5 +%���� +1 0 obj +<>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>> +endobj +2 0 obj +<>stream + + + + + application/pdf + + + icon_leaderselection + + + + + Adobe Illustrator CS6 (Windows) + 2013-08-29T16:43:49-02:00 + 2013-08-29T16:43:49-03:00 + 2013-08-29T16:43:49-03:00 + + + + 256 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FUPqD3EdhcyW1DcJE7Q13HMKStfpyMro02YREzAl9Ni3ydqt7d3sslzdzPPcS ktJLISzEn3Oc7xEmy+txxRhHhiKAY9+kr/TbyO9sLiS1u4TyimiYqyke4zIxkg7OBqMcZgiQsPtP T3uXsLZ7ocblokM60pSQqOQp883YfMZgcRrkr4WLsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVdirsVdir5N8y2a2Or6jZL9m1uZoRTwjkK/wznJxqRHm+t6fJ4m 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 xV//2Q== + + + + + + uuid:9E3E5C9A8C81DB118734DB58FDDE4BA7 + xmp.did:43EB9915D310E311BE2EE28E68B29B7D + uuid:75615987-9978-442a-855f-7c49b97e204a + proof:pdf + + uuid:be7b52e5-b3f7-084b-afd9-c4a7b8bb0acb + xmp.did:01801174072068118083917CE3B5B58A + uuid:9E3E5C9A8C81DB118734DB58FDDE4BA7 + proof:pdf + + + + + saved + xmp.iid:43EB9915D310E311BE2EE28E68B29B7D + 2013-08-29T16:43:47-03:00 + Adobe Illustrator CS6 (Windows) + / + + + + + + Basic RGB + Document + + + 1 + False + False + + 50.000000 + 50.000000 + Pixels + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 255 + 255 + 255 + + + Black + RGB + PROCESS + 0 + 0 + 0 + + + RGB Red + RGB + PROCESS + 255 + 0 + 0 + + + RGB Yellow + RGB + PROCESS + 255 + 255 + 0 + + + RGB Green + RGB + PROCESS + 0 + 255 + 0 + + + RGB Cyan + RGB + PROCESS + 0 + 255 + 255 + + + RGB Blue + RGB + PROCESS + 0 + 0 + 255 + + + RGB Magenta + RGB + PROCESS + 255 + 0 + 255 + + + R=193 G=39 B=45 + RGB + PROCESS + 193 + 39 + 45 + + + R=237 G=28 B=36 + RGB + PROCESS + 237 + 28 + 36 + + + R=241 G=90 B=36 + RGB + PROCESS + 241 + 90 + 36 + + + R=247 G=147 B=30 + RGB + PROCESS + 247 + 147 + 30 + + + R=251 G=176 B=59 + RGB + PROCESS + 251 + 176 + 59 + + + R=252 G=238 B=33 + RGB + PROCESS + 252 + 238 + 33 + + + R=217 G=224 B=33 + RGB + PROCESS + 217 + 224 + 33 + + + R=140 G=198 B=63 + RGB + PROCESS + 140 + 198 + 63 + + + R=57 G=181 B=74 + RGB + PROCESS + 57 + 181 + 74 + + + R=0 G=146 B=69 + RGB + PROCESS + 0 + 146 + 69 + + + R=0 G=104 B=55 + RGB + PROCESS + 0 + 104 + 55 + + + R=34 G=181 B=115 + RGB + PROCESS + 34 + 181 + 115 + + + R=0 G=169 B=157 + RGB + PROCESS + 0 + 169 + 157 + + + R=41 G=171 B=226 + RGB + PROCESS + 41 + 171 + 226 + + + R=0 G=113 B=188 + RGB + PROCESS + 0 + 113 + 188 + + + R=46 G=49 B=146 + RGB + PROCESS + 46 + 49 + 146 + + + R=27 G=20 B=100 + RGB + PROCESS + 27 + 20 + 100 + + + R=102 G=45 B=145 + RGB + PROCESS + 102 + 45 + 145 + + + R=147 G=39 B=143 + RGB + PROCESS + 147 + 39 + 143 + + + R=158 G=0 B=93 + RGB + PROCESS + 158 + 0 + 93 + + + R=212 G=20 B=90 + RGB + PROCESS + 212 + 20 + 90 + + + R=237 G=30 B=121 + RGB + PROCESS + 237 + 30 + 121 + + + R=199 G=178 B=153 + RGB + PROCESS + 199 + 178 + 153 + + + R=153 G=134 B=117 + RGB + PROCESS + 153 + 134 + 117 + + + R=115 G=99 B=87 + RGB + PROCESS + 115 + 99 + 87 + + + R=83 G=71 B=65 + RGB + PROCESS + 83 + 71 + 65 + + + R=198 G=156 B=109 + RGB + PROCESS + 198 + 156 + 109 + + + R=166 G=124 B=82 + RGB + PROCESS + 166 + 124 + 82 + + + R=140 G=98 B=57 + RGB + PROCESS + 140 + 98 + 57 + + + R=117 G=76 B=36 + RGB + PROCESS + 117 + 76 + 36 + + + R=96 G=56 B=19 + RGB + PROCESS + 96 + 56 + 19 + + + R=66 G=33 B=11 + RGB + PROCESS + 66 + 33 + 11 + + + + + + Cold + 1 + + + + C=56 M=0 Y=20 K=0 + RGB + PROCESS + 101 + 200 + 208 + + + C=51 M=43 Y=0 K=0 + RGB + PROCESS + 131 + 139 + 197 + + + C=26 M=41 Y=0 K=0 + RGB + PROCESS + 186 + 155 + 201 + + + + + + Grays + 1 + + + + R=0 G=0 B=0 + RGB + PROCESS + 0 + 0 + 0 + + + R=26 G=26 B=26 + RGB + PROCESS + 26 + 26 + 26 + + + R=51 G=51 B=51 + RGB + PROCESS + 51 + 51 + 51 + + + R=77 G=77 B=77 + RGB + PROCESS + 77 + 77 + 77 + + + R=102 G=102 B=102 + RGB + PROCESS + 102 + 102 + 102 + + + R=128 G=128 B=128 + RGB + PROCESS + 128 + 128 + 128 + + + R=153 G=153 B=153 + RGB + PROCESS + 153 + 153 + 153 + + + R=179 G=179 B=179 + RGB + PROCESS + 179 + 179 + 179 + + + R=204 G=204 B=204 + RGB + PROCESS + 204 + 204 + 204 + + + R=230 G=230 B=230 + RGB + PROCESS + 230 + 230 + 230 + + + R=242 G=242 B=242 + RGB + PROCESS + 242 + 242 + 242 + + + + + + + + + Adobe PDF library 10.01 + + + + + + + + + + + + + + + + + + + + + + + + + +endstream +endobj +3 0 obj +<> +endobj +7 0 obj +<>/Resources<>/ExtGState<>/Properties<>/Shading<>>>/Thumb 15 0 R/TrimBox[0.0 0.0 50.0 50.0]/Type/Page>> +endobj +8 0 obj +<>stream +H���ˎ$�E����C2|l��B/�}��,r �Z��}o���Qچ%X��] ����ח��痰�����-�=ɖ�^j޾ޒ��ɠ��W�ň�{k�=n+d-e�eO�:����^�pu�y˲KJF���օ�VK[�{�<� +9����!�-��I'ii����V��t�"r�.��iP���>�s�,�H�yaN�n�ɶV�^���t�q�=�3*�������o�?�O~ +�?~� v�9 ���?�!��6�2�n�˾�~�y���%l�~�~�y���� ��5��07��&^�U^�� +˂�sT��R�m�*λ2V潕�H��Z�&}�4��D��-��(�кۺ�AV�[�9w��&eW\�(�j���L7��� +��5 +[�<%s�lj�w��Wcb"���|ܰ��xL�ɸ:s���-�X9�=Kc\���Ԃ-�lI%~Ȏ\���h��f1*!�"+��Nu��o�qmQ7dt ��MB�=�Ĥ�O'!R5h��KBe �����e��JC6a�T��7�ǐ�ALr�TPu�w�.[��|��29Y0�`[�"��{K:�M����m%�M��4�f7'�HS���Z�~� c)n�d��ڜ[3�2�9�m���ۓ�^V�� +o{2!1�t���="M��j:���`ja[[��z��%Q���By����h2�MDvOp���D��{�RG&=�q@0K��ԖR*�J@�Db(H%&r�Z��t3���r���u���5 +[Ε��85��GD�L��W�y�� +(5��An���X�(���P�{3������ 2�������ڌ��dֆq ʽح@mǤ�� +������nl��Tgu��O^� + +�—#S��\����y�QƲ��q-�R�~ �J�b$'=n+���d�]����%�T$�^��z��Asy���6!�hTfQڙ�T �<��8K�g6�shB�Da�ԙ2��)�NY6D�ȭz61�yaeA�#�m��;s� +LM�A�~D��m�ɽ�Dsn�6 �Kt6aL�h�)��٫{�pТ�.Ȣʬ~�&�U��H)@ɝ�d���Q��с�ê +J��f�{��vD1��;͂\$ND��}E#Y��a�A�UB�+�^#b�N֨y02" Y�^0@��Ԍ ��F���8z�^[�� �-t��O�УSCM�戏�a.`�:J��k�`X���s2�{c�ۓ89�A&wf�?�eϧ��'"ZE�`Ђ�#"N�)"�"T��2�D:5M�����8���k���CP���T�-!�gJ���_� +���n���� ݨ�Ș)#�ܩC!T ����h�=\�Q\2"lj������v���/�����#����_n���[�>o�)~٢�7˦8�*ܐ��OW ߓ� +���&�f2��^�)���8R3Wd�j�O��;�\bŴ�C�=�|I����\��k��2U�Gw�������G/��`���T�A�qp|di�����D0l�ݒ�M�)��WZ��1^9���dh� ��<�u0p�]!�Гu:�.~ 5^o�݃+b�d�ׁ ��WYgsJFUt��b�� $s0�(�>� {X���q2� +~XJ|)��뀹�@��8n�V�k�UF$^�]�'�} ���G�Ⱦ�S-�:�R��^�}+�V��є"t<�6��}������������ ��\6iڜ������).�9�5=���qҕ��> +�1͟b� )��y�J=��Z�.��=s�m�Cvj�ST��*���x��:Sr�՛?k���JX�]���0��5���.V>���g��h�ev Rj�n���#S�O�s�-�~A�|� �ۢ>�����tXţ�'�#[���v�(מ���3�wzF�_zFy�3ڇ{F��� �n�H����=s.�g�pr��6����=���^6�����OC�N_�8�� +�^0v9���p��qv�q��:��}�w���k����z���G�6��6����!k�yț�!K��hx�b$ds�8.�6rԄ +�2� ���`�爁�˜Y���m)���� +ѩ�����(�${z�!{�ðLL����ț�;͞X �����%�T�E��y|�� a +��C2�p�&8�x!��.y�+�pWL��I�7�5�7C/��C����Q�>=�̩���|��N肆tp�CO���o[[x���%+���ۚs��(\"8 ���/�{��S �Y�� ǥe4� �j��.1��1�i%�7��jS�A�qb?� �US�l��)�x�U�O�F�S�nK��4(�u�'!�v@��-q�G����:�+N��٥��@���x~�=���π�I8��7v���5�s#J�_q�f�_m������uz��G� �08A)�N��d�r�?j)3���wa+���,���4ɷA,|L�?��ĺ���>��}#�~��~�ah����AW�}�����r���Y#��߻6�Z���1`ֆr��'jSbLsN\�������L�&� +�?YG��b��.��u��ɾ�X���?�l��? = �= +endstream +endobj +15 0 obj +<>stream +8;Xplqr$m0`RB#Y[S>X2S(QP +endstream +endobj +16 0 obj +[/Indexed/DeviceRGB 255 17 0 R] +endobj +17 0 obj +<>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream +endobj +12 0 obj +<> +endobj +13 0 obj +<> +endobj +14 0 obj +<> +endobj +10 0 obj +[/ICCBased 21 0 R] +endobj +20 0 obj +<> +endobj +22 0 obj +<> +endobj +23 0 obj +<> +endobj +21 0 obj +<>stream +H���yTSw�oɞ����c +[���5la�QIBH�ADED���2�mtFOE�.�c��}���0��8�׎�8G�Ng�����9�w���߽����'����0 �֠�J��b�  + 2y�.-;!���K�Z� ���^�i�"L��0���-�� +@8(��r�;q��7�L��y��&�Q��q�4�j���|�9�� +�V��)g�B�0�i�W��8#�8wթ��8_�٥ʨQ����Q�j@�&�A)/��g�>'K���t�;\�� +ӥ$պF�ZUn����(4T�%)뫔�0C&�����Z��i���8��bx��E���B�;�����P���ӓ̹�A� om?�W= +�x������-�����[���0����}��y)7ta�����>j���T�7���@���tܛ�`q�2��ʀ��&���6�Z�L�Ą?�_��yxg)˔z���çL�U���*�u�Sk�Se�O4?׸�c����.�� ��R� +߁��-��2�5������ ��S�>ӣV����d�`r��n~��Y�&�+`��;�A4�� ���A9�=�-�t��l�`;��~p���� �Gp| ��[`L��`<� "A � YA�+��Cb(��R�,�*�T�2B-� +�ꇆ��n���Q�t�}MA�0�al������S�x ��k�&�^���>�0|>_�'��,�G!"F$H:R��!z��F�Qd?r 9�\A&�G� ��rQ ��h������E��]�a�4z�Bg�����E#H �*B=��0H�I��p�p�0MxJ$�D1��D, V���ĭ����KĻ�Y�dE�"E��I2���E�B�G��t�4MzN�����r!YK� ���?%_&�#���(��0J:EAi��Q�(�()ӔWT6U@���P+���!�~��m���D �e�Դ�!��h�Ӧh/��']B/����ҏӿ�?a0n�hF!��X���8����܌k�c&5S�����6�l��Ia�2c�K�M�A�!�E�#��ƒ�d�V��(�k��e���l +����}�}�C�q�9 +N'��)�].�u�J�r� +�� w�G� xR^���[�oƜch�g�`>b���$���*~� �:����E���b��~���,m,�-��ݖ,�Y��¬�*�6X�[ݱF�=�3�뭷Y��~dó ���t���i �z�f�6�~`{�v���.�Ng����#{�}�}��������j������c1X6���fm���;'_9 �r�:�8�q�:��˜�O:ϸ8������u��Jq���nv=���M����m���R 4 � +n�3ܣ�k�Gݯz=��[=��=�<�=GTB(�/�S�,]6*�-���W:#��7�*���e��^YDY�}U�j��AyT�`�#�D=���"�b{ų���+�ʯ:�!kJ4G�m��t�}uC�%���K7YV��fF���Y �.�=b��?S��ƕƩ�Ⱥ����y��� +چ ���k�5%4��m�7�lqlio�Z�lG+�Z�z�͹��mzy��]�����?u�u�w|�"űN���wW&���e֥ﺱ*|����j��5k��yݭ���ǯg��^y�kEk�����l�D_p߶������7Dm����o꿻1m��l�{��Mś� +n�L�l�<9��O�[����$�����h�՛B��������d�Ҟ@��������i�ءG���&����v��V�ǥ8��������n��R�ĩ7�������u��\�ЭD���-�������u��`�ֲK�³8���%�������y��h��Y�ѹJ�º;���.���!������ +�����z���p���g���_���X���Q���K���F���Aǿ�=ȼ�:ɹ�8ʷ�6˶�5̵�5͵�6ζ�7ϸ�9к�<Ѿ�?���D���I���N���U���\���d���l���v��ۀ�܊�ݖ�ޢ�)߯�6��D���S���c���s���� +����2��F���[���p������(��@���X���r������4���P���m��������8���W���w����)���K���m�� ���� +endstream +endobj +19 0 obj +<> +endobj +24 0 obj +<> +endobj +25 0 obj +<> +endobj +18 0 obj +<> +endobj +26 0 obj +<> +endobj +27 0 obj +<> +endobj +5 0 obj +<> +endobj +28 0 obj +[/View/Design] +endobj +29 0 obj +<>>> +endobj +11 0 obj +<> +endobj +9 0 obj +<> +endobj +30 0 obj +<> +endobj +31 0 obj +<>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 16.0 +%%AI8_CreatorVersion: 16.0.0 +%%For: (Ernie Ghiglione) () +%%Title: (Untitled-23) +%%CreationDate: 8/29/2013 4:43 PM +%%Canvassize: 16383 +%%BoundingBox: 1 -48 49 -1 +%%HiResBoundingBox: 1.62012 -47.624 48.0459 -1.32617 +%%DocumentProcessColors: Cyan Magenta Yellow Black +%AI5_FileFormat 12.0 +%AI12_BuildNumber: 682 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0 0 0 ([Registration]) +%AI3_Cropmarks: 0 -50 50 0 +%AI3_TemplateBox: 25.5 -25.5 25.5 -25.5 +%AI3_TileBox: -272.48 -445.9004 322.4805 396.02 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI9_OpenToView: -27 2 17.51 1821 915 18 0 0 50 116 0 0 0 1 1 0 1 1 0 1 +%AI5_OpenViewLayers: 7 +%%PageOrigin:-375 -325 +%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream +endobj +32 0 obj +<>stream +%%BoundingBox: 1 -48 49 -1 +%%HiResBoundingBox: 1.62012 -47.624 48.0459 -1.32617 +%AI7_Thumbnail: 128 128 8 +%%BeginData: 22122 Hex Bytes +%0000330000660000990000CC0033000033330033660033990033CC0033FF +%0066000066330066660066990066CC0066FF009900009933009966009999 +%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 +%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 +%3333663333993333CC3333FF3366003366333366663366993366CC3366FF +%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 +%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 +%6600666600996600CC6600FF6633006633336633666633996633CC6633FF +%6666006666336666666666996666CC6666FF669900669933669966669999 +%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 +%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF +%9933009933339933669933999933CC9933FF996600996633996666996699 +%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 +%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF +%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 +%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 +%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF +%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC +%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 +%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 +%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 +%000011111111220000002200000022222222440000004400000044444444 +%550000005500000055555555770000007700000077777777880000008800 +%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB +%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF +%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF +%524C45FD3CFFCAB5B593B59393A1FD77FFCA92B5FD04936869A8FD76FFCA +%B593BBFD049368CAFD77FF93B5FD0493686FA8FD77FFBCB5BBFD04936FFD +%78FF9AB593B59393689AFD78FFC3B5B5FD04939AFD78FFA1B59393929368 +%A1FD78FFC9B5BB93B59393A1FD22FFCA9ACAFD53FFA1B5FD049368A1FD21 +%FFCA688C689ACAFD51FFC392BBFD0493A1FD21FFFD04936893CAFD2CFFCA +%FD23FFA1B5FD049368C3FD20FFA19368936893686FA1FD29FFC3B5B5C3FD +%22FFC393BBFD0493A1FD20FF99FD04936F936893FD27FFCABC8CB59393A8 +%FD21FFC3B593B5939368CAFD1FFFC38C936E936F93686F68FD26FFC9BBB5 +%BB93BB93BCFD21FFC9B5B5FD0493A1FD1EFFCA929393936F936F93689AFD +%25FFCAB592B593B593B58CCAFD20FFA1B59393929368A1FD1DFFCA929392 +%936E936893689AFD26FFC392BCB5BB93BB93B593FD20FFC9B5BB93B59393 +%A1FD1DFF93B593B5FD049368C3FD27FFC3B593B593B593B593939AFD1FFF +%A1B5FD049368A1FD1CFF99B5FD069368CAFD29FFC3B593BBB5B593B59393 +%A1FD1EFFC392BBFD0493A1FD1BFFC2B593B5FD04938CCAFD2BFFA1B592B5 +%939392938C93A1FD1DFFA1B5FD049368A1FD1AFFA1B5FD069368C3FD2DFF +%CABCB5BB93BB9393929AFD1DFFCFB5B593936893CAFD19FFCABBB5BB93BB +%93938CC3FD2FFFCAB5FD0693689AFD1DFFCA9AC39AA1A8FD19FFCAB593B5 +%93B593938C9AFD31FFC3B593B5FD049368A1FD3AFFCABCB5BB93BB93B592 +%BCFD33FFA19393938C936E9368A1FD39FFBC8CB593B593B59293A8FD34FF +%C2B5FD04936F9368CAFD38FFBCB5B5BBB5BC93B5C3FD36FF9A9393936F93 +%689368CAFD18FFA8FFAEFFA8FD1AFFC38CB593B593B5A1FD38FFFD069368 +%936FFD13FFAEAE838382825E8282825E8383ADA8FD16FFC392B5B5B59AFD +%39FFCA93936893686F6868A1FD0FFFA8A75882575E578257825782578257 +%82575E578383FD14FFC393B599FD3BFFCA8C9393936F9368CAFD0DFFCF82 +%825D825E825E82828281828182818282825E825E825EADAEFD13FFCAFD3D +%FFA16893686F68A1FD0CFFA88257825D825782FD0781A5FD068157825E82 +%578283FD51FF9A689368A1FD0CFF82825D825E82818181A581A581A581A5 +%81A581A581A581A5818282825D8282AEFD4FFFCAA19ACAFD0BFFAE575D57 +%825DFD18818257825782A8FD5BFFAE5D825E8281A581AC81A581AC81A681 +%AC81A681AC81A681AC81A581AC81A5818282825D82AEFD59FF8357825E82 +%81A5FD0781A6818181A6818181A6818181A5FD08815D825782A8FD57FFAD +%5D825E8281A581A581A581A681A681AC81A681AC81A681AC81A681A681A6 +%81A581A581A581825D82AEFD55FF83578257FD0A81A681A681A681A681A6 +%81A681A681A681A6FD08815D825782A8FD27FFA1A1A8FD29FFAE5D828282 +%81AC81A581AC81A681AC82AC82ACA6AC82ACA6AC82ACA6AC82AC82A681AC +%81A681AC81A581825E82AEFD23FFCAC39393689AFD05FFC3C3CAFD20FFAE +%57825782FD0781A681A681A682A682AC82A682AC82A682A682A681A681A6 +%81A6FD068157825782FD1FFFCAA1C393936893686F68CAFFFFFF9AB5B5BB +%BCCAFD1EFF82825E8281A581A581A681A681ACA6AC82ACA6ACA6ADA6ADA6 +%ADA6AC82ADA6AC82AC82A681AC81A581A581A55D825DADFD1AFFCAC39ABC +%93938C9393936F936F689AFFFFC3B593B593B58CBB9AC3A1FD19FF835D57 +%82FD0781A681A681A682A682A682A682AD82A682AD82A682A682A681A681 +%A681A6FD0681578257AEFD13FFCAA1C39ABB93B58C938C93939368936893 +%686F689AFFFFC393BCB5BB93BB93B592B5939A9ACACAFD13FFAE825E8281 +%A581AC81A681AC82AC82ACA6ADA6ADA6ADA6ADA7ADA6ADA7ADA6ADA6ADA6 +%ADA6AC82AC82A681AC81A581825E8282FD12FFCA93B5B5B593BB93B593BB +%FD06936F936F936FFFFF9AB593B593B593B5939392938C9368936F9376A1 +%A1FD0EFF83578281A5818181A681A681A682A682ACA6A782ADA6ADA6ADA6 +%ADA6ADA6A7A6ADA6A682AC82A681A6818281A5818181825D5EA7FD11FF9A +%B593B593B593B5FD069368936E936893686FFFFFBCB5BB93BBB5B593BBFD +%06936F936893686FA1FD0CFFCF5D8282A581A581A681AC82A682ACA6ADA6 +%ADA7ADA7ADA7ADA7ADA7ADA7ADA7ADA6ADA6ADA6ADA6AC82AC81A681A681 +%A581825D83FD11FFBCB5BB93BBB5B593BBFD06936E936F93686F6FFFFF93 +%B593B593B593B5FD049368936E936893686F689AFD0CFF825E57FD068182 +%81A682A682A682A782ADA6ADA6ADA7ADA7ADA7ADA7ADA7A7A6ADA6A682A6 +%82A681A6FD0681578257AEFD10FF9AB593B593B593B5FD04936893689368 +%93686F68A1FFFFBCB5BBB5BBB5B593BB93B5FD06936F936F936FFD0BFFCF +%825E8281A581AC81A681ACA6ACA6ADA6ADA6ADA7ADA7CFADCFA7CFADCFA7 +%CFA7ADA7CEA7ADA6ADA6ADA6ACA6AC81AC81A581A6828283FD10FFCAB5BB +%B5BBB5B593B593B593C3A1CACAFFCAFFCAFD04FFC3BC93BB93BC93B58C93 +%92938C936F936893686F689AFD0BFFAE578281A5818181A681A681A682A6 +%82ADA6ADA6ADA7ADA7AEA7ADA7CFA7ADA7ADA7ADA7ADA7AD82AD82A682A6 +%81A681A5818181825D82A8FD0FFFCABC8CB593BB99C3A1CACAFD14FFCACA +%A0BC93938C93689368936F68A1FD0BFF8282828181A581A681AC82AC82AD +%A6ADA6ADA7ADA7CFADCFA7CFADCFA7CFADCFA7CFA7ADA7ADA7ADA6ADA6AC +%82AC82A681A681A581825DAEFD10FFCAC3C3CACAFD1EFFA8CA9A9A6F6F68 +%686FFD0BFFAE825782FD05818281A682A682ADA6A7A6ADA7ADA7AEA7AEA7 +%CFA7AEA7CFA7AEA7AEA7ADA7ADA6A782A682A681A6FD0681578283FD38FF +%CACAA1FD0CFFCF5D8281A581AC81A681ACA6ACA6ADA6ADA7CEA7CFA7CFAE +%CFAECFAECFAECFAECFAECFADCFA7CFA7ADA7ADA6ADA6AC82AC81AC81A581 +%825E83FD47FFA75D5782818181A581A681A682A682ADA6ADA7ADA7AEA7CF +%A8CFA8CFAECFA8CFA8CFA7CFA7ADA7ADA7ADA6AD82A682A6818281A58181 +%57825EFD47FFAD5D8281A581A581AC82A682ADA6ADA6ADA7ADA7CFADCFA8 +%CFCFCFAEFFCFFFAECFAECFA7CFADCFA7ADA7ADA6ADA6AC82AC81A681A581 +%825E82AEFD46FF828257FD0681A681A682ADA6A7A6ADA7ADA7CFA7CFA8CF +%A8CFA8FFAECFA8CFA8CFA7AEA7ADA7ADA6A782A682A681A6FD05818257AE +%FD46FF895E8281AC81A681AC82ACA6ADA6ADA7CEA7CFA7CFAECFAEFFCFFF +%CFFFFFFFCFFFCFCFAECFADCFA7CFA7ADA6ADA6AC82AC82A681AC81825E82 +%A7FD46FF82825DFD0681A682A682ADA6ADA6ADA7ADA7CFA8CFA8FFCFFFCF +%FFCFFFA8CFA8CFA7CFA7ADA7ADA6A782AC82A681A6818181A5818257AEFD +%46FF835D8281A581A681A681ACA6ADA6ADA7ADA7CFADCFA7CFCFFFCFFD07 +%FFAECFAECFA7CFADADA7ADA7ADA6ACA6A681A681A581825E82A7FD46FF82 +%5E57FD0481A681A681A682A682ADA7ADA7AEA7AEA7CFA8CFA8FFFFFFA8FF +%AECFA8CFA7AEA7ADA7ADA6AD82A682A681A6FD04817B8257A7FD35FFAFAF +%858B85AFFD0BFF835D8281A581AC81AC82ACA6ADA6ADA7ADA7CFADCFAECF +%CFFFCFFD05FFCFFFAEFFAECFA7CFADADA7ADA7ADA6ADA6AC81AC81A581A6 +%8282A7FD0CFFAF858B85AFAFFD20FF8561141B1415141B141B368BFD08FF +%828257FD0481A681A681A682A682ADA7ADA7CFA7AEA7CFAECFA8FFCFFFA8 +%FFAECFA8CFA7AEA7ADA7ADA6ADA6A682A681A681A58181818257AEFD09FF +%8B3D1B141B1415141B143D84FD1BFF8B141B153D366161615A61371B143D +%85FD06FFAD5D8281A581A581AC82A682ADA6ADA6ADA7ADA7CFADCFA8CFCF +%FFAEFFCFFFAEFFAECFA8CFADCFA7CEA7ADA6ADA6AC82AC81A681A581825E +%82AEFD07FF853D141B37615A856161363D151B148BFD17FFA83D14153685 +%5A855A855A855A855A61141514AFFD04FF835E57FD0681A681A682A682A7 +%A6ADA7ADA7CFA7CFA7CFA8CFA8CFA8CFA8CFA7AEA7AEA7ADA6ADA6A682A6 +%82A681A6FD04815D8257FD07FF361514615A855A855A855A855A855A3714 +%3DA9FD14FFA93D15616085618560858585608561856085611B15AFFFFFFF +%CF5E8281AB81A581AC82AC82ADA6ADA6ADA7ADA7CFADCFADCFAECFAEFFCF +%CFAECFAECFA7CFADCEA7CEA7ADA6ADA6AC82AC81A681AC81825D83FD05FF +%AF151B3D856085618560858585608561856061151B85FD12FFA915146160 +%855A85608560856085608560855A855A1514AFFFFFA8825D82FD0581A681 +%A682ACA6A7A6ADA7ADA7AEA7AEA7CFA8CFA7CFA8CFA7CFA7AEA7ADA7ADA6 +%ADA6A682AC82A681A6FD04815D5E82FD04FFAF14155A8560855A85608560 +%856085608560855A85141585FD10FFAF3D15856085618560858585848585 +%85848585856085613D14FFFFFF8282828181A581A681AC82AC82ADA6ADA6 +%ADA7ADA7CFADCFA7CFAECFA7CFAECFA7CFADADA7ADA7ADA6ADA6AC82AC82 +%A681A681A581825DAEFD04FF141B61856085858584858585848585858485 +%85856085151BAFFD0FFF3D14615A855A8560856085848584858485608560 +%855A855A1514FFFFA75782FD0781A682A682A6A6A782ADA7ADA7ADA7ADA7 +%CFA7AEA7AEA7ADA7ADA7ADA6ADA6A782A682A681A6FD0581825782A8FFFF +%FF3C1536855A855A8560856085848584858485608560855A61143DFD0EFF +%AF1461858560FD04858B858B85AF858B858BFD048561855A1B85FFAE825E +%8281AC81A681AC82AC82ADA6ADA6ADA7ADA7CEA7CFA7CFADCFA7CFADCFA7 +%CFA7ADA7ADA7ADA6ADA6AC82AC81A681AC81825E8282FFFFFF851B368561 +%FD0685AF858B85AF8585858B858561858561148BFD0DFF36155A85608560 +%85848584858585848584858485848560856085143DFFFF82825DFD0681A6 +%81A682AC82A682ADA6ADA7ADA7ADA7ADA7ADA7ADA7ADA7ADA7ADA6ADA6A6 +%82A682A681A6818181A5818257AEFFFFFF3D14615A856085608584858485 +%858584858485848584856085603D14FD0CFFA91B3D8560858585848B85AF +%85AF85AF85AF85AF858B85856085856114AFFFAE578281A581A581A681AC +%82AC82ADA6ADA6ADA7ADA7ADA7ADA7CEA7ADA7ADA7ADA7ADA7ADA6ADA6AC +%82AC82A681A681A581825E82FFFFFFAF1461618560FD0485AF85AF85AF85 +%AF85AF8585848585856085611585FD0BFF6114615A855A85848584858485 +%84AF84A984A98485848584855A855A1536FFFF825782FD0781A681A682A6 +%82A682ADA6A7A6ADA6ADA6ADA7ADA6ADA6A782AD82A682A682A681A6FD05 +%8182578283FFFFFF60155A8560856085848584A984A984AF84A984858485 +%848560855A85143DFD0BFF3D3D618560FD0485AF85AF85AFA9AFA9AF85AF +%85AFFD0685363DFFFFA8825E8281AC81A581AC81AC82ACA6ACA6ADA6ADA6 +%ADA7ADA7ADA7ADA7ADA7ADA6ADA6ADA6ACA6AC81AC81A681AC81825E8282 +%FD04FF3D14856185858B858B85AF85AF85AFA9AF85AF85AF85AFFD05853D +%15FD0AFFAF15368560856085848584AF85AF84AF85AF84AF858584858485 +%6085606114FFFFFF82825E82FD0581A681A681A682A682ACA6A682ADA6A7 +%A6ADA6A782ADA6A682AC82A681A681A681A6FD04815D8257AEFD04FF143D +%5A8560858485848584AF85AF84AF85AF84AF85858485848560853615A9FD +%0AFF156160858585848B85AF85AFA9AF85AFA9AF85AF85AF858B85856085 +%611B85FFFFFF5E825E8281A581A581AC81A681ACA6AC82ADA6ADA6ADA6AD +%A6ADA6ADA6ADA6AC82ACA6A681AC81A681A581A581825DADFD04FFAF1B3D +%8560FD0485AF85AF85AFA9AF85AFA9AF85AFFD0685606115AFFD09FFA81B +%36855A856085848584A984AF85AF84AF85AF84AF8485848560855A6114AF +%FFFFFFAE578257FD0681A681A681A681A682A682A682A682A682A682A682 +%A682A681A6818281A5FD058182578283FD04FFAF14615A855A85848584A9 +%84A984AF85AF84AF85A984858485608560855A1585FD0AFF156160FD0485 +%AF85AF85AFA9AFA9AFA9AFA9AF85AF85AF85856185611B85FFFFFF838282 +%825EA681A581AC81A681AC82AC82ACA6AC82ACA6ACA6ADA6AC82ACA6AC82 +%AC82A681AC81A581AB81825E82828283FFFFFFAF1B618560FD0485AF85AF +%A9AFA9AFA9AFA9AF85AF85AF858B8585606115AFFD09FFA91B36855A8584 +%85848585A984AF85AF84AF85AF84AF8585848584855A6114AFFFFF825D57 +%825D8257FD0481A5818181A681A681A681A681A682A681A682A681A681A6 +%81A6FD0781825D8257825D5E83FFFFAF146160856085848584AF85AF84AF +%85AF84AF85A984AF848584856085361B85FD0AFF143D858560FD0485AF85 +%AF85AFA9AF85AFA9AF85AF858584858585361BAFFF82825E8281825E825D +%8281A581A581A681AC81A681AC82A681AC82A681AC82A681AC81A681A681 +%A581A581825E8281A581825E8283FFFF3D3685618584FD0485AFA9AF85AF +%A9AF85AF85AF85AF85858485856114FD0BFF3D14855A856085848584A984 +%A984AF85AF84AF8485848584855A855A3714FF835D578281818182578257 +%82FD0781A5818181A6818281A6818281A6FD0A8157825782578181817B82 +%575D83FF36155A8560856085848584AF84A984AF85A984AF848584856085 +%5A85141BAFFD0AFF611B618560FD0485AF85AF85AFA9AF85AF85AF85AFFD +%0685148BA7825E8281A581AC81825E825E8281AB81A581AC81A681AC81A6 +%81AC81A681AC81A681AC81A581AB81825E825E8281AC81A581AB81825E82 +%CF8B14FD04858B858B85AF85AF85AFA9AF85AF85AF85AFFD0485611B61FD +%0BFFAF143D6085608584858485858584AF85A984AF858584858485608536 +%1583825D8281A5818181A5818257825D825DFD0881A5818181A5818181A5 +%818181A5818181825E82578281A581A5818181A581825782A81B36856085 +%6085848584A9858584AF858584858485848560855A6114AFFD0CFF611485 +%618560FD0485AF85AF85AF85AF85AF858584858585603D3C825D8281A581 +%A581A581AC81A65D825E825D8281A581A581A581A581A581A581A581A581 +%A5818281825E825E8281AC81A681A681A581A581825DA7611B6085618584 +%FD0485AF85AF85AF858B858B858584858585143DFD0DFFA91514855A855A +%8584858485848584858485848584855A85603D1482578257FD0881A681A6 +%8182578257825DFD10818257825782578282A681A6FD08815D825783153D +%5A856085608584858485848584858485608560855A85361584FD0EFF611B +%618560FD04858B8585858B8585858BFD0585611560818281AC81A581AC81 +%A681AC82AC82ACA6825E825E825E8282828182818281828182818282825E +%825E8282ADA6AC82AC82AC81AC81A681AC81A65E8281601561858560FD04 +%858B8585858B8585858B85856085611B3DFD0FFF61141B36855A85608560 +%85848584858485608560855A61153C57825DFD0681A681A681A682A682AC +%A6A682825D8257825D8257825E8257825D8257825D8282A7A6A682AC82A6 +%81A681A681A6FD068157825E151461608560856085608584858485848560 +%8560855A1B141585FD0DFF85153D141B6185608585856085858584858585 +%60858561143D5E825E8281A581A581A681AC82A682ACA6ACA6ADA6ADA6AD +%FD06825D825E825DFD0482ADA7ADA6ADA6ADA6ADA6AC82AC82A681A681A5 +%81A581825E825F3D146185856085858584858585608585856085611B1461 +%371B85FD0BFF85143D5A61141536615A8560855A8560855A8560855A3D14 +%1B59825782FD0981A681A682A682A682ADA6A7A6ADA7ADA7AD82A782AD82 +%A7A7ADA7ADA7ADA6A782ADA6A682A682A681A68182FD07818257825A3D14 +%3D5A855A8560855A8560855A856061361514615A85141584FD09FFAF153D +%618560853D1B146161856085858584856185363D15618483828281AB81A5 +%81AC81A681ACA6ACA6ADA6ADA6ADA7ADA7CEA7CEA7CFADCFA7CFADCFA7CF +%ADCFA7CFA7ADA7ADA7ADA6ADA6ADA6ACA6AC81AC81A681AC81A581828183 +%8561151B368561858485858584856161141B3D8584858585143DFD09FF14 +%155A8560856085603D141B143D3661363D363D1415148585835782FD0781 +%A681A681A682A682ADA6A7A6ADA7ADA7ADA7ADA7CFA7ADA7CFA7AEA7CFA7 +%ADA7ADA7ADA6ADA6A782AD82A682A681A681A6FD068157825D8485853615 +%143D363D3661363D141B143D60858485608560611461FD07FF611B618560 +%858585848B85853C3D151B141B151B366185A9858582825EA681A581A581 +%A681AC82A682ACA6ADA6ADA7ADA7ADA7ADA7CFADCFA7CFADCFA7CFADCFA7 +%CFADCFA7CFA7ADA7ADA7ADA6ADA6AC82AC82A681A681A581A581825E8283 +%8584AF8561363D151B141B153D3C858585848585856085856114AFFD05FF +%A91536855A855A856085848584A984858485608584A984A984855F825782 +%FD0981A681A682A682A782ADA6ADA7ADA7ADA7AEA7AEA7CFA7AEA7CFA7AE +%A7AEA7ADA7ADA7ADA6ADA6A782A682A681A68182FD078182578284858485 +%848584856085848584A984858485608560855A855A1514FD05FF61148561 +%8560FD0485AF85AF85AF85AFA9AFA9AF85AF85AF8583818281AB81A581AC +%81A681ACA6ACA6ADA6ADA6ADA7ADA7CFADCFA7CFAECFAECFAECFAECFAECF +%AECFAECFA7CFADCEA7CEA7ADA6ADA6ADA6ACA6AC81AC81A681AC81A58182 +%818385AF85AF85AFA9AFA9AFA9AF85AF85AF858BFD04856185601B85FFFF +%FFAF143D5A856085608584858485858584AF85AF84AF85A984AF85845782 +%5DFD0681A681A681A682A682ADA6A7A6ADA7ADA7AEA7AEA7CFA8CFA8CFA8 +%CFA8CFA8CFA7CFA7AEA7CFA7ADA7ADA6A782AD82A682A681A681A6FD0681 +%57825E8584AF85A984AF85AF84AF85A984AF85858485848560856085143D +%FFFFFF611B61856085858584FD0485AF85AF85AFA9AF85AFA9AF85AF8382 +%5E8281A581A581A581AC82A682ACA6ADA6ADA7ADA7CEA7CFA7CFAECFA8CF +%AECFAEFFCFCFAECFAECFA8CFAECFA7CFA7ADA7ADA7ADA6ADA6AC82AC82A6 +%81A681A581A581825E8284AF85AF85AF85AFA9AF85AF85AF85AF85858485 +%85856085616114AFFFFF3D14855A855A8560858485848584AF84AF84AF85 +%AF84AF85A984825782FD0981A681A682A682A682ADA6ADA7ADA7ADA7CFA7 +%CFA8CFA8CFA8CFA8CFA8CFA8CFA7CFA7ADA7ADA7ADA6ADA6A782A682A681 +%A6FD0981825783858584AF85AF84AF85AF84AF84A984858485608560855A +%855A1536FFAF1561618560FD0485AF85AF85AFA9AFA9AFA9AFA9AFA9AFA9 +%AF828281AC81A581AC81A681AC82AC82ADA6ADA6ADA7ADA7CFADCFA7CFAE +%CFAEFFCFFFCFFFCFFFCFFFCFCFAECFAECFA7CFADCEA7CEA7ADA6ADA6AC82 +%AC82AC81AC81A581AC81A5818282AF85AFA9AFA9AFA9AFA9AFA9AF85AF85 +%AF858B858560856185363DFF61155A856085608584858485858584AF85AF +%84AF85AF84AF85AF83825DFD0681A5818181A682A682ACA6A7A6ADA7ADA7 +%AEA7AEA7CFA8CFA8FFAEFFA8FFCFFFA8FFAECFA8CFA7AEA7AEA7ADA7ADA6 +%A782AC82A681A6818281A5FD058182578284A984AF85AF84AF85AF84AF85 +%A984AF8485848560855A855A6114AF6115615A85618560FD0485AF85AF85 +%AFA9AF85AFA9AF85AFA9835D8281A581A581A581A681A681ACA6ACA6ADA6 +%ADA7ADA7ADA7CFADCFA8CFCFFFAEFFCFFFCFFFFFFFAEFFCFCFA8CFAECFA7 +%CFA7ADA7ADA6ADA6ADA6A681AC81A681A581A581A581825D8485AF85AFA9 +%AF85AFA9AF85AF85AF85AF8585848585856085601B85143D5A615A856085 +%6085848584A984A984AF85AF84AF85AF84AF5E8257FD0881A681A681A682 +%A682ADA6ADA6ADA7ADA7CFA7CFA8CFA8CFA8FFCFFFA8FFAECFA8CFA8CFA7 +%CFA7ADA7ADA7A782AD82A682A682A681A6FD0881578258AF85AF84AF85AF +%84AF85AF84AF8485848584855A8560615A6114613D3785608561FD0685AF +%85AF85AFA9AFA9AFA9AFA9AF84825E8281A581AC81A581AC81AC82ACA6AC +%A6ADA6ADA7CEA7CFA7CFAECFAECFCFFFCFFD07FFCFFFCFCFAECFAECFA7CF +%ADADA7ADA7ADA6ADA6AC82AC81A681AC81A581AC81825E8285AFA9AFA9AF +%A9AFA9AFA9AF85AF85AFFD06856085613D3D14615A615A85608560858485 +%84AF85A984AF85AF84AF85AF85845D8281A5FD0781A681A681A682A682AD +%A6ADA7ADA7ADA7CFA7CFA8CFAEFFAEFFFFFFCFFFCFFFA8CFAECFA7CFA7AD +%A7ADA7ADA6ADA6A682A682A681A6FD0781A5818257A985AF84AF85AF84AF +%85AF84AF858584858485608560615A85143D1B368560856085858584FD04 +%85AF85AF85AFA9AF85AFA9AF83825E8281A581A581A581A681AC82AC82AD +%A6ADA6ADA7ADA7CFADCFA7CFAECFAEFFCFFFCFFFFFFFCFFFCFFFAECFAECF +%A7CFADADA7ADA7ADA6ADA6AC82AC82A681A681A581A581A581825E8284AF +%85AF85AFA9AF85AF85AF85AF858584858585608561855A3D3D143D5A615A +%615A8560856085848584A984A984AF84A984AF85835782FD0B81A681A682 +%A682A782ADA7ADA7ADA7AEA7CFA8CFA8CFAEFFA8FFAEFFA8FFA8CFA8CFA7 +%AEA7ADA7ADA6ADA6A782A682A681A6FD0A817B82578385AF84A984AF84A9 +%84AF848584858485608560855A615A61143D1B3685618560FD04858B8585 +%85AF85AF85AF85AF85AF85AF828282A581AC81A581AC81A681AC82AC82AD +%A6ADA6ADA7ADA7CFADCFA7CFAECFAEFFCFFFCFFFCFFFCFFFCFFFAECFAECF +%A7CFADCFA7CEA7ADA6ADA6AC82AC82AC81AC81A581AC81A581A6828283AF +%85AF85AF85AF85AF85AF85AFFD068560856185603D3D143D5A615A615A85 +%6085608584858485858584AF858584AF84825782FD0B81A681A682ACA6A7 +%A6ADA7ADA7ADA7AEA7CFA8CFA8CFAECFA8FFAECFA8CFA8CFA7CFA7AEA7AD +%A7ADA6ADA6A782AC82A681A6818181A5FD0781825D8385A9858584AF8585 +%84A9848584858485608560855A615A6114616115615A8561856085858584 +%FD0485AF85AF85AF85AF85AF82825DA581A581A581A581A681A681ACA6AC +%82ADA6ADA6ADA7ADA7CFADCFA7CFAECFAEFFCFCFAEFFCFCFAECFAECFA7CF +%ADCFA7CEA7ADA6ADA6AD82ACA6A681AC81A681A581A581A581815D828385 +%85AF85AF85AF858B85AF858584858585608561855A85611B85A81536615A +%615A615A85608560858485848584858485848584825782FD0981A581A681 +%A682A682ADA6A7A6ADA7ADA7ADA7AEA7CFA7CFA7CFA8CFA8CFA8CFA7CFA7 +%AEA7AEA7ADA7ADA6A782AD82A682A681A681A5FD09818257838485848584 +%858485848584858485608560855A615A615A1B14FFFF611B368561856085 +%61FD06858B858585AF8585858B828281AC81A581AC81A581AC81A681ACA6 +%ACA6ADA6ADA6ADA7ADA7CFADCFA7CFAECFAECFAECFAECFAECFAECFAECFA7 +%CFADCFA7CEA7ADA6ADA6ADA6ACA6AC81AC81A681AC81A581AC81A55E8283 +%85858B858585AF8585858BFD068560856185603D15AFFFFFFF611514615A +%615A85608560856085608584858485848560825D82FD0981A581A681A682 +%A682ACA6A7A6ADA7ADA7ADA7ADA7CFA7AEA7CFA8CFA7CFA7CFA7CFA7ADA7 +%ADA7ADA6ADA6A782AD82A682A681A681A5FD0781A5818257838485848584 +%858485848560856085608560615A855A15148BFD05FF851B143D60856085 +%61856085858584858585848585855E8281A581A581A581A581A581A681A6 +%81ACA6ACA6ADA6ADA6ADA7ADA7CFA7CFA7CFADCFA7CFAECFA7CFADCFA7CF +%ADADA7CEA7ADA6ADA6ADA6ACA6AC81AC81A681A581A581A581A581A68282 +%5E85858584858585848585856085618560856161361B15AFFD07FFA96114 +%1514615A8560855A8560855A8560855A8560825782FD0B81A681A681A682 +%A682ADA6A782ADA7ADA7ADA7ADA7AEA7AEA7CFA7AEA7AEA7ADA7ADA7ADA6 +%ADA6A782AD82A682A681A681A6FD0B818257835A8560855A8560855A8560 +%855A855A61363D141560FD0CFF613D151B153D3661618560858585608585 +%855E8282A581AC81A581AC81A581AC81A681ACA6ACA6ADA6ADA6ADA7ADA7 +%CEA7CEA7CFADCFA7CFADCFA7CFADCFA7CFA7ADA7CEA7ADA6ADA6ADA6ACA6 +%AC81AC81A681AC81A581AC81A581A682825F856185608585858485618560 +%61371B141B3D8BAFFD0FFFAF60611415141B1415143D1415141B145F5782 +%FD0B81A581A681A682A682ACA6A682ADA6ADA6ADA7ADA7ADA7ADA7ADA7AD +%A7ADA7ADA7ADA7ADA6ADA6A782AC82A681A681A681A6FD0B8182813B1415 +%1415143D141514151415143D3D85A9FD16FFAFAF858BFD07618B83825E82 +%81A581A581A581A581A581A681A681ACA6AC82ADA6ADA6ADA7ADA7ADA7AD +%A7CEA7ADA7CEA7ADA7CEA7ADA7ADA7ADA6ADA6AD82ACA6A681AC81A681A5 +%81A581A581A581A581825E82838BFD09618BAFFD27FFAE578257FD0C81A6 +%81A681A682A682A682A682ADA6A7A6ADA7ADA6ADA7ADA7ADA7ADA6ADA6A7 +%82ADA6A682A682A681A681A681A6FD0C815D8257CFFD34FF825E8281A581 +%AC81A581AC81A581AC81A681AC82AC82ACA6ADA6ADA6ADA6ADA7ADA7CEA7 +%ADA7CEA7ADA7ADA7ADA6ADA6ADA6ADA6AC82ACA6AC81AC81A681AC81A581 +%AC81A581AC81825D83FD35FF835E5782FD0B81A5818181A681A682AC82A6 +%82ADA6A782ADA6ADA6ADA6ADA6ADA6A7A6ADA6A782ADA6A682AC82A681A6 +%818281A5FD0B81825E5D83FD36FF5E825E8281A581A581A581A581A581A6 +%81A681AC82A682ACA6ACA6ADA6ADA6ADA6ADA6ADA7ADA6ADA6ADA6ADA6AD +%A6ADA6AC82AC82A681AC81A681A581A581A581A581A581825E8282FD37FF +%AD578257FD1081A681A681A682A682A682A682AD82A682AD82A682AD82A6 +%82A682A682A682A681A6FD1081578257AEFD38FFAD5D82828281AC81A581 +%AC81A581AC81A681AC81AC82ACA6AC82ADA6ACA6ADA6ADA6ADA6ADA6ADA6 +%ADA6ADA6AC82ACA6AC82AC81A681AC81A581AC81A581AC81A581A682825D +%ADFD3AFF8357825D8181A5FD0B81A681A681A681A681A682A682AC82A682 +%AC82A682AC82A682A682A681A681A681A6FD0B81A5818157825783FD3CFF +%8357825E8281A581A581A581A581A581A581AC81A681AC82A682ACA6AC82 +%ACA6AC82ACA6AC82ACA6AC82AC82A681AC81A681A681A581A581A581A581 +%A581825E8257ADFD3EFFA75782578257FD0C81A5818281A681A681A681A6 +%81A682A681A682A681A681A681A6818281A6FD0C815D82578257A7FD41FF +%82825D82828281AC81A581AC81A581AC81A681AC81A681AC82AC82ACA6AC +%82ACA6AC82AC82AC81AC81A681AC81A681AC81A581AC81A5818282825D82 +%82FD44FFA78257825D825782818181A5FD0781A6818281A681A681A681A6 +%81A681A681A6818281A6818181A5818181A5818181825D8257825782A7FD +%47FFAE82825D825E82828281A681A581A581A581A681A681AC81A681AC81 +%A681AC81A681AC81A681A681A581A58181818282825E825D8282AEFD4BFF +%A8835E5E5782578257825D817BFD0481A5818181A5818181A5818181A581 +%8181A5FD0681578257825782575D5783A8FD50FFA8AD82825D825E825E82 +%82828182818281A681A681AC81A681AC818281828182818282825E825E82 +%5D8282ADA8FD56FFA8A782825D825782578257825D8257825D8257825D82 +%57825D8257825D8257825782578282A7A8FD5EFFAEAE838382825D825D82 +%57825D8257825D8257825D825D82828383AEA8FD68FFA8AEA7AE83A782A7 +%83A782A783A783AEA7AEA8FD36FFFF +%%EndData + +endstream +endobj +33 0 obj +<>stream +%AI12_CompressedDatax���f�q%�����R�Y�yۙ�4pn�Qò����he�,W��"��=���XkE���T�"E��x>�u�8���Ȉ+������>����?���<�n>��/�����_�y���o~��g_��[�~�۟ߤ�ن�n5>�#��˷_�z������������W/o~�ϯ~������o~�s��o_}��K��߽� +�}�Q.?_7�^|e��_�-����Zn~�k��������W��Kܭ��ݛ�_��������&�����:o>J�����/���l��f;��o���g[m8�Y�{�8���'_���W�y�擗_~y��7o�����^�������_^��?/?��Ϳ��}���sn�>~�곗�柿��&e6��R����W�}��_��/�Q��)/���]ή��)���s���W_��Mٞ�����YL�����/���c��?~W~���_���}�Q�n����o_~��g��l�ܞ�������8�^�}�{~fm�Q���ܶzS2[�)�z<��h��������毭Ͻen�~�;uZ�ۦ���~��g/����W_���M5ͯ�|��3;����^�E�I����}���/���~���_q@�uk��z����7��/^���7���j�x�oR��M9������/�}�5��k�B�L܀C�7։����_���G�[Ӗܼ���էG��|3��˳q�����#[|�����6��})۳_��~|������_r~�ym��7���_�7���_��P�u�o޾z� ��_�o���|����o�|�ů^�ӛ?��T�{�����Oo����}���Q|�o_|bװ��g/^}��?rA{Ϸ/o�W;�_��¿������d�𸀤�����go�8]xI^���濿x��w��o>{�����a]��^����5�q�C��.kc� k$��c���[8��;���W�l����O�\W��'/�w������?���՗�� �%����t_�|��o^�1�~��?���7� +��OG'��J�����:�}7�?�������>{���/���W���������7���F�'l������u�w���t�D���2�� +��[��ݿ���6��o_�}���Et�?�z��=��~��ˣ��|�������/ Ƒ�OG�m�q^>���������˷/>}e� ���/>7��{ݤ��J��g���������?��'�'ۧ��������3�3�����v�=�瑟��s\��~�}�}jj����������]�O�<��yz�[g���S�Ss��$y7���a�i�[~���`�G~���|l���j�f�n��ϴϭ}�1��=?�y��s|�=n���Ԫ�V���3�3���w��>�y�����53n�*?�����3���ϝ}��y�����M����%�b�f?~�_���#��t�?�'�����N���9C0;9'gf����Α�Q�sl��;�h�ɉ#x�ص�Q���Scrp$b>���è�mp�ݷG�.��>�`�S}���~�?�6��M�j�s��~���C� n�� +�6�1�w�~<���BɦO�������y;���|��Md�T�v�������������n�Kw�ڐ���ݸ������{�{�{~��'�|�&�~?�������?�?7u�mJ����?���p�p�������TL��Zۣ=��|�{�|||nj'c>ߟ���8����M����E���h����玟[�L� �t~v�`Vj^C#@�@;A�m������������<����� �n��>����@�@KA�QW�Ap�����ý�蝽4>����b�������Γ�����A����2�����n��h�/h?�P�d��Q�:x\�?��Xo��uⰮ�֡�@��.�N.w������-���ױ�p�����F� +�a���z�|�P�R���[��跣��{�A�b;��z2z3zt������]�<�G}l���Mþ��>�\�=������+&�l�1���4:�s9Bb�#Ec�&���5���؉�c�GIk4ňz<��#�㎭?�֍튶��n� �l����|��7{�[����V�$��}�������s��|���X��c�Φ9��G�-GX7��L-SO�v��hMuo�v�9L��̪)�l�m���h�xoC��Ԟ=�����b +1�͆أ5�M�[S��wS��Th1E��fC�њ�ަƭ)�a�v7�[mIϦ�a"<��`��T�4E�m�o������6���I�6�nM�3;vS�Ռ�l��!�h�wo��L����7���[Su�ʴW���^�hM�zp{��:�m��eF��YNs��q� �̒�����p�����/�Ǹ񧸉� ��G��'��8�2ڳ��t��G�ޏ�l���hυk���?,��l����V���3��O{W6��D7���V���GZ��E�Ӧ�nU<Ȯ0�"�^ +�b�mqg�� [�7��1`e�eg������L��(�.kJH>y �A�Ⱥ����:{%�<��K��_����A�����ʣu�s�̶� �~K����2�<��Ӳ +��ߎ���ۓ��f����C��eO�z�U��d�|����zӌ�oћ�_kF���R��I�Ol�����V���Ѳ��6:[FO�V��Z +�V�aw��x�=��? �>v��[,��Y�Ȳ;���$�U���K}���}k�ŦM���mTcc֔�x�l��PU�>k��N��G��t��0s�q�9�\��<3�=��˥�{�dC�}�6�!W��z����a�C�+֒���%�{�$������f�p�G"$鄌��h��pϑ���A��A����$��A��@l�P�I S����GF/�=0|bx⇃�����: +����y]�d�|0�4�&}�[��I�>~\���튼i<1��[7��X2� ����滦PL.M6��;v}Mݘ�zR9 �n��pR䲄�)W����]���G�tY�{p�3&�ּwGԻc�<�|<(D~�QD������}?s����BGc��,Y�Hqъ'F�Q?҄~�GS��3brn`�`��#��N:� g�y���`�� . ����X(&`E]?06��c�a�3�c}b�O����4����L�\z2~�g���Ǟ����zN=i<��V��O���n(���|��,8��B�?͂��0�Y�P��<� �x�8Ac�Ov��oR�?�5�����f��2����qݘla\��2\f�%�<+)����z�e)z72<�94p���/o~�/� +�~?/K�t$��$&�x�ٌ���c�e~з�ASS~��_U�:�&ξ��o`(�o +�Wq[��^�]��\�{��|�٧7_����b�'�a�E�)2R83��HDG�ɝ���)� ��%�'��ɵ�쇼�M]1�U�k$���*��3B�V�v±��-��/$�~y���9,�<΍��v?�dߟ��B$��krK,��Xv6uo�=w��IJeާ?-䒾�� �rkϟc��7�ܕ=�ڬ#��u-ˁ7���w���{R��Rf�]������=�w}*zU�П��x���}�����|��_���w<��P�� +��"�y���ܯ��[��;��+ +���}B$�H��!���ACA�w �h����E�YY0��������0olXG��Jj�Gx�,��z� ���D�P�Π���o���>�� �ė��_��5�튚���1_3-�<��!���D��s|W�y�1@cn9�G��m٘�wզ�mT��깍�;�����F�(��� +��q����{�uG���{�{�)�ʃ{*� � +���;�m���Z �R�0K���-S��)팕�ck��3��f��j��9}������7 +��.5������r��ݬf (�kL��L�G�����fϜ&�l����ȐKfw�8�Z�I��P:�=�g6���)��+�w0��n��^���� Է?]:�J�Y+��?���l8��Q�"��Y��q�8k>kfY\�6����������"}� ���2u��PJ:������)\��+���? +r���Hq���rƒ���CK_f���1�:{�H9�;��N��M�)g��0{�F*��������:뇎���AW��j$d�dPv��o�g�F��<���N�<��K(.]�pJ-{pG��;��C{dRO�ގ��v�CT�%���l��,���˓~�Z�b �E ��=mm���i����Wh�4�~;�A p� +����{Z���kS�.-����Xʪ���~NH �(�`޹��l:��>��� JW/�^��fg���L�x +����x +�����U�z�.w���~1R�5Q������%G/����~__��ߓ�}Τ���~����;��>ϱ�,#0���S'�����=��NOU�W���Ӱ����O�S����b6�|\�����f�rVb^�K�=^z,�^;�m�~���g���������g��ѕ���EC��#�r{t���vF0�PK��Z�<�.Wj�3�;��3%#�9�Ej�I�깍�b�[���\Շ������ S�����; ����姾���~�?S_]ܟݮb/ +�����F��Y���O��;�? G�嚼?��i��Z �͹�v���!`��{��ev��������q�¯���=��f�� +�\«c�#L�K~�M��=�/���<����W�~�@��� �|8��ݾ�T�}��6É�x�=�׿2��枾��N���j�ڟ�+f�"+Y������1��A��NE�j�Xt#V}�|S��X3Uoy���⡍5���y���Ͼ��go�a٘�4��u�ԭ(�)��f�2��UH�����fn� �^Iϛ�W���_���h~6��Op�Ǻ��ֆ��:|�!?t������r�F��l���`���]���n�1m&�F ̕�.S�ʪ��GT����< �qq��gg9%B3^}i�A���U�ϯ��YP��{�c��`^Sc&r(6f\!���^~�g>?��9Q�sz��x�U��x)u:xG���@�ζm�+�S/��ۼ�����{��}�3�P))�~`��R��Q�~����l�� JK��i���&�$t�7a���?t������'C����� �w�(�'�����򽍠���|Oo��U��k�ޘ8hM�1��98Zj��|�/�[���_�c��~����,%̟����&��&�Q�/V��V�6/�%��b^$���v}�cW��OԝFʼn;(?g��g���wk����P�|����@�q�@K�lk|�;B�i�c�4blL��:vnc��l��l�13��AVpzL��[a���l�N[l%��`�}{�-����o��8$���b���������Y�}��wp2��_<�o�?�����Oc�[���}�M�ߞ݊_��D�-���M���p��=��a�-����G�__��Kx����vԴ5{��l/�ܚ��4���*z�[������֗�/�����j��O���]���7��?��O?�Y��q����琾s�����׃����^/��Ǐ����W�>�������}�wo�|v��_y�|,rǏ�^|�/�x�V���$���8���֛���u��������܍��R�'mN!T0lP�\0��Ъ�߿�i�=�lz���l�D�6��\��n������h���)��|���x�Fo���mh�_~<�iNL�Nd��grs�����u� űv��?+i��L��^�v�Y�m���V��ۙԚ=S:���M��F���^�>ϧm���tu�כ��.�(}JP��v +D +�z� ���R5���U��[X[�l�<����l�� �l�f/[����rA�;��a��L�Ż��uO:��)Ic�����ܔ�V>Nm��I�<tP��V�$M�6��g�i ��᠝�1�3��K� �_J�u�^�M��L�X������V� +��R���n.F��ې2営��9K}�f�S��,k# �}������?��׀��'o$���p ��PPq��b(: � ���p!Χm��b_�iQ�Aet +P����rٴT�x�Qz�& Ʒ��V1.��*�ہ�K��l.f{�J�?�fݜ���cW��;���lz��� �Cھw㐎��*��p&�V �&���Y:����k&�]�o2l|�S�r�z�Vji�����f%��uo���v���������E+�-��6���j�t�z��nju���E}[���w��;� 6��8jl�s���R�K���� a���b�v�n���l�1S�����$L���'�`�����/Ww&&E���d�kX4,���0e�ܱ0�LA�D�<�k\w}����I��ò2��gp���4�M� i�Z�3��}ſ���Y���̇�? +R� +��@��bI���3�7� +_-w�1x!�7g�n|J�I�Zw�0k\6_n�Ʃ��h�M��O��qa-�z -�G+Q*���K� �hm�r�4�� +:���F�γ�Zza?c��a@��`2f<��}�k�uki1���� +T� +M�ML�O߇zp���W�� +;4��?[�{[�������hf�l+:ޤ[��d��CP8Mm��H�&<Λ�MH{�y�tL@����K�j��׳Dz�*eCA0M��ؿ�t��&8L�C�pb�T´�IX&3u��<���}�#���m��d-�4���b���׻Ƙ�$�{�bc܆h�N��MhϽc�܇���n�=�cfS��8�Q*� +kڳ�2�/�#Q��?Q�f��1P(%c���fl��+2( �x;�n�DG5�$.��\�u�f��婕v#t�Y� &/�Ê�7��������bǖ@2D���.��0#gYjΆB�Uk(ԓ��O96�� �k6*B�����*�3C�b�Z��9V�ٖPm��Xq�@O`���DŽ���=~Y� �=�*����j��C3A�[#����[�ML,���!�M��u���B}J+��s;�����R��Rs@�b�&\�zJ�i&�n�m��x>w�j��YG����ZӤ����yh�``�����Bt�]=�:*S�3�c+c��)U�; d����� +qZ<��FǾV�%�F��9Q��B����6}����:�ݜ@A� ZB������t� +�KR�� +ܯ�vHf���3)�o8�H����聥 ��N�9�m���G� �S_���y؏ +�����)��)����C��$C�́���̜�����a&���}�9'}����͋�ʩ d3���u;̻l�XT�� �� +_an�^{��AC��{�6�LPf��n,]\�ׇ��i��x��a�4�`2 *l��<��<�6]xd�Q�lTؘ��ؿ|0�bXJ��%T9�'�A��(��9f��z��l���E�b�{E��4�V�6��h�����}�h9� z��L,#T�̄\�;�óX̌��Zh��C��4ãD�u +-����F��[+ �0)�I�N;;ɜNݕ(�.�l�����WM�&Ъ���j#�ž�"�,a;@�Rp!ܪ�iyf��kuլ�g�mE��W�����@�����;�Ka��3���nZ� +�Ora�WlpA�>֞އi�my$�����璢�&H� .�#\��b���&P�l,�� �3����@ + ���q�>oµ�M +,*L�1��mb+�M"�\L�h����`X�KfCn�-T|����mi�V�c7��W��ƚaNL*�M@�y���0�MBk8 �����?��-�P���ŋ�$��U���u&-D�k^�.rA�`1�=��Pb;���_���u7\�gL,vh��z�m�WXl�A&����5ZfiW��ܤ#!�w�h�l]>+�A��u&�䄘����f�s�o΋�K��M[�ᔏ���30'_�0)x�ϺO +;�Ԙ5(���K3�@ l+: ���Bʁr��I�'����q��&�I<���Zė�F�\�b2� _�"'�P�����94 Z��Z��;�4�e�tt� +����f ���w‡L�}�蜃��'�K�����4�B�j�� q�� +Ç�&0v6��|U���*����.g-uxbN���'� +�i �Yn޺ai�J���M��N�dMаή�v�����`����P@ԝ�t�W�%����9Z�G���lڃ�x +�-�̹9Λ7MDZIɣ]��g���&�ΤPH���N~G� �j ��\���,j +�l�OtD�0�p�����oS6�L,DI��C��ᆣ.P�\nf�?�}g�@ +�0S�uA��i�j�� +�@�{@ +k>���g��������, ����0"�&X�h���k5l@���W�O��A��"�X� +�����16��!>������\ͪ�#/��4�x7�S����g�{�`$���c���al#�Vf��5� +�+:�����[J�F +�XS�e���F���1�G �1H�8����4LG�p����#)Dž���$�\��%����|!��Pm�%NS���E��!����ӊ� +�����[��|9"k�����ar�b� ߤ$B����1��&&̋1���] ~Br��.&{u��4��D��s�t˯y@{s'���}dڛݡM��c�kDօ����A6 +NU�㼻F t�Bq�²BV��)��Y��yX_��5"R��(I� ����<(����gy0 0L�+��M,̚v��\�w����IV�<���Y�����q��}ԭ�6�(�&_f� +���A������ބEF�qTBl}���T ��hy ��C��kl������u!V�ސ5��S"f��Cm\�ƁN�t�hx*V* +8�!80�a���35���#5�����BxLD ҥ��T +/�<搉�:�l$�`��&Oi�t�i2�hS@D�S���`�[�2��ݝ�S1=.VI�9���m�B�[e h����5��M��W���1+F��b�n� v��� +�[s�*+��D!Z���� �Ηۄ~A0O�q]�N��H�QM_� Ყx��c�F���@�V��ش�q��+���,e Hdr' �<��� ?�Ň���j�覉d�yB�T� �}�jJ���"�X����/Ը���<���"|c�cLۡ������g���1�� �q%�k�*Oqf�����X`'��*Ta��:�p�,@~���Q���@�����C���3� +�,�0��: K��n���!��,ghK!@X�/�-�ӓ�>�w�Ȗ +-W�C}u�چy�.���͇�a���V �t95�� q�W&V�D��+�����X���VM�dήe���%�F�X�eԀbMP$sv +"c~�5[Aļ���FgVqmL����u�{�9X�j�^MRR,��Ss_��R�,qD^�*0M�oY㇇QEhaZU��H��љ~�&3�l��9b\f�q��c��/��?��{I�E�fO�բ)�+q���W��wD��w���.��a"����%e�s�|*"��� }��6�Y�~G'�8v+/���^��\4���Ud�зZ�j��s��DC��5)� +��y�hm]�dnZ/�d�cBb6�:2 `�!"����6\��c �&�D@�a�#�;�Le�ǜ�m��!�� +�$��CY��XW�?�;��n�L���8�IK���@ �h��p�? 0Biɯ +|Hf)Š�M��lJ�����~', +O �8(wa�[6�̕qE� +��=�6� ��� �<f����i� ��!��J���>NcB�gv&�mт�:���&4ݟr2-�W�Å��������:m�}ˆ�M�En���3O��������L�ΐNJ!�w%Rª��\*' R��nL`B��^��LAz�VrVd��~����Թ���i�9X�]b��˜�������i3����<�5%���iS����ݑC�ͭ���Z;�Ò��\�[���c�Q��1�$���a��ց�h=+�;�HD������8��S� �^'�� +I^X!p1��m�Z��;���1��;� �R�$ȳc�1;�]��:3��[�1;R�� +�_W�'#r��f��2d[WV+�lc���D5�Cz�'���P��� lX���%��G�)�, 8ܓ�WC0%PJ�e�!k�1�1H��%&&"��t��|$m�R�or"�O@I>�kin���Ý��Zu� +��@!�d�so�ϑ�ܖ[ ig����,$8Ӛ�1��s�� � �w:+�����e?�|g�6����CVq<:=CC��:���@��&�3!d�"���b��U�%�Ět � �w[����0x �˜7���P���>�C�����t�Y�(����@�`�S��+�����2w���*E��O�?�*���)VQ�'P�M^��w�^��.���ID#��:s`C� 2 �c���!�w )W(�k�p;U^�ƺ֮zܽ١�B~D��MȮ���'2�O�Y�AW#�s��;D> �� ���H�;f�ؽ���g!�8Y����/���W�󳻻�O>���߾��~Zc�i�4'�������+Gb�Z]�)%L��<����J-"� ��g(��̢�d��׎$� h#�ϻ2� +�r:�H�/$nr�ʅ9����q�r�< +����>N�ˉ�)z(p����Kx�`�����Ö< +M��^S�%� +r�eb��P�r�e I�)�P_-wO�[C��O��Pf�w$�C�,��k�H�/�'� ׼/�S�fg�ΐ��]y�+� y�2M��4_�1?��}�h���t~�Z�og�px�-3��TEl� ZKّ^�yA&2xY�����%s�\�] ������Tc� ��K�}S���>/V���]1F�D���IQ4�t��F�ga�7g� $��2��<H��`��}��6o��Kd�u�1€���V�+�_n��<���O���\ +��Z����0,�X͘P(F F +*�����fc�G,�Ӧ@Д�n+B�XV�^�y��� ����{X�6��5�y4�s}���Z�x��v9+xI p$-9�M�8}��j\h���Ԗ�11��m/ +�1�gP���� e����R�!P +X���9̈#��z���xؤ�}�+S�T�~^��3 +e�Lc��Ϡ�7�V���B�*�{�q��H��y\4��a�)��=)�Ly�~�KG��̌I��;�y���YWd����H�%����"k��l@��!\��"�N��?�<& j�l*:��t�0\��p6�G�&�I�m���|�u��n�0��[`�YЁ���}�6�,�aP�ZG)+'�VS�}�0^�y��ih�`|�9���[晞������;ס*[�fT����y���qAH�P�2�Y�{���Pa�g��8��J�6h8.��aN��� ���39g���H�[��Q�qI��X��Ff��$m�& S �v��Yy CL��C���g�ZJN�~ + o�.�B̆�2/������ܒ�P�=œ��e����E�L�\��kl%k(`!9��3��X�Y&�Q2� =0i2V�����t�ec#��\X+�B�I�C��/�XK�������Ad2��T��^Sr��yEb�`=K�H�q*�t��IQ~ +�w,��`�����L�zvZ��n����Gڈ��0P�lW�%�Յ^�*(i +KrPz�(XV�� �a���o\>D���xʡ� ��=Tޘ��I��_E~����) J���@��EH�LnTB�%3A�u�C��h,��ʄ�`H�5i�u�(ݫ����yoH�'5����aჾb�l g�C&������ 6 �G��8�Jm�"N� %���\���դ��c��ggG�>nVyb�> ���P��$W7�(�S"f���<��v�����O�Ɛ��k��{��G^��T o�UL��#�U#?g7����(L}K�g$ol����z�K �,���ΗJHQ���*�(h�t<[���H�cyU�5�~5~X��+1�W�������7<匶 �w�Q �Ó)��23ď5R&Y3�0��U��j�d� ��UV�j�K����1J���}��]^�Q�\�x�e����ޮ�S��p,\�"8�*��e�\wcӗ(���f,���4���g?���L��޽X&Z��hs���Þ*�s� �#����1�F<�;��TIT8�y͋����Hc�U����6ɩ�rV�PV7�5/�]��Q|����)&ǯX.��k�Y]�*ͳ�Y��܏Ȇ��_Q�:Ż.�ܲ��Ga�"z uZ�m���#��EMW< +vA�� X���(���m�֏�Q�����Ob���Y������ca�$^�83�N���uy\�R�:��I��(A���F� XP����B��O��"Q(<�U��pG�ms<����S��#�,��x���ݙK�d�����b��.K�p�g��A��dҬ�4�.�z]�&}�w��t'i<�+�5��-��6O�mbr�%`ӛ"d�7 FX�{����+=I��O4`�A�:9�d\����vr�puz�|�c���h�"^�� +�Vn �������Ofh�=��"�2��V�Y���͢ZZ� F���ޚ��?ȉ�GaP�CL���r# XZgq�^�ɸ#�>?�h\g%X �ץ����'�v1��v�p��A�g���b6!�tF���R�Zp���Ze9Qg��@��.����:ln g$�/�vJ2[ұ�R�pD��p摑�!b���۸.N��cV^!F�� +� +9ƀ0��f���x�;&i���>σZX�ׂ�����u�R,�,����B,�̪� ���4i������s��+������ +b9G3�3Hé*�%��)�[���#2�g�%\�X���<�p>^C|Q)U���tE���#����]#K)�D�&B௘OQ�;�#�u�2w0�oH\QtwBց��P�{��� GqS؉s�Ӄ�x�eu�q�U���QZ-Zns��K� &y̑���;�]�D1{Qy|O碉�e�7L������kԀ��3V��ס�� 9�����i��#/~��w�R�ʬ�꒒�:�kmǩ쿕� ��"9M +��CrG;�QO�R���}�P��՚I^*�= $� +@ +����RT�e�O5�|k%��I� C���J�ܯ#SCq&�����tjT� ��Ln��0��lqd�슃H�G�mz��S���G7̔��c]�/��_}��o_~���W/?����K���_�x����7_���7�D��_�}��O�>o~������]��?���)i4�޹�+�1fod� �М9���Y�i�Xg���g���%��3æE�ʙ�~�(c�õ�;/�c�`��Y���L�C'=�w8�Q��AD�����c��6��&��Eo���rc +�<��q�n�1�����ٸ!�F�/bc�m�oAl �N�g^�Hj]�ƻ�/V�}x�ՙ��B�*.��+k6��N{��a_q9��Ag��>.*ۮ|�Q��t�(��nL6��f2c�Ċ�:�q���q�^�~f2�~��91�j��xz�ޅ�e�CyR���;� 1��4��8���b0�^(�ư�`�_��Ǯ�h�cV�y +�b<;<� y1���hw1넡 ����$i�.\Л[��]�u�I��]���.���z#�לnZ�W,ߙ{9.\`�\ܠ.F�� +�b�9�>3OOt �b�l0�:q1Wqg�bIg]���x�_٦�� s1� + '.�����YD7/��ӁԠ-�3�<�� �_9��J���8�� ,��Q]��!�� +�b�ԃ��ќ�v��e�:W1�<�H�E~SrOL��tk�����F��c9��|�)K,��`)nS���Rܜ�BR���]8���eɐ8B�0�7��2�0��%������.���'����h� ����;xS<�J N���`�~�oT�`�]���4��XHip��p� �/֍���xqO�5]������ FP]\��3 / /���Ԡ +�A%L�S�W��.�x�Q��-h����%8�A<�8�/�W᳟)�Q`:ˢ�X_g>��~�a��� �]��>�.����캸�A7�&��7:Ԛ�G��ʅ +j`䡰Z<��7���q��|��s�ۊ��Ɂ7�r%FE,]�vX���tkWf`PJ��ɉ�m�P7.^`z�� -��V̈`+�c� + �Ah�� +�&��5ٹ�@u#��Xte��ޜ�/(�ߔqeJ +�*��ճ�|��F��� 0�70�X,EB�J�rg��˩�Y�Mz��;,� p��[�#�-v&OAm���,�0�P�,�hjet FG�$�� p�y,c�E�V!{�)iQ6A�\(�����IEv��-���o�:�`�Es�NEx��F<ĹA"0�>"9(�ia�@�/4��ӷJ��g�_��2�}"�����%t�߆��������=�` �N~v���F'c�����d�� S�2'��T<��xq�����ԴQDž��b&�y/$���ob�䞟��"K��q���� �_J�8��T��;h����i��0�9W�_2�+�H��8S���%�m*�# +b1�:�/~_�-�_庰��췖���/��`�埒�%Dayxa��2 +��y�����H/��U)&欿h+P��WC�!�3�/CtLiu�_�$r�_�@��B��;(;H�H +��//J�����r0 �/Ӵ�U���p�_hy��֜��� �/$�޸���/��Y����k��_d��L��H����>R0�g�l�X{��SE�,0x�`�d�h��bw2�w&��- +n���vP��B��8�b�/a/Ց8�/^Ea� ������;�g2�/��y��_���<��䇧�,�_HMa�ٓ��Q2:�o�N�T�(co� �%>W|�D�=��J���f�o0�� �cz�G����N�f:�/�0k��ﰚ�$��q�����:�/iO�ve�M�3��/�y���Xcu���z�l�A�˖'j��l,��B�K������0��g>~j}1�*F3�b�e� +�_<5m�`�e��`�ś�:�����)�K�/4>g�S��]X7x���K�s���xwp�B��Ņ�Ҡ�5������[ҝ9~��� ����.M���b���B�|N�_���0�:�o +j� �/��k�o�}��7�i\Y~!d�d��R��=X~)��?g�_�r�;ͯ6b�{��"�Nv����NC��B@R�������g�_I�)��b��B��� �/7��[ѯ*C鬮�}�� ѯvS��"��FD\ԃ�Y�Źy�_�z��[9ՙ����9��<��*�$�]f��dm� ����*E<+��\n�; h~W����������Ip�_T +� �/��� +�_H|�r�_J�\x~���i~y-RM�/����"���/*k,h~�Z+^�x0�)���2; �-A�U�4�h 1A\h~�����N�!�Ǡ�Mͷ����L(ԒR�Y*�i~i��r�L�K)m�����CF�;f��%��ݔ���\"��� ��\j���0����Rn��3A;x~!�u��e��@$:�3�ϯ�^y~q?F��痳Dd�4��v8�ۑp�P*R��qҜ�/��˕�����dh�=h~w螭\Y~!ܜ�w�Fx��cX�g�_�J(�P���_~ �Ξ���{_�:vg�u�^�,��_�?ζ�2�:�� n��~��]2���:i/�lY�t���^K��t����3�o�����y��;6�sf�^v��c�H�� g������>_\Ỡ����ͷ��FA��=8�|��@��3�/y]kYL����"�� +q���>h|�#&X|�����L��7��:�/0pDÂ×�xNW +�ݭ�`���aq0�����L� Z�}��ߋ�� ��=+����K�x���9� 3�{��Դ�����X��b�Ep5��Ľ��]y{��r^��E�X{�􄱅ү��������E��5�S��926�=3��a�i愽�����K +6�@��zY���l�,��8s���"'�޵u�S��v�ۚ�N� z�?��C:�����ҋ\4��ASNWp�:�؅���`���W��A�"~��d��ϋ�~�r9=/���/�SX�"��ʍ;�x:���y�̙y��C2�##�����w:�N��Ÿs��bj��;Xy!UҴ1f����������2��9�A�X����qSjϬ�X訚���h�#�*���/���, N^>Ӧ�|���� '/� �pp�ʴ��'���N�e]'/ �'/,�>s��D��;'/i(�o�s�c��/�����K�j���K)����+���E�KT�D�gN^b.0y������8y�S%\(y������w��Q� +x��ᅒW�b��q� ��w�:�GP�x��,{��]y _a|#/��m��Kt���3#�2+���s,y�m/Ό�g��+�����_ y�b_YwI�s_��ș��i�Xу�Wdlm,B^�$}� !/ +T��#/j�H$��ߩ�S.t�ȪrFp*?سYA��w(:��Laщ��*�V�k������WBR+?��+Z�ifߍ���+4��0^=��nm��%��ӕ�@�����߂���#y^�x��˙x�n 駮�� /dE%����^X,�ݧŅ� vd�ѝ�4(x{l�vf��oO����>X�r�L���8�o�}w����žKvй_�wA�D�'�Tmmq��_�w��SCĻ;�`��=�x!�e2��x��%Ye��Ī�m�B�˭��s�]���w�gy]�v� 0�����H) �]Ј���m�(�kA� �`sq��;��/T�H���δ���XD� ��W�]T�"�$� +ť�ai8�z��B�۾�u���Z_4�H�Ssa�mD��"�m�n�t�=��2뢎�9���A�ޡ�ꢤ���gZ]0vpsg�m�/p��D�N]��.���`�EΌ��vGr��"�ٝ_& ���9�o�s�E� ��6�tQR�pƅLw�\��wf +*]�+�^�L��LX������j8�A���k�|g�H����y���{�h��2 � �@�Dwx��Cŋ�c�Cw:�bP�N�/ ��F0Gl� �# +wQg]t)���Dj�<�.A��pP�r�t��A��e��_P��u�L�{\l�j>׉��ˊ��]r0sq]g��s�*V\�C����G + הv�5�b�x؏̢;v�����-�)t��9i�`�ON�{$�L'�[��s�_N���Ź��l� +$y���ݠ�*���A�����Ob�.w�<�0��si��!�JA�K���^��\p F�w$p1�.hP�g=��:WuA3�,�\JHt����$�����9�ܹ���;�82��;W��c.�\�Ҫ�lOD@�{��� Ҩw.meq➊/ad�P �\���4�q@S�A�ˇ*u1��"�sY�{aΥ�S}���ƙs��0�.̹� +œ�e���Ĺ��.̹�L��N��� ��A�K�1�9��*.�s1��|s���e^�sIЁ��\E�sZܹ +�Q/ܹdIaU�s�B@0�sRh��;�����;��"�ܭz$�]�s�S����Oy\���#���̹�� �̹ ��!�i;�Ĥ������: +Vy+�8�� q.� ��T���`�E���Ӆ9��o�Y�9b���K� s.��� k�;� ��3����xp�\|%�`�B@��B� )Sc�9�߿V)T0�~f�es�t�\F}ߔ%Pv�g�œ��^̹dA��?V�L� /̹�e�b������s1���ו:���2���u.% �_�syERu.3� �\H��v0��"eL֙si��&�s�G�s�.�\�Tӷ�UG��H�va΅X�˙s!`Hu1��Ѳ��s)fOs��׆s��"K +^�s��8pP�"UE$Y���(R�r�f�w.�C�:夸�|�3w.=�tg�N�\�s�sqs�AW�Om�?��ϲ,�w�hsU��k.�|ziA� �p��3w��(sw%�/�ܡ��+a� ��q5V�������ئ�̖ op?��YhT���z��E�$�"<�[����w�ʊw^�r�V�'�����`�0w�=��B�|�`���ő� ](r��^�{�r�}r[H1��;J�.������H�G��z:���8��1 Äcm��{�׹�"p���D���!0UI�(�sfܲs��3-.L� ?�Yq��V).�6�p▢��E���w�2�O]q!E,2qq�/B�R���`�,6\�fQ#Ap�D�\���`.*\Bl�,&\8�d58�� +. +m�@+,���D-'BA��8i���!�M۞^pQ�ɞs\r%��q�[$f`���o�"��U��呵 ,�oaLr �3g�V�؜�u����{����y��tg��[�Cj�3�-�r��m�*Mlҹ� �EY#��w�W$���ݢ 8�D������{%# �ױ�n���t !,� ��b��e�{Νin��E���vU�:�m�2� �-2��/���͚Z +�[��P��[rr��n��`����6ƕ�BT,�-(:P`䶸Sr��e��F�@P���ʣ,f[���'��̉@>��ڂ���Ym� +� ���B�`Cpڂ`}Pڂ��t�� +��`��wp�8�-�"W�Bh�&��|�e���iA-����EO,�S! ��-/.[Ua"^�lY�����/J�"[DJ�~��E<�=hl�D,�b�郞����b��a[}�¶Q�}��R����I#/�Y�`�\f籕H���=�eY�ە^�L���]vz��"�ek�7��p��`�ED5�N,�g�~�^� ^��x&�J�,joX�xa�I����RYFp��8Sʎi:��P�'�cc�_�d��)�Z�Ɏ��Il�Nw!�� +yC�`�<�d� ��"Y0�l{:xdI5��A#�=c��"ۑ��5�b�����!kq�](dw �=��Z�a�Kp&�=�b�ݝ�f����agYf��0�%P^�'�'���˕C��m���`�O�#tY�0�!�#��S*~1^}�S�@��� {,�4�۳�c]#]�s�� 0�p�"��=؜:�~U�Q(�%=e��J�@�T�`N[�ʾZı�Zȝyc+�Ŕ���du�(m���vF$~����eq�>�f�t{�'����������5u�i�� 7yw���A�T�0 Z��/oq&ֳLr�-n1亁.Y�����q�&Pj��mh���u� �dvx��B�Dj#��D��t(J�3���<��L�b�)��c���ppq�)ky p� �I�X��Օ}�qp#�{�Id�¢I��<����^��9�#�H�<����Լ�� 0̽� )�tj�v���t�q \^��M�^k���s�`x�x�:�-rو��U �(.%:��N����]����J���z? +���=�4�e]�Aw'f�v���L�^A��|/��z�섿��5$r����K#�y"�����\iG�0�[l�!٣.N���R��t4#���S��g�8]�p��Z��D��nSu�(���nA�=&��ɮ�[�M&�"`�f�׀ +��fd�{���~�h]�_���| +c�����"��� $B�p�� �C=��/�tt��cW�����s��F����0����$� +g�k=�]�o��CZ�Z�DbR��T����AFAc*���qf��w�9�(Θ7�)U�U,?�$b�����gT/��;q�R�E����yqw��v��Y�+����b� ����C����dd��1[��k���]�����#�F�����Q��H�#@��C�Y ^���W-��n�jg���|�^� +�haMW�M�K� F�����L��״�h���I�M��TQ�9=���'�-��� CG��?��sN��GgL��-���2ɳ@�1��H0�}�a���!��۰�P|��Z�\7�����:4P�s�V$Q�� +k�� `~H�v�Ȥ"�S�� ���#�� +�a���x@IR�u���ݣ��DT~���"Ĩ$:� Čd��_� XdH?�{r3%e��(����ػ(�y%�\^�,�3Kc��=�Ԇ �rS\s8H�qK�Ni#S�k �1'I�wu}f��� Yt��w\����9Ǯ��n&ŊƄ�v�u<�c�1 �U���S��z�Ŵ�;>$�9�@�:%d����W$03dY��4��߀�s��Y�)*4����T�{g� (Cc�Y��k�?YV��ʪoQ\|�LL� +e/��z�2 +���}����w�p'��K{�_ D�B kY�gK&���b�>@��8��^���q�^��tēv�׎����;�mN�E��]ͷlY�U�EuZ���t +�/��һ(̨,�Q +9�/\���XHY���7�H�cg�� t�$*���yriv]�;�r�2!"E < +�@��0�����Zw���|�'�K߲��� �էŶ���+��,���L�Jv�c{l�>��Z�Mc��Ec�-�S��b��m��i�Lzc���g�����B +O���U��:���q����Zv���K�y(�M ��>T���[�}ِg�N�k�~�=T�����~��`���o�u��+�Z{��@3n���}�b��`��mFd@�[�����dz���S7�+r@"�! �-��E2c~Y���V�cq�}���$7�b&;2H� ���H���t��P�oqx*S��󦦰vw��S�'�����m�T�0��Y���ʳ�BC��o���U�d���"��q[�؞mܕז�����6�FI��Q�Y����IV��6��41�k��)n����|B2�0q�#nR�;d�\�+��a12��3��� � �N�:Q���j^&�����o��id���L/�-qh`���)��9�# ���*�OM����޵Y��˒�}��S����u&S�"�4d&��)���-��\b�$�K[1�����H���;�8�=4�Ym��D�0~fH�3r�������F/�``ux�v%�h�fm���!�b���J�Z;��M�;���d��s|!�7�J�x���eiwntT��T仠G-�5���*�� +�s���p]���LC^�����l +]V�p‍�@l0G��K 5��JqxJ�T�Ժ���sC]^�jK)�1�P0ʄ>�J���.�TK"{Y���� �m��\��7�p����i��a^&υG)C�Z��n ����?`�� �VHZ�c��M�����C�\�#���ќb +^�ޔcq$�.ks?�ש��� H��#��#q��x $�=������U)�L����I)T�4&�BZb@0E��l>sZ�Z���n�W����& +1�BA���0יrpXn%Iº]-�,a��y�'�wf��A2ķ�T��o����OQ#�b�X�-ȶ�ۣ�$b��n +k�� ���Ŀ^�i�������-rZxS�aiZ,p��=8u����D��L/�C�sS�� �I�A6qۉ�a��[��Q��48s�NG���:t1��dx[�DDl63�x\���2��yU��A0j$@*�������.;xp*���i�BL����� ���D��$�@��n��Q}_/b����ֻJ��ڄ��ӊ[��J�w"^������!d�"��7$,��q�OH���q��8��[�)�q�$�Dt����P�6y��b�(ڊ����$�|�b7��K��G �u��š�)���� +f9��V���H�KB�P��2�� �z��%2D��.��KHɴ� ƺ��Ǻ<����!��.u*��h���Ԓ��Y��C;�M�Mgr�Ivg����čy�"� ɁBr�p�;���xӎ|�k\�ٶcfC��x嵄�� +��ա3�C���ck2>�2�C\P:#�CUm�����T�A.�dh,�Z7'J�/ਙK�a��Dh�i�3wDļ��R�b96U +�.�G�q�W^ktHP;s�đ]�O��dql+Q� �R�@FJ1�E�5m�=:}���h6"h�G�?� +>�!�*��# T5��V��PN^n�� �������z�Fξ9��gC���y�H�' +���t������.޵�JѦާS��i-dҪwLJ{ׂ�t�#lT��V9�>����k/(Yi��R���LE��\wd@�v�Z����|�r����m��ܠTx54 +�Lg���I�SQ�������: ��#S;y)z@��lYu�nY�6�X<-QHH��� ��cܚ�᝱ �y��� ��Z���Yx�$Ѧ��!|UM���<�Y0M8Nվ=Sd@y헶M1A��Aj�P�O�,Q�}71O����v�3�����2�s��B� �����fe>6�s����o���0�?ٽR�s�AB�h45/�y�`��A��$J��6�@�RkRu{$v�ɱ9�.PZ�����(�4������5)�p˃�;7�S��*�S0�&*!!a�=���AI�(恔��k���E3�8�( +>{��:U��S�۝���@��ŋ89X���md��`��&8�{ +B�|�=LCD� \�]��͓��w_0�}wߧ.x<��y��eO0`�  �[w �(n���%��;N-g���|�d ����^���o +'�Q�Ɛ!Aa�(?$�B����q`��@�A�(d��H(X�.�����t��B��l����J˘�Xt��[(W�q �h���7����<���D������ѢBo����t�ǁ��3 )�YH.#PZ�wK�ԹX���X�߳�32��[���N�eǼk�z. Q�Ÿp���O����h$��z)L��S�Za�,���1�`'�̝v�� a� +3P�ݏSx���=<U����w�ڟ�Ax�-(�ܘA0 +�̀�� �[�IQ@;����i�!�h�gAZ��d�W����#�kTZ�=��pq�rSh��/�Q�$�Z�� +ת�� +ې�BD�40�ۄ���GH:�ٔ� +L+떛hS�`��` ��&����7F�7�A�ڵM��� )�S} ��S���x���$�%J��Q���!�!�;�%ŭ)�N���O�fʼ������%�S7�d��i@�kDS�Gr>�LV4"���lWݾ��̑_�b����0J�X��^�J���l���ܘ�ԃ�9�KV��J^}�+�5��EWt �ȟfH3�o��V� d��]�z�~�&5]� ��� !�I�o�����c���*�Y�j�.��@�n��dЃ�Τ_���=�i3��D��0�P�6����&G�3 +�����%�2�;�Ǒ�K�w�^a�MGB|�'vK�˲�α�G�\��],۵�����RHU1?��&�-�15y2���s\��ٞ $��9��.,W̟�Tz�.�:b�� �s +%�dnD�=��倱ɔ^���E ��ǻv�l��<Ӵ^��7E�}⡂��^��M�^�E;��S���v�����=����+��Y)֎b '�Q׳�� vA@��FY� +�6��+?�S�?���F�;��e��s�>R�T��З�:BDxcqv����K�3K����tI�ͨ�'���yP5y�%MP�W%/zq��lQ ؕ��?kӌM�쒰X2�|q�U��ӓ<ۊ���=�U-Յf����z����$���T����'�c�(�!ҋ �P��/a� l�cy< ���>P'FYd�P�n]+� �!�=�6N��#��>׉�d^7 Q��);���tC��Q��˒6 +��QR�iw@lX� W�@�v�0rR$mRv�S�.��Rt�ȑ��8�9na�@W�78n���*:��ǡ��w$>/��0&��AY����> +م�D0� +cFFv����1H�����z��*�Q+9:w�x�a�'F���1�`d,�ĺ��D�42�!��O)�T���:����牀�$264i��M� hW�ܠ'�����6J�-(�t8� <o���„BUl�Yu;9I�9�9��m����i$��Tx�s�( +E��a� + DQR�ܤ�s�$zƙ��Xk�r��� �#��$�(�����`���R3��|��| �Q@pA�t38��(cU��7�"^539��I92��8)sR�x`�y�䏑������a�%�+~[�^�\l��s +�q]đ]k������ըD/��1���0_"W��(�E��G� p(�F�1ʺ��Ht �nD��W8��i�!ID!��|0��`@|��%��I +R��8`�$ܫ�<��i���=H6� �Ѡ���"S���@�-� +" �Q�'"�W�lL���� A�X>N�N��p� +}�IKy9WFcE<�#a�p��KB�$��F9W���Q7 p�%uQ��&=2dr�*��$�2���ކ�ʗ]ktO�N4��7��g����H\��s�>�3��|>�}�kа���:6N��M��%ȧ3܅�l�h�c�D��C&< R��)ڊ1D#�����w0ҨF�Wa�-�M��= ��2B�����8G�=���*,Ӏ2p�~�!j_�4��������)sU��+�4{A�|U8���(�]Q�A� +ߠqց�K�:zx5 +��}�B����&Q:���@h"�b�p%j� +���B�D��op�Y��$˙j�gĹ:A��r���q��"҃SeE���B���|y��y�$�v0��ց�s���{�닞Þ'�&�/�@@��e�R�$Ɲ1��q��Ly�'jނ\0 +ݘ����"�M�he�2q>w�<���c�a�fo&M���Σ�z�> +m'�1�"rfa�D^��>����@A#c���(`�c+ +�(O�S�{Q�"S�(�f+�p� C� ��T�E| �z���J�|5� E^��hD&�R2!j��� bh�����m��؞�ieՄj +5�v4�0�풇u��H��+���9 +)����l��"$���3 +o.Q*��r��9��SɨFN��0¡Sl�*Gݣ҄��� ")%�J��~�Qv��6����!���f���Q�VF [���Ǒ�=�� �,�N%��n��}�A����#��j&ͮ��Ohaȇp#�\�<����B� +�Aa,���(���0��0�����I"a}K"��{������k��Ϝ�o�5ip�d8�^���l@�����=҆eN��ܺ@��� ���9%���92�:c�cN��4�v{��b�QA1�N. 1'�&Ss��8?j>`y�xU7�~��V�r27����TV��|�t�r-7d��A� ^$�u�]ީ�� +m�\N��@ԙ� ��py����o�@�s�D.6m��dF����G������ �5�#�!��v^$<s2���^P-��q�����,A��_,�����Q���[����Vk+�6%�X��)D@͠ʣ�5R9����:R9)�Y�:D/���u��$�S��ĵMAʩ��(Ql�| �N���񁧬�a��S��d�p�@Ԅ�9@�f�>9����HD���M�t�prD�zN`@�j��0�&�by1d���f���"Èw\r�3� :#v��aTr�]�;�DU4�$�Ʊ ��J�9 yI� VH�#G�F0r��KeF� y;��%=e��?�EÖT^mZ��I$�b���� ��J�{C"��*��"��� �z3$r&�S�‰� Y`�I��A�>�D�J/�L_c{� �� +ھ�kq(�!�D�(�����UB�RrU� ������NX�'I�$xh�ԝ��Ԗ�Mu��$��T�0�j]�x;f��0á���%2*��S +3b�f��I +q�x�*� 츥��Pǣ� +�8��j���_�u9���Q + +9�� lj�x���O���qCϱ��M�P���Nb�[��k�S�<�t/��s�g`o� ����� >H��!�Wq�����#� +P��_1��D��7�v1T�^B���'Ϋ��F��~UQ��;��H�;����k��@m�ߝ0�6��}{K~U�oݖ3���P�oR��X����h� +c�o�s�c}����TL������ ���}�_�3�oS�pК mַW��7��p�(�w��ˁRt�`ZK8ߔs4(�����V�oʩgP��7IP��(��p~ +�Q�:s(� �{�(�1���rm9�@(��� b�!|���3 ����?M�)��g +�=zq�+�7��s����k!B���R)ڠ���z����9���>�4��Qld3Xo�%9T@i�7_x�ȃ�n*�9��Qӛ"6�b��ޘ'��zV0b��,{�FI�2@oz*� �{T ��yS���Λ A4=�`��u0� +�P,o ˛ByS�"ySv �����0��7��qBM���X�F�!yw� y�*�z�^Ļ�N�I��@�\o�to��!mQ��߈<��7�]2�:S��iݹf��T$(7�v�9K%��&��Mۍ1U���u]���&X���k +Ǜb9�b��T#��vo@d sEq� +Ǒ�x ) 2�$�� �,8�X(q�q^���9�7"k�k,0ވ�)�to<��|��GHWUoD��V`�)f�A"g0��glf��v@ZF��x�e��7��}�(�DX��x3�T�K(��I�,C�x)vb*�7"�a��x��>��r��o��g8�xi5�� +( Ǜ(0��q�i`��Vo�?G��y#� +��)�7�/�bk���G)@�d���ț�r0+�w��k0�T[�k~NP�k��n��S9v oj��%�h� +� +s�̊�M#A��Û��p(»:�6Uo� �x�ݕk` +�7�p���w#Jg�r���*�#�Yѻ����M������d��[���#�/����u�܍a{�Sl� +`�MY�)������'P�d�c\\��F���Ot�n��� +�5æg��Fy�1�n�� �ijRKHQh��o�Ȏ����`{��Em;�R*��x� ��Ȝ.�� P���A��;d7���R�n|� ��(\u�M�mHJٍ� +�(d7 +I �����A`�bvS�)f7&�3N��� g��bC������H���1�F��}���%�JA�A᪚S�n�rH��v�B�����/$��vs�-}UQ��`tQ)D/��9p7��r)������D���a��ʁ�� +Rn�.)6�톉���G[��;��� +�n�� +� +!,��M���(������LF�� w�1N�e�n"p�r7�� �B��Yq,o����#ws��$UG9�iY@����(�vG�F���w#B���w��ga +� +�8�"�3��n7�ɠS�n���L+�Gr(J�N_�h�9n7�G��n�6�T�n6�HJ�$ĉ�#�o\ +:�����l*I�vb�����n7ZƱ�v�8S�� +��9�톰ȾvUx��E +� ������G�9qB,p�w����q�aY����MQ��vQk(Oq��6�� ��FAH�k�n��(j0�����v3e��{Uk�hĘ�i0�nrErv�w;�����J���<�p7��Iɮ +�W�n�p�� ��ȩ��B +R�€������>�U���|�l��nr)*Db��K)Z +�M ࣊�M�O�p�� �� *!iq��v��iJS�n�b���C-��z({� ��{ �;)k�ǒ`]���TJ7�n��ĺ��a�S�n���TFUjɜ'n`�F��uw��u�� +���8�m�՝�d�c 6o@��� �ۈ ҝ�D�*H7!q���Ct�\p6�?%7�IE�&�)�t�{�X�nj9 ��]��3x�����Pp�V��s� �N�����~� �" +2wv�_9�&"���r!H�dPV��ʝ��)!��g���D@�� �;��b��dc�Brg=�Dn��ܸr'-��x�Ҋ��7�c�Pz����ج6��N�7�}�p�`c� �����'8��g+��p�좞� ��k� �IS���:���7�ELS�i�� +����� +h��Ȫ ��oO����V�Y���:�h۸� y��*9�Y����08�2g��%IȽ=VYS4�m +G�y� +xQM�O �&.��EC]f��E1�p��:�!T�m�ǵ1�ۮ�m��n��l�~�amw�@m>���F[�� g�*���l�Nj" �� ~_�v�m"��F=� +� �64,���5�) h_ +�M�����:�35�3�m�g��P���AQ�I1�֘�l�A��@��1L��l�($vϝ!�cW�m` �+碒N˵�@���� +�ml� d� +��l�P�����$#r�K�^��M��� �0?Ml� +21d�͒c��07rݏ)�6�a�lR�mZf���l&6� c��3/c�+Ȋ��G�J=�n�Ul۠`�̣I�߹yT�m c�( +�ȯ_�Al�H9�N!�i2,�Bl�D�!q3��.�ZT�Wh� +�Ͱ�}db{B�mx��O!�����6�2��+¶���06E +����is �"l#��S�a���3�g۔��4�ئ�5���|��E�������2��ſ%gȳ�3C׆��\�a?B���k��ѵ��M���-d�+�6�������l�+�7 lk4|�Z}�M�D0T)�vɬA�6��<�hwtm*�þR�D +o�BkgɄ�k\Sq��fy+�v�S4E�&ՈK���%+ذbjb!���v�c������ �6��4�Ӧ�@ER��fF�� fZ5B9c��M� рW�h�iT녀iD�=�J;YMAҦv&0�I}�3m`��6�)�(H�a���%:�6Q�����/��E�������1W9 �NB_WV��9&j�M�^�,��؏�o� +1�Φ�$��(t6��I?!��sX�ͦ�dF���ȠA +�Mj�lg��D� 0I��8+����"��e +�%��в��_����9T�\R�l(�|(�B_���d� � +��dG���(ٔ`Ƶ�� �Q�)$�t�5,�M���Bd�M��"d��2��Q����$򣀳�cS����B� + P&��U�<ǮQ�/ +6vM<�Ʀ iD�*46�a��؀��Pz��C���bWq@,6�s�h(,��@ ��`z��b���0�*ΩbbW��O!������ɼ +ՠq�P�F�2�!�A��C!���%ZP$� x03Ll"W�$(&6�3����j��0�'- +(6QKA����9(6�F�v +� +�w`'�0��@�!.B�PPl8�q�),�������D�A�wT�ZQa��4��� +�M���E!���^򎀇M��K6��F�Xk��]�Z1��n�61F���� `gEÞx�p��*B�h�P�(�@��aN�4ێh +�*à 6:7��� +��K!�`M�e�l��FMd�=�_���5rɘ3�j2v+���P��Ot�j�"�S�� +(@���b�p�Qgd�:i����Q� +f��s�+QA� C���YRhY +��\�:* �V�LFs�j�"_� �V?E���9�������H��I�4�BUÍ� TM.����`�p��z��9J�h���2Q�T0���(�)F��<)D5�Z� �2C��$�T�x��S>� ��R�8�R���1\X N��6�װA��&�p�Ǹ�cbT�.5��qe(.5P�a���J��R79�� �:��L��� I�%'��tq���Դ�ᱜ�QG��Bϯ$f�iA�&k �34� +g�[u�:��E�9%v ��ݦ�����'��QK����@*]i=�B]�� BM�,����E�@E�V�����l�tւ�>�5�n�>�8���OKP�aO��= +G��g��+�p�i8I��Ӕ +, +����- pDֆ:��(•bN{�r����m�Ӕ�8���CQ����n�%%��p���h�������6́-y�`�d��Z�F@���B��>�L �p�DE�^�߿R@���T'h�A|{6��p�5���Ϡ���p��4M`!\eZ������p� 2r��L;_e�Y���Q�b�ir�"�K!��]��z�N�\c��S�+8�GS�ju/�tqe$D �F����c��[���Ql骥YZ�`v�;3C��N*K*�4���mP�?�'8��.E +i+�t�LC�&h`+�@��@_5I��aJa)�TC�&�=j�*N4&C���IS@1[��Z���2�t�u +&�TÒv-J:+:� I�"���K�E��D�)�4��D��j�"�5�J!�sw� C���3CH���t� �0�K��$��aLA�r����e ~t��p����).�G&&;�=�BK���h�!�\ΰ� +�L���~ w� GA��GS��͖Hȥn6���s}G�Տ4�o��� +x�dt���$|n�" `4}\‹&D4��.�b 8AEТ1�n\�.y�P�d�$eA���4΁�"�p��SH�U��:r�&�� �%�j*��DO��E�� +]�=fp�������ԂMhm4������7�С):ؠJ%oz�@C#�>�%dhra�U���w�i +.t����W�Ʉ?��&�:"4)T^̮�LZ�qM�[�B�8wD��8��&P\��*4�8q��� +L>�N�eX����XЀ��%(h�q�u$hՌ + �s�K@Фg�F���y<;}����j㔔�����;=��~!�6P�����8V���d�8���׷��'��7�VW����2>���si�H�g�\]~�v�MۀO����Omr&���o^�o�����������qyy|q�|���|X|��g�⇟?�� +�o��=,����ߍ��",�����;,���~���Ϟ����Q ���)ģ%"E�Pw4}}-Q_��^����R@H�(�����R�B��e�ej�pS����(0R +�J6a��c����L�~�,q�F�(�vK��$�0L�������k�I͎�},�u�5�������"�F'�/ި$���J^$��|tK;G��̱��!�'�5@G<}�'v +���g "�{���w��������y�Վ􃃑k*�AD� +d��r�01!b�ᢿP:߬X�"��h��u�b"�6��ʰ�B��e:�n�X�s4+D�ia�{d��~�-~UZZ��tp�/tq1�:�>ޑpr�ڱ9���u)xk�&a� ��x�d�GɊ�m����q�"5�Ŧ��6�Gu�I��FarZ۱�I�� �����eNq�GFN�:�*M�~����AVu���������'qH���:�` "NHFI�3��6O����͓#`o�.�RϦ�����ľ��� �t�"҆�G�����4���hm��{�Z�?�/��XCѶ�[Ţ� Gs�I +��J��)*��X��Z��#�e]N&S��9� q��X�S�"- c�Yu�S�]��qPq9���� ct��/Mױ*��_���W��PeW"y��v�A:���Pm��haO�0��P>PT�J�� ����pT1�U�)"c��' wҬ\XT�M/D���^S�?lCluȒ(4?.;Ɍ�c7�޹�y�2f?�cd���A�����{����r��L���O��D��� +W�E����Ĩk���K=�n�|y ��e3�v�A�Rd��tS цG�M) '�N���FXC�cǠ(�|N/�<�Mhgk�0�@�v��]�u(r/–�D�y��������8��[��g��3��-u�p2���q��շ����b�yB���te�0��k����i%:�ڥa�dޅMz���� Q�f��R�;q�12 [��n�z\cл�� :A��`{���%��t�Z�y-��V�l`��4��1�6T�fg�2rZ$蔚�����Y��yލ9D�gSbjҒI��� +�����9."��@ N�h��%͆$�'����jhg���d���&�1r�3����ʎO\@��-�ňk��~�I�~ҳ�@�&��|2�1v�w )�`<;��rZ0�6Lp��A'},A�������&�=R���A(<�k\���+C��n��ˤ %�B +�Tz}�#z�,�t��u8�T�����[o�0�^3�teb�ʈ�ح�T�a���鈻T�Iރ[G �p�2�[�*�A��E˦�t�&�KѾf��d�c6-d�M&Gϋ75���&���L7��LN +Aׇ���*��wuA�M�����0�5������fq֭����0ƪ�� Fm��kO��VT��W02-B��z���h����h�" +�����щ�VF1��2���L� +_�RQ@�r�T�Cf�Zj�HA�� +�3eP�R�B�ׯuE��� +.�Hl J�6�X�6<� +��>=�ɗ�{]c�z�ee=n���P��hVO��Z��N��D-&Ƣ|<{����5��!Z�����������a��������v�N*!w'x��.,�u��HE��!z��"%G�˾s-�&�ni��{`zB��>�b���dL>R:h�f�8ѣ���(9�XW�a+JO�r.ܑ�c�B*ߌD�c� +��چm�ۚm���`�9���P$]�KUٰ�)���B�˔a?������Q��ҳ9T���Į�x>ZD��qԻӣ����G�a�?����E�:��ڮY�QK( GA�� ���+/�bUvٸnRb�'��Ɉ,&�� L "�IJ>�U���ju���UӹD6��ttⶥ���6J��C��ώ�>�LC��CF�V����W[p� +�H�}�΃�d�#%�<� ��.5��̦W۵O�xЅ�nJ�ЮQ�ȴab�\��"" ʲ�L��j\2l�81���҃�aT�V�������A�|ʦ�i�zҝ��ܡ�l��$2G���JW��g.M���_(��L� Gu�"���]�4�%u$dc.N����>�p���U��+�h����!���Ȱ)�d x���H(d&�'��,������%��D���� �۞M��ȋ�=��� ��'�B�H�c����se�(��D +_�vq������O�U����V{`Vp*=�5n��w�Iuu^r�2Qc[��5p���~W�]��An� �� +�0Ο����*�D���*���Y�X���o�j�v��Ga�Af�4�F�n�Е��m��5⡵0Z b�"�~, �Y���d��>�$��Z�8k�(�Fw� �""J��8�m�<�t�p�g�i{�ѥL���{nz0Oʬx��v�)���N���l�t�u�o;�r҇U�(#�aW�0�^��$�[�B�U��4fm&w��!�S�y�p��p�o?(Y��?�S|.�v�i� N�*����Ǟ� ���Z!%�LD_�(Fya��@`SO�N�l���ѹ�]4���x4M]��� +Y��)&'ϪzW�A,�r�9MX2�6Y��c�1*�Q��������V�Ҏή�V��v�b<���P8R����a��:�ĪP�Xk!I��p {��݄��\���Y��R�I3;_>���:1E[)�����.1��?��㈓z�H���zV�:}R\�W,r>�h���V�a2����FJ�<: +�)D�^�p��>{��a�n�t{"D&&ᑀ�������,4������Mq&PB��=2z��,�l4vl������-�hҪ2�nD$�]��AHc"x��(c$QC ly�y�ǁ����y/�$��F5)To��T�����(�L�8E�t��0�H�d"\<�lt�*�g�V�c�- s���N�ȵq��$ 4��O[ӓF�{T�R�aM~tj��l�' ,�ݪ�UK��|�/hj �&D�%bUcvrEp�9�A� {��-h0PLt�za;���Q7�Z�J2E��EȦb�U�i�{���PU�����D�����=A�-Y_�K���|Ҩ2Z29b��Z�������:��(2Ӻr���G��$���渖��p2&�� +�E�it +�e � �(ژE�Rf�^���''� �6����5�0��:���NZ��LL&Tp���xwe +�R)�Z2�%��8�Hz�a]�"E�QH�-�҅��ڠa7KA� r�F3"P)Ѩ ��������Dd���,e��Dr�1�Hһu�ۉE�#�X�bcb做��t��JM� b�f�<��Q�r�⸠N�-� $�I]q9g�9�[�lj'b5 +�# �.�s�L=��U��"�2�lV��E?�Ҩܾ�{t�|���H�KY�� z#p�tٙ�ŋ݆�P���d�<rY�i���HB��r�<6b���p +���a��;V6%@�;5�Vߧ��j<_1�@��g5�K�B�e�9���d +hf��R͆h�l�L�5_=��pYY���,��'u$��VjvT]pL�At��#Λ|.�<�A[>�6���:���T� +�u ���R��\�@<����)�x��2�u��XH(&^.���U��=���>�¶u�_,��U3N ����D�Ҍ�3�UU��nUMb"ڠK�y��-DGy�%����RR��4ec(6�ir�=o}'�rxT�V�����Q�JU�ob�ԅ�{W�GQ�3M��0"�yugK��W�Wr*��vc-p�4j�\nIq��!�3sQ��)x��6z�0�zԕ/ltꓐu9��wI�+cB`�1�H7V3(��� ��fh,��Q���ġ�T9�KN ��p�7�q������-�S�mI �^X�|ﶟhߪ�9o)�+EXԫ t>���9Q�l��x>D������4˩t^��,���8&@5�8H�z�`ϵ�uC��L`p�|���O�)mªQ6"��mP�J�A��7��P����H�vPZ����87�fzI�.kx�#x] +�%�f._�D�!p�[�^e��7�-p�Z�B�4T� +��A����z&7qP��UAA69Y(!�� �ҭ€n"V��+ ��ca��mo!�� ���(�$��g� ����(�wy2eX &6^?�ݰzp�:�i~���¬��k�?� 0����_f�g�k�i�L��U����8$� �`�!Ap���h���ݿ��Y�,a�� +&{O�B$&4��uz�s������O�(��U�i��X�����I��V�A���A$�V0A�f!j,�Q�X�v ��B �i�m��! i"tܓf?5yS���)RS��.��A׬(�O�:TgSS���"`�ZPT�¦�#��0=��{͋�����4��K��酇��:G֥T9&� 7~���6�қg�Kn@�>��Y�D=t#�4s&w�8��kGFO�%h����Ov�-���P1���L�>z,�� ��q'��Ǒ-!$��z���8���><��-��?�C�%�qP�MTtłF�u����������1+>��TF +���<��Xh�h*�c\n�{Ӎ��^�`=Q�Hx�7M����WzsB�>$@�L�3X7���L�`g��� {RP�DW�.L���dx̝��i��jca��'l��z���6�@�F�4���8�] n���I����䙨K�~f���,�')xVْ@���,騨��Y���n�1V3:�=�v��Vc���d��Ѣ�5/"w55>P�ʿ�B�i`21��jFH\7�'��ٿ%"�D�.�o�u z��{:�`��>%����G���m%��MLrC��g1��I죂ITZ{����G��_��Y�Z$g��BeF��=����X�!�f.&���:˵�4o&�V#��dr���b�>zP$��@�րlS��fZJ�QP��X�!d�I�J���䒢D�c;]��&)K�K�)Ll�U�p��//ϩ)�Ut;�� �Y{l�D �$�DX*~a"��X�=*r��ѭp@��lN��bT�I��Y������熍р0�lI��-e[BꧧjI8�K'���C� ϢdO��d2�5#M�&�������B�ɖ���#�BM �)T��Μɴ�<�pI&Fo�@��E���V,�F-mW\z�MDT�����Qe����V]%���q1D-PQ�� �\*�0�Q���o^��?�=������X���>Ɖ��XB2���t��l�RT0դԘ&l!aL��"p)=1M\�^Be��9 D�E5�^���Z�^"�m��$1wb���K/�׆4IQSH�b~�X +4�c��e_����n�6�L�S _��)ZA\��'�ͦO�h5�R"cҨ!%4g�!Q���z�q䁵6���E��᪶^u������zvP�$�T�lTqPb�R0��˜���ap5)�NT�T��6�*�s^�UAD/TWi8Y�1�9��������r���J u�m �+�[ϔ�q7O�A�la���hHQ�w�K���?����U�$b0�b)�D�S�Yp};Qt�[E�+pХ�l��I*i�iƭ�TU��ުt7��;ӫ +g�31��QQ�R��'ڻ^Ǚ"�e$�%EO�3d4�e�aFĐM���=��s ��k�5���H���匡ӫS=Jc���Y�̓�}��S����pмeMf��e����\{���݊P"�lh)\DD�о��� �[�A�g![��!�6Ӥ�V�bB�Hc�� ʣ��Ϩ�E1 ��fg�S��u�S�^"�1R����EΟY����J�M B̆�fC(�F3@z�>��E���}� �� +�)�n���H�M&4 ����:nR��ٍ���έe΄h�}���؂�P͹Gt3_i� +1ED���҃�_O8�E�b��,��z�$�q +9՝[ _�Cb� �TYC���4�a"O����d&G�hN�5q5s��)�v�#�l +�� �>9M�t'��BS����jq��JI����A�S~�51n䀀�"3�0dM�P�M��<��BY����G�!Án��F�y>![� +B4�a�Е�!Ղ�T̠��h3��E����Pʶ���q,�!p�e +�e`nh�s1���A���8R: +�I ++8��м(j�׬��ѐ�y���ɩ����4I��w��/٢�a/ �(F�&�8F�f:�US>l�M�DdX�;:Kw�i҂�-@��׫��X�I��jc2(���� e�tS�����6C�U~�/�R$'EM��2���I����<� ?e�yRپM\5k*VS(Jo�YT>ґ�f��jO"-�v!��墉�D�r;%B�ͱ��LB�*�?�1���Ʀ��7�0%Z�Mx̓�a +N�y�Ze ѝ,��Y�&]�E�$��]N��J�@LGt�;\��c��Njͭ9q����k���NL~�� y��� �)E��yV_��4�DC�6d��.IGY���� +��^K��.�ۤ�`���2k�&N�9�G����I�c���E6=�O���.-��8;=�Y-b�ɣ1��eS�0�i�'}_�t��11[�6{��S[ +b&���n�W19j����$&���2UN������G�7�Q��c�x[��,�"� gg8ߨ)��6z���L�~5e�0NU�w����`Q��C���CK��Z t�zrH���|Q�Y��4��Ogg�`�`H��`G�*H�����US/]E-�X$:Jh�H��n� �k�������*�v}� q�aIK�wx�|�Yb 6���)��6 +1wVI�-Q*T4Z�*?�L�D��b~X�j�=�*{F��4 x���\����@�4d�j� D�Tf���=�ƒ�b��]��'�Ey�,�-v*ra٨��� jZ ��F�ٽRT��mA�$���� ɹ� +4��|�8����*uB�( +x�)�DϚMՄr�_Rಘa��ֈn�ŸX�á��)�"�Y�n���:��>�fH��8w�����J�L�2BH�&�.��i2��,�Z�1j��h3Ym�I�6��6�$�&Q(����`-xK*��K�G�^�O��q:��I� +]����8���s�0i! + +��Ll ��7�������(��� )`H�U�f�Y6�`ѷ�q�L��!J��-� �pOJ��#2�r�?.�Ir����#a��i�MQK�2l7��p��Z�K�ì���/�Bu�P�05[�{/ +� +����y��2Qi-�%V�%�X��:W{�8�˓�Z�bՔ����oƦ��If��P����#X�h�~��uľ:D�#8�Xs�v߅BYx���M��A}H�y9�f�f��)b����J�#�Jֈ����Og��?P��d�����D�K������dz �;�P�$f���2n���ĽQdPР�fL`GJ� �~ƙ&Ekp&�1��t;X@r�������w���A�(�V7�Ix�E� z"I�ڭ�<0�)ԚE�����,�y� �;�9PK,��`=�~ Y�Ng�-F�|D +\��aT#�D:r�)R�����;7�⺎���F��9� � K/�� ��I�j�j�S$ +h�Z1�r[��2DM��PY�[΀�(t����wo���^X���������'ݼ�D�5;��x�Y�*��թ�����,�f@�bß��1Ԥ�J6H�[@$���(��Ҭ�G,��p +�i�8�W�����bTp����� +3Q����M�}-x�~�%�9����Pz0�7 +��r �Q~K:� �R��(�6"����l�7h�B��W*��$1X"E.Z�xLDooZ�`�ԓȃ���eRL��V��{�$Z*�K���x��6*��h�2) �w$T�J�U+�k�<�6��@P��0� +H�$��ZZ�jߦ��)4�l�T��&dm�|�b�Ka8D�P Nrw�jjK��\z{T��ɋH�QǬ�������e��/��1��h�������T#C����|pa�P(>ff ;?,v��.N�� +[=ʖ��'�D�\�Ī���7�B��Uc�`��.�8�,��=�� ϭ|`lO8�Cɉ9��Fk`��1L�K�M15� �AuG�q@��k)\ZF�r���b{�l�a=}�w4�2�>j8��i~�[�мk�S�y���vģ�*S6 �h��AV�h�<�ݐ@}j4h��,b��:״TD�C[4����q���# ++��-��U +��U.�.�(�����ِK5+4�&-`Ɋ��ј�=�����3�>�i|��t�����݊X��Z�&�'iMM�y��l�~b�Q����!���T&?�?)^�"^/5�D�����ANƷԸ�OW-z�L &eN�nM�L KT�s| �裿up��'9�ț�Pzu�IEݑ�k�L|i����֑t%�6ޅ�k��W�R��b0ӤZ}��.-dM�Qs���l��(@#']}P/%&GF7�j�̡�U1$��8K)2�z5?g!W�8-RQ��SW �34�\{�Q��3��Z�ni�!*���9GJV?���bLT���8GLT;�8 +3��I;�8V��k�t������s���}���쏗ϟ^�y���㛛��K�>=���rN��?./�/N�/@^}����HS����?{��n1���~����7�ϋ������x�^��6�B�e��E� +X\7���`��N���m��.��k�iJ�H���BF �l����)��92���Bx%�.8� +R�n-�C|v,��2=���i��M6�����ۼѭGq��q��Z��@�=3fO#���@����g���J�rZ�)Y��8��5���/�˄�R�a�;��3�S�\ʳn�!���ͱ1it��T��f%}���� �hR�]Gm��4����_�,a��\�=XC��s�VO��9�y��|���9����g��/Y���閏�)+�D �����9�v:ΪH���F��}g�7���� ���n���d + ���a��Ox�;3�I�t$����`qB?Z�c��l�����9Z�:z����9!&�)�(�aB?Z���$�_�t;i>SkG��+2Ba �+���94R��ܗ�ℸ������ ;^�K;�,<-���ޟ�9�}H��[��:�9�mD�������d�; ?�W]C2F;�ϻq\�}�i��pޛ�${"r�k�-�iI7N�T�J�%�J�߽�>��;�][��a��,l*\n�Ӧ�>� �V:)�yun�ϧ�i^�,�Ʒm+����c�mnn�K�+o�o0g�Ƚm#�~�⭝o9D'�#sy7ƕ��F�v�$,1<����d�n��:︍ͬ�Hs63�耏2�Y�Tf�I^��}��ɹ��)+�B�Η������4��a���g����볓������_�N��Z��������>��i���O�:9ys����1=������/�?v��\��z�lG�W�qc糇i +79���o�r�mt�E�>����������'O��[p���?����������:;oM}���g�~���7W�O��>�_.�/� ��_��oN1�߿�km���<;iZ�8ݽx���~��n~��f&_�������}���X����ܜ�����>^~�������S^7���_.o�߹����$���w��ӳ�^���ش_˃���OOn�^��|����ꗍG�[�={�z��;����˳��_�<~�6���/֟��18���آ���r��N�c�~��b?���������\��������=0� +���k�m?Ϸ��7؏ǯO�t}��޴����Խ�^^}svsrǥ:�k<������޳�-�o<��7;�9��.qڷ�ұ�x�ק�ߜ����ڐ +�������� ������볛��?�.7^��W���7W��?�B��-����\�������˳��E�;&�HL��x��.�`;gT�78_�|�_��X|�WN���^9���r���n�h��~����q�Ͽ�:{�X����O{�tw�V�ts���N��� +�k�W{�t��~Z�ix���6C{h�i�Ԟ��������ϯ~~L��'��il[ +�S���|�����˧�o�3�[�Gw'o.ۿ�y����$dh��6���(�s#���{��{����=��{��r�翼��z��W��5w�V'�0�+��o�=��7�����ɛ���#�;ۣ�]l��������O��wВ:����<� {rru~u��?��Ӑ2����s�> ��m�����S<,�2W�7ߌ��._�_��W{�2�a����WW���<�����}{uvystCȲ���g�U��ݛ��Y�ɻ�����:�D�fL;(�on���m�� `{/�զ^�m��"��ώ��n��.h��>����?�0�|��>-�-Ft���QF��E��縃#�iD;������_�ݼ�8��"X�!^ȏ;,b{qcw��+�����㳻T���|�;����?}@��}zCϿ �&�>ﻷi��2m}�?�E�����>��`8�'��txuu�����6���~��6����7у6/o{�_]�zyu~��=�q��6'�>~~�fϻ�ky=?;?�›�pU�������^yϑ��ٱQ���[JϞ'�y����p�G��xϑ�9�f��k?y��͏�3l��zp�a���.�=����Zv��| �b�B���w��`ߊ߱y��C���q }��r�m�mv�}}�����������_�_�����)�����G�����<=�@�7߀��m>���!}��������������';ie[���h�����]���m��%�����==����ؠ���i1�a�X���~�x��q%g�׻�ևr�on�|p��;6�]T�3N�6+�@����hs Ƀ���s�������ŝn� +��[� �8;?߽i�^-��S�I6����g7g��A��ly��W�[ ��&��;>� qҷ�A��]�o�Hqr|~�׫��|�A��-q��g��ڿo0�]�R��7����ؽ�q��G�P��Q���>hX��56�a�A�H�PwoXҭ���|���kR����n�Oܱ����j��E}��J��\*�ȥ��:�r�x#���W���K�Xk��f>v�/��C���[|��K'�7vi����������,��b����yz0�K'�7vi���0���.�c�~��m����vG�ҧ�� +k}(���]�bh;|��|ϱK۬�9O�F����]�bh{���x����l�<�(t�8�������( qv5��o���Wy�5���mi�ڙ-���3����=�خ�=�2;�Pw�-�=[��lq��ݳ�=[ܳŏ��x�~� �{a�^\�vϞ)��cd�{Qq/*��)�"��ԑ�l�8��Y��߳���}`>��I����I��'m��ݟ��u�Ⰸ�^�g�����Iז%�O�0�g���{~��-3xwe����t}zqu���S:�|~��m�͇w}������]:�tmy�{��>P�ׯ:j�a>D� +��ǃ��`i���n�[���}釅��â���������ǔ��a�����>�*��V���g߹p"�V�ۧ�l�B�.^]��S�و�� �_k�����c_������R���ۛ;X��⌏��lns��n���Bԧ�f��a��(#rk���GtGt�G��N#�A���5����������\�!^�����r�V!�� +z����Pbw�n~Ĺ���?;|�w�'�7����7�7��o�S�+�{�����&����ݛ� ���{����]֧�͇�L�|?|������=�{�ރ����f,��/޼>=:���M{�=p�m����fE�Y疷⯧��W?o<�s��''�n�{c]�ߊ���|����� �;�\V:�"�l~Q��~�t�ݿ�޽/��{p�/k�h/�m�������ro�ܛ+���Gn��F8|<6�}����r�l���}������M8>��ݕg?]}�����ӛ/�O�yu}|yW0�ޘ��hd�D�1.mnv>=o��oҵZ6����]����X�G�&�c|7�f���W�'M��~�&��}>[���` +0�e�?�l�%o���S�cw���=|��(���WM5�����MQ{S���7E�MQ{S���S��TMQbxbS�إ`�ڛ�����)�71E�ފ�������3K�{{~�} 2�( |z��Ԕ�S��xF�d���&xf�5z �3[�h�' <���[�ꃹ���n�=>�˷����w� n�;y�c#�t��y�C���g�����+y���VB�~����U��=��%�O����ϯ~��9[fA{܍�e��Q���{�c�i�ۋ�O߇~�����`�%���}�ň~�����'�0�+�`�-�O�o����b����&��s�{��=-ף������^�0�n�-����] ��n-_}n�bh/O�q�!Ǧ�Z��?i���L� +ꉋ�������[ +i՝_�ƛ������f����<:��#��+go��3���fS�7��7�w�>i�ͧj�9�& pM������ߜ�^�����zq}|rs|������<�]�M��l�'�"�j�}�9`ҏǯO�t}��޴����R��Gzy�������虍�����.B�:�<�-0�.�\������}[9��[s�Vsߡ=���=L�;�;{���G��)��C��aʶ�� +J�6r�뫋� �jy\�|��c� +��S��ڽ�Q�6��>�Ul���r<������� ���%��o��6Cۇ ��p��t���; v�_0�6ߧ;h�]c��b@;`���߫G�f���?g8�ޏ[��p��ǩ=T�����ة���vz��v��>��{�t������Ƕ�Oo�O7�^���^?}|�飏86�L�+��3ط*��/�^A�+�+t��^�Խ��))���*�� m����p�RP�����O��[�-;��>q�N?�jH����AWQn�=u�=����3�3�~3%m��� ���?n�5C������t���a�v��\�_]�����'��r���W�'g7���6V��7����_���31�G{��������Z����l��ͽ�v�OU���p�������J�jWF��t����WW���<��ý����~ m/�팀���\m�5��}�Pd�G\�)Hb;�Qx��d�+��wD@|��>�_N���~���m�Fw��}���4�d|�\�����n^^�nS�!^̏;�|k�������n�=>�K7����;����[����[H�N�bD;��>�;yk��P���Yvps��q%�k�>���{��=-�cbЏ���[���1��g�޽ѭ2�ݷ���}�I7�`{�l:�W�=n��3�}�`4�@�����d��ǎw��|�⽀�?��f�6I:��� A�B��<��=l�����H�Z��{g0 �gG�������}���>|�><ȋa�߉��N|�߉oۉn���f���η�}�%*>9���O���c�%�ߌ��Cd�l���W���B}�X�{��fp�zE��M�������g�|n��@�Dz����m��D�OO:�����Ͼy������^�xuN��777W�_|>,����a��ϟ���������D��G#�~��~����7�� 7,�����;,��~���ؾ���0 q�Ĺ�����>�����q8��=��I=�C��ɋCz�/2?���@��57�Z�^k���v���==����o�����?�+Գ�@��/h|mRF�޿��� �����H�a�_�]��3u��ah��v���YF�s���}^��OZc<���'�|�3�*=�_�!�7(�i>����������|�����Ӷ9�X�'�v���ù�Ӷ�O��@K�[�RY�}��6�����b�d\��o���d�6�nԦ�mb�>m[��V�cm����N��|6��'��8]��J� ?�)�-��.� +r8�*�~��u���V��� �@�e�n��On����hO�4_��V+��q���P/���\����|� +�g�B���O�{���ӫ������m7����/I +���r���^Fӧ~yuu}�weݿ{��OYL��;=>��[�������#6>�������Wi$�~�Ƽ_�\��2�]�h_�����9�1�ϯc������l.1�7����M:�ӣ?Ҏo�z��9���8���[mD���#�3��?�ַ�#����ws�j3��脶��k�v�/��Rw�l�[�^�ַ�����75O��k�k�V(��q:���������u���,��t�����d_���v��O� �v��]��}��7��>����u:޲Q����@g�3�b����>{��wk�kn���.������ y?���bp�f�at�q�&%_3�iLC.�~���4�Nܚ��:֮����G��o�y��]�ߟ_��\�n��+a�ns����޵U�^DR��A��'!6 c���������'�7�L�4��F�dG:B� m��T��Ƕ%��m�1:܏�),G���7��4�ZH�l�c&B +��,����� +>�h)�Jw x75Srr�r� 4z�ZGSn�?䃟�vh5j����A�K�I9h�+40[ӥ�?���/�*h=t���>L[����ۅ��<2���Nn� ���5b�������I��n��*�2 +cm�i{!�M����L��i�m�/@+�u�h������@��$�گ��k�f��|�����lj]�6B{���r��O +��e;(NZ"epl+5���V��-I�B5e�2�xjn[䐏ސG,[�>|�b��Vj��s�q*ֻ�A��%�R !�j��B* �Ӄo� vz�cm���6�b�i�mhS��_]��k�!����&��T�@����{�+Gҷ#B�?�9�!Mh����?�����'+���h4�����zW����pt�C�GI�LH�*�;DxU� �Mmש.a"*��{[�J�����m��2��|�i���V��,�$���r�>��0 +��wtj#M1�s�92`��l�C���ҽ�Z�tO���K��5D�f&4��sKmg�D��S1�,?���c�q����A�S���kֈeD����Y ]mv'�d�5��2�J]^��5�-� ^[^�s�6��U9�5p�v���S�4 ���tqc+��2�ˋ#][ZF�Z[���Fm�r��&���F;Y;ih�l��K�ݤ9�_o����6<�I�a���a��N�����Ľv%_�Z�c�i���JS#��[�v����`�d���DO��h"R[2����x o��(�՘�@�?��a�iO�`F�k����J�T�t�x��OcC�]�G�d�VL����xIQ$~��K��Cw/nl7t�!Ĩ�O�%��{>эL��u��*��6~XvenV&�.[�k�omqr`����7R��0TW��̧��F}�ۓ:ۏN� +�j,�~��R#I�ش��R��6��YOPCj\����&���ܽ]eP�b�Є>�-��'����NJ<�T�� +Ż� R�&���NAu#�Ǝz�1�[���œ�W�!-�כ����cI��l/h�� +��ﲶaB�/���6�X"��< X�[ؾ�: ƶ,�+w���G U���h�8�j�T՘E��*�("V�/d (t_���o܍ĪI}PC��x���9����m,��n�&�d�Cs۴m��Ձ�x��&7�F`V)�?��m��%p��5��v�~��I�l����y'��_�..�� 6~[�J���Z�ݤ��`E�#6�c2�G�$S+lu�o{6�#Istl��t�׼ڦ���=����{~�馟u�]HM�5�-O�a63�� 2,N(p������ǯNpBO�Q�d�X���m Pﱅ�{k6]t+ۈ��iMw��N|�!�j�����`�!�&Fݶ��@XRn����M&܅�#:�� Lw\^i�o��Ce�D�����j����������ng�z�,'���6�2�H��N���'�cj�,��0d.j�y�m>���IS�|e@!�h,c���x{�|mQeѨ 5�Ԉ��n�t�ҍ4Hǚ: M̍h���c���o"��o���`G�6C.0g.��3�,˥1��Cm]h����S\q�|Ӷ[���Ez���@7 +�䬀''�ш[�G]`����J�n:� ��{���x�VWI�R%UI�n6P�$�Y��ק�$��l�h��l(�D�$L �C͘-�$=�2���E����a +Z0H��rR�$ X��`���H�­��qD)��Ԉ� +���� +�8��d}S�ߣM�EKBy�# �ԀH +Cې���@��6f"���h��e�Ov ��` iBp�'4�h'�@V��)d��|� +䇱 +��4 V9d[$ Q(0��#�RE�8 +���H +����*������H)F�y��� �e1"�d( !9k�3�:Q!x +P���̗� +��'\��Dʇ�`�4�L�C�GB����|Čp�A���{ �Ϭ�o�h��]�H�w)z��p���A��7���?���U�Bc\��g1g���i� �������� ŧ(�J�P����%}��;k`�` jE�ZNf�Hh�@QJÆp��%�)PV�Q�� +0�W��&�3�ќP��A�W�H��1�@.���/���b���sƣ��vԶ�d��B��|&e�V�1 +��0� j��A?�X&і��4��7އl��uH�F=��H +P��j����7"1��!B�H�Q �LAb#���O�_�{IӐj�tp]��*�7�U��e���K P= C���A)�� �p�V�y��2߸/����5k�A#}��B� ����H���x�rv[N•X��< �o< q_e�q_dX1�`x�A�x���|���g�PPB�@v�M�r�yV_��Z�g48>C{����Uo2�j��h��zh`��{��l���M[`|Ұ9x + +�����K���c����g`�7j�� �-j+@ᩨuz�� +ֽ��cȍ��юm��0 ���W���f�854��&��ќ-��/Kn0Ebb�w�o83\��g ��@��C��'0Y�J� .F��ʬV�W� �_h��}�Gx@�r` +��@���l��C�A�g�0���_�g��������?��/�-:D.8�gෞ,�5�w�����g�\�g���d�P2 +�Ϡ�O�B���'������.ӆ}XS�OB�f��=���Kd�@5�)��dh����09���b�q�T@�ʫ�?W�*�b�?}�`xL����N�}i6��T�0�S��le`�0?3�U>�����g�P�� ��7�_$���̼7��|d�N���@؋��i���;�,�b� ^q�� *���x f4o� (aY�vlk����,c�^\�g�p������E���W�L���p�6�~�g�T���p��]��+�b 4�Cnn�B ��h:�v�YJ�W���o��AA�_�1�rr~�����Um��Q�敟�K ���$^���u��l��3����#���)��h�1� T���k48��0�ZA9��lB�W��-%�+��/XrB��$���Ĕ4z�?)�`���b�b�b�Wb�ͪ���_���n�14������wJ*VF\�b�򗊎����]��e&�tuU&h���6�L�rN�K�\'Eq܏�� +s�4�=�nl���n.:Je�� +�4���� V;��l'n3]����/V�B�K`� q�(��M��b! �����~%�S�,�~�8����� ��K�# Nq�6h +S���צ�rj4^�F��h���jַ��8�% �������������Cl�0�� +�({f����� �~o&�����B���r�Kʼn����à� +Ӎ�dG'4�6�T ���� +��A@,���9[n��e�K�;��p��P�N=1αD���hh>� +6�w����p1è�����.LU�t +�� )'~p���@�J��)<�}|�S +�V��bY>A�j�S��hxB�Q0}6!* �8�Լ3Z@���A4�����i~7�N-8"�!n06H�B���^H��ǷI�B�WT��W �ڧ�I�\{�B�BS���0v�����d�:�N��* �`y4L��`i�� +~��e������0)~#�9�1xFD>F� ��?�oSL�����S,бX!dM��$S ��680�n dP+#�2I ���I4�Tv!�8�~�%O����c!L�N�d��1�ԡ`� +P,�Ç̰1X >� a/q��Ą0B����1�i�� ̠�D�̸���$N� �``7�t�@����$�+�,� A�o���aO�HFё�����t��1��$bXh��4��9DM �V�&y �|t��5c���H0�"�18��$Ń����`�w�^B"��&�c��& 2����h?��(2��`��/ Fb�I�R�]0��B������B��$��� �F�CP<�����٘��$��A��5C��`���!Y���i� ���H�i�8.���a��D}�hX4�0&�t����8u�9X��4/�B4Z���ٓ(a�s� �, +g�.�}#~���� (�$ؼ~?\|���;8 � ��������II"�!Dj ��T!���$�!�O�������h�~�{H�����#�K��"�rk�d�rk- (Xp �/��e +ή���J���y� +����.< �Z(@=$��J ƌ���HVqr0����� m��/7 ��NM`�7p �m �$Da��/�>x�,���C��̞<�0{b�&���x�I���$^��!L��it�"< +��-^�0B`CɎ"B�i!p^UA�>a��?��� � ʞ�5]�s� Հ8��� �2'8�8�PA ���?�$~*P��`Z MIf*����,A �BH����H���*;8�A\:�LϏ#�`2�P�� �$��!��� +��UM$�hFQ�.�K1F�C�$��%�H' J@ x�*�}^Βx�� 2� ���`�! MK +?#��pX�ǁ��RǑ� +Ex����?�YZɂS�K��zp\�V�L��c&f�9��-jgb���h4��Ƈ�����4 *�e�>�ɑ��� � ��5�,ST�8.F��n6a��ᱰ��U.M���f���톰>Jz��#ww��eFQO6��T���R?��h�Z7�LO��j;�i��8u悗p?t/��<)�d���iT��5�-<�;Ҙ���:��x�g��|��dZ/��rt� +�����Go7�����a��~��٭�����(���~�S/-��� �eo�:���Ki=�������<@ p2��oI~ae�}�^)u]4��z0 +����:��a�����z/�I�_>����"���\�?��|u��ʁ��z��_)�������/^)��?o�8���s9��Y0�OI[4"�~�L�^��)n�E��� +ӿ)3�}�!)��@kt��l2�+=�k��uNf|?:fYs|���Mޫ�������o:������_�1c\��o9��n������4I'���"J�"�N0`F7�Jo59�&#C}�9n�&���e�� +�H��3n�h���������!��tH&:T4$������F�ٟ#)T4*nĆ� +8Y���0٭O�Qh;ۯ���Їi�\���uȰ�mF;�~�<.Pa�î��oz`��hgC���M\аDž������*62�w����v�2�t6ޝ|Q* �Mqa4� +��٘�N�A�Ԕ��to�Go��S0���h?��12���!;�z��bv����:ΎKCc���f5��܂�-��L+0��� ���sp4��~z�K�<�+$&z�v��7#���~ ���G)mUX�N�W��@*�N� �����G���o�[��;�f��m����<7@nT>l�8�b  +�*-S<� +� +*7� W�ƸD�% ����|w5� +��i�����U����at>g�)SH{ ���Ak��hQ��b]튙�h;@�me=�-���h�PD-��d��ہW�}=���2`9�ć|c�����xE�,�쏆��z<[���A ��/��`z�T(�0��$��v[�V#�յp�/�� �2��؃2TF�2�P�SN��~/��2t�\����v�X��Gkt�z��z�����o� +�DQ= +{����m��Z�Ĝ�}��.�Β|`CÃ����ڀ`ӓ�3�+��%d�����G^e[���p:錿�E�læê2B<�3#ۈK��$����!=A�l���H���b�o��4�Μi��l!�TQ%��Eo��lC� 7B� +i�l:WB��Q{F� ����*8��J��x���*��A��ǵ +v�Vh�̀���n'8�A/���{��ڔ��M]$j}�K��P鰣=�њ�žȭ����.4$"�h��W������UJ��� W�kҟA;V��j4� �!Z +�"� +�^Zi@[���(/�@������`����W���“4����6^q uO��n'��CیrM'gM�*Sȗ�7�!����t1S�&� ����B��f�&qP�����ãzAE8��5��!�u��l|\ +�x�iĆ/N|��?�K���G!念f��`)����ަ��2��k�< +��K���0�Ah�~K` +-F9#4���l��|��3X�[-" h�FWK�۪��z�R�>{�{G� #9>�W��k���v���� +�v���V�;N��d��0oU`�(�c�BI go�q1񠋑1����#rqF��j���,9 +� ��jn��z�G��� +7�I�8���Po�æ�~or�f�r����*�T\��h���:���#΄��s1#j�;���s��H�;�v�d��[S�2 +������ +j�.�Ř{�?���a��NXoeN,"�����–ɝr����= ����{}4l�b5�W ����7�'d�D������ +t�pXC��a��=â�o�3��l����?��{�Uy�<� +P�z���g{�q5�g�y��.ą��`7��S �h��V����rmQ/Z;0p��Ә���XW�Bk7[��oԅ����NR ��zd��#�' +�+��`=}r��G(d0�J��Jg|���$���GE��QJꗑ��!b�~R�d��R�[�k��Ԃ 'Lp��&��q�_�f =| D +endstream +endobj +34 0 obj +<>stream +��$�,���%H��̚���0�Mּ�^�SGP戊K&T:�t$�,����GuW;�G���$T�u�O� �Bs��h��w�֖�fu�Z��ő,�*x~��-�.��r����fc����륶��4��j4�t�]6?����y�p��X��gǠS�rI���n��*��Nj^�WX�nD���CR��3��V�Pgx/�%����������4Tq&l6���2M�q�љ��W8dQz_>�(�|�R�9���^Ζ��ݓ +3=�����ӳ�Vu�1�ӽ +�q?�%����� 2>�mj�D.�^�j:+�x|� +�'o�-N�)���2����lMK��Ǩ +\��_R�~`��%�fX3�YFBL��R3��N6��b0�AfGO�5�+��Ez��i�yR�]~9 +OV�R���ҳ�wo�� Y�N<��U�C��a�&v�����=���1l���Lܘ%�z���{�O�˄�ID*�תtHM +O�D�?j�g�� ���&g�*�@Hgr�a�-��|��owr����SW�2s��%����4�1V��B�С1�~z�H��޶2Va��g":�}&�{�ҕq�s��p � z��gƟ/tj�X��ǩ�!=��pE���^�&����>ݝt���u�)�Ɣ'�cI6=�Ӊ���Є~�Avx�����H4yOZ]�G��+��=�ң�3�.�����7��f��2eP㘯G�f���[��6���qLV��-�#)MI����?����tŪ����hڷ��ݠ���a�r�)�ۀr�mD���0'I�ђ������J~�c�<�F��N���7�)�~MA��Fo��T�B<��1�uC��b�%���d���& �DQc�5М:���y@ �P #q�~��F5�ݩ�>��D=h�H�1�n��B�� h<CJ%��R��� ^�Csz�� +�@xj���� !W��ӉMD���d� �gKf~1����0/Az���@����q�_��L'�kO �i����*���TJ���q�4.�_d�@�>�W�.ZAEb��a�]%K�D�K4�HY�b��O�֖`E�����2���y�E�!1�2K&r�b�$FVE8)��^Nnu�ATG�D�9N���hp�5z32�rZK��D�lPA�QC��)�A݇��6�3�j�W��m�~���Pr�礒��v�9�� �Z��<`�d���$=�~%������6��8ԕ��-�zA�����jf�q<06a��������̉��JO���L��M ���%�L-����и]$��� ��Gl��|��ҧ>��8��Mv�n�R���\K<՟dF�l�7��U:�xڰ��G�&��_�Z��c�l;���y־j�# ; +(`�ޮq^tx.Ȁ��y��p���Q=pp�c-�sރ .��;��s�lz-���˓������m��*|d�)�08���Ļ3�t�y@�2�� ��� +��8U�f�?t��t< ��)H� +t{Qi%k�e��`�2<��D��`H�(�i�S j�|��wλ:�e���XgOQ��O�C~c�B���Q ����Dm���'��� �>���C�H<C�;�r���~���67���0�����^0`/��y����Z(a�7tSs"f��x � NUI�IS�\4��=A�s�O�9�]��$�C� �_n��=H*��S=�Gg��v�عO>=6��%����,��V���u���.���h'A�-O �[�hN��K�v�g���0D���7t��8�. +��6�B�La��yo��{7��=�-��;K2�Zؙ֝J������� �p�U#��r�p�d"��/O.kx�j΀6 � v��PG��)��,���1g��V���eLPI+R�(f���I>N���=��x��qz��Q(��yo`��6-�# ��dʜ[�$0j� �$���#�9:�C�����\�ʏ��prs,h7w�ˤ fF9y�Ƹ� 0Ѷ�X <���XR������� +�" +���9����޿��O��m�k?����� �,���"�A�l��6[6H~�#�U� 4���)��LS:JfG�n��,��=cGv��>�~{� �— c��Is"��l����T���M>9�d�傎G�>�I���p'4`�e��'�@� ��Ѧ\��-����2[;�1 Yj��3%�ÎL^ + �br?�2EƖ�T����>�rRc�����Jum��pB]�<1R�J�:��zD�lF�����0N*�u�?�qxf{�[ϝ�e:���D�.�&�~�Pk�vҏ�HM�$2�:�(�~�DfY�� +b2�'���g~yp�`����9�%���1o��|�1�~�0���3��z�3�� +�F�~��"���y���Z��Xn[�f�o ��53���:=3Y�����*^\�1��{��`��}x�Ζ��Fh��}��;O�%t"I3�з/�6:X%$ +��l-` t;����D��ɊB_?��n=��Q�����l+I�Ȟ�ʌ��PI3R��o��K'?'�tb�(Xbx1�͓�M�ΟD�U�墙��;@.�M���h�nv_(�)��|N4_���S�ce�?1�h~Q]��t����-�9� �fvC�O�G~����u�S�c��z�ǟ��rZ�)�J�[7�u�M"7��P4��o:�~s���)Ԏ�Bw�ϸ��l�a��٦��x��i�L@��ߐ��@��� +��eƭ���R������}�XN���Cf��ye�6���7�^s���/#ο� +÷�镳���0"0�f����;B����'����8|�����Q� ����O�D���v�`,��5� �{$� +Lj��_'�d0�?��tO�^����r��K0�C�:�]"�I��H,:��`3h$~ߞz`����8�I�ڙ� �8�1#΁Q�-jc���%&�ٛ��P��)�#J@/� +x�FJ��l�`n&Ε +����h�J=^4) �������j?���C����M�3%�Od7S.GM�}g�k�N����D��X��� #���os��Ǜdcx���kb�x5e�%p�9����\@��n}�C�i:��(S�}��Q�3 �$�6� +X�<ɪ����+����Q��b ڔA��'�i�9\G����t=|D4<Za�笧��}{]��9������?�?�S��aCΓg�n��d'C�Q132�y^��?ۓ��d�s"�]b��� oC� +���аsD�ӑ�r�K��L�x�扟 +��E愔�~:k��X�q#�"z�l�V�9� +��N9� ���uG�V��NR�>7A��6Vj��� p�uҁ� D}z2]1z��^�?���e�s��z��N����td�Sϵ�V�Tr��s�Cd�P�@��p��U�Ʌvi� �՜ +p��-��')� �����$[���ږ{1�Aہ���OP�p�&��c��Y�,`� ���T�A>����'S\�_$fF<}�s�r*���^ H ��S'1�>j �oe���~��Da�"�\0�-��/ȓ&��8>�����Ճ����pQ|dJ�1�w��Սk�~}�ьr����% ����>�q~*l�ԕ�}��UW�>����>;��g��zξ[B��I��`L��M�������ߝ��Ĺut͗(�lJ ��V#�!IL��� ������gm��fC]�|F�1{ �K�/c''3�Z!���.�j��� +y4w/���/4�Z���k��4g�W6��������N��h��LP�*�ڟ��#��=q����_�7�9Y��O��)�O%Fy�G�)lH�?���fC_�߃b ~���)2y�_kL��� ���d��܀vM�?c���_[P�ۼI7�ℭL������܏��,X�-���V�g>xp�4����3���~Ƿv����)b�ߡ��hB�oT`�7��3�'Xq�)XN� ��Ǥ��<8ɔ�SO��{ �RN�����[��0�>S>�]D5DOh��p%��)�)�U"cyc�m��矀aw �*�&T��y#�FO�7]�]ܜ����D�)|�S蜿1? +�Zv�:f��� �_���Pm�.�}>���p�j_�I��w�FL�zj>ɏG/�Ou���������~�#�w��2�y,k]�:��;5݉mg�p�� +B�`h�o�����/�(�<�)��0X�q�+[�=R��8��O߼T6���RiU +s&�na�B�Bg�ƹr�}��O/��gI�@2j@n���&6��|��R���;���>�L-�}� +}…bz*ܕ5�@J���8��w���g���IU�q�IJ3�'b�?�f�1�}���4,���?`�]�h|(`OM�9��&���ukt�CN����&���o@$��؟ԋg�6�$y ��F��3l4�3�F ���i����Z�[���w�#�\����z2���v�m�|d�޾�a�Mf1#��?�==2���H�)c�-)��k��1����P�_0���]cd0��d�Y_hc<^�ڱ�1��]�Tؙ1���_Ƭug1��ۄ�p��0k���9&���������0֭T���OΌ�b�o|�^�������vg�o_1�?^�ic�i�a�n��~��4_7�x�����8�b�2���5o޸�l�7Q0���ɼIUM֔�j�O_�M��f���MX�1�xu И?�)�h��"�Շ)n�EM�]gkJOMS�[����Ņ��Q��jê��X<�Lχv�������d�j�L�%@=� ��X�7��M=X�h�g�lj�,f��ajv��/fO�*�q�4���\����wdlN4~�̙�R�\hb9s�e3�?����O�c�6�ghc2�꽝y4i.�?D�f�U#=5�ɉ�T{[l������,R����KK��kk��7FK:��,2�T]/Ký�Y^����׮[za�e\-O-���Ѳ9�����L����ʽ�h��couO����5~�������iz_-��Mڛ������|{?��Q�?_����x���=��6>Y�����Mk���[�����v�Z}���-�;f}{���=l�NF�w�*��=��u��yF�W����E�"�Ty�k͡������[�8���T�e[V�_��<Sk�x�h��C�v*D������E^�U #�U�j��� +��Ҧb_�0�~H�M[j4p�Ү���T⎇����o3{G�;:^K����Xv��-�Ʊ]������Z��N�3�u>�sg����O�u��Y��������>ߝ��׻��|�����)����76v=�3 �K�u������j��:�4@��Sn"W|tG=�wwv���k���������7�u/���i՚{<�q��{������S^�מv���|�T=soc�9N�0�+�^�R��›�n o�m�+Q��W~.x���g*�Q������Cs��>��Z�@�ޞK]`ǀo[��1�=��g�{�rX�P7c�I��?�l��E;�m���Çǚ�)^�aU�yMxO��U��&$A�l."��.�r��!^��<15ib[1�HG��")��L���:�oȒ *����R���v�cQ��/u\&���r��:��OZ���y�^hS �N��}5G`��`���ISNg� +��*��5�V��E��� +u����O�!�n@��n��nlj9=ܭ��~�M��� +�`9�����ଜ� �k "D���P��ބ���h�{d+?u����S8�3��zȇ;��&�dl�H+�Y� _J�ȡ��D1�9M�f��tP�����v���x<��C�q��P�T���;���B _-�K$iҖh��r�I���$�{�%���$�2y'l�)pj�?���q�*o�]��ʛS����iL'�J<�<J�q?��X^�� ]{�gJ5�7��2Mf6��f�g�ϲ��ӑ}�0&�3粓����s�4�{͟s��a�7��|��拎G�&�y?��.Ǯ����B���^��xa�\L��V9^L:?���A����J�#�X��̮R�5�,Mۣx�^{ߗco�v�1ꅀ�*��S�}0��Ҵ%��i�������j|�JW[�3����]�d�����/���2���y��H-�ňڻ��m�s[�������DZ�u������S0�6=�B�{��i� +���5�������R�7�>7�F�٭96-���� +���z�^kM���s�6?�����f��y׊�ہn oW��j{l���8RM�������_ނ����8�}� +�?�5�=�:�W׷��d>����w"�f���o�i����ߖYG���er�}v��Gl`�H���>>������ ����c����Ԭ|�[ ���Q�n��6��h����9�U�����u��v����� +�w�������=$�/��D��;�O�H�^ﷇ�z��7��C�4���`].���{�3|`�����KX`T���F�t�1& �����z�� rBdqRkZ�&���8%�V�iݷlO��n��pDfO����� +��>(�4?\˟ͤ����ἝI���Ϧ��f����-M���2m.�]"WZ��!�*k�?V[�i�a]*�/�i?�Xͼ�7��7k���l�������3팤w�Kx?ۻ/'��;��!�͟�Ô +�i8��ʹ�����a2pk���^r<�dn��'�p���J�?�{ծx��v=��>��z\� ?��S�<=x:}B"�C�ʌC�y�܈��6[���p���� 1��g����g�G���2��3��{ ��c�itW_3FV%0_�cG�ƴ�ɿ'�Uл���P���� ��� +%�� +�+|�`A�H�~ҽy,%ʡ}������}�P,�b��l����k�c04��k�9]��&z���X�� +%�0k�B�#�Í?���!��)�o-ˊVWd��X�܈����c�w:X.�=�b5�&���$jrX��t��3�0\�|?_U�JX{X��ݖǚǒ���� �����������%D~x��X +g?�9ַ(V�=8��`h���hM5z �7R6�����Rfz>�u��f���3��"N� �� +'~v� +Y�͈�T�Z5IL+R�w��r�䆻7� ���7�]k۶�(bmN���+��Ά�����MTk���%�1y���I+��q�+o:(����<�3�X���W���S�gm^DX��9�O'0�)`�b���G���fY I V�=+E"��.���3��-K�X���1��2 + o����E�X��C�xo��a%lq{A<� +�� '!V7����ܟ-�b;)���c�\��?z�k���Bѽ�?��v>D�=�PE.��>��ł�b�>�e�D(�7�GF�p���"4,b�n�� VL�u�K�������O��<�'��¦���X6@юz_��[�gkwV|�y—m��S��}䟞+ �3V�����V���~m�J�F�k�A���z�`-D���ӱm����qf�7�ω��/5Wr +��q�w�O_��>��ӏL8v"�L���.mQ|�s�o +�O�m"��?='�r��w�^}z����U�h��U�YQz�j�?��O��j���D<�p�%���Vx(`٘�u��L�t�������P<�q���ݜ@��x�`�A����� �zY�����?��g���k��9 �� z��0�$�* S��(s��Z�l��vj��h������s�b��������Y�,C�*��)Dz�����d��%׭y�(閰O_G�છ�=`���$���E��1U�"<��v�q�eFh3*���i���4rs�4iϡ�4B'�ir��v� +����q)�x褗 +4ܙ��)�B�����"����g.��f�+�������&���WS�H��J�GDS��X +9ΥP7+�B��B2MuF�ŝ���N�hhe��<����� +=rg���|�J�|�QQ�+.O��\�t��Dj +��|h��Z�Η��V�lO2.ɸDjM0�Q�keY�L�f����!� +�A��{�������޽f�ʽ�{[u��#�%m0e�=]�b�E���z�ɁB�n9�`/�w��>�={�ףꄚq�3��]�-�3�bҞ-�M)$�pV�0�|��A�O"�AjO�> :ƌ搗�[<��+ +3��Ͼ3��|ZNa�u>-ü�u�W +̓0���tX�|c`��t<.��<$K�r�JV + �b�-C����*}:<���g���H����l�q��hO���[��hW����s��/yP,C_����1���q���g�຃%0%�r)��F/��]�-b�(@� ��^�Ŏ� -��O��Kh4��.�kǢ�tSԂ%i W��@�4��,��{�Y;� 'XP \Q)�L���@�FI;S:�5�/!���s6e��K�e�D����[��>q� $���D((�v �(} -����Fdf'�R30�r����:,mH��̾�|���zt��#���ᙶI�B�]��+���&��P�6��ym��_��7e�"T������j�7����> ��~I�/��>�:�Q%3H�������eG#P~p��&L +�������'d�4���h���_�r�O���{+@S��ʅhY�C)J �]� +�*�x���8�̩�@~�P��ټ�;�;�ڥ�@9y�<�����劐� �@m4^�VŻ�6��p���he��d{"��\O�7j�Q������;� +�Luꢦ�0 +o�jM*��sǙt�ϥۀ:��|0% +h��^+ݞy�vrq/��д��؃��~/���o�o ����I�˥t�t;�r0���n� +vq ��$w�~�� ,Q$L���k5?[�)o��� +I^'p�΢��k�rO�fl�*�$�[���AnU���˄.��6^$qᎇ���eB�xU���-v�c����$L) +m@� E(L��>�AQp���ڀ�{�:��r[�-�܌r#t!�C��Ϟk���L���N�����0ʡ�_.��5"������VN9^����]�Qk�5ֿ�I9^�� �_ +��*ҫՕ##l>�W�G�r��n93h��7Iu��H6ˋӞ��,>�C�>�کL���n=[x�����{ڵ�\�1�E��ݭB4]�07����&ԫkūlæI�Bs�7{�>)��5��Τ�*������ק��ԡ����P1P95N).�F裦�E���0�@S���CCz��4�)WnLD�/�;�l~y�Enh +˾���˰�,F���[:��l�qJ�Yļ���+Yǃ�T���=��/xc��I�]X�����c����O���k��$EK�.�S��c$� +����Z�;��� ���k��ה�����+���k��D��W����ݩ�.^TΧ^�w�JoPΧ������l�j�x���r>�Z>�N�.�%@�T��m99K\%�^�I�D��O��v��S_�VN�I�:�6#5�e�����p�� w +3�,�_�*�1��z����z��F?��V�E�S�M=�K���V��J]2�F?�}��I�*vK=Х�'��=4����t���$�D�5tY���6?M6���p�R��9����V�cV��[�*�'\^JdL���f��Ni�G�Fi��);��BљUM1��Z^JVRGq'*`�M�������f!�>���]�3�S�9�ʩ��ޡ*���H�����8o���ڴb���FQ�>�&��f�+�h�)� +(i=��9����yAMa_���,�q)��)ᨛ�2����Ԭԭ�\ͨ�jg��NK��QO�9��[S�i��q�$%B�Y���7Q,���6�_@4qX�Z�i��&/�~G4q��H�v<�$��$��N��L��{*>��Nk���T/ݓ�P07I�� �o���?ߪ뼠��B +pR��*8˄� �s\�\ߝ���W���Y��t��Б_��N;q��X6,�S��θ_�ZO�;�B5{ I�|nn�Y���Y �=s�Au�ƊC�/���R��Q�w&��˲� +�7vZQ�������S�,�\�w���kRM5B캱��� �7�>���-�H�J�īZ�ZS!�_o�4R�����tvʈW7fʢn�)��͵ip�J���p;�B���zM�F(]��j)#���&zswV�x}���I�7�V������AIG���� X-��֗"/)�Ćt�7�Ur����óˬ�#��+$7���F�� ?�n� ۵2�����2k^�o`%�r,�2��d�;��E���te�aQ��Μ@�?A1���0�z��` �N�t������7����b��m*��[��W���޲2O6��ue�55T�&�ޮ2���\�:*����$�+*�ĩV�K�[W��I�Re��n]�'ؐ�Vf���oz�H��]eޙ���/k�nP�U��R/(qꥢթ'���֕z�)�s�Z� �r.�%\jrk��N@z�X��vt�������{m����h���w��|R�m[�Y��m�1�Ũzm_���'a�������#+��cg�w=��������v����˖����ݤ.3�ө�4)�w�t�Rb��yǚǹ��ْ]�o��<����O��t�O1�1n�mډ`�J�&�& +�}�(k�[$�3���4�oS$���Q�,t�"YX�v}�,�r�"YH�A��Y6w-�`/�_rx8��׫ף�(OA�ݺ(��#P��EQ���ܼ(�X��h�.�%��Ey�xS����Ʌ���<�x�N��f1 +��|h�ꫩbZ����%vZګ�7��#�����:����|�Z6gG(_�3q'(����R;yv9(@�]u--��P<�G�+N!Uu��dx��[!;� +�xm�_�{_��ͅ,�n��g�� +*�\����3o�]"Y�Z�t�;H�S�2�v������B�i6>%���~Cn[(��\| +ׅL&.�� jUa�Z�50u�G��;�b?�U��n�SĊ�Z)�b��ڬ�S����5� �J+�®�0l'-��N+�K%�h&�Z��`��SY*�Qf�:~(�ݽ�U�-5��֭�"Vke4*ai�S����5���W��eEF���B��lj��e�>����."׎ +?���?*�@�u��L+����xr���B�c�b�:�{�ƭkŎF��T��oS\�#V`Q��k��O½5�ni��j%��.�-�ד�r�N��(���. ۽gtgbjg2'\^�;�u��z�~�ҸYOq�g�7�����t^��ipW\�w��ɏ��cRL��{+�F��7�}���\Z�'�%pa���=����>�(�ٺ���O����ʅ}ra|��k +�D�a/�Sx��>9Pw������J���>�}^{ެ�O��O�Ma�\U�ެ� +�����{��>�f�7-�3yDY��)쓫�S8Z��¾�>M�*�o ���VD����͡\�Օ�}RP�70���O��ma�D���O�l��F�}�#�Ņ}�^7+�S���ua���ƅ}r�-����� +��{��>������7�(�#��T�Ua�fA�m +����SF +7�=��( �O�3���4;��S�F鮾�j,{��k%��[���t@�D���O���G���v�x:�.a������D�w +��Jݒ�I�P8�F�tK����>!��n]tO�Z��s3��� +�T�V��H��]�����L�%�Ѹ^=�wRk���]}�ߝ��.���o.�S6���~;�ӱowJe�j�t�\h�C���]7_���N�5;�A-]��i!!m�����l������;� +O��?}�O��-��"�q����ƣ|���M�7���yt.��˥��D��>� G-.�}��V���ӓA +�h�;*g��.v�hT�/HR�R JZ�}c��&-i�G�*��N�T+� +�|}���2q�`-�tݩV�v~��T+Mg�z&5��)ļ~'޵�r�9�:�W�0q�y���������0kW�#h��}o��V�6W�վ�� +�7��nr�3�i��z�P�)R�%GM��:�jY����aXx����+em����ƜNv�ܼ8U9�:����u��f�R���˽���]tW� ��� ��е7|3P���kϋ.#�T�j�P\�Y�pɬǶ� +}��������=�����z���Жi7��O�Tg������{�t_���?y6�����t����Q�޿;qm������w�v/.����{�t�K�������Ə�����@�6~Nn�V�����վg���k�M�ر*[�-ڍ� �B�,ʁݤ������4)��J +�N�r-�E��{�B*��*����kL��0�w��Z*=�T�XW� +՚�Z*�05�<(~nk��v]���=�<�v=�SO!�-����=_/*�RLN��J�(��,��;����[$�̹���M�n�^�Cѐs�=}]����b�unw�V��»Q�mG�T�_X6��E�aj] ��eݭ`��R;�t�ck�݂>�/�V��e�Ep2*����0�����)�("Ĝ�O�z�LJ���2�ٛ۝�0�%��.�~�(T�9��w��0.�В�@̩T�H�-t��T����Ɣې�����gE��b�;Q����c�;��D�Vq���F[�IIѥ���� +�@"Ko������B +��u�������Dn��y_*X�Jk���&��݅,�J=�Xj7,���X���8q ����'�*����,�ЎLc�����ط3���^���������i�� +��iZ%�|�|:�3]��$�l2:4u�k<&-���(�E�'n)� 1�r��zꫴ���w���Ł�.��wʨ'n)Ngو�ռ$�M�Pz���q�� ������$g���w�����T��Y�ٺ�M��r��n)Ǘ/���i`l���p%�+�w�w³27������:��֊�v��:���1J���+�T�Һ����k�ؽ�+$�ν�Uٝ���0EQWI��"��,UT�x��r���)֭iy5��ݩ8H +�4q*��fm/w�*�&w3O��;6��Cgj��4��}���o�=����P1�ߞe$̃�ˍ���Uy�񲂶�{<���N����J��EG1�$����bΚ���O� +n�[�~/�K�[tԖ� ��R�KԺZc�üv��n��\}'{��д.�����@�h�+��YM����k��y��eD��?��U1˙��~Y���Q��F�PMW=�ZJ���D���2q�KJ��#�ɰ�*I�[�Ȅ�]�(�/�,����D����h�/I�I�.A�ĕ^��$�G�=�_�$*��Q�����|\�_Vx����k.+��/���<��\Vx�uI�m.+d+V�͖�/+��ǽ��x�� +��v�e��)�����N����\V( +?�nQ��b��U��|ۡza���$���t^x��T��/< ��Z)]xxa�o/�u兇�e7���v�雫/EQr�*[/?���Cu��uq���P�H�S�W_x(����s;M�)\� �M#ֲ�8�K煇�,��/<����|��/.H",(� � �3�+}_��4u�X�5��5V�-yTh_� ���.;)�^���X���f����nvR�St૴cN�����r<��'/��hq/A4pk�� �|�w�<��l��C���]�m���K����E�:@�K�ލ��B��#����\����of������1�ݍt=�=IL褽甥�S3N�_��o<]N0p$�����G��t��R�(��==�,�0%QN���*�SL/l�p��#��.�Q�^p���wZR�j M{ �9)�/o��1��������f*2�mC_�!�����`�ee�U�'Mx�RE4A}���� ���*2d�2/o"�,Q`8V���Ѥ5�y ��['�J�m�����@!�ZwA +j��W�O������3�D�����C<����$����#�N��]��B�o)�5Śѵ3��Ƥ��aT�� +�!��u_�d`T�C����7H&�z����w9��ە�����㒤��$`jw��h{c���� +u�� +��x�t� + Q� Z�f��Ob�p��v�^��gb嶶K�`�?����? Ǧ�Oo��o�;;�>�;s������/|�z�W�sT(͋ +��O� ����Ao6�H]�K�1c��~�+�L�J�ǠD7��i�7%� +OG���zx>� �0�}��4%�A�����bR퍽���Q�QuX�RB����A� ��P��f~��a b˟�eg�F*�?3RBg�;��â�򅐜_L7����|��F���R�m!�7oʡZć:B.)P��:.�&�ꈄB�5=���i����ތ�x�2b�6_����̀м1�&~�>*� +!��f,�o�\8����q�M���O�[?ǹ`��.&(l�qKS1�c�B -�C<ޞ��4U��P/,��֪��W��g ,�қ��f�F$d�Xڻy�U�xUc ��#��Y4��P� !�����#�iM��:�E�:�cڔ!�{:��ouDM?�_�wk�}N:�X�v y��8���N�%��C���x[�w�%�η�P��#f�D�(�׮i�_Zz�m��K��+�/����0Xl��������;z`ɫ�uJ��lĺ������Ŗ}Z&L�6�fsyտP s�Mzce�6r�Oה�t� + ��t�Ƒ9���ȓ<�� l�����J�_�>/�!ݯjԄ�$B���#`1�Ӄ��~]������9-�'7+�&H�&p���c��k�+�f�{��]��ݺ���۫���[* n�/��en`y�~��4~�޿QX����][[�gk +����C�8;����s�KM���փl۱���1� w��`��0G4X�wE.7}��Q{�$EG���%q�keL����� +���\Y2y�������ĂLX +�gc���R��v������+ӟ��0MС�Ԋ�龄kv#UH�W��������EV�T?�v��#H묪9:O��u��Y��o%đ"��� @\bsB�qW�-|�:άn���v]��$��X/�dv�z~�G�3xL?�ׅ��ɴ�֝�P0���3[4J ���#z- +�䘵���W�aBP��3���!��j0G���أ�L�}M���XO��O�Y� +Hv�ڧ��73�d�>���j�P�W��!tn'TZ5������ī�tak�^'X/j +�A�q+�~4��RuF��y�0 +����e6�L$� ��12A���lWC�a�&%3���^���e��?�����pox}u=�$�~Y��%��0V���~����Q��|��"ˑt�(_��V�߽��#bs�u���� �D���%&)��+|�J7��õv�~����a���?�ҭ�G���y4ɋG�X�)��g"]#2�S��d�K���0���ة�NT(M�]���y��f�OW��r��]hO�2�~/�\�BǶ (e�)ev�F ���M�O�ڎ���\�MG��L�[����.�p/lDSY�M���ѥ��!�$]��3��QÆK�@���†�1C�_�Q +k�X�}� �N����a���_"~imI��G��I���T��y{�.���b^<�|� ��N�p�� ��d=d�H�})�MD+W�����i{0��{i@��spZc"\�k����0�����/�U�����y,������^xD���dr}�n�����e|�=��R1��?.TzkQ?��3߷�8��o[����ڦ)(F���� �:����N]g�j%G�Lz�N��{��i�y�3��ߛÔ�p���(��\���L�7��~��3� ͨ��ވ��Σf��ٿ�)&�Q]S�MW�̨��������^�t���4_�c�N�K���$5�S�ܙq�< �'G�*%�v|aKώA��[K���k�Bz���"�:�z4y���<�G㻍����}XX}�7������hjp� +��C71�T`i_���3{A�D�d��c��Ab��$���E*>"t&$t�/ܩ�)+��|1���'��kIZ�R�����4QԼN.'�����5�%x��w�'L/�d��Ĵ 9&P�J��(��nD��l:A}[���0Hy W�`�Z� +ꣲ�Z�2Qi���T�2"X�u�@R����eBy�(�%n�l�XvO��!���Y��m�i�Ã� �X�� +d��~Q�Ş�/K�K%�,g��J�}�Uc��ԎRm�yg�X�՞���� +>�)��\Za�������-BX<�����M������}�ɣO;����p��ؖY:+!��z�™(!��W�T�K�ճ0����A�콯��V)�=zh�J���TBCU�3����J��u� ��f �|Z*Ѓ|��EH��%����rYR�@=ycy�:��wqj]]����¼x)Sn�x�Q��A�m�>!�>��<���>�zW��ZBi�ݑ�r��*�S�',��>cژOLL0��^e`�1����WwC��-s�^�aɇ�>�#��&��1x�)�s���K�1K�C�QiZ�=�e��O���'��ۭ��Z�-��YZ��B�[ڛ<��Ӗ��#�9K���,��<���/�De@������}fD(5�Z�{y��3������d1|7N��M�& +!���rD ����K�(�������mm +�VGʩ��͑B�U�l\��)o�_1\O3�I�͑V[Uxt��s ��D"ܻ��o��^7� !|���;�>e�ԚjS��_�&����:�_"�Nڞl1��"� +6z���v��F�U/<�K��Ŗ7+s V��;������~x��}��e�?��=������F�C�L���M����m�퉱�sZ�� +.L�*Ƭ�.�r-�Rw�R*`ZPJ�55,�b��| +4�]&���ⱗ?`�~� +lyY.F�;��(�u���llTPs�o��F| +%1Yn +�e�3e�P�X� +�odV~{���ߋ +�<^.��e�cyP] �h�_�h�W�L9z���l��q��1 ͘_<73~�i�KS}?c� ��4%_�8�#Ĝ�}�?�Ii� \��2?uJ%,E���)xl���pڐ,[]�F��NC�ؘ ��҃�l�P��(����ɟVP�_}1&��[1ԛ��6�b̅>�X��^/���)�).Xp��v;W&��PD_�����Y��p����Ή�gD�,��Y��*d4�E��������X�\��Tkmzj���@:ꏞ����������}�u�t��/¸�'R���_b�:��*��V:;�����A{�wd�h��j�R�,GD��^��@&���R��-��������__�<�����o<ۂ��@�+bFv"�z���~��mͰ-Iq�1�v#w��f$�4�5u��9�����A��u/$t�.S�ܳB,G�Wn44n*k ���ߥ�,���8�Rr�u;�����f�f;.�`d;>��D.���L��#���`��Iy�u�D�ec�}r�4ݵB�-�l8�φ6:S8�� �㻤Z�4�@�[A2l�t�v9�P�)��r��Xm0h��{��a�w�EwˊKcP������1��bLs +ӢAq<7��D� ���a���=o�r� +�A�A�J:�Kƞ=[�Θ���q��њs9ۅ��Q25۶u�v 4�։f���i&�Ź +���\�ɲ9i��5ǂ����� �4��\���ۀ��]T7���]�� +��Gc ��iln�r" �n8p`8��=27�0��x��`��Ɇ�� ��G�l��]�h �1`R4ߐ7�b�#�2a�!' ��0���� '��M�Y0Bpp:�u�\�(# !w$#� :�pK�l�n�[.u����t@�H{%�N�~1l�[x�ep�6�A���A��#N��uMj�)ڭ�g����L�3]�M��5�0ͽ� +�r�8��f��} ���\���hx=���r�l������m��޴5����9����C4f�8�=�YS3�����R �!�������� ��G$Ǵ��k�+����� ���GF6fD3�I� +4�Y�F��\s]�!��"��`�qN0��̠�\1oi~�:��8� ����9�i��`2�I�lO�õ K2p�p�{FF45,ͅI��0�"8r��D�W�hȏ� d��� }(۳� +t^�d��w��ڇ-��YZ��=6|$'���Ov����A#Z����q@�q��Wm�:[4'���x���!,?����~ +�A��q#�x�~�<�^.X�6���pZ�'�4˴��"Ĺ��H@��� F� +@Y`��\�B9fz&b���0����z�� ��}���"� ܍ f�{d<$j T� B�+P�9������##Ш��TK�%��@p���Ad� @L�ϥ� +w��##�����1rɱ���p���b�<�G��`��DL`�rF>�CH�@�t�op���`l�ʲ���kB�A~�;e���K�a1��m �Ā�P���b���`��_q  $ Gm�*[ОCG���}�{& � 0�P�B��"�&x��(@�.��dk��h��!�f +�4�9tD�$3�k0E���#�|0�2�t��!�� +���fK�<�s�����:��@�1�4b�� @S�i�D�,�W��8�  �t +ijr�6��f���Q�lK(��@H��Z����}�N�d�J�xǀ�1�p�#��@������q�s^�ZL��}�`��3H�o+�N���T���!��L�-���Q��ƹ�/y�guM �]�W�q��LK��E�h�CX�aA՚��+8s�F�3t��;�dh��=��⬊#`X.O���*ک +�kI̽�pJ��JX��y�#i��!ꣽ�ϕ4\G +<�O�%����R�;&� ��I�c&.��-Ja� ���|>L-.|%�-��y���|��c���G�|�O��l�Z>)�`1�l +���l��"����C�$@h脄<��D ��O��p�:�n��ѐ�R ����pŃCh�1�<\��z~ay1Q��Dr?�OZf�pւqq���?�\W +pp+�;s`!%&��HQ�V_�##2���1��*!�޽�����ISHH�5E��a�}�ӆ��/�%�g+%������;q͟��X�w�鷲sVG��o��P��p�wR��W�|��S���0&Sa �� ���L�M����ۢr�c��$�` �.�� 7 +��Cm)�b"~4�BC��^� ��W2�G��)<�Z[�G�'��u�<@�[�?��IQ��-P��mRJ�.����U�xؾ��QWO���Gڃ&l�p �������!o +n����+~��?�.s� +endstream +endobj +6 0 obj +[5 0 R] +endobj +35 0 obj +<> +endobj +xref +0 36 +0000000000 65535 f +0000000016 00000 n +0000000144 00000 n +0000051105 00000 n +0000000000 00000 f +0000059118 00000 n +0000172968 00000 n +0000051156 00000 n +0000051555 00000 n +0000059417 00000 n +0000055378 00000 n +0000059304 00000 n +0000054933 00000 n +0000055076 00000 n +0000055227 00000 n +0000054173 00000 n +0000054371 00000 n +0000054419 00000 n +0000058763 00000 n +0000058405 00000 n +0000055413 00000 n +0000055756 00000 n +0000055531 00000 n +0000055636 00000 n +0000058523 00000 n +0000058643 00000 n +0000058881 00000 n +0000058999 00000 n +0000059188 00000 n +0000059219 00000 n +0000059490 00000 n +0000059686 00000 n +0000060731 00000 n +0000083056 00000 n +0000148645 00000 n +0000172991 00000 n +trailer +<<972B57ED08F3904E9DDD108DA5E97F0B>]>> +startxref +173188 +%%EOF Index: lams_tool_leader/web/images/icon_leaderselection.png =================================================================== diff -u Binary files differ Index: lams_tool_leader/web/images/icon_leaderselection.svg =================================================================== diff -u --- lams_tool_leader/web/images/icon_leaderselection.svg (revision 0) +++ lams_tool_leader/web/images/icon_leaderselection.svg (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,390 @@ + + + +image/svg+xml \ No newline at end of file Index: lams_tool_leader/web/images/icon_leaderselection.swf =================================================================== diff -u Binary files differ Index: lams_tool_leader/web/images/icon_leaderselection_16.svg =================================================================== diff -u --- lams_tool_leader/web/images/icon_leaderselection_16.svg (revision 0) +++ lams_tool_leader/web/images/icon_leaderselection_16.svg (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,390 @@ + + + +image/svg+xml \ No newline at end of file Index: lams_tool_leader/web/images/success.gif =================================================================== diff -u Binary files differ Index: lams_tool_leader/web/images/up.gif =================================================================== diff -u Binary files differ Index: lams_tool_leader/web/images/up_disabled.gif =================================================================== diff -u Binary files differ Index: lams_tool_leader/web/includes/javascript/authoring.js =================================================================== diff -u --- lams_tool_leader/web/includes/javascript/authoring.js (revision 0) +++ lams_tool_leader/web/includes/javascript/authoring.js (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,19 @@ + +function init() { + // open the current tab + var tag = document.getElementById("currentTab"); + if (tag.value != "") { + selectTab(tag.value); + } else { + selectTab(1); + } +} +function doSelectTab(tabId) { + var tag = document.getElementById("currentTab"); + tag.value = tabId; + selectTab(tabId); +} +function doSubmit(method) { + document.authoringForm.dispatch.value = method; + document.authoringForm.submit(); +} Index: lams_tool_leader/web/includes/javascript/monitoring.js =================================================================== diff -u --- lams_tool_leader/web/includes/javascript/monitoring.js (revision 0) +++ lams_tool_leader/web/includes/javascript/monitoring.js (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,16 @@ + +function init() { + if (initialTabId) { + selectTab(initialTabId); + } else { + selectTab(1); + } +} +function doSelectTab(tabId) { + selectTab(tabId); +} +function doSubmit(method, tabId) { + document.monitoringForm.method.value = method; + document.monitoringForm.submit(); +} + Index: lams_tool_leader/web/layouts/defaultLayout.jsp =================================================================== diff -u --- lams_tool_leader/web/layouts/defaultLayout.jsp (revision 0) +++ lams_tool_leader/web/layouts/defaultLayout.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,22 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + + +
+ + +

+ +

+
+
+ +
+ +
+ +
Index: lams_tool_leader/web/layouts/learningLayout.jsp =================================================================== diff -u --- lams_tool_leader/web/layouts/learningLayout.jsp (revision 0) +++ lams_tool_leader/web/layouts/learningLayout.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,13 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + Index: lams_tool_leader/web/layouts/mobileLearningLayout.jsp =================================================================== diff -u --- lams_tool_leader/web/layouts/mobileLearningLayout.jsp (revision 0) +++ lams_tool_leader/web/layouts/mobileLearningLayout.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,75 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + + + <fmt:message key="activity.title" /> + + + + + + + + + + + +
+ +
+ +
+ +
+

+ ${content.title} +

+
+ +
+
+ ${content.instructions} +
+ +
+ +
+ +
+ +
+ +
+ ${user.firstName} ${user.lastName} +
+
+
+ +
+
+ + +
+
+ +
+ +
+ +
Index: lams_tool_leader/web/layouts/tabLayout.jsp =================================================================== diff -u --- lams_tool_leader/web/layouts/tabLayout.jsp (revision 0) +++ lams_tool_leader/web/layouts/tabLayout.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,18 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + + +
+ + +

+ +

+ +
+ +
Index: lams_tool_leader/web/pages/authoring/authoring.jsp =================================================================== diff -u --- lams_tool_leader/web/pages/authoring/authoring.jsp (revision 0) +++ lams_tool_leader/web/pages/authoring/authoring.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,59 @@ +<%@ include file="/common/taglibs.jsp"%> + +<%@ page import="org.lamsfoundation.lams.tool.leaderselection.util.LeaderselectionConstants"%> + + + + + + + + + + + + + + +
+ + + + +
+ + + + +

+ +
+
+

+
+
+ + + + <%-- Page tabs --%> + + + +
+
+ + + Index: lams_tool_leader/web/pages/authoring/basic.jsp =================================================================== diff -u --- lams_tool_leader/web/pages/authoring/basic.jsp (revision 0) +++ lams_tool_leader/web/pages/authoring/basic.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,25 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + + + +
+
+ +
+ +
+
+ +
+ +
Index: lams_tool_leader/web/pages/authoring/headItems.jsp =================================================================== diff -u --- lams_tool_leader/web/pages/authoring/headItems.jsp (revision 0) +++ lams_tool_leader/web/pages/authoring/headItems.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,10 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + Index: lams_tool_leader/web/pages/export/exportPortfolio.jsp =================================================================== diff -u --- lams_tool_leader/web/pages/export/exportPortfolio.jsp (revision 0) +++ lams_tool_leader/web/pages/export/exportPortfolio.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,59 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + + <c:out value="${leaderselectionDTO.title}" escapeXml="false" /> + + + + + + +
+ +

+ +

+ +

+ +

+ + +
+

+   +

+ + + + ${session.sessionName} + + + +
+ + + + ${session.groupLeader.firstName} ${session.groupLeader.lastName} + + + + + +
+
+
+
+ + + + + + + + Index: lams_tool_leader/web/pages/learning/defineLater.jsp =================================================================== diff -u --- lams_tool_leader/web/pages/learning/defineLater.jsp (revision 0) +++ lams_tool_leader/web/pages/learning/defineLater.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,11 @@ +<%@ include file="/common/taglibs.jsp"%> + +
+

+ +

+ +
+ + + Index: lams_tool_leader/web/pages/learning/leaderselection.jsp =================================================================== diff -u --- lams_tool_leader/web/pages/learning/leaderselection.jsp (revision 0) +++ lams_tool_leader/web/pages/learning/leaderselection.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,104 @@ +<%@ include file="/common/taglibs.jsp"%> + + + +
+

+ ${content.title} +

+ +

+ + + + ${groupLeader.firstName} ${groupLeader.lastName} + + + + + +

+ +
+ +
+ +
+
    + +
  • + ${user.firstName} ${user.lastName} +
  • +
    +
+
+ +
+ + + + + + + + + + + + +
+ +
+ +
+
+ ${content.instructions} +
+ +
+ +
+ +
+ +
+ +
+ ${user.firstName} ${user.lastName} +
+
+
+
+ Index: lams_tool_leader/web/pages/learning/mobile/defineLater.jsp =================================================================== diff -u --- lams_tool_leader/web/pages/learning/mobile/defineLater.jsp (revision 0) +++ lams_tool_leader/web/pages/learning/mobile/defineLater.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,19 @@ +<%@ include file="/common/taglibs.jsp"%> + +
+

+ +

+
+ +
+ +
+ +
+

 

+
+ + + + Index: lams_tool_leader/web/pages/learning/mobile/leaderselection.jsp =================================================================== diff -u --- lams_tool_leader/web/pages/learning/mobile/leaderselection.jsp (revision 0) +++ lams_tool_leader/web/pages/learning/mobile/leaderselection.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,87 @@ +<%@ include file="/common/taglibs.jsp"%> + + + +
+

+ ${content.title} +

+
+ +
+ +

+ + + + ${groupLeader.firstName} ${groupLeader.lastName} + + + + + +

+ +
+ +
+ +
+
    + +
  • + ${user.firstName} ${user.lastName} +
  • +
    +
+
+ +
+ + Index: lams_tool_leader/web/pages/learning/mobile/runOffline.jsp =================================================================== diff -u --- lams_tool_leader/web/pages/learning/mobile/runOffline.jsp (revision 0) +++ lams_tool_leader/web/pages/learning/mobile/runOffline.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,49 @@ +<%@ include file="/common/taglibs.jsp"%> + + + +
+

+ ${content.title} +

+
+ +
+

+ +

+
+ + +
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + Index: lams_tool_leader/web/pages/learning/runOffline.jsp =================================================================== diff -u --- lams_tool_leader/web/pages/learning/runOffline.jsp (revision 0) +++ lams_tool_leader/web/pages/learning/runOffline.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,37 @@ +<%@ include file="/common/taglibs.jsp"%> + + + +
+

+ ${content.title} +

+ +

+ +

+ + + +
+ + + + + + + + + + + + +
+
+
+ Index: lams_tool_leader/web/pages/monitoring/editActivity.jsp =================================================================== diff -u --- lams_tool_leader/web/pages/monitoring/editActivity.jsp (revision 0) +++ lams_tool_leader/web/pages/monitoring/editActivity.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,43 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + +

+ +

+
+ + + + + + + + + + + + +
+ + + +
+ + + +
+ +

+ + + + + + + + +

+ + Index: lams_tool_leader/web/pages/monitoring/headItems.jsp =================================================================== diff -u --- lams_tool_leader/web/pages/monitoring/headItems.jsp (revision 0) +++ lams_tool_leader/web/pages/monitoring/headItems.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,35 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + + + + + Index: lams_tool_leader/web/pages/monitoring/manageLeaders.jsp =================================================================== diff -u --- lams_tool_leader/web/pages/monitoring/manageLeaders.jsp (revision 0) +++ lams_tool_leader/web/pages/monitoring/manageLeaders.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,81 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + + + + + + + + +
+ +

+ +

+
+ +
+ +

+
+ +
+ ${session.sessionName} +
+
+ + +
+ checked="checked"/> + ${user.firstName} ${user.lastName} +
+
+
+
+
+ + + + + + + + + + +
+ + + + + + +
Index: lams_tool_leader/web/pages/monitoring/monitoring.jsp =================================================================== diff -u --- lams_tool_leader/web/pages/monitoring/monitoring.jsp (revision 0) +++ lams_tool_leader/web/pages/monitoring/monitoring.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,23 @@ +<%@ include file="/common/taglibs.jsp"%> +<%@ page import="org.lamsfoundation.lams.tool.leaderselection.util.LeaderselectionConstants"%> + + + +
+ + + + + +
+ + Index: lams_tool_leader/web/pages/monitoring/statistics.jsp =================================================================== diff -u --- lams_tool_leader/web/pages/monitoring/statistics.jsp (revision 0) +++ lams_tool_leader/web/pages/monitoring/statistics.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,34 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + +
+

+ ${session.sessionName} +

+
+ + + + + + + + + + +
+ heading.totalLearnersInGroup + + ${session.numberOfLearners} +
+ heading.totalFinishedLearnersInGroup + + ${session.numberOfFinishedLearners} +
+
Index: lams_tool_leader/web/pages/monitoring/summary.jsp =================================================================== diff -u --- lams_tool_leader/web/pages/monitoring/summary.jsp (revision 0) +++ lams_tool_leader/web/pages/monitoring/summary.jsp (revision 17ddd3aac11d9fecc83159a9c829e989754accfb) @@ -0,0 +1,53 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + +

+ ${session.sessionName} +

+
+ + + + + + + + + + + + + + + +
+ + + +
+ ${user.firstName} ${user.lastName} + + + + + + + + - + + +
+
+ + +