friendly-cukes 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/DETAILED_DESCRIPTION.md +235 -0
  4. data/Gemfile +17 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +108 -0
  7. data/Rakefile +2 -0
  8. data/bin/build-extractor +69 -0
  9. data/bin/friendly-cukes +48 -0
  10. data/friendly-cukes.gemspec +41 -0
  11. data/lib/friendly/build_extractor.rb +647 -0
  12. data/lib/friendly/cukes.rb +29 -0
  13. data/lib/friendly/cukes/framework/Gemfile +16 -0
  14. data/lib/friendly/cukes/framework/Gemfile.lock +113 -0
  15. data/lib/friendly/cukes/framework/Rakefile.rb +19 -0
  16. data/lib/friendly/cukes/framework/config/config.yml +87 -0
  17. data/lib/friendly/cukes/framework/config/cucumber.yml +49 -0
  18. data/lib/friendly/cukes/framework/coverage/.last_run.json +5 -0
  19. data/lib/friendly/cukes/framework/coverage/.resultset.json +3519 -0
  20. data/lib/friendly/cukes/framework/coverage/.resultset.json.lock +0 -0
  21. data/lib/friendly/cukes/framework/coverage/rcov/assets/0.2.3/jquery-1.3.2.min.js +19 -0
  22. data/lib/friendly/cukes/framework/coverage/rcov/assets/0.2.3/jquery.tablesorter.min.js +15 -0
  23. data/lib/friendly/cukes/framework/coverage/rcov/assets/0.2.3/print.css +12 -0
  24. data/lib/friendly/cukes/framework/coverage/rcov/assets/0.2.3/rcov.js +42 -0
  25. data/lib/friendly/cukes/framework/coverage/rcov/assets/0.2.3/screen.css +270 -0
  26. data/lib/friendly/cukes/framework/coverage/rcov/index.html +392 -0
  27. data/lib/friendly/cukes/framework/coverage/rcov/library-app_init-app_driver_rb.html +98 -0
  28. data/lib/friendly/cukes/framework/coverage/rcov/library-app_utils-data_file_names_rb.html +65 -0
  29. data/lib/friendly/cukes/framework/coverage/rcov/library-app_utils-page_utils_rb.html +533 -0
  30. data/lib/friendly/cukes/framework/coverage/rcov/library-generic-create_log_rb.html +521 -0
  31. data/lib/friendly/cukes/framework/coverage/rcov/library-generic-custom_html_report_rb.html +2522 -0
  32. data/lib/friendly/cukes/framework/coverage/rcov/library-generic-datetime_library_rb.html +296 -0
  33. data/lib/friendly/cukes/framework/coverage/rcov/library-generic-file_library_rb.html +995 -0
  34. data/lib/friendly/cukes/framework/coverage/rcov/library-generic-performance_report_rb.html +1613 -0
  35. data/lib/friendly/cukes/framework/coverage/rcov/library-generic-read_from_yml_rb.html +944 -0
  36. data/lib/friendly/cukes/framework/coverage/rcov/object_repository-desktop-gem_search_rb.html +773 -0
  37. data/lib/friendly/cukes/framework/coverage/rcov/object_repository-desktop-google_search_rb.html +230 -0
  38. data/lib/friendly/cukes/framework/coverage/rcov/object_repository-mobile-mobile_google_search_rb.html +230 -0
  39. data/lib/friendly/cukes/framework/coverage/rcov/step_definitions-desktop-gem_search_rb.html +188 -0
  40. data/lib/friendly/cukes/framework/coverage/rcov/step_definitions-desktop-google_search_steps_rb.html +167 -0
  41. data/lib/friendly/cukes/framework/coverage/rcov/step_definitions-mobile-mobile_google_search_steps_rb.html +167 -0
  42. data/lib/friendly/cukes/framework/coverage/rcov/support-browser_settings_rb.html +851 -0
  43. data/lib/friendly/cukes/framework/coverage/rcov/support-env_rb.html +242 -0
  44. data/lib/friendly/cukes/framework/coverage/rcov/support-hooks_rb.html +878 -0
  45. data/lib/friendly/cukes/framework/coverage/rcov/support-html_formatter_rb.html +230 -0
  46. data/lib/friendly/cukes/framework/features/desktop/google_search/google_search.feature +19 -0
  47. data/lib/friendly/cukes/framework/features/desktop/rubygems_search/gem_name_tc_04.yml +2 -0
  48. data/lib/friendly/cukes/framework/features/desktop/rubygems_search/gem_search.feature +37 -0
  49. data/lib/friendly/cukes/framework/features/desktop/test_data/gem_name.yml +2 -0
  50. data/lib/friendly/cukes/framework/features/mobile/google_search/mobile_google_search.feature +19 -0
  51. data/lib/friendly/cukes/framework/library/app_init/app_init.rb +13 -0
  52. data/lib/friendly/cukes/framework/library/app_utils/data_file_names.rb +2 -0
  53. data/lib/friendly/cukes/framework/library/app_utils/page_utils.rb +157 -0
  54. data/lib/friendly/cukes/framework/library/generic/app_logo_1.png +0 -0
  55. data/lib/friendly/cukes/framework/library/generic/create_log.rb +154 -0
  56. data/lib/friendly/cukes/framework/library/generic/custom_html_report.rb +852 -0
  57. data/lib/friendly/cukes/framework/library/generic/datetime_library.rb +79 -0
  58. data/lib/friendly/cukes/framework/library/generic/file_library.rb +311 -0
  59. data/lib/friendly/cukes/framework/library/generic/performance_report.rb +518 -0
  60. data/lib/friendly/cukes/framework/library/generic/read_from_yml.rb +294 -0
  61. data/lib/friendly/cukes/framework/object_repository/desktop/desktop_web_object_repo.rb +50 -0
  62. data/lib/friendly/cukes/framework/object_repository/mobile/mobile_web_object_repo.rb +22 -0
  63. data/lib/friendly/cukes/framework/page_objects/desktop/gem_search.rb +213 -0
  64. data/lib/friendly/cukes/framework/page_objects/desktop/google_search.rb +53 -0
  65. data/lib/friendly/cukes/framework/page_objects/mobile/mobile_google_search.rb +53 -0
  66. data/lib/friendly/cukes/framework/step_definitions/desktop/gem_search.rb +43 -0
  67. data/lib/friendly/cukes/framework/step_definitions/desktop/google_search_steps.rb +36 -0
  68. data/lib/friendly/cukes/framework/step_definitions/mobile/mobile_google_search_steps.rb +36 -0
  69. data/lib/friendly/cukes/framework/support/browser_settings.rb +264 -0
  70. data/lib/friendly/cukes/framework/support/env.rb +65 -0
  71. data/lib/friendly/cukes/framework/support/hooks.rb +274 -0
  72. data/lib/friendly/cukes/framework/support/html_formatter.rb +57 -0
  73. data/lib/friendly/cukes/framework/test_result/test_report_21_05_2015-11_03_33/app_env.log +15 -0
  74. data/lib/friendly/cukes/framework/test_result/test_report_21_05_2015-11_03_33/custom_report/detailed_report/app_logo_1.png +0 -0
  75. data/lib/friendly/cukes/framework/test_result/test_report_21_05_2015-11_03_33/custom_report/detailed_report/desktop_gem_search.html +647 -0
  76. data/lib/friendly/cukes/framework/test_result/test_report_21_05_2015-11_03_33/custom_report/detailed_report/desktop_google_search.html +590 -0
  77. data/lib/friendly/cukes/framework/test_result/test_report_21_05_2015-11_03_33/custom_report/report_home.html +593 -0
  78. data/lib/friendly/cukes/framework/test_result/test_report_21_05_2015-11_03_33/desktop_rubygems_search.log +84 -0
  79. data/lib/friendly/cukes/framework/test_result/test_report_21_05_2015-11_03_33/report_21_05_2015-11_04_54.html +472 -0
  80. data/lib/friendly/cukes/framework/test_result/test_report_21_05_2015-11_03_33/report_21_05_2015-11_04_54.json +299 -0
  81. data/lib/friendly/cukes/framework/test_result/test_report_21_05_2015-11_03_37/app_env.log +15 -0
  82. data/lib/friendly/cukes/framework/test_result/test_report_21_05_2015-11_03_37/desktop_google_search.log +22 -0
  83. data/lib/friendly/cukes/framework/test_result/test_report_21_05_2015-11_03_37/report_21_05_2015-11_03_49.html +472 -0
  84. data/lib/friendly/cukes/framework/test_result/test_report_21_05_2015-11_03_37/report_21_05_2015-11_03_49.json +155 -0
  85. data/lib/friendly/cukes/framework/test_result/test_report_21_05_2015-17_28_10/app_env.log +15 -0
  86. data/lib/friendly/cukes/framework/test_result/test_report_21_05_2015-17_28_10/mobile_google_search.log +22 -0
  87. data/lib/friendly/cukes/framework/test_result/test_report_21_05_2015-17_28_10/report_21_05_2015-17_29_26.html +472 -0
  88. data/lib/friendly/cukes/framework/test_result/test_report_21_05_2015-17_28_10/report_21_05_2015-17_29_26.json +143 -0
  89. data/lib/friendly/cukes/version.rb +61 -0
  90. metadata +309 -0
@@ -0,0 +1,65 @@
1
+ =begin
2
+ *Name : env.rb
3
+ *Description : requires the important classes/modules for application execution
4
+ *Author : Chandra sekaran
5
+ *Creation Date : 24/04/2015
6
+ *Updation Date :
7
+ =end
8
+
9
+ # Code Coverage report
10
+ # the cucumber run command should include the command line argument CODE_COVERAGE=yes (or true) in order to get code
11
+ # coverage report, which is a html report that pictorizes script LOC (Lines of COde) execution coverage
12
+ if !ENV["CODE_COVERAGE"].nil? && (["yes", "true"].include?(ENV["CODE_COVERAGE"].downcase))
13
+ require "simplecov"
14
+ require "simplecov-json"
15
+ require "simplecov-rcov"
16
+ SimpleCov.formatters = [
17
+ SimpleCov::Formatter::RcovFormatter
18
+ ]
19
+ #SimpleCov::Formatter::HTMLFormatter, SimpleCov::Formatter::JSONFormatter
20
+ SimpleCov.start
21
+ end
22
+
23
+ require "rubygems"
24
+ require "page-object"
25
+ require "watir-webdriver"
26
+ require "yaml"
27
+ require "logger"
28
+ require "fileutils"
29
+ require "time_difference"
30
+ require "data_magic"
31
+ require "require_all"
32
+ require "nokogiri"
33
+ require "base64"
34
+ require "open3" # for capturing STDOUT, STDERR messages
35
+ require "json" # for json file manipulation in performance report
36
+ require "dbi" # for storing execution performance data in Sybase DB
37
+ require "appium_lib" if ENV["PLATFORM"].downcase == "mobile" # for mobile automation
38
+
39
+ require_all "library"
40
+ require_all "object_repository"
41
+ require_all "page_objects"
42
+
43
+ World(PageObject::PageFactory) # make PageObject available throughout the application
44
+
45
+ # environment variables moved to constants that is available throughout the application
46
+ PLATFORM = ENV["PLATFORM"] || nil # for platform if desktop/mobile
47
+ BROWSER = ENV["BROWSER"] || nil # for browser if firefox/chrome/internet_explorer/safari/android
48
+ BOX = ENV["BOX"] || nil # for box name having multiple profiles
49
+ DEVICE = ENV["DEVICE"] || nil # for mobile device if it is attached to the machine
50
+
51
+ # for resetting the profiles (in config.yml) the cucumber run command line argument should include RESET_CONFIG_VALUES=yes (or true)
52
+ # which will reset all the profiles
53
+ RESET_CONFIG_VALUES = ENV["RESET_CONFIG_VALUES"] || nil
54
+
55
+ $REPORT_FILE_NAME = "report_#{$$}" # name of the cucumber generated report file (appended with process id as unique value)
56
+
57
+ # validating command environment variables
58
+ raise "Command Line Exception : PLATFORM can not be nil" if PLATFORM.nil?
59
+ raise "Command Line Exception : BROWSER can not be nil" if BROWSER.nil?
60
+
61
+ PageObject.javascript_framework = :jquery # for handling AJAX
62
+
63
+ World(CUKES::PageUtils) # make PageUtils methods global to entire TAF
64
+
65
+ World(CUKES::ObjectRepository) # make ObjectRepository modules global to entire TAF
@@ -0,0 +1,274 @@
1
+ =begin
2
+ *Name : hooks.rb
3
+ *Description : hooks definition to perform task pre/post a scenario and/or step execution
4
+ *Author : Chandra sekaran
5
+ *Creation Date : 24/04/2015
6
+ *Updation Date :
7
+ =end
8
+
9
+ $log = CUKES::CreateLog.new("app_env") # base log to hold the environment details
10
+
11
+ $obj_yml = CUKES::Read_From_YML.new("config/config.yml") # read the config file content
12
+
13
+ # for resetting config values
14
+ if !RESET_CONFIG_VALUES.nil?
15
+ $obj_yml.set_value("environment/parallel_execution_count", 0) # reset parallel execution count
16
+ $obj_yml.release_all_profiles # release all unused profiles
17
+ end
18
+
19
+ # set dynamic profile for a specific box or any free box
20
+ if ENV["PROFILE"].downcase == "development"
21
+ if BOX.nil?
22
+ BOX, PROFILE = $obj_yml.get_any_profile("development")
23
+ else
24
+ PROFILE = $obj_yml.get_specific_profile("development")
25
+ end
26
+ elsif ENV["PROFILE"].downcase == "test"
27
+ if BOX.nil?
28
+ BOX, PROFILE = $obj_yml.get_any_profile("test")
29
+ else
30
+ PROFILE = $obj_yml.get_specific_profile("test")
31
+ end
32
+ else
33
+ raise "Invalid profile name : #{ENV["PROFILE"]}"
34
+ end
35
+
36
+ GOOGLE_URL = $obj_yml.get_value("application/#{BOX}/#{PROFILE}/url/google") # get the google url to be launched
37
+ RUBYGEMS_URL = $obj_yml.get_value("application/#{BOX}/#{PROFILE}/url/rubygems") # get the rubygems url to be launched
38
+
39
+ # Since I have used two different applications, I use two different urls, else this is not required and you can use
40
+ # the url present in config.yml file (the environment argument APP is just for demonstration only)
41
+ # For the present feature files, if you want to run rubygems feature, kindly add APP=GOOGLE in cucumber run command
42
+ # and for google feature add APP=GOOGLE in cucumber run command
43
+ if ENV["APP"].nil?
44
+ launch_url = "#{GOOGLE_URL}"
45
+ elsif ENV["APP"].downcase.include? "google"
46
+ launch_url = "#{GOOGLE_URL}"
47
+ elsif ENV["APP"].downcase.include? "rubygems"
48
+ launch_url = "#{RUBYGEMS_URL}"
49
+ end
50
+
51
+ # Login credentials
52
+ USER_NAME = $obj_yml.get_value("application/#{BOX}/#{PROFILE}/login_credentials/user_name")
53
+ PASSWORD = $obj_yml.get_value("application/#{BOX}/#{PROFILE}/login_credentials/password")
54
+
55
+ # Application framework setting details
56
+ LOGGER_LEVEL = $obj_yml.get_value("environment/logger_level") # get the Logger Level
57
+ DATETIME_FORMAT = $obj_yml.get_value("environment/datetime_pattern") # get the datetime format
58
+ FEATURE_ID_PREFIX = $obj_yml.get_value("environment/feature_id_prefix") # get the feature id prefix
59
+ SCENARIO_ID_PREFIX = $obj_yml.get_value("environment/scenario_id_prefix") # get the scenario id prefix
60
+
61
+ # for including Feature ID/Scenario ID columns in custom html report (report_home.html)
62
+ INCLUDE_FEATUREID_IN_REPORT = $obj_yml.get_value("environment/include_featureid_in_html_report") # get the value whether or not to include Feature ID in html report
63
+ INCLUDE_SCENARIOID_IN_REPORT = $obj_yml.get_value("environment/include_scenarioid_in_html_report") # get the value whether or not to include Feature ID in html report
64
+
65
+ # for consolidated html report
66
+ NO_OF_PARALLEL_THREADS = $obj_yml.get_value("environment/no_of_parallel_threads") # get the parallel threads count
67
+ DELAY_BETWEEN_PARALLEL_THREADS = $obj_yml.get_value("environment/delay_between_parallel_threads") # get the delay between parallel threads
68
+
69
+ # Performance report
70
+ # the cucumber execution details are extracted from report(s) generated and saved into Sybase database
71
+ # below are the database details
72
+ PERFORMANCE_REPORT = $obj_yml.get_value("environment/performance_report")
73
+ if ["yes", "true"].include?(PERFORMANCE_REPORT.to_s.downcase)
74
+ DB_SERVER = $obj_yml.get_value("environment/db_server")
75
+ DB_NAME = $obj_yml.get_value("environment/db_name")
76
+ DB_USER_NAME = $obj_yml.get_value("environment/db_user_name")
77
+ DB_PASSWORD = $obj_yml.get_value("environment/db_password")
78
+ end
79
+
80
+ # log test execution environment details
81
+ $log.info("__________________________________________________________")
82
+ $log.info("Test Machine : #{ENV["COMPUTERNAME"]}(#{ENV['OS']})")
83
+ $log.info("Test Browser : #{BROWSER}")
84
+ $log.info("Test URL : #{launch_url}") # the actual url under test can be given here
85
+ $log.info("__________________________________________________________")
86
+
87
+ $current_log_dir = $log.get_current_log_dir # global variable to hold the base log directory name
88
+
89
+ $start_time = $log.get_current_datetime # start time of the execution
90
+
91
+ $log_env = $log # to hold base log file object for log entries after test execution
92
+
93
+ $current_log_file = nil # hold the current log file name
94
+
95
+ PageObject.default_element_wait = $obj_yml.get_value("environment/default_element_wait") # set default timeout for element wait
96
+ PageObject.default_page_wait = $obj_yml.get_value("environment/default_page_wait") # set default timeout for page wait
97
+
98
+ $browser = CUKES::BrowserSettings.browser_setup(BROWSER) # launches the browser
99
+
100
+ # if you want to launch the URL only once (at the beginning), then you can use the below script
101
+ $browser.navigate.to(launch_url)
102
+
103
+ $scenario_count = 0 # holds scenario count for each feature file
104
+
105
+ # Description : called before the execution of a scenario
106
+ # Author : Chandra sekaran
107
+ # Arguments :
108
+ # scenario : scenario object
109
+ #
110
+ Before do |scenario|
111
+ @step_count = nil # step counter used in AfterStep to get current step name
112
+
113
+ @scenario_start_time = $log.get_current_datetime # scenario execution start time
114
+
115
+ @browser = $browser # passes the browser object to the page class constructor (implicitly)
116
+ @browser.manage.timeouts.implicit_wait = 3 # set 3s implicit wait time
117
+ $browser_version = @browser.capabilities[:version] # current browser version
118
+
119
+ $world = self # for overriding puts method to print the argument into html file and in console as well
120
+
121
+ $str_feature_file_path = scenario.file # absolute path of current feature file
122
+
123
+ @str_feature_module_name = $log.get_feature_module_name($str_feature_file_path) # extracts module (and/or submodule) name from str_file_path
124
+ if $current_log_file.nil? || !($current_log_file.include? @str_feature_module_name)
125
+ $log = CUKES::CreateLog.new(@str_feature_module_name) # creates a new log file with the module ame
126
+ $current_log_file = $log.get_current_log_file
127
+ end
128
+
129
+ $log.info("__________________________________________________________")
130
+
131
+ # feature name
132
+ case scenario
133
+ when Cucumber::Ast::Scenario
134
+ @feature_name = scenario.feature.name
135
+ when Cucumber::Ast::OutlineTable::ExampleRow
136
+ @feature_name = scenario.scenario_outline.feature.name
137
+ end
138
+ $log.info("Test Feature : " + @feature_name)
139
+
140
+ # check for a new feature and set $scenario_count accordingly
141
+ if $feature_name_old != @feature_name
142
+ $scenario_count = 0
143
+ $feature_name_old = @feature_name
144
+ end
145
+
146
+ # scenario name
147
+ case scenario
148
+ when Cucumber::Ast::Scenario
149
+ @scenario_name = scenario.name
150
+ when Cucumber::Ast::OutlineTable::ExampleRow
151
+ @scenario_name = scenario.scenario_outline.name
152
+ end
153
+ $log.info("Test Scenario : " + @scenario_name)
154
+ Kernel.puts("\n [#{Time.now.strftime(DATETIME_FORMAT)}] Currently running scenario : \n #{@scenario_name.to_s}") # for logging in console
155
+
156
+ # tags name
157
+ $scenario_tags = scenario.source_tag_names
158
+ $log.info("Test tag(s) : " + $scenario_tags.to_s)
159
+ Kernel.puts("\n \tWith tag(s) : #{$scenario_tags.to_s}") # for logging in console
160
+
161
+ # get first step name of first scenario
162
+ @current_feature = if scenario.respond_to?('scenario_outline')
163
+ # execute the following code only for scenarios outline (starting from the second example)
164
+ scenario.scenario_outline.feature
165
+ else
166
+ # execute the following code only for a scenario and a scenario outline (the first example only)
167
+ scenario.feature
168
+ end
169
+ $log.info("__________________________________________________________")
170
+ @arr_steps = []
171
+ @arr_steps = get_steps(@current_feature) # get all steps under the current scenario
172
+ end
173
+
174
+ # Description : called after the execution of a step
175
+ # Author : Chandra sekaran
176
+ # Arguments :
177
+ # scenario : scenario object
178
+ #
179
+ AfterStep do |scenario|
180
+ sleep 1
181
+ @step_count = 0 if @step_count.nil? # @step_count ||= 0
182
+
183
+ begin
184
+ $log.info("Test Step (#{scenario.failed? ? 'failed' : 'success'}) : " + @arr_steps[@step_count])
185
+ rescue Exception => e
186
+ $log.error("Error in AfterStep hook for step_count (#{@step_count}): #{e}")
187
+ $log.info("Test Step (#{scenario.failed? ? 'failed' : 'success'}) : " + @arr_steps[@step_count-1]) rescue Exception
188
+ end
189
+ Kernel.puts("\n \t\t[#{Time.now.strftime(DATETIME_FORMAT)}] #{@arr_steps[@step_count].to_s}") rescue Exception # for logging in console
190
+
191
+ @step_count += 1 # increase step counter
192
+ end
193
+
194
+ # Description : called after support has been loaded but before features are loaded
195
+ # Author : Chandra sekaran
196
+ # Arguments :
197
+ # config : config object
198
+ #
199
+ AfterConfiguration do |config|
200
+
201
+ end
202
+
203
+ # Description : called after the execution of a scenario
204
+ # Author : Chandra sekaran
205
+ # Arguments :
206
+ # scenario : scenario object
207
+ #
208
+ After do |scenario|
209
+ @step_count = 0 if @step_count.nil?
210
+ @scenario_end_time = $log.get_current_datetime # scenario execution finish time
211
+
212
+ if scenario.failed?
213
+ begin
214
+ $log.info("Test Step (failed) : " + @arr_steps[@step_count])
215
+ rescue Exception => e
216
+ $log.error("Error in After hook for step_count (#{@step_count}): #{e}")
217
+ $log.info("Test Step (failed) : " + @arr_steps[@step_count-1]) rescue Exception
218
+ end
219
+ str_img_path = CUKES::BrowserSettings.capture_screenshot(@str_feature_module_name) # takes the screenshot of webpage
220
+
221
+ # attaches a link to html page, on click of which shows the image in the web page
222
+ embed(str_img_path, "image/png", "Click to view screenshot") rescue Exception
223
+ end
224
+
225
+ $scenario_count += 1 # increment scenario count by 1
226
+
227
+ $log.info("__________________________________________________________")
228
+ $log.info("Scenario start time : " + $log.get_formatted_datetime(@scenario_start_time))
229
+ $log.info("Scenario end time : " + $log.get_formatted_datetime(@scenario_end_time))
230
+ $log.info("Total elapsed time : " + $log.get_datetime_diff(@scenario_start_time, @scenario_end_time))
231
+ $log.info("__________________________________________________________")
232
+ end
233
+
234
+ # Description : called after the execution of all features
235
+ # Author : Chandra sekaran
236
+ #
237
+ at_exit do
238
+ $obj_yml.set_value("application/#{BOX}/#{PROFILE}/in_use", "no") # releases the current profile
239
+ $log_env.info("Releasing the currently used profile '#{PROFILE}' under '#{BOX}' box")
240
+
241
+ $obj_yml.change_execution_count("environment/parallel_execution_count", $obj_yml.get_value("application/#{BOX}/#{PROFILE}/in_use"))
242
+
243
+ $end_time = $log_env.get_current_datetime
244
+
245
+ # logs into the base log file created with the name 'app_env.log'
246
+ $log_env.info("__________________________________________________________")
247
+ $log_env.info("Execution start time : " + $log_env.get_formatted_datetime($start_time))
248
+ $log_env.info("Execution end time : " + $log_env.get_formatted_datetime($end_time))
249
+ $log_env.info("Total elapsed time : " + $log_env.get_datetime_diff($start_time, $end_time).to_s)
250
+ $log_env.info("__________________________________________________________")
251
+
252
+ # rename the html report file and move it to respective log report directory
253
+ $log_env.create_html_report
254
+
255
+ # creates a new custom HTML report based on cucumber report(s) generated only after complete (single or parallel) execution
256
+ if $obj_yml.get_value("environment/parallel_execution_count").to_i == 0
257
+ # get the html report files of current execution
258
+ arr_report_file = $log_env.get_files_absolute_path("test_result", "html", $start_time - $world.get_execution_delay_time.seconds)
259
+ $log.info("Report file names (html): #{arr_report_file.to_s}")
260
+
261
+ obj = CUKES::CustomHtmlReport.new(arr_report_file)
262
+ obj.create_custom_report
263
+
264
+ if ["yes", "true"].include?(PERFORMANCE_REPORT.to_s.downcase)
265
+ # get the json report files of current execution
266
+ arr_report_file = $log_env.get_files_absolute_path("test_result", "json", $start_time - $world.get_execution_delay_time.seconds)
267
+ $log.info("Report directory names (json): #{arr_report_file.to_s}")
268
+
269
+ obj = CUKES::PerformanceReport.new(arr_report_file)
270
+ obj.create_performance_report
271
+ end
272
+ end
273
+ CUKES::BrowserSettings.quit_browser # closes the current browser
274
+ end
@@ -0,0 +1,57 @@
1
+ =begin
2
+ *Name : HtmlFormatter
3
+ *Description : class that defines wrapper methods for Cucumber generated report
4
+ *Author : Chandra sekaran
5
+ *Creation Date : 24/04/2015
6
+ *Updation Date :
7
+ =end
8
+
9
+ require 'cucumber/formatter/html'
10
+
11
+ module Formatter
12
+ class HtmlFormatter < Cucumber::Formatter::Html # for uaing @builder object
13
+
14
+ # Description : embeds the given input file type to cucumber report
15
+ # Author : Chandra sekaran
16
+ # Arguments :
17
+ # str_src : relative path of the file
18
+ # str_mime_type : type of file
19
+ # str_label : link text on click of click of which shows the embedded file
20
+ #
21
+ def embed(str_src, str_mime_type, str_label)
22
+ case str_mime_type
23
+ when /^image\/(png|gif|jpg|jpeg)/
24
+ embed_image(str_src, str_label)
25
+ when /^text\/plain/
26
+ embed_file(str_src, str_label)
27
+ end
28
+ end
29
+
30
+ # Description : embeds a link with the given input string
31
+ # Author : Chandra sekaran
32
+ # Arguments :
33
+ # str_src : relative path of the file
34
+ # str_label : link text
35
+ #
36
+ def embed_link(str_src, str_label)
37
+ @builder.span(:class => 'embed') do |pre|
38
+ pre << %{<a href="#{str_src}" target="_blank">"#{str_label}"</a> }
39
+ end
40
+ end
41
+
42
+ # Description : embeds the given input file type to cucumber report
43
+ # Author : Chandra sekaran
44
+ # Arguments :
45
+ # str_src : relative path of the file
46
+ # str_label : link text on click of click of which shows the embedded file
47
+ #
48
+ def embed_file(str_src, str_label = "Click to view embedded file")
49
+ id = "object_#{Time.now.strftime("%y%m%d%H%M%S")}"
50
+ @builder.span(:class => 'embed') do |pre|
51
+ pre << %{<a href="" onclick="o=document.getElementById('#{id}'); o.style.display = (o.style.display == 'none' ? 'block' : 'none');return false">#{str_label}</a><br>&nbsp;
52
+ <object id="#{id}" data="#{str_src}" type="text/plain" width="100%" style="height: 10em;display: none"></object>}
53
+ end
54
+ end
55
+
56
+ end
57
+ end
@@ -0,0 +1,15 @@
1
+ # Logfile created on 2015-05-21 11:03:33 +0530 by logger.rb/41954
2
+ [21_05_2015-11_03_33] INFO: Currently using 'test1' under 'test' profile under 'test_box1' box
3
+ [21_05_2015-11_03_33] INFO: __________________________________________________________
4
+ [21_05_2015-11_03_33] INFO: Test Machine : ASPIRE1339(Windows_NT)
5
+ [21_05_2015-11_03_33] INFO: Test Browser : firefox
6
+ [21_05_2015-11_03_33] INFO: Test URL : https://rubygems.org
7
+ [21_05_2015-11_03_33] INFO: __________________________________________________________
8
+ [21_05_2015-11_03_40] INFO: Successfully launched desktop firefox browser (Version : 32.0.3, Resolution : '1366x768')
9
+ [21_05_2015-11_04_54] INFO: Releasing the currently used profile 'test1' under 'test_box1' box
10
+ [21_05_2015-11_04_54] INFO: __________________________________________________________
11
+ [21_05_2015-11_04_54] INFO: Execution start time : 21_05_2015-11_03_33
12
+ [21_05_2015-11_04_54] INFO: Execution end time : 21_05_2015-11_04_54
13
+ [21_05_2015-11_04_54] INFO: Total elapsed time : 0:1:21
14
+ [21_05_2015-11_04_54] INFO: __________________________________________________________
15
+ [21_05_2015-11_04_57] INFO: Current browser closed successfully
@@ -0,0 +1,647 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta content="text/html; charset=IBM437" http-equiv="Content-Type">
5
+ <title>Cucumber</title>
6
+ <style type="text/css">/* cucumber.css is generated from cucumber.sass */
7
+ /* Regenerate with rake sass */
8
+ body {
9
+ font-size: 0px;
10
+ color: white;
11
+ margin: 0px;
12
+ padding: 0px;
13
+ }
14
+
15
+ .cucumber, td, th {
16
+ font: normal 11px "Lucida Grande", Helvetica, sans-serif;
17
+ background: white;
18
+ color: black;
19
+ }
20
+ .cucumber #cucumber-header, td #cucumber-header, th #cucumber-header {
21
+ background: #65c400;
22
+ color: white;
23
+ height: 6em;
24
+ }
25
+ .cucumber #cucumber-header #expand-collapse p, td #cucumber-header #expand-collapse p, th #cucumber-header #expand-collapse p {
26
+ float: right;
27
+ margin: 0 0 0 10px;
28
+ }
29
+ .cucumber .scenario h3, td .scenario h3, th .scenario h3, .background h3 {
30
+ font-size: 11px;
31
+ padding: 3px;
32
+ margin: 0;
33
+ background: #65c400;
34
+ color: white;
35
+ font-weight: bold;
36
+ }
37
+
38
+ .background h3 {
39
+ font-size: 1.2em;
40
+ background: #666;
41
+ }
42
+
43
+ .cucumber h1, td h1, th h1 {
44
+ margin: 0px 10px 0px 10px;
45
+ padding: 10px;
46
+ font-family: "Lucida Grande", Helvetica, sans-serif;
47
+ font-size: 2em;
48
+ position: absolute;
49
+ }
50
+ .cucumber h4, td h4, th h4 {
51
+ margin-bottom: 2px;
52
+ }
53
+ .cucumber div.feature, td div.feature, th div.feature {
54
+ padding: 2px;
55
+ margin: 0px 10px 5px 10px;
56
+ }
57
+ .cucumber div.examples, td div.examples, th div.examples {
58
+ padding: 0em 0em 0em 1em;
59
+ }
60
+ .cucumber .stats, td .stats, th .stats {
61
+ margin: 2em;
62
+ }
63
+ .cucumber .summary ul.features li, td .summary ul.features li, th .summary ul.features li {
64
+ display: inline;
65
+ }
66
+ .cucumber .step_name, td .step_name, th .step_name {
67
+ float: left;
68
+ }
69
+ .cucumber .step_file, td .step_file, th .step_file {
70
+ text-align: right;
71
+ color: #999999;
72
+ }
73
+ .cucumber .step_file a, td .step_file a, th .step_file a {
74
+ color: #999999;
75
+ }
76
+ .cucumber .scenario_file, td .scenario_file, th .scenario_file {
77
+ float: right;
78
+ color: #999999;
79
+ }
80
+ .cucumber .tag, td .tag, th .tag {
81
+ font-weight: bold;
82
+ color: #246ac1;
83
+ }
84
+ .cucumber .backtrace, td .backtrace, th .backtrace {
85
+ margin-top: 0;
86
+ margin-bottom: 0;
87
+ margin-left: 1em;
88
+ color: black;
89
+ }
90
+ .cucumber a, td a, th a {
91
+ text-decoration: none;
92
+ color: #be5c00;
93
+ }
94
+ .cucumber a:hover, td a:hover, th a:hover {
95
+ text-decoration: underline;
96
+ }
97
+ .cucumber a:visited, td a:visited, th a:visited {
98
+ font-weight: normal;
99
+ }
100
+ .cucumber a div.examples, td a div.examples, th a div.examples {
101
+ margin: 5px 0px 5px 15px;
102
+ color: black;
103
+ }
104
+ .cucumber .outline table, td .outline table, th .outline table {
105
+ margin: 0px 0px 5px 10px;
106
+ }
107
+ .cucumber table, td table, th table {
108
+ border-collapse: collapse;
109
+ }
110
+ .cucumber table td, td table td, th table td {
111
+ padding: 3px 3px 3px 5px;
112
+ }
113
+ .cucumber table td.failed, .cucumber table td.passed, .cucumber table td.skipped, .cucumber table td.pending, .cucumber table td.undefined, td table td.failed, td table td.passed, td table td.skipped, td table td.pending, td table td.undefined, th table td.failed, th table td.passed, th table td.skipped, th table td.pending, th table td.undefined {
114
+ padding-left: 18px;
115
+ padding-right: 10px;
116
+ }
117
+ .cucumber table td.failed, td table td.failed, th table td.failed {
118
+ border-left: 5px solid #c20000;
119
+ border-bottom: 1px solid #c20000;
120
+ background: #fffbd3;
121
+ color: #c20000;
122
+ }
123
+ .cucumber table td.passed, td table td.passed, th table td.passed {
124
+ border-left: 5px solid #65c400;
125
+ border-bottom: 1px solid #65c400;
126
+ background: #dbffb4;
127
+ color: #3d7700;
128
+ }
129
+ .cucumber table td.skipped, td table td.skipped, th table td.skipped {
130
+ border-left: 5px solid aqua;
131
+ border-bottom: 1px solid aqua;
132
+ background: #e0ffff;
133
+ color: #001111;
134
+ }
135
+ .cucumber table td.pending, td table td.pending, th table td.pending {
136
+ border-left: 5px solid #faf834;
137
+ border-bottom: 1px solid #faf834;
138
+ background: #fcfb98;
139
+ color: #131313;
140
+ }
141
+ .cucumber table td.undefined, td table td.undefined, th table td.undefined {
142
+ border-left: 5px solid #faf834;
143
+ border-bottom: 1px solid #faf834;
144
+ background: #fcfb98;
145
+ color: #131313;
146
+ }
147
+ .cucumber table td.message, td table td.message, th table td.message {
148
+ border-left: 5px solid aqua;
149
+ border-bottom: 1px solid aqua;
150
+ background: #e0ffff;
151
+ color: #001111;
152
+ }
153
+ .cucumber ol, td ol, th ol {
154
+ list-style: none;
155
+ margin: 0px;
156
+ padding: 0px;
157
+ }
158
+ .cucumber ol li.step, td ol li.step, th ol li.step {
159
+ padding: 3px 3px 3px 18px;
160
+ margin: 5px 0px 5px 5px;
161
+ }
162
+ .cucumber ol li, td ol li, th ol li {
163
+ margin: 0em 0em 0em 1em;
164
+ padding: 0em 0em 0em 0.2em;
165
+ }
166
+ .cucumber ol li span.param, td ol li span.param, th ol li span.param {
167
+ font-weight: bold;
168
+ }
169
+ .cucumber ol li.failed, td ol li.failed, th ol li.failed {
170
+ border-left: 5px solid #c20000;
171
+ border-bottom: 1px solid #c20000;
172
+ background: #fffbd3;
173
+ color: #c20000;
174
+ }
175
+ .cucumber ol li.passed, td ol li.passed, th ol li.passed {
176
+ border-left: 5px solid #65c400;
177
+ border-bottom: 1px solid #65c400;
178
+ background: #dbffb4;
179
+ color: #3d7700;
180
+ }
181
+ .cucumber ol li.skipped, td ol li.skipped, th ol li.skipped {
182
+ border-left: 5px solid aqua;
183
+ border-bottom: 1px solid aqua;
184
+ background: #e0ffff;
185
+ color: #001111;
186
+ }
187
+ .cucumber ol li.pending, td ol li.pending, th ol li.pending {
188
+ border-left: 5px solid #faf834;
189
+ border-bottom: 1px solid #faf834;
190
+ background: #fcfb98;
191
+ color: #131313;
192
+ }
193
+ .cucumber ol li.undefined, td ol li.undefined, th ol li.undefined {
194
+ border-left: 5px solid #faf834;
195
+ border-bottom: 1px solid #faf834;
196
+ background: #fcfb98;
197
+ color: #131313;
198
+ }
199
+ .cucumber ol li.message, td ol li.message, th ol li.message {
200
+ border-left: 5px solid aqua;
201
+ border-bottom: 1px solid aqua;
202
+ background: #e0ffff;
203
+ color: #001111;
204
+ margin-left: 10px;
205
+ }
206
+ .cucumber #summary, td #summary, th #summary {
207
+ margin: 0px;
208
+ padding: 5px 10px;
209
+ text-align: right;
210
+ top: 0px;
211
+ right: 0px;
212
+ float: right;
213
+ }
214
+ .cucumber #summary p, td #summary p, th #summary p {
215
+ margin: 0 0 0 2px;
216
+ }
217
+ .cucumber #summary #totals, td #summary #totals, th #summary #totals {
218
+ font-size: 1.2em;
219
+ }
220
+
221
+ .ruby {
222
+ font-size: 12px;
223
+ font-family: monospace;
224
+ color: white;
225
+ background: black;
226
+ padding: 0.1em 0 0.2em 0;
227
+ }
228
+ .ruby .keyword {
229
+ color: #ff6600;
230
+ }
231
+ .ruby .constant {
232
+ color: #339999;
233
+ }
234
+ .ruby .attribute {
235
+ color: white;
236
+ }
237
+ .ruby .global {
238
+ color: white;
239
+ }
240
+ .ruby .module {
241
+ color: white;
242
+ }
243
+ .ruby .class {
244
+ color: white;
245
+ }
246
+ .ruby .string {
247
+ color: #66ff00;
248
+ }
249
+ .ruby .ident {
250
+ color: white;
251
+ }
252
+ .ruby .method {
253
+ color: #ffcc00;
254
+ }
255
+ .ruby .number {
256
+ color: white;
257
+ }
258
+ .ruby .char {
259
+ color: white;
260
+ }
261
+ .ruby .comment {
262
+ color: #9933cc;
263
+ }
264
+ .ruby .symbol {
265
+ color: white;
266
+ }
267
+ .ruby .regex {
268
+ color: #44b4cc;
269
+ }
270
+ .ruby .punct {
271
+ color: white;
272
+ }
273
+ .ruby .escape {
274
+ color: white;
275
+ }
276
+ .ruby .interp {
277
+ color: white;
278
+ }
279
+ .ruby .expr {
280
+ color: white;
281
+ }
282
+ .ruby .offending {
283
+ background: #333333;
284
+ }
285
+ .ruby .linenum {
286
+ width: 75px;
287
+ padding: 0.1em 1em 0.2em 0;
288
+ color: black;
289
+ background: #fffbd3;
290
+ }
291
+ </style>
292
+ <script type="text/javascript">/*!
293
+ * jQuery JavaScript Library v1.4.2
294
+ * http://jquery.com/
295
+ *
296
+ * Copyright 2010, John Resig
297
+ * Dual licensed under the MIT or GPL Version 2 licenses.
298
+ * http://jquery.org/license
299
+ *
300
+ * Includes Sizzle.js
301
+ * http://sizzlejs.com/
302
+ * Copyright 2010, The Dojo Foundation
303
+ * Released under the MIT, BSD, and GPL Licenses.
304
+ *
305
+ * Date: Sat Feb 13 22:33:48 2010 -0500
306
+ */
307
+ (function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
308
+ e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
309
+ j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
310
+ "&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
311
+ true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
312
+ Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
313
+ (d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
314
+ a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
315
+ "find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
316
+ function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
317
+ c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
318
+ L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
319
+ "isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
320
+ a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
321
+ d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
322
+ a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
323
+ !c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
324
+ true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
325
+ var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
326
+ parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
327
+ false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
328
+ s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
329
+ applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
330
+ else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
331
+ a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
332
+ w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
333
+ cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
334
+ i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
335
+ " ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
336
+ this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
337
+ e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
338
+ c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
339
+ a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
340
+ function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
341
+ k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
342
+ C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
343
+ null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
344
+ e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
345
+ f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
346
+ if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
347
+ fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
348
+ d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
349
+ "events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
350
+ a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
351
+ isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
352
+ {setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
353
+ if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
354
+ e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
355
+ "_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
356
+ d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
357
+ !a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
358
+ toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
359
+ u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
360
+ function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
361
+ if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
362
+ e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
363
+ t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
364
+ g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
365
+ for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
366
+ 1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
367
+ CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
368
+ relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
369
+ l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
370
+ h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
371
+ CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
372
+ g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
373
+ text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
374
+ setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
375
+ h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
376
+ m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
377
+ "="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
378
+ h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
379
+ !h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
380
+ h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
381
+ q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
382
+ if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
383
+ (function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
384
+ function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
385
+ gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
386
+ c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
387
+ {},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
388
+ "string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
389
+ d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
390
+ a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
391
+ 1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
392
+ a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
393
+ c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
394
+ wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
395
+ prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
396
+ this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
397
+ return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
398
+ ""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
399
+ this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
400
+ u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
401
+ 1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
402
+ return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
403
+ ""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
404
+ c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
405
+ c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
406
+ function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
407
+ Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
408
+ "border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
409
+ a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
410
+ a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
411
+ "string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
412
+ serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
413
+ function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
414
+ global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
415
+ e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
416
+ "&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
417
+ false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
418
+ false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
419
+ c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
420
+ d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
421
+ g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
422
+ 1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
423
+ "json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
424
+ if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
425
+ this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
426
+ "olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
427
+ animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
428
+ j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
429
+ this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
430
+ "number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
431
+ c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
432
+ this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
433
+ this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
434
+ e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
435
+ c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
436
+ function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
437
+ this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
438
+ k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
439
+ f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
440
+ a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
441
+ c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
442
+ d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
443
+ f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
444
+ "pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
445
+ e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
446
+
447
+ SCENARIOS = "h3[id^='scenario_'],h3[id^=background_]";
448
+
449
+ $(document).ready(function() {
450
+ $(SCENARIOS).css('cursor', 'pointer');
451
+ $(SCENARIOS).click(function() {
452
+ $(this).siblings().toggle(250);
453
+ });
454
+
455
+ $("#collapser").css('cursor', 'pointer');
456
+ $("#collapser").click(function() {
457
+ $(SCENARIOS).siblings().hide();
458
+ });
459
+
460
+ $("#expander").css('cursor', 'pointer');
461
+ $("#expander").click(function() {
462
+ $(SCENARIOS).siblings().show();
463
+ });
464
+ })
465
+
466
+ function moveProgressBar(percentDone) {
467
+ $("cucumber-header").css('width', percentDone +"%");
468
+ }
469
+ function makeRed(element_id) {
470
+ $('#'+element_id).css('background', '#C40D0D');
471
+ $('#'+element_id).css('color', '#FFFFFF');
472
+ }
473
+ function makeYellow(element_id) {
474
+ $('#'+element_id).css('background', '#FAF834');
475
+ $('#'+element_id).css('color', '#000000');
476
+ }
477
+
478
+ </script>
479
+ </head>
480
+ <body>
481
+ <!-- Step count 13--><div class="cucumber">
482
+ <div id="cucumber-header">
483
+ <div id="label">
484
+ <br><h1>Desktop Gem Search - DETAILED REPORT</h1>
485
+ </div>
486
+ <div id="summary">
487
+ <p></p>
488
+ <p></p>
489
+ <div id="expand-collapse">
490
+ <p id="expander">Expand All</p>
491
+ <p id="collapser">Collapse All</p>
492
+ </div>
493
+ </div>
494
+ <style type="text/css">td, th {color: black; font: normal 11.5px 'Lucida Grande', Helvetica, sans-serif;}</script></div></style>
495
+ <div class="feature">
496
+ <br><br><br><br><pre><font color="black"><pre class="comment"># Name : Gem Search<br># Description : covers scenarios under RubyGem search<br># Author : Chandra sekaran<br># Important Note : To run this feature add APP=RUBYGEMS in cucumber run command<br># Cucumber run cmd : cucumber -p desktop_dev_chrome -t @rq_rubygems APP=RUBYGEMS<br># : you can use any desktop browser profile in -p<br># Rake run cmd : rake desktop_rubygems_search<br></pre></font><table style="width:80%; font:13px;" border="2" align="center">
497
+ <tr>
498
+ <td style="background-color: #d3ecfc;"></td>
499
+ <td colspan="2" style="background-color: #d3ecfc;"></td>
500
+ <td colspan="6" align="center" style="background-color: #d3ecfc;"><b>Steps</b></td>
501
+ <td style="background-color: #d3ecfc;"></td>
502
+ </tr>
503
+ <tr>
504
+ <th style="background-color: #d3ecfc;" font="size: 15px;"><b>Sr No</b></th>
505
+ <th style="background-color: #d3ecfc;" font="size: 15px;"><b>Scenario ID</b></th>
506
+ <th style="background-color: #d3ecfc;" font="size: 15px;"><b>Scenario Title</b></th>
507
+ <th style="background-color: #d3ecfc;" font="size: 15px;"><b>Total</b></th>
508
+ <th style="background-color: #d3ecfc;" font="size: 15px;"><b>Passed</b></th>
509
+ <th style="background-color: #d3ecfc;" font="size: 15px;"><b>Failed</b></th>
510
+ <th style="background-color: #d3ecfc;" font="size: 15px;"><b>Skipped</b></th>
511
+ <th style="background-color: #d3ecfc;" font="size: 15px;"><b>Pending</b></th>
512
+ <th style="background-color: #d3ecfc;" font="size: 15px;"><b>Undefined</b></th>
513
+ <th style="background-color: #d3ecfc;" font="size: 15px;"><b>Result</b></th>
514
+ </tr>
515
+ <tr>
516
+ <td>1</td>
517
+ <td><span style="color:green">02</span></td>
518
+ <td width="40%"> Find a given static gem name in rubygems.org web site</td>
519
+ <td>7</td>
520
+ <td style="background-color: #b0f9c3;">7</td>
521
+ <td>0</td>
522
+ <td>0</td>
523
+ <td>0</td>
524
+ <td>0</td>
525
+ <td style="background-color: #b0f9c3;">Passed</td>
526
+ </tr>
527
+ <tr>
528
+ <td>2</td>
529
+ <td><span style="color:green">03</span></td>
530
+ <td width="40%"> Find a given gem from global test data file in rubygems.org web site</td>
531
+ <td>6</td>
532
+ <td style="background-color: #b0f9c3;">6</td>
533
+ <td>0</td>
534
+ <td>0</td>
535
+ <td>0</td>
536
+ <td>0</td>
537
+ <td style="background-color: #b0f9c3;">Passed</td>
538
+ </tr>
539
+ <tr>
540
+ <td style="background-color: #d3ecfc;"></td>
541
+ <td style="background-color: #d3ecfc;"></td>
542
+ <td align="right" style="background-color: #d3ecfc;"><b>Total<b></b></b></td>
543
+ <td style="background-color: #d3ecfc;"><b>13</b></td>
544
+ <td style="background-color: #d3ecfc;"><b>13</b></td>
545
+ <td style="background-color: #d3ecfc;"><b>0</b></td>
546
+ <td style="background-color: #d3ecfc;"><b>0</b></td>
547
+ <td style="background-color: #d3ecfc;"><b>0</b></td>
548
+ <td style="background-color: #d3ecfc;"><b>0</b></td>
549
+ <td style="background-color: #d3ecfc;"></td>
550
+ </tr>
551
+ </table></pre>
552
+ <span class="tag">@rq_rubygems</span><h2 style="color: black;"><span class="val">Feature: Fetch the details of a gem from rubygems.org having the maximum downloads</span></h2>
553
+ <p class="narrative"></p>
554
+ <div class="background">
555
+ <h3 id="background_0">
556
+ <span class="keyword">Background</span> <span class="val">Login to rubygems.org website</span>
557
+ </h3>
558
+ <ol>
559
+ <li id="features\desktop\rubygems_search\gem_search_feature_14" class="step passed">
560
+ <div class="step_name">
561
+ <span class="keyword">Given </span><span class="step val">the user is on the rubygems.org home page</span>
562
+ </div>
563
+ <div class="step_file"><span>step_definitions/desktop/gem_search.rb:5</span></div>
564
+ </li> <script type="text/javascript">moveProgressBar('7.6');</script><li id="features\desktop\rubygems_search\gem_search_feature_15" class="step passed">
565
+ <div class="step_name">
566
+ <span class="keyword">And </span><span class="step val">the user is signed in</span>
567
+ </div>
568
+ <div class="step_file"><span>step_definitions/desktop/gem_search.rb:10</span></div>
569
+ </li>
570
+ <li class="step message">Sign in successful</li> <script type="text/javascript">moveProgressBar('15.3');</script>
571
+ </ol>
572
+ </div>
573
+ <div class="scenario">
574
+ <span class="tag">@tc_02</span><span class="scenario_file">features/desktop/rubygems_search/gem_search.feature:18</span><h3 id="scenario_1">
575
+ <span class="keyword">Scenario:</span> <span class="val">Find a given static gem name in rubygems.org web site</span>
576
+ </h3>
577
+ <ol> <script type="text/javascript">moveProgressBar('23.0');</script> <script type="text/javascript">moveProgressBar('30.7');</script><li id="features\desktop\rubygems_search\gem_search_feature_19" class="step passed">
578
+ <div class="step_name">
579
+ <span class="keyword">When </span><span class="step val">the user enters "<span class="param">watir</span>" in search textbox and press enter</span>
580
+ </div>
581
+ <div class="step_file"><span>step_definitions/desktop/gem_search.rb:20</span></div>
582
+ </li> <script type="text/javascript">moveProgressBar('38.4');</script><li id="features\desktop\rubygems_search\gem_search_feature_20" class="step passed">
583
+ <div class="step_name">
584
+ <span class="keyword">Then </span><span class="step val">the user should be redirected to gem list page of "<span class="param">watir</span>" gem</span>
585
+ </div>
586
+ <div class="step_file"><span>step_definitions/desktop/gem_search.rb:25</span></div>
587
+ </li> <script type="text/javascript">moveProgressBar('46.1');</script><li id="features\desktop\rubygems_search\gem_search_feature_21" class="step passed">
588
+ <div class="step_name">
589
+ <span class="keyword">When </span><span class="step val">the user selects the gem having the maximum downloads</span>
590
+ </div>
591
+ <div class="step_file"><span>step_definitions/desktop/gem_search.rb:30</span></div>
592
+ </li>
593
+ <li class="step message">The gem 'watir-webdriver 0.7.0' has the maximum downloads</li> <script type="text/javascript">moveProgressBar('53.8');</script><li id="features\desktop\rubygems_search\gem_search_feature_22" class="step passed">
594
+ <div class="step_name">
595
+ <span class="keyword">Then </span><span class="step val">the user should be shown the gem description page</span>
596
+ </div>
597
+ <div class="step_file"><span>step_definitions/desktop/gem_search.rb:36</span></div>
598
+ </li> <script type="text/javascript">moveProgressBar('61.5');</script><li id="features\desktop\rubygems_search\gem_search_feature_23" class="step passed">
599
+ <div class="step_name">
600
+ <span class="keyword">And </span><span class="step val">the user is signed out</span>
601
+ </div>
602
+ <div class="step_file"><span>step_definitions/desktop/gem_search.rb:15</span></div>
603
+ </li>
604
+ <li class="step message">Sign out successful</li> <script type="text/javascript">moveProgressBar('69.2');</script>
605
+ </ol>
606
+ </div>
607
+ <div class="scenario">
608
+ <span class="tag">@tc_03</span><span class="scenario_file">features\desktop\rubygems_search\gem_search.feature:26</span><h3 id="scenario_2">
609
+ <span class="keyword">Scenario:</span> <span class="val">Find a given gem from global test data file in rubygems.org web site</span>
610
+ </h3>
611
+ <ol> <script type="text/javascript">moveProgressBar('76.9');</script> <script type="text/javascript">moveProgressBar('84.6');</script><li id="features\desktop\rubygems_search\gem_search_feature_27" class="step passed">
612
+ <div class="step_name">
613
+ <span class="keyword">When </span><span class="step val">the user searches for a gem name from test data</span>
614
+ </div>
615
+ <div class="step_file"><span>step_definitions/desktop/gem_search.rb:41</span></div>
616
+ </li>
617
+ <li class="step message">Sign in successful</li> <script type="text/javascript">moveProgressBar('92.3');</script><li id="features\desktop\rubygems_search\gem_search_feature_28" class="step passed">
618
+ <div class="step_name">
619
+ <span class="keyword">And </span><span class="step val">the user selects the gem having the maximum downloads</span>
620
+ </div>
621
+ <div class="step_file"><span>step_definitions/desktop/gem_search.rb:30</span></div>
622
+ </li>
623
+ <li class="step message">The gem 'actionmailer-ironruby 0.2.0' has the maximum downloads</li> <script type="text/javascript">moveProgressBar('100.0');</script><li id="features\desktop\rubygems_search\gem_search_feature_29" class="step passed">
624
+ <div class="step_name">
625
+ <span class="keyword">Then </span><span class="step val">the user should be shown the gem description page</span>
626
+ </div>
627
+ <div class="step_file"><span>step_definitions/desktop/gem_search.rb:36</span></div>
628
+ </li> <script type="text/javascript">moveProgressBar('107.6');</script><li id="features\desktop\rubygems_search\gem_search_feature_30" class="step passed">
629
+ <div class="step_name">
630
+ <span class="keyword">And </span><span class="step val">the user is signed out</span>
631
+ </div>
632
+ <div class="step_file"><span>step_definitions/desktop/gem_search.rb:15</span></div>
633
+ </li>
634
+ <li class="step message">Sign out successful</li> <script type="text/javascript">moveProgressBar('115.3');</script>
635
+ </ol>
636
+ </div>
637
+ </div>
638
+ <br><br><br><br><br><br><style type="text/css">td, th {color: black; font: normal 11.5px 'Lucida Grande', Helvetica, sans-serif;}</script></div></style>
639
+ </div>
640
+ <p></p>
641
+ <footer id="footer"><div style="background-color: #363636;">
642
+ <img src="data:image/png;base64,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" height="30px"><div><font color="white" size="2">Executed on 05-21-2015 11:04:54 <br> Executed in ASPIRE1339 (Windows_NT) / Firefox (32.0.3)</font></div>
643
+ <style type="text/css">#footer {position : fixed;margin-top : 35px;text-align:center;width: 100%;height: 63px;bottom: 0px; left: 0px;}</style>
644
+ </div></footer><script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>1m8.146s seconds</strong>";</script><script type="text/javascript">document.getElementById('totals').innerHTML = "2 scenarios (2 passed)<br />13 steps (13 passed)";</script>
645
+ </div>
646
+ </body>
647
+ </html>