From c0da3547bb14f7e222cfdd5c0cca8e46c6adf5f5 Mon Sep 17 00:00:00 2001 From: Paul Morganthall Date: Thu, 27 Jun 2013 01:02:47 -0400 Subject: [PATCH 001/663] correct capitalization of About This Mac The word "This" was capitalized sometime in the 10.3 days. Our docs should match what the student sees. --- sites/installfest/macintosh.step | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sites/installfest/macintosh.step b/sites/installfest/macintosh.step index 0e9c6c95a..b32dcc249 100644 --- a/sites/installfest/macintosh.step +++ b/sites/installfest/macintosh.step @@ -2,7 +2,7 @@ step "Learn your Mac OS X Version" do message <<-MARKDOWN * Click on the Apple icon in the top left of your screen. -* Select "About this Mac" +* Select "About This Mac" * In the window that comes up, under the title "Mac OS X" there will be a version number. * If it starts with 10.8, you have **Mountain Lion**. * If it starts with 10.7, you have **Lion**. @@ -11,7 +11,7 @@ step "Learn your Mac OS X Version" do * If it starts with 10.4, you have **Tiger**. * If it starts with 10.3, you have **Panther**. -* Write down the one you have and close the "About this Mac" window. +* Write down the one you have and close the "About This Mac" window. Below is an example. @@ -38,4 +38,4 @@ step "Choose your instructions" do message "Otherwise, you can try following the Panther instructions, but be prepared for some things to be difficult." link "osx_panther" end -end \ No newline at end of file +end From bda014a6ddcfcde53f0a5246b8e1020c88980c9e Mon Sep 17 00:00:00 2001 From: Rachel Myers Date: Mon, 8 Jul 2013 00:57:42 -0700 Subject: [PATCH 002/663] Starting a javascript curriculum, you guys!! --- sites/javascript/javascript.step | 50 +++++++++++++++++ .../numbers_strings_and_booleans.step | 56 +++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 sites/javascript/javascript.step create mode 100644 sites/javascript/numbers_strings_and_booleans.step diff --git a/sites/javascript/javascript.step b/sites/javascript/javascript.step new file mode 100644 index 000000000..265074306 --- /dev/null +++ b/sites/javascript/javascript.step @@ -0,0 +1,50 @@ +message <<-MARKDOWN + +### Goal + +This curriculum is meant to introduce the javascript programming language. It builds on the [Front End RailsBridge Curriculum](http://curriculum.railsbridge.org/frontend). Anyone familiar with HTML, will be able to work through this curriculum. + +In the workshop, we will: + +* Learn about and use the primitive types of javascript, +* Learn about and use functions and callbacks, +* Understand scope, and the changing value of the keyword 'this' +* Use javascript to create a simple single page application. +* Use git to version control our application. + +This is just a rough guideline, not a mandate. Some steps you'll go over and some you'll go under. It'll all work out by the end of the day. :D + +### Requirements + +We're going to be working with: + +* [Chrome](https://www.google.com/chrome) + (If you're experienced with the developer tools in another browser, that may work too.) +* The code editor of your choice. + [Sublime Text 2](http://www.sublimetext.com/2) is popular and free to download, but you should buy a license if you keep using it after the workshop. + [Komodo Edit](http://www.activestate.com/komodo-edit) is a good open source option, if you don't have one yet. + +Optional tools if you're checking in to GitHub: + +* Git +* Your [GitHub](http://github.com) account + +### Working Effectively and Efficiently + +We highly recommend you do the following: + +* Open your browser fresh or hide any windows you already have open. + * Bring up one window with two tabs + * One for this content + * One for interacting with your app. +* Open your text editor and _do not ever close it_. We're not quitters. +* Hide all extra applications. Turn off twitter, IM, and all other distractions. + +By minimizing the number of things you interact with, you reduce the +amount of time spent switching between them and the context lost as +you work through the lessons. Having 50 tabs open in your web +browser gets confusing and wastes time. + +MARKDOWN + +next_step 'numbers_strings_and_booleans' diff --git a/sites/javascript/numbers_strings_and_booleans.step b/sites/javascript/numbers_strings_and_booleans.step new file mode 100644 index 000000000..16b360b1b --- /dev/null +++ b/sites/javascript/numbers_strings_and_booleans.step @@ -0,0 +1,56 @@ +goals do + goal "Use the browser's console" + goal "Understand the primitive types of numbers, strings and booleans" +end + +overview do + message <<-MARKDOWN + +## Using the Browser's Console + +We'll experiment with javascript using the console of our browser. We recommend everyone use Chrome, for consistency through the class. + +To open the console on a Mac, use the shortcut `Command` + `Option` + `J`. To open the console in Windows or Linux, use the keyboard shortcut `Control` + `Shift` + `J`. Alternatively, right click, select 'Inspect Element' from the right-click menu, and click the 'Console' tab. + +The console is where we can experiment with javascript, by typing after the `>` prompt. The console will also show us the return value of an expression we type and will display any errors we get. + +## Numbers +MARKDOWN + +steps do + + step { message "In the console, type `5` and press enter. Notice that it will display the value `5` in response. Thus, our return value for the expression `5` is `5`." } + step { message "Try `typeof(5)` and note what kind of object `5` is."} + step { message "Try creating decimal numbers."} + step { message "Try creating irrational numbers (a number that can only be fully expressed as the ratio of two numbers, like 2/3). Notice that it will convert it to a decimal."} + step { message "Try adding or subtracting numbers in the console by typing `6 + 12` or `15 - 32`."} + step { message "Try an edge case with numbers, like `12 / 0`." } + step { message "To assign a number to a variable, type `favoriteNumber = 5` into the console prompt. Then use favoriteNumber in the next expression, like `favoriteNumber + 7`. Variables in Javascript are traditionally 'camel-cased' with capital letters separating words in a variable name." } + step { message "More complex math, like exponents, will require us to use the Math object, as in `Math.pow(12, 2)`, but that shouldn't stop us from trying it out!"} + step { message "Bonus Points: Check out [Mozilla Developer Network Docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math) for the Math object, and try using some of the other methods they describe in your console!"} +end + + +message <<-MARKDOWN +## Strings +Strings are units of text, and we encapsulate them in `'single quotes'` or `"double quotes"`. +MARKDOWN +steps do + step { message "Try creating a string by typing `'this is a string'` into the console prompt."} + step { message "You can grab a string's individual characters with `'this is a string'[6]`, where the number 6 is the index of the character you want, starting at 0."} + step { message "Concatenate strings with `'my name is' + 'Michelle' + '.'`."} + step { message "Assign a string to a variable by writing `myName = 'Michelle'`."} + step { message "Use the variable as you would a literal string: `'Is your name ' + myName + '?'`"} + step { message "If you're ahead of others, check out the [MDN docs on strings](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)."} +end + + +message <<-MARKDOWN +## Booleans (True/False) +Booleans are a type of object used to indicate true or false values in Javascript. +MARKDOWN +steps do + step {message "fill this shit in later."} +end + +end \ No newline at end of file From 61a25dd869ae63f4b46f8e426a1ee067c9476b2b Mon Sep 17 00:00:00 2001 From: Rachel Myers Date: Sat, 13 Jul 2013 12:03:12 -0700 Subject: [PATCH 003/663] Add a few more elements introduced by HTML5 --- sites/frontend/HTML_tags.step | 39 +++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/sites/frontend/HTML_tags.step b/sites/frontend/HTML_tags.step index ff0c34619..aa6535f12 100644 --- a/sites/frontend/HTML_tags.step +++ b/sites/frontend/HTML_tags.step @@ -160,11 +160,50 @@ are a ton of other tags you might use: message <<-MARKDOWN + And HTML5 introduced lots of new HTML tags to make the HTML more *symantic*, meaning the tags should describe the content they describe. Some of the new elements introduced by HTML5 include: + + MARKDOWN + + table border: "1", cellspacing: "0", cellpadding: "3", align: "center" do + tr { + th "Tag" + th "Purpose" + } + tr { + td "section" + td "A section of a document" + } + tr { + td "nav" + td "A navigation section" + } + tr { + td "header" + td "The header for a page. (This is different from the head element, which contains metadata about the page!)" + } + tr { + td "footer" + td "The footer for a page" + } + tr { + td "main" + td "The important content on a page" + } + tr{ + td "aside" + td "Content not essential to the main content" + } + end + + message <<-MARKDOWN + Don't try to memorize all the tags! You can always look them up on sites like: * [Mozilla Developer Network](https://developer.mozilla.org/en/HTML/Element) * [DocHub](http://dochub.io/#html/) + + ## Try This What happens if you change the `
    ` to `
      `? (Don't forget to change the closing tag, too.) From 02cbbec965cb53573655a017dcaab13cbe24e659 Mon Sep 17 00:00:00 2001 From: Rachel Myers Date: Sat, 13 Jul 2013 13:15:25 -0700 Subject: [PATCH 004/663] It's apparently spelled 'semantic':grey_exclamation: --- sites/frontend/HTML_tags.step | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sites/frontend/HTML_tags.step b/sites/frontend/HTML_tags.step index aa6535f12..b9d529af5 100644 --- a/sites/frontend/HTML_tags.step +++ b/sites/frontend/HTML_tags.step @@ -160,7 +160,7 @@ are a ton of other tags you might use: message <<-MARKDOWN - And HTML5 introduced lots of new HTML tags to make the HTML more *symantic*, meaning the tags should describe the content they describe. Some of the new elements introduced by HTML5 include: + And HTML5 introduced lots of new HTML tags to make the HTML more *semantic*, meaning the tags should describe the content they describe. Some of the new elements introduced by HTML5 include: MARKDOWN From ec22d9fb139412bc546d89980d4b9b190e9be4b7 Mon Sep 17 00:00:00 2001 From: Andre Arko Date: Sat, 13 Jul 2013 13:44:17 -0700 Subject: [PATCH 005/663] Clarify where to drag files. In the class I TAed, students were dragging the `index.html` file directly onto the already open text editor window, which simply inserted the contents of the file into their `hello.html`. This was pretty confusing to them, so I had to teach them about dragging onto the text editor icon instead of the window that was open. --- sites/frontend/make_a_web_page.step | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sites/frontend/make_a_web_page.step b/sites/frontend/make_a_web_page.step index 74568abca..bf939b8b1 100644 --- a/sites/frontend/make_a_web_page.step +++ b/sites/frontend/make_a_web_page.step @@ -7,7 +7,7 @@ steps do step do message <<-MARKDOWN -Drag the 'index.html' page from your project into a web browser. Your browser should look like this: +Drag the 'index.html' page from your project onto the icon of your web browser. Your browser should look like this: @@ -16,7 +16,7 @@ Drag the 'index.html' page from your project into a web browser. Your browser sh step do message <<-MARKDOWN -Drag the 'index.html' page from your project into a text editor. The text editor should look like this: +Drag the 'index.html' page from your project onto the icon of your text editor. The text editor should look like this: From e0323c5a5fe55760bcc006f22c8718f57be478fc Mon Sep 17 00:00:00 2001 From: Jed Schneider Date: Sun, 14 Jul 2013 09:15:40 -0400 Subject: [PATCH 006/663] Rails 4 routing and attr_accessible changes * Routing ** Rails 4 moved the root example from bottom to top of routes file ** the static index.html page is now a dynamic file at welcome#index and not a static file in public * attr_accessible ** Rails 4 has moved Mass Assignment responsibilities to an external gem ** In order to mass assign object attributes through a model you have to add the strong_paramters gem --- .../curriculum/hooking_up_votes_and_topics.step | 13 +++++++++++++ sites/curriculum/setting_the_default_page.step | 16 ++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/sites/curriculum/hooking_up_votes_and_topics.step b/sites/curriculum/hooking_up_votes_and_topics.step index aea6e0886..5a560e13e 100644 --- a/sites/curriculum/hooking_up_votes_and_topics.step +++ b/sites/curriculum/hooking_up_votes_and_topics.step @@ -17,6 +17,19 @@ goals { } steps { + step 'Edit the Gemfile' do + message "In order to save votes through the Topic model we must allow Rails to whitelist specific attributes for each model." + message "In Rails 4, this functionality is provided in a separate gem. We need to install that gem in order to save the votes." + message "Open the `Gemfile` in your text editor. Under the declaration for the `rails` gem add the following line of code:" + + source_code :ruby, <<-RUBY +gem 'strong_parameters' + RUBY + end + + step "Apply the Gemfile changes" do + console "bundle install" + end step { message "Edit `app/models/topic.rb` so that it looks like this:" diff --git a/sites/curriculum/setting_the_default_page.step b/sites/curriculum/setting_the_default_page.step index 153194f87..b4d3c4efe 100644 --- a/sites/curriculum/setting_the_default_page.step +++ b/sites/curriculum/setting_the_default_page.step @@ -13,20 +13,12 @@ goals { steps { step "Add a root route" do - message "Open `config/routes.rb`. Near the end of the file but before the final end add `root :to => 'topics#index'`. When you are done the last few lines should look like this:" + message "Open `config/routes.rb`. Search the file for 'root' (near the top) uncomment that line and change it to read `root 'topics#index'`. When you are done the line should look like this:" + end source_code :ruby, <<-RUBY -root :to => 'topics#index' +root 'topics#index' RUBY - end - - step "Remove the static welcome file" do - - message " You also need to remove the welcome aboard page for the new route to work." - - console "git rm public/index.html" - - end step "Confirm your changes" do message "Go back to . You should be taken to the topics list automatically." @@ -36,7 +28,7 @@ root :to => 'topics#index' explanation { message <<-MARKDOWN - * `root :to => 'topics#index'` is a rails route that says the default + * `root 'topics#index'` is a rails route that says the default address for your site is `topics#index`. `topics#index` is the topics list page (the topics controller with the index action). * Rails routes control how URLs (web addresses) get matched with From 0e953e2e0f6785cf9301f965ebeb1b24db26e695 Mon Sep 17 00:00:00 2001 From: Jed Schneider Date: Sun, 14 Jul 2013 10:14:26 -0400 Subject: [PATCH 007/663] updating rails -v references --- sites/installfest/get_a_sticker.step | 2 +- sites/installfest/osx_lion.step | 2 +- sites/installfest/osx_railsinstaller.step | 2 +- sites/installfest/windows.step | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sites/installfest/get_a_sticker.step b/sites/installfest/get_a_sticker.step index ef52084db..0da802848 100644 --- a/sites/installfest/get_a_sticker.step +++ b/sites/installfest/get_a_sticker.step @@ -32,7 +32,7 @@ verify "tool installation" do fuzzy_result "Bundler version 1{FUZZY}.x.x{/FUZZY}" console "rails -v" - fuzzy_result "Rails 3.2{FUZZY}.x{/FUZZY}" + fuzzy_result "Rails 4.0{FUZZY}.x{/FUZZY}" end message "If this works - proceed to build the sticker app." diff --git a/sites/installfest/osx_lion.step b/sites/installfest/osx_lion.step index 232acf197..bf6301973 100644 --- a/sites/installfest/osx_lion.step +++ b/sites/installfest/osx_lion.step @@ -42,7 +42,7 @@ step "Install Rails" do console "gem install rails" verify do console "rails -v" - fuzzy_result "Rails 3.2{FUZZY}.x{/FUZZY}" + fuzzy_result "Rails 4.0{FUZZY}.x{/FUZZY}" end end diff --git a/sites/installfest/osx_railsinstaller.step b/sites/installfest/osx_railsinstaller.step index fd8e91567..823213e16 100644 --- a/sites/installfest/osx_railsinstaller.step +++ b/sites/installfest/osx_railsinstaller.step @@ -41,7 +41,7 @@ verify "successful installation" do fuzzy_result "ruby 1.9.3{FUZZY}p194{/FUZZY}" console "rails -v" - fuzzy_result "Rails 3.2{FUZZY}.x{/FUZZY}" + fuzzy_result "Rails 4.0{FUZZY}.x{/FUZZY}" end step "Generate an ssh public key" do diff --git a/sites/installfest/windows.step b/sites/installfest/windows.step index 03789a9e5..518e4bf79 100644 --- a/sites/installfest/windows.step +++ b/sites/installfest/windows.step @@ -58,7 +58,7 @@ step "Sanity Check" do fuzzy_result "ruby 1.9.3{FUZZY}p125{/FUZZY}" console "rails -v" - fuzzy_result "Rails 3.2{FUZZY}.x{/FUZZY}" + fuzzy_result "Rails 4.0{FUZZY}.x{/FUZZY}" end From c4c573431dad26b00c454123a0eb010a7b398682 Mon Sep 17 00:00:00 2001 From: Aimee Knight Date: Tue, 16 Jul 2013 21:02:14 -0400 Subject: [PATCH 008/663] added warning for Heroku deployment --- lib/step.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/step.rb b/lib/step.rb index a8f5e1f8c..b4fb61097 100644 --- a/lib/step.rb +++ b/lib/step.rb @@ -80,7 +80,7 @@ def consider_deploying div :class => "deploying" do h1 "Deploying" blockquote do - message "Before the next step, you could try deploying your app to Heroku!" + message "Before the next step, you could try deploying your app to Heroku! Note, that until you reach the stage 'Setting The Default Page', Heroku may tell you 'The page you were looking for doesn't exist'." link 'deploying_to_heroku' end end From 89bf52a4b1678bfe533e0eda0cae2122a37020a8 Mon Sep 17 00:00:00 2001 From: Alex Chaffee Date: Wed, 17 Jul 2013 22:07:55 -0700 Subject: [PATCH 009/663] insert --- lib/step.rb | 9 +++++++++ spec/step_spec.rb | 27 +++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/lib/step.rb b/lib/step.rb index b4fb61097..8db062fbb 100644 --- a/lib/step.rb +++ b/lib/step.rb @@ -40,6 +40,15 @@ def page_name @doc_path.split('/').last.split('.').first end + def insert file + # todo: unify into common 'find & process a document file' unit + dir = File.dirname(@doc_path) + path = File.join(dir, "#{file}.step") # todo: other file types + src = File.read(path) + step = Step.new(src: src, doc_path: path) + widget step + end + ## steps @@header_sections = { diff --git a/spec/step_spec.rb b/spec/step_spec.rb index 3acf92769..0bf273b7b 100644 --- a/spec/step_spec.rb +++ b/spec/step_spec.rb @@ -154,5 +154,32 @@ def html_doc(src = "step 'hello'; step 'goodbye'") HTML end end + + describe 'insert' do + it 'renders a stepfile inside another stepfile' do + path = dir 'testing-insert' do + file "outer.step", <<-RUBY +div 'hello' +insert 'inner' +insert 'inner' +div 'goodbye' + RUBY + file "inner.step", <<-RUBY +div 'yum' + RUBY + end + + outer_path = File.join(path, 'outer.step') + src = File.read(outer_path) + + step = Step.new(src: src, + doc_path: outer_path + ) + @html = step.to_html + + assert_loosely_equal @html, "
      hello
      yum
      yum
      goodbye
      " + + end + end end From f39fa501afb665a42b4be9ab047bf46f854a177a Mon Sep 17 00:00:00 2001 From: Jed Schneider Date: Thu, 18 Jul 2013 07:48:47 -0600 Subject: [PATCH 010/663] remove references to attr_accessible --- sites/curriculum/hooking_up_votes_and_topics.step | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/sites/curriculum/hooking_up_votes_and_topics.step b/sites/curriculum/hooking_up_votes_and_topics.step index 5a560e13e..9aabeb244 100644 --- a/sites/curriculum/hooking_up_votes_and_topics.step +++ b/sites/curriculum/hooking_up_votes_and_topics.step @@ -17,26 +17,12 @@ goals { } steps { - step 'Edit the Gemfile' do - message "In order to save votes through the Topic model we must allow Rails to whitelist specific attributes for each model." - message "In Rails 4, this functionality is provided in a separate gem. We need to install that gem in order to save the votes." - message "Open the `Gemfile` in your text editor. Under the declaration for the `rails` gem add the following line of code:" - - source_code :ruby, <<-RUBY -gem 'strong_parameters' - RUBY - end - - step "Apply the Gemfile changes" do - console "bundle install" - end step { message "Edit `app/models/topic.rb` so that it looks like this:" source_code :ruby, <<-RUBY class Topic < ActiveRecord::Base - attr_accessible :description, :title has_many :votes, dependent: :destroy end RUBY @@ -46,7 +32,6 @@ end message "Edit `app/models/vote.rb` so that it looks like this:" source_code :ruby, <<-RUBY class Vote < ActiveRecord::Base - attr_accessible :topic_id belongs_to :topic end RUBY From 85e488728c2d8d351598521b901f0805e752716e Mon Sep 17 00:00:00 2001 From: Aimee Knight Date: Thu, 18 Jul 2013 13:11:05 -0400 Subject: [PATCH 011/663] reorder steps for Heroku deployment --- lib/step.rb | 2 +- sites/curriculum/CRUD_with_scaffolding.step | 4 +--- sites/curriculum/allow_people_to_vote.step | 2 +- sites/curriculum/running_your_application_locally.step | 2 -- sites/curriculum/setting_the_default_page.step | 4 +++- 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/step.rb b/lib/step.rb index b4fb61097..a8f5e1f8c 100644 --- a/lib/step.rb +++ b/lib/step.rb @@ -80,7 +80,7 @@ def consider_deploying div :class => "deploying" do h1 "Deploying" blockquote do - message "Before the next step, you could try deploying your app to Heroku! Note, that until you reach the stage 'Setting The Default Page', Heroku may tell you 'The page you were looking for doesn't exist'." + message "Before the next step, you could try deploying your app to Heroku!" link 'deploying_to_heroku' end end diff --git a/sites/curriculum/CRUD_with_scaffolding.step b/sites/curriculum/CRUD_with_scaffolding.step index 258b9bec4..5bd2c83fd 100644 --- a/sites/curriculum/CRUD_with_scaffolding.step +++ b/sites/curriculum/CRUD_with_scaffolding.step @@ -104,6 +104,4 @@ explanation { MARKDOWN } -consider_deploying - -next_step "voting_on_topics" +next_step "setting_the_default_page" diff --git a/sites/curriculum/allow_people_to_vote.step b/sites/curriculum/allow_people_to_vote.step index 3a9ce3f47..dfaf22a7e 100644 --- a/sites/curriculum/allow_people_to_vote.step +++ b/sites/curriculum/allow_people_to_vote.step @@ -71,4 +71,4 @@ explanation { consider_deploying -next_step "setting_the_default_page" +next_step "redirect_to_the_topics_list_after_creating_a_new_topic" diff --git a/sites/curriculum/running_your_application_locally.step b/sites/curriculum/running_your_application_locally.step index 97bc29b6d..38ec8c6f2 100644 --- a/sites/curriculum/running_your_application_locally.step +++ b/sites/curriculum/running_your_application_locally.step @@ -30,6 +30,4 @@ explanation do message "Control+C is a way of closing or cancelling terminal programs. Since rails server runs forever, you need to interrupt it with Control+C." end -consider_deploying - next_step "creating_a_migration" diff --git a/sites/curriculum/setting_the_default_page.step b/sites/curriculum/setting_the_default_page.step index 153194f87..b195ee635 100644 --- a/sites/curriculum/setting_the_default_page.step +++ b/sites/curriculum/setting_the_default_page.step @@ -92,4 +92,6 @@ explanation { MARKDOWN } -next_step "redirect_to_the_topics_list_after_creating_a_new_topic" +consider_deploying + +next_step "voting_on_topics" From fe1e1a23b388770f869100a46356d27e84346b8d Mon Sep 17 00:00:00 2001 From: Charlie Moseley Date: Fri, 26 Jul 2013 23:07:18 -0700 Subject: [PATCH 012/663] Add the rails_12factor heroku gem to support deploys on rails4.: --- sites/installfest/create_and_deploy_a_rails_app.step | 2 ++ sites/installfest/get_a_sticker.step | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/sites/installfest/create_and_deploy_a_rails_app.step b/sites/installfest/create_and_deploy_a_rails_app.step index 81b803f4f..de46dbb52 100644 --- a/sites/installfest/create_and_deploy_a_rails_app.step +++ b/sites/installfest/create_and_deploy_a_rails_app.step @@ -170,8 +170,10 @@ To this: group :development, :test do gem 'sqlite3' end + group :production do gem 'pg' + gem 'rails_12factor' end RUBY diff --git a/sites/installfest/get_a_sticker.step b/sites/installfest/get_a_sticker.step index 0da802848..eaf645325 100644 --- a/sites/installfest/get_a_sticker.step +++ b/sites/installfest/get_a_sticker.step @@ -192,12 +192,13 @@ gem 'sqlite3' message "Remove this line and replace it with:" source_code :ruby, <<-RUBY -group :development do +group :development, :test do gem 'sqlite3' end group :production do gem 'pg' + gem 'rails_12factor' end RUBY From 78f566f7626e1ea9ced52da66694b797d0e865c4 Mon Sep 17 00:00:00 2001 From: Travis Grathwell Date: Sat, 27 Jul 2013 00:34:47 -0700 Subject: [PATCH 013/663] Add rails_12factor gem when deploying to heroku in curriculum --- sites/curriculum/deploying_to_heroku.step | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sites/curriculum/deploying_to_heroku.step b/sites/curriculum/deploying_to_heroku.step index 2a088688d..bb3864da6 100644 --- a/sites/curriculum/deploying_to_heroku.step +++ b/sites/curriculum/deploying_to_heroku.step @@ -27,12 +27,13 @@ gem 'sqlite3' message "**Remove that line** and replace it with:" source_code :ruby, <<-RUBY -group :development do +group :development, :test do gem 'sqlite3' end group :production do gem 'pg' + gem 'rails_12factor' end RUBY end From 861e8dd67ef23cda0032d39b0b112badbd9d5fcc Mon Sep 17 00:00:00 2001 From: Charlie Moseley Date: Sat, 27 Jul 2013 07:03:32 -0700 Subject: [PATCH 014/663] Adds CPU type checking for OSX during version check. --- sites/installfest/macintosh.step | 8 +++++++- sites/installfest/osx_railsinstaller.step | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/sites/installfest/macintosh.step b/sites/installfest/macintosh.step index b32dcc249..df8ab8d50 100644 --- a/sites/installfest/macintosh.step +++ b/sites/installfest/macintosh.step @@ -11,7 +11,13 @@ step "Learn your Mac OS X Version" do * If it starts with 10.4, you have **Tiger**. * If it starts with 10.3, you have **Panther**. -* Write down the one you have and close the "About This Mac" window. +* Write down the Mac OS X version you have. +* In addition, to the right of the "Processor", there will be the a processor type. + * If it ends with **Intel Core i7**, **Intel Core i5**, or **Intel Core i3**, you are good to go. + * If it ends with **Intel Core 2 Duo**, you are good to go. + * If it ends with **Intel Core Duo** or something else, you are **NOT** good to go. Please flag down a volunteer. + +* Once complete, you may close the "About This Mac" window. Below is an example. diff --git a/sites/installfest/osx_railsinstaller.step b/sites/installfest/osx_railsinstaller.step index 823213e16..225623764 100644 --- a/sites/installfest/osx_railsinstaller.step +++ b/sites/installfest/osx_railsinstaller.step @@ -1,3 +1,5 @@ +important "If you wrote down **Core Duo** as your processor type in the previous step, **DO NOT** continue with these steps. Please flag down a volunteer for additional help." + message "These instructions should work on Snow Leopard, Lion, and Mountain Lion." step "Run RailsInstaller" do From d9fc9f2fdff1fac5ef47f8553861079c4fc6ba01 Mon Sep 17 00:00:00 2001 From: Charlie Moseley Date: Sat, 27 Jul 2013 07:11:37 -0700 Subject: [PATCH 015/663] Added an updated image to show processor type. --- sites/installfest/img/AboutThisMac.png | Bin 0 -> 68164 bytes sites/installfest/img/MacOSXSnowLeopard.png | Bin 47459 -> 0 bytes sites/installfest/macintosh.step | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 sites/installfest/img/AboutThisMac.png delete mode 100644 sites/installfest/img/MacOSXSnowLeopard.png diff --git a/sites/installfest/img/AboutThisMac.png b/sites/installfest/img/AboutThisMac.png new file mode 100644 index 0000000000000000000000000000000000000000..70096b2cd6d85f1f8abd698ce290c13f5200a1d7 GIT binary patch literal 68164 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 z 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 k`yUQ|@M=(y+I;^!I@gJ{`!}@V6Zj`1p& Date: Sat, 27 Jul 2013 10:54:20 -0700 Subject: [PATCH 016/663] Corrections from railsbridge 20130727 Wrong directory to rm -rf specified for linux clean up Rails 4 is valid too rails installer can install ruby on osx --- sites/curriculum/curriculum.step | 4 ++-- sites/installfest/clean_up.step | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sites/curriculum/curriculum.step b/sites/curriculum/curriculum.step index fe81498bc..73548990f 100755 --- a/sites/curriculum/curriculum.step +++ b/sites/curriculum/curriculum.step @@ -38,8 +38,8 @@ day... unless I really screwed something up. :D We're going to be working with: -* ruby 1.9.3 installed via rvm (mac or linux) or RailsInstaller (windows) -* rails 3.2.x +* ruby 1.9.3 installed via rvm (mac or linux) or RailsInstaller (mac or windows) +* rails 3.2.x or rails 4.0.x * bundler * sqlite * the text editor of your choice diff --git a/sites/installfest/clean_up.step b/sites/installfest/clean_up.step index 6ac286c6d..6c6568993 100644 --- a/sites/installfest/clean_up.step +++ b/sites/installfest/clean_up.step @@ -15,7 +15,7 @@ step "Delete the test_app from your computer" do message "Open your home directory and drag the test_app folder to the trash." end option "Linux" do - console "rm -rf ~/test_app" + console "rm -rf ~/railsbridge/test_app" end end step "Delete the sticker app from your computer" do From 533e9cdf56d60c34eb8b14d151e74e034a41629e Mon Sep 17 00:00:00 2001 From: Mr Rogers Date: Sat, 27 Jul 2013 18:09:58 -0400 Subject: [PATCH 017/663] added notes for rails 3.x users about routes and getting the root route starting --- sites/curriculum/setting_the_default_page.step | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sites/curriculum/setting_the_default_page.step b/sites/curriculum/setting_the_default_page.step index b121eb421..16cf8a0be 100644 --- a/sites/curriculum/setting_the_default_page.step +++ b/sites/curriculum/setting_the_default_page.step @@ -14,12 +14,16 @@ steps { step "Add a root route" do message "Open `config/routes.rb`. Search the file for 'root' (near the top) uncomment that line and change it to read `root 'topics#index'`. When you are done the line should look like this:" + + message "(Rails 3.x users should add `root to: 'topics#index'` and will need to remove their `public/index.html` file)." + end source_code :ruby, <<-RUBY root 'topics#index' RUBY + step "Confirm your changes" do message "Go back to . You should be taken to the topics list automatically." end From 4060a12c1568679b0eaf8f9a84a08c1b2c5427d5 Mon Sep 17 00:00:00 2001 From: Travis Gaff Date: Sat, 27 Jul 2013 15:46:00 -0700 Subject: [PATCH 018/663] At this point in the curriculum the votes routes do not exist - remove. --- sites/curriculum/setting_the_default_page.step | 7 ------- 1 file changed, 7 deletions(-) diff --git a/sites/curriculum/setting_the_default_page.step b/sites/curriculum/setting_the_default_page.step index b121eb421..0b056297a 100644 --- a/sites/curriculum/setting_the_default_page.step +++ b/sites/curriculum/setting_the_default_page.step @@ -46,13 +46,6 @@ explanation { ```` $ rake routes - votes GET /votes(.:format) votes#index - POST /votes(.:format) votes#create - new_vote GET /votes/new(.:format) votes#new - edit_vote GET /votes/:id/edit(.:format) votes#edit - vote GET /votes/:id(.:format) votes#show - PUT /votes/:id(.:format) votes#update - DELETE /votes/:id(.:format) votes#destroy topics GET /topics(.:format) topics#index POST /topics(.:format) topics#create new_topic GET /topics/new(.:format) topics#new From 69efadea1b60936f37060a08c6ca77b7b7b97c5e Mon Sep 17 00:00:00 2001 From: Travis Grathwell Date: Sun, 28 Jul 2013 11:08:00 -0700 Subject: [PATCH 019/663] Updated route console output to look like Rails 4 version Added references to in-browser routes page (/rails/info) --- .../img/rails4_rails_info_routing.png | Bin 0 -> 38766 bytes sites/curriculum/setting_the_default_page.step | 10 +++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 sites/curriculum/img/rails4_rails_info_routing.png diff --git a/sites/curriculum/img/rails4_rails_info_routing.png b/sites/curriculum/img/rails4_rails_info_routing.png new file mode 100644 index 0000000000000000000000000000000000000000..463b07d50100025d7c34b2a111fea840392ed5c8 GIT binary patch literal 38766 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 F{{wu$XB7Yd literal 0 HcmV?d00001 diff --git a/sites/curriculum/setting_the_default_page.step b/sites/curriculum/setting_the_default_page.step index 62aef7d95..36201759d 100644 --- a/sites/curriculum/setting_the_default_page.step +++ b/sites/curriculum/setting_the_default_page.step @@ -50,17 +50,25 @@ explanation { ```` $ rake routes + Prefix Verb URI Pattern Controller#Action topics GET /topics(.:format) topics#index POST /topics(.:format) topics#create new_topic GET /topics/new(.:format) topics#new edit_topic GET /topics/:id/edit(.:format) topics#edit topic GET /topics/:id(.:format) topics#show + PATCH /topics/:id(.:format) topics#update PUT /topics/:id(.:format) topics#update DELETE /topics/:id(.:format) topics#destroy - root / topics#index + root GET / topics#index ```` This shows all the URLs your application responds to. The code that starts with colons are variables so :id means the id number of the record. The code in parenthesis is optional. + In Rails 4, you can also get this information on your site in development. Go to http://localhost:3000/rails/info and you'll see something like this: + + + + You'll also see that table in Rails 4 whenever you try to access an invalid route (try http://localhost:3000/sandwich) + ### Exploring Routes (optional) Now you can have a look at the paths that are available in your app. From 2a213df89f1d806fb36be4e89d8516e9b622070e Mon Sep 17 00:00:00 2001 From: Troy Denkinger Date: Thu, 1 Aug 2013 17:08:53 -0400 Subject: [PATCH 020/663] Changed test runner instructions to run under 'bundle exec' to match CI. The tests were failing under the prior instructions. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 54c19cfdc..29f51f100 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Then open in a web browser. If you make any changes, and especially before a pull request, run - rake spec + bundle exec rspec which will run some unit tests and also do syntax validation on all pages, to make sure you didn't break anything. From 1f28bd3d01f5a73c76a35002fc317da81394c7ce Mon Sep 17 00:00:00 2001 From: Troy Denkinger Date: Fri, 2 Aug 2013 07:56:48 -0400 Subject: [PATCH 021/663] Incorporated suggestion to use 'rake spec' but run it in context of the bundled gems. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 29f51f100..a8008bd29 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Then open in a web browser. If you make any changes, and especially before a pull request, run - bundle exec rspec + bundle exec rake spec which will run some unit tests and also do syntax validation on all pages, to make sure you didn't break anything. From 78439cda2306159630ce7afc6eb6c69f7881df94 Mon Sep 17 00:00:00 2001 From: Travis Grathwell Date: Wed, 14 Aug 2013 13:26:04 -0700 Subject: [PATCH 022/663] Fix malformed Textmate link and removed reference to missing image --- sites/installfest/install_textmate.step | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sites/installfest/install_textmate.step b/sites/installfest/install_textmate.step index 07f2b9384..b6a86ef09 100644 --- a/sites/installfest/install_textmate.step +++ b/sites/installfest/install_textmate.step @@ -7,15 +7,13 @@ MARKDOWN important "Microsoft Word and other word processing programs, including TextEdit and Notepad, will not work." step "Download Textmate 1.5.11" do - message "Download the [Textmate] installer](http://archive.textmate.org/TextMate_1.5.11_r1635.zip)." + message "Download the [Textmate installer](http://archive.textmate.org/TextMate_1.5.11_r1635.zip)." end step 'Select "Open with Archive Utility" in the file save dialog' do message "This should be the default." - message "It will extract from the zip archive the Textmate application inside of your Downloads folder. It should look like this:" - - message "![textmate.png](textmate.png)" + message "It will extract from the zip archive the Textmate application inside of your Downloads folder." end From 56c811f9af7f6a74c0b338c5b30ed9aa0a941268 Mon Sep 17 00:00:00 2001 From: Travis Grathwell Date: Thu, 15 Aug 2013 22:50:41 -0700 Subject: [PATCH 023/663] Intermedia Curric: Add scary red thing telling you to not spend forever on Devise or Bootstrap --- sites/intermediate-rails/install_devise.step | 5 +++++ .../intermediate-rails/make_it_pretty_with_bootstrap.step | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/sites/intermediate-rails/install_devise.step b/sites/intermediate-rails/install_devise.step index c5cd2713b..e58f84b1a 100644 --- a/sites/intermediate-rails/install_devise.step +++ b/sites/intermediate-rails/install_devise.step @@ -8,6 +8,11 @@ message <<-MARKDOWN MARKDOWN end +important do + h2 "Timebox It!" + p "The purpose of this section is to allow users to log in to your app and demonstrate how to add external libraries like Devise using the Gemfile. If you find yourself needing to write more than a couple of lines of code to make that happen, you may have gone too far. Talk to a TA!" +end + discussion do message <<-MARKDOWN * What is devise? diff --git a/sites/intermediate-rails/make_it_pretty_with_bootstrap.step b/sites/intermediate-rails/make_it_pretty_with_bootstrap.step index 8979f1999..16919e122 100644 --- a/sites/intermediate-rails/make_it_pretty_with_bootstrap.step +++ b/sites/intermediate-rails/make_it_pretty_with_bootstrap.step @@ -1,11 +1,16 @@ requirements do -message <<-MARKDOWN + message <<-MARKDOWN * The site should use Bootstrap for a superfun modern look. * When logged in, the user's email address should appear in the upper-right corner of a navigation bar. MARKDOWN img class: 'noborder', src: 'img/header.png' end +important do + h2 "Timebox It!" + p "The purpose of this section is to make your app a bit prettier and demonstrate how to add CSS frameworks like Bootstrap using the Gemfile. Don't get snagged on the details of getting your CSS exactly right, unless that's valuable to you." +end + discussion do message <<-MARKDOWN * Chrome developer tools / Firefox Firebug plugin — how to use ’em! From baec3a423bb63649502bcb5e8476ece94e8ab3dd Mon Sep 17 00:00:00 2001 From: "Natasha A. Hull" Date: Sat, 17 Aug 2013 14:40:46 -0700 Subject: [PATCH 024/663] Changed files to show whether the page dealt with hello.html or index.html --- sites/frontend/basic_javascript.step | 3 ++- sites/frontend/jquery.step | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/sites/frontend/basic_javascript.step b/sites/frontend/basic_javascript.step index b1a8c358d..7d719a9bc 100644 --- a/sites/frontend/basic_javascript.step +++ b/sites/frontend/basic_javascript.step @@ -6,7 +6,8 @@ end steps do step do - message "CSS lets you make your pages look good, but it's **JavaScript** that makes most web pages interactive. Add a script tag to your page so you can get started writing some JavaScript. At the very bottom of your document, under your paragraphs, add this:" + message "Now that we have completed the challenges for your index.html and related CSS files, we will be looking back at your hello.html file." + message "CSS lets you make your pages look good, but it's **JavaScript** that makes most web pages interactive. Pull up your hello.html file again. Add a script tag to your page so you can get started writing some JavaScript. At the very bottom of your document, under your paragraphs, add this:" source_code :html, < diff --git a/sites/frontend/jquery.step b/sites/frontend/jquery.step index 7d624e829..703754e82 100644 --- a/sites/frontend/jquery.step +++ b/sites/frontend/jquery.step @@ -6,7 +6,7 @@ end steps do step do - message "First, let's include the jQuery code in our HTML file, so we can start working with it. Google and Microsoft both host public copies of jQuery that you can link to, so you don't even need to download it. (The browser can download files from other sites, if you include links to them.) Add this line inside the `head` of your document:" + message "First, let's include the jQuery code in our index.html file (not the hello.html file), so we can start working with it. Google and Microsoft both host public copies of jQuery that you can link to, so you don't even need to download it. (The browser can download files from other sites, if you include links to them.) Add this line inside the `head` of your document:" source_code :html, <<-HTML HTML From 8419dee7d462c8e76d84531712ff25df12d396b7 Mon Sep 17 00:00:00 2001 From: Adrien Lamothe Date: Sat, 17 Aug 2013 14:42:28 -0700 Subject: [PATCH 025/663] Add a note to teaching tips to be well rested the day of teaching. --- sites/workshop/teaching_tips.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sites/workshop/teaching_tips.md b/sites/workshop/teaching_tips.md index 030ee44c9..8dcd35665 100644 --- a/sites/workshop/teaching_tips.md +++ b/sites/workshop/teaching_tips.md @@ -22,6 +22,7 @@ The command line as Zork. You are "in" a room (a directory) and can either act o * Advertise that the Friday night setup is **required**, send notes out 1 week ahead of time, so people can get started ahead of time * USB keys and/or DVDs with the big stuff like XCode * Ask the venue about bike policy (can participants bring bikes inside?) and communicate that to participants ahead of time. +* Get a good night's sleep before the class, it is important to be well rested and fresh when teaching or TA'ing. * Start with live coding - watch and type along, don't even use slides. make sure students & teachers irb prompts display line numbers, so we can say go to line 32 * Go into IRB to practice basic concepts first, don't discuss what agile and a variable is in the abstract right away. Learning by doing first and talking later worked better. * At the very beginning, show a designed version of app so people can recognize it as finished product like other web sites they see: screenshots are on Sarah Allen's site. From 958ca845596b0e2b5235d1af853a33407758b775 Mon Sep 17 00:00:00 2001 From: Travis Grathwell Date: Sat, 17 Aug 2013 14:55:37 -0700 Subject: [PATCH 026/663] Rewrite site index spec to care a little less about the current available sites --- spec/site_index_spec.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spec/site_index_spec.rb b/spec/site_index_spec.rb index b9f09217a..868b013cf 100644 --- a/spec/site_index_spec.rb +++ b/spec/site_index_spec.rb @@ -8,8 +8,9 @@ @site_index = SiteIndex.new(site_name: 'frontend') end - it "lists all sites in the /sites/ directory, sorted, except 'es'" do - @site_index.sites.should =~ ["curriculum", "docs", "frontend", "installfest", "intermediate-rails", "ruby", "workshop"] + it "lists all sites in the /sites/ directory" do + all_sites = Dir['sites/**'].map { |site_path| site_path.sub('sites/', '') } + @site_index.sites.should =~ all_sites end it "emboldens the current site, links other sites" do From f154e1dd3517d625b35e57501ae6ea3b7e297376 Mon Sep 17 00:00:00 2001 From: Steven Miyakawa SAM Date: Sat, 17 Aug 2013 14:58:25 -0700 Subject: [PATCH 027/663] Add tip that welcome page will not show if using Rails 4.0.x. Some students using Rails 4.0.x were confused about why the Welcome page showed on their localhost, but not when they pushed to Heroku. --- sites/installfest/create_and_deploy_a_rails_app.step | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sites/installfest/create_and_deploy_a_rails_app.step b/sites/installfest/create_and_deploy_a_rails_app.step index de46dbb52..d316682de 100644 --- a/sites/installfest/create_and_deploy_a_rails_app.step +++ b/sites/installfest/create_and_deploy_a_rails_app.step @@ -85,7 +85,7 @@ rails server BASH message "**Note:** the above are three separate commands. Type each line into the terminal separately, not as one single command." - + message "Wait until your console shows that the Webrick server has started (just like before). Then, in the browser, visit " message "Click *New user* to create a user to make sure we can save to the database. Click *Back* to see your results. (The window where you ran `rails server` will display debugging information as you do so.)" @@ -98,7 +98,7 @@ step "Use git" do tip "If your prompt doesn't already show that you are (still) in the test_app folder" do console "cd test_app" end - + console <<-BASH git init BASH @@ -144,7 +144,7 @@ Git remote heroku added OUTPUT message "Heroku apps are automatically given lyrical names that look like '[adjective]-[noun]-[number]'. Each name is different." - + console "git remote show" result "heroku" @@ -180,7 +180,7 @@ end message "Save the file." tip "Why Sqlite (sqlite3) and PostgreSQL (pg)?" do - message "SQLite and PostgreSQL are different kinds of databases. We're using SQLite for our development and test environments because it's simple to install. We're using PostgreSQL in our production environment because Heroku has done the hard work of installing it for us and it's more powerful than SQLite. We have seperate test, development and production databases by default in Rails." + message "SQLite and PostgreSQL are different kinds of databases. We're using SQLite for our development and test environments because it's simple to install. We're using PostgreSQL in our production environment because Heroku has done the hard work of installing it for us and it's more powerful than SQLite. We have seperate test, development and production databases by default in Rails." end console <<-BASH @@ -253,9 +253,11 @@ Migrating to CreateUsers (20111204065949) tip "To quickly open your heroku application in a browser" do console "heroku open" end - + message "The URL for your app is *application name*.heroku.com -- so with the example output in the previous step, it would be floating-winter-18.heroku.com. Verify you see the welcome page. Leave this browser window open." + tip "If using Rails 4.0.x, further configuration is needed to get the welcome page to show on Heroku. You will get a message saying that 'The page you were looking for doesn't exist.' Do not worry about this for now." + message "In the browser, add /users to the end of the URL and hit *enter*. Verify you see the user list page." message "Create and save a new user to verify you can write to the database on Heroku." From 7f443f6034b97bdc4e6c9ad139317148eb5d514b Mon Sep 17 00:00:00 2001 From: Adrien Lamothe Date: Sat, 17 Aug 2013 14:42:28 -0700 Subject: [PATCH 028/663] Add a note to teaching tips to be well rested the day of teaching. [ci skip] --- sites/workshop/teaching_tips.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sites/workshop/teaching_tips.md b/sites/workshop/teaching_tips.md index 030ee44c9..8dcd35665 100644 --- a/sites/workshop/teaching_tips.md +++ b/sites/workshop/teaching_tips.md @@ -22,6 +22,7 @@ The command line as Zork. You are "in" a room (a directory) and can either act o * Advertise that the Friday night setup is **required**, send notes out 1 week ahead of time, so people can get started ahead of time * USB keys and/or DVDs with the big stuff like XCode * Ask the venue about bike policy (can participants bring bikes inside?) and communicate that to participants ahead of time. +* Get a good night's sleep before the class, it is important to be well rested and fresh when teaching or TA'ing. * Start with live coding - watch and type along, don't even use slides. make sure students & teachers irb prompts display line numbers, so we can say go to line 32 * Go into IRB to practice basic concepts first, don't discuss what agile and a variable is in the abstract right away. Learning by doing first and talking later worked better. * At the very beginning, show a designed version of app so people can recognize it as finished product like other web sites they see: screenshots are on Sarah Allen's site. From 23bf9731e47f7c1b274c0c09073785306ef780b1 Mon Sep 17 00:00:00 2001 From: Steven Miyakawa SAM Date: Sat, 17 Aug 2013 15:24:53 -0700 Subject: [PATCH 029/663] Reword tip that I just added about the default welcome page not showing on Heroku if using Rails 4. --- sites/installfest/create_and_deploy_a_rails_app.step | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sites/installfest/create_and_deploy_a_rails_app.step b/sites/installfest/create_and_deploy_a_rails_app.step index d316682de..fa285ca29 100644 --- a/sites/installfest/create_and_deploy_a_rails_app.step +++ b/sites/installfest/create_and_deploy_a_rails_app.step @@ -256,7 +256,7 @@ Migrating to CreateUsers (20111204065949) message "The URL for your app is *application name*.heroku.com -- so with the example output in the previous step, it would be floating-winter-18.heroku.com. Verify you see the welcome page. Leave this browser window open." - tip "If using Rails 4.0.x, further configuration is needed to get the welcome page to show on Heroku. You will get a message saying that 'The page you were looking for doesn't exist.' Do not worry about this for now." + tip "If using Rails 4.0.x, the default welcome page will not show on Heroku. You will get a message saying that 'The page you were looking for doesn't exist.' Do not worry about this for now." message "In the browser, add /users to the end of the URL and hit *enter*. Verify you see the user list page." From c3d75d23665c9491d0f0eda02903c3bbb6b30652 Mon Sep 17 00:00:00 2001 From: Isaac Murchie Date: Sat, 17 Aug 2013 15:39:09 -0700 Subject: [PATCH 030/663] removed superfluous 'feel' --- sites/workshop/more_teacher_training.deck.md | 74 ++++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/sites/workshop/more_teacher_training.deck.md b/sites/workshop/more_teacher_training.deck.md index c710352d3..649672bc8 100644 --- a/sites/workshop/more_teacher_training.deck.md +++ b/sites/workshop/more_teacher_training.deck.md @@ -4,11 +4,11 @@ You're probably at a teacher training for RailsBridge. -This slide deck is a tool to facilitate conversations about teaching best practices and challenges, specifically for RailsBridge workshops. +This slide deck is a tool to facilitate conversations about teaching best practices and challenges, specifically for RailsBridge workshops. It helps to have a whiteboard or those giant sticky notes for the discussions if possible. -### Discussion is key! +### Discussion is key! ### Don't let the presenter(s) do all the talking! # Why RailsBridge? @@ -25,28 +25,28 @@ We're making tech more diverse and more welcoming! * Have you been to a RailsBridge before? How many? * What do you do for a living? Care to share who you work for? * What's your favorite structure in the Bay Area? -* Alternate silly questions: +* Alternate silly questions: * What's your spirit animal? * If you could only eat one food for the rest of your life, what would it be? # What's a RailsBridge? Raise your hand if you've been to a workshop before! - + ### RailsBridge Fun Facts * Founded in 2009 as a variety of initiatives, including Rails Mentors, Rails Bug Smashes, and the Open Workshop Project. * The workshops project was led by Sarah Allen and Sarah Mei. -* Its goal: make the Rails community more diverse and more welcoming to newcomers. +* Its goal: make the Rails community more diverse and more welcoming to newcomers. * Workshops are happening all over the world! # How does a workshop work? There are a few different RailsBridge curricula: - + * Intro to Rails (a.k.a. "Suggestotron") * Intermediate Rails * Intro to Ruby * Front End (HTML, CSS, and a tiny bit of JavaScript). -First, we get all the necessary technologies onto the students' computers. +First, we get all the necessary technologies onto the students' computers. The next day we break into small groups and work through the curriculum. @@ -66,10 +66,10 @@ The next day we break into small groups and work through the curriculum. # Is RailsBridge Open Source? -### WHY YES, THANK YOU FOR ASKING! +### WHY YES, THANK YOU FOR ASKING! ### RAILSBRIDGE IS VERY OPEN SOURCE! -All the materials you're using were created by volunteers, and are on GitHub for forking and editing and using! +All the materials you're using were created by volunteers, and are on GitHub for forking and editing and using! If you see something that could be better, make a pull request. Pull requests are the lifeblood of RailsBridge. @@ -80,17 +80,17 @@ We've made three quasi-arbitrary categories of ways to make your class awesome: ### We want our students to feel: * socially comfortable * technically capable -* like you know what's going on (even if you don't feel like you do). +* like you know what's going on (even if you don't feel like you do). # Discussion: Social Comfort -#### Imagine: +#### Imagine: * You're in a group of strangers * You're trying to do something that sounds really difficult * You've tried some coding tutorials online but got lost / bored / confused -#### How can we help make this easier? -#### How can you help people feel socially comfortable? +#### How can we help make this easier? +#### How can you help people feel socially comfortable? # Social Comfort (Ideas) @@ -109,7 +109,7 @@ We've made three quasi-arbitrary categories of ways to make your class awesome: * Don't hit on people. No sexual advances. None. Even at the after party. * Don't make sexist jokes. Or racist, classist, or ableist jokes. Call people out if they do. * Don't make gender-based generalizations ("Women are better at X, because ...") -* Don't make references to people's bodies or state your opinion of them. +* Don't make references to people's bodies or state your opinion of them. * Don't use slurs. * Don't treat women as delicate flowers; do treat them like normal people. @@ -121,7 +121,7 @@ We've made three quasi-arbitrary categories of ways to make your class awesome: # Technical Capability (Ideas) #### Explain that: * Even professional developers are constantly learning new technologies, so being confused is normal. -* Initial code is often terrible: don't feel feel bad, just refactor! +* Initial code is often terrible: don't feel bad, just refactor! * Mistakes == Learning! #### Dealing with technical concepts: @@ -133,7 +133,7 @@ We've made three quasi-arbitrary categories of ways to make your class awesome: #### Encourage collaboration and interaction * Explicitly encourage students to try to answer each other's questions. * If a question is asked, ask if anyone in the class thinks they can explain. -* Be especially encouraging of the first few questions, to try to get things rolling. +* Be especially encouraging of the first few questions, to try to get things rolling. * Good responses to questions: "I'm glad you asked!" or "I actually wondered that, too." or "Great question!" #### Be Super Positive, Always @@ -146,8 +146,8 @@ We've made three quasi-arbitrary categories of ways to make your class awesome: #### Walk the Middle Path * Don't go too deep for your class level, but also, don't gloss over things. * When trying to be accurate, it's easy to go down a rabbit hole of specificity. Avoid. -* Work with the TAs to make sure no one goes down that rabbit hole. Accountability! -* Explain the big picture of a command *before* they type it in. +* Work with the TAs to make sure no one goes down that rabbit hole. Accountability! +* Explain the big picture of a command *before* they type it in. * i.e., before typing the command to deploy to Heroku, explain the difference between localhost and Heroku. # Discussion (Do you know what's up?) @@ -171,21 +171,21 @@ We've made three quasi-arbitrary categories of ways to make your class awesome: # Know What's Up (More Ideas) #### Don't be afraid to: * Call on people! By name! -* Correct people if they're wrong. Be polite and encouraging. For instance: - * "Well, this might work better and this is why." - * "Can you explain how you came to that conclusion?" +* Correct people if they're wrong. Be polite and encouraging. For instance: + * "Well, this might work better and this is why." + * "Can you explain how you came to that conclusion?" * "Does anyone have a different answer?" -* Ask yourself questions and answer them. +* Ask yourself questions and answer them. # Know What's Up (Even More Ideas) #### Pace yourself! -* Don't go too fast. You will probably go too fast. Check in occasionally to ensure everyone is still with you. -* You can say the same thing THREE TIMES and it will not be boring yet. -* When you ask a question, wait TEN WHOLE SECONDS before saying anything else. People need time to think. -* Don't let the most advanced students dictate the pacing or answer all the questions. +* Don't go too fast. You will probably go too fast. Check in occasionally to ensure everyone is still with you. +* You can say the same thing THREE TIMES and it will not be boring yet. +* When you ask a question, wait TEN WHOLE SECONDS before saying anything else. People need time to think. +* Don't let the most advanced students dictate the pacing or answer all the questions. # Discussion: Challenges -Talk about what problems you might anticipate, and what to do about them. +Talk about what problems you might anticipate, and what to do about them. #### Some issues: * Student is in the wrong class level @@ -204,11 +204,11 @@ Talk about what problems you might anticipate, and what to do about them. #### TAs: How can you best utilize the AWESOME POWER that is a TA? # TAs (Some Ideas) -* TAs can ask questions to encourage students to speak up. -* Ask your TA to explain a concept; they may be more technically advanced than you! +* TAs can ask questions to encourage students to speak up. +* Ask your TA to explain a concept; they may be more technically advanced than you! * TAs can help people who get lost -* Co-teaching is also an option if you feel like you can tag-team. There doesn't have to be a hierarchy. -* If someone falls behind, the TA can take them out of the room to do some 1-on-1, if there's another TA in the room. +* Co-teaching is also an option if you feel like you can tag-team. There doesn't have to be a hierarchy. +* If someone falls behind, the TA can take them out of the room to do some 1-on-1, if there's another TA in the room. # Discussion: Comprehension #### How can you tell if they understand the words you're saying? @@ -217,29 +217,29 @@ Talk about what problems you might anticipate, and what to do about them. # Student Comprehension (Some Ideas) * Pay attention to body language. -* People ask questions most often when they are actively processesing material. If they aren't, it might be that the materials is too easy or hard. Try to figure out which it is! +* People ask questions most often when they are actively processesing material. If they aren't, it might be that the materials is too easy or hard. Try to figure out which it is! #### Calling on people * Calling on people makes the class more interactive and engaging, and less lecture-y. * Don't always ask questions to the whole class: call on individuals by name. -* Consider breaking the class into two teams and addressing questions to teams. +* Consider breaking the class into two teams and addressing questions to teams. * Ask people what they expect a command to produce BEFORE you hit enter. * Ask "How would you do \#\{this\}?" or "If I wanted to do \#\{that\}, what would I do?" # Installfest! #### Keep in mind: -* There will be people with _all_ kinds of computers. +* There will be people with _all_ kinds of computers. * Even though Windows is not an ideal Rails development environment, we're here to encourage people and meet them wherever they are right now. * Do NOT say bad things about Windows, even if it's frustrating. -* If you're not sure about something, grab another volunteer. +* If you're not sure about something, grab another volunteer. # Very Important, Very Practical Things #### Where to find the curriculum: http://docs.railsbridge.org -You need to read the curriculum through, beginning to end, before teaching it. +You need to read the curriculum through, beginning to end, before teaching it. First workshop? Be a TA! #### Where to submit pull requests: https://github.com/railsbridge/docs -We need your help! Thank you!!! \ No newline at end of file +We need your help! Thank you!!! From 944ec03d79592967af2f2005241c8ae69e6a7f97 Mon Sep 17 00:00:00 2001 From: Tracy Weiss Date: Sat, 17 Aug 2013 16:23:07 -0700 Subject: [PATCH 031/663] fixed typo. [ci-skip] --- sites/workshop/more_teacher_training.deck.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sites/workshop/more_teacher_training.deck.md b/sites/workshop/more_teacher_training.deck.md index c710352d3..ed5fe2918 100644 --- a/sites/workshop/more_teacher_training.deck.md +++ b/sites/workshop/more_teacher_training.deck.md @@ -53,7 +53,7 @@ The next day we break into small groups and work through the curriculum. # Typical RailsBridge Schedule * Friday, 6-10pm-ish: installing things over pizza & beer (no formal presentations) - _NB: the Front End workshop doens't have an installfest._ + _NB: the Front End workshop doesn't have an installfest._ * Saturday's schedule, often: * 9-9:30am: Check-in, coffee, bagels From dfbdf73ba3c6dc0b84cec8fd28b84640b85c0cad Mon Sep 17 00:00:00 2001 From: Naomi Quinones Date: Sat, 17 Aug 2013 16:31:11 -0700 Subject: [PATCH 032/663] added javascript_not_java.step, linked to it from javascript.step --- sites/javascript/javascript.step | 2 +- sites/javascript/javascript_not_java.step | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 sites/javascript/javascript_not_java.step diff --git a/sites/javascript/javascript.step b/sites/javascript/javascript.step index 265074306..77cc8ab3e 100644 --- a/sites/javascript/javascript.step +++ b/sites/javascript/javascript.step @@ -47,4 +47,4 @@ browser gets confusing and wastes time. MARKDOWN -next_step 'numbers_strings_and_booleans' +next_step 'javascript_not_java' diff --git a/sites/javascript/javascript_not_java.step b/sites/javascript/javascript_not_java.step new file mode 100644 index 000000000..b14d80159 --- /dev/null +++ b/sites/javascript/javascript_not_java.step @@ -0,0 +1,19 @@ +message <<-MARKDOWN + +### JavaScript is not Java + +JavaScript is more a marketing term given to ECMAscript, which was developed by Netscape in 1995, because Java, a programming language, was popular back then. +But the two are different. + +The purpose of Java is more of a server language. JavaScript was originally meant to run on the client side, but when it didn't catch on, its creators rewrote it to use naming conventions similar to Java. + +JavaScript was meant to manipulate the web document after it was loaded. + +### HTML and JavaScript + +HTML lets you create the elements in your document (web page). JavaScript lets you interact with them. The curriculum that follows assumes an understanding of HTML. If you need more background info, please see the [Railsbridge Frontend Curriculum](http://curriculum.railsbridge.org/frontend). + + +MARKDOWN + +next_step 'clone_a_repo' \ No newline at end of file From c256e6a55a8f17ea42997d86d866737ab1239941 Mon Sep 17 00:00:00 2001 From: Doug May Date: Sat, 17 Aug 2013 17:06:56 -0700 Subject: [PATCH 033/663] fix typos in more_teacher_training.deck; add link to BT git ref --- sites/workshop/more_teacher_training.deck.md | 50 ++++++++++---------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/sites/workshop/more_teacher_training.deck.md b/sites/workshop/more_teacher_training.deck.md index 1901740ef..1cdc0788d 100644 --- a/sites/workshop/more_teacher_training.deck.md +++ b/sites/workshop/more_teacher_training.deck.md @@ -15,9 +15,9 @@ It helps to have a whiteboard or those giant sticky notes for the discussions if We're making tech more diverse and more welcoming! ### How? -* We throw super-welcoming, fun, free workshops -* We provide hella networking opportunities for students and volunteers -* We help our volunteers become more empathetic and better communicators +* We throw super-welcoming, fun, free workshops. +* We provide hella networking opportunities for students and volunteers. +* We help our volunteers become more empathetic and better communicators. # Introductions ### Who are you? @@ -46,14 +46,14 @@ There are a few different RailsBridge curricula: * Intro to Ruby * Front End (HTML, CSS, and a tiny bit of JavaScript). -First, we get all the necessary technologies onto the students' computers. +First, we get all the necessary technologies onto the students' computers (the InstallFest). The next day we break into small groups and work through the curriculum. # Typical RailsBridge Schedule -* Friday, 6-10pm-ish: installing things over pizza & beer (no formal presentations) +* Friday, 6-10pm-ish: InstallFest -- installing things over pizza & beer (no formal presentations) - _NB: the Front End workshop doesn't have an installfest._ + _n.b.: the Front End workshop doesn't have an InstallFest._ * Saturday's schedule, often: * 9-9:30am: Check-in, coffee, bagels @@ -62,7 +62,7 @@ The next day we break into small groups and work through the curriculum. * 12:30-1:30pm: Lunch * 1:30pm-4:30pm: Class! (with a break sometime mid-afternoon) * 4:30-5:00pm: Closing presentation & retros - * 5:00pm-late: Afterparty + * 5:00pm-late: After-party # Is RailsBridge Open Source? @@ -87,7 +87,7 @@ We've made three quasi-arbitrary categories of ways to make your class awesome: #### Imagine: * You're in a group of strangers * You're trying to do something that sounds really difficult -* You've tried some coding tutorials online but got lost / bored / confused +* You've tried some coding tutorials online but got lost / bored / confused. #### How can we help make this easier? #### How can you help people feel socially comfortable? @@ -96,17 +96,17 @@ We've made three quasi-arbitrary categories of ways to make your class awesome: # Social Comfort (Ideas) #### Introductions -* Include name, profession, why are you here, and something silly +* Include name, profession, why are you here, and something silly. * Don't rush, even if you have a big class. -* If someone joins the class late, ask them to introduce themselves +* If someone joins the class late, ask them to introduce themselves. #### Icebreakers -* Name games! Admit upfront that most people are bad at learning new names. -* Get people talking. The more comfortable they are at talking, the more likely they'll speak up when they don't understand something, or to answer someone else's question +* Name games! Admit up front that most people are bad at learning new names. +* Get people talking. The more comfortable they are at talking, the more likely they'll speak up when they don't understand something, or to answer someone else's question. # Social Comfort (More Ideas) #### Try to suppress your (understandable) culturally-influenced sexism -* Don't hit on people. No sexual advances. None. Even at the after party. +* Don't hit on people. No sexual advances. None. Even at the after-party. * Don't make sexist jokes. Or racist, classist, or ableist jokes. Call people out if they do. * Don't make gender-based generalizations ("Women are better at X, because ...") * Don't make references to people's bodies or state your opinion of them. @@ -127,7 +127,7 @@ We've made three quasi-arbitrary categories of ways to make your class awesome: #### Dealing with technical concepts: * Define technical terms! Several times! * Assume anyone you're teaching has zero knowledge but infinite intelligence. -* Remember people's professional and code backgrounds (QA, DBA, C++, Java, JS) and relate where possible. +* Remember people's professional and code backgrounds (QA, DBA, C++, Java, JS) and relate where possible. If they are a cook, try a cooking analogy. # Technical Capability (More Ideas) #### Encourage collaboration and interaction @@ -160,12 +160,12 @@ We've made three quasi-arbitrary categories of ways to make your class awesome: * Cover logistics at the beginning of class * Planned breaks, lunch time * Remind students that there is a closing presentation at the end - * Make sure they know the bathroom is + * Make sure they know where the bathroom is * Encourage them to attend the after-party #### Establish a few ground rules -* Questions are always welcome, even if the student thinks it might be dumb -* Explain that if someone has trouble not getting the expected output, the TAs will help troubleshoot +* Questions are always welcome, even if the student thinks it might be dumb. +* Explain that if someone has trouble (e.g., not getting the expected output), the TAs will help troubleshoot. * If anyone wants to switch classes, tell them they should feel TOTALLY COMFORTABLE switching at any point. # Know What's Up (More Ideas) @@ -204,11 +204,11 @@ Talk about what problems you might anticipate, and what to do about them. #### TAs: How can you best utilize the AWESOME POWER that is a TA? # TAs (Some Ideas) -* TAs can ask questions to encourage students to speak up. -* Ask your TA to explain a concept; they may be more technically advanced than you! -* TAs can help people who get lost -* Co-teaching is also an option if you feel like you can tag-team. There doesn't have to be a hierarchy. -* If someone falls behind, the TA can take them out of the room to do some 1-on-1, if there's another TA in the room. +* TAs can ask questions to encourage students to speak up. +* Ask your TA to explain a concept; they may be more technically advanced than you! +* TAs can help people who get lost. +* Co-teaching is also an option if you feel like you can tag-team. There doesn't have to be a hierarchy. +* If someone falls behind, the TA can take them out of the room to do some 1-on-1, if there's another TA in the room. # Discussion: Comprehension #### How can you tell if they understand the words you're saying? @@ -217,7 +217,7 @@ Talk about what problems you might anticipate, and what to do about them. # Student Comprehension (Some Ideas) * Pay attention to body language. -* People ask questions most often when they are actively processesing material. If they aren't, it might be that the materials is too easy or hard. Try to figure out which it is! +* People ask questions most often when they are actively processing material. If they aren't, it might be that the material is too easy or hard. Try to figure out which it is! #### Calling on people * Calling on people makes the class more interactive and engaging, and less lecture-y. @@ -226,7 +226,7 @@ Talk about what problems you might anticipate, and what to do about them. * Ask people what they expect a command to produce BEFORE you hit enter. * Ask "How would you do \#\{this\}?" or "If I wanted to do \#\{that\}, what would I do?" -# Installfest! +# InstallFest! #### Keep in mind: * There will be people with _all_ kinds of computers. * Even though Windows is not an ideal Rails development environment, we're here to encourage people and meet them wherever they are right now. @@ -242,4 +242,6 @@ First workshop? Be a TA! #### Where to submit pull requests: https://github.com/railsbridge/docs +#### How to submit pull requests: http://railsbridge.github.io/bridge_troll/ + We need your help! Thank you!!! From 5086130c29d3c50247b0f1ba87a4fc0d3619acff Mon Sep 17 00:00:00 2001 From: Naomi Quinones Date: Sat, 17 Aug 2013 17:46:08 -0700 Subject: [PATCH 034/663] modified historical info and added sample code --- sites/javascript/javascript_not_java.step | 8 +++----- sites/javascript/numbers_strings_and_booleans.step | 5 +++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/sites/javascript/javascript_not_java.step b/sites/javascript/javascript_not_java.step index b14d80159..692364f90 100644 --- a/sites/javascript/javascript_not_java.step +++ b/sites/javascript/javascript_not_java.step @@ -2,16 +2,14 @@ message <<-MARKDOWN ### JavaScript is not Java -JavaScript is more a marketing term given to ECMAscript, which was developed by Netscape in 1995, because Java, a programming language, was popular back then. +JavaScript, which was created at Netscape in 1995, was originally called LiveScript but was renamed around the same time that Java was becoming a popular new programming language. But the two are different. -The purpose of Java is more of a server language. JavaScript was originally meant to run on the client side, but when it didn't catch on, its creators rewrote it to use naming conventions similar to Java. - -JavaScript was meant to manipulate the web document after it was loaded. +Whereas Java was meant to run on the server, JavaScript was originally meant to run in the browser and allow the user to manipulate the web document after it was loaded. Nowadays it is also being used as a server-side language. ### HTML and JavaScript -HTML lets you create the elements in your document (web page). JavaScript lets you interact with them. The curriculum that follows assumes an understanding of HTML. If you need more background info, please see the [Railsbridge Frontend Curriculum](http://curriculum.railsbridge.org/frontend). +HTML lets you create the elements in your document (web page). JavaScript lets you interact with them. The curriculum that follows assumes an understanding of HTML. If you need more background info, please see the [Railsbridge Frontend Curriculum](/frontend). MARKDOWN diff --git a/sites/javascript/numbers_strings_and_booleans.step b/sites/javascript/numbers_strings_and_booleans.step index 16b360b1b..946d646bd 100644 --- a/sites/javascript/numbers_strings_and_booleans.step +++ b/sites/javascript/numbers_strings_and_booleans.step @@ -47,10 +47,11 @@ end message <<-MARKDOWN ## Booleans (True/False) -Booleans are a type of object used to indicate true or false values in Javascript. +Booleans are a type of object used to indicate true or false values in Javascript. They are most often used to help check whether a condition is true or not, or whether something exists. MARKDOWN steps do - step {message "fill this shit in later."} + step {message "Try creating a Boolean by typing `'x = false'`."} + step {message "`Type x==false?console.log(`'yes`'):console.log("no");`."} end end \ No newline at end of file From bad68de1dbced023573018ef72dcac4eec9ee946 Mon Sep 17 00:00:00 2001 From: Naomi Quinones Date: Sat, 17 Aug 2013 18:15:09 -0700 Subject: [PATCH 035/663] fixed sample code for booleans section --- sites/javascript/numbers_strings_and_booleans.step | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sites/javascript/numbers_strings_and_booleans.step b/sites/javascript/numbers_strings_and_booleans.step index 946d646bd..c91b88fef 100644 --- a/sites/javascript/numbers_strings_and_booleans.step +++ b/sites/javascript/numbers_strings_and_booleans.step @@ -51,7 +51,6 @@ Booleans are a type of object used to indicate true or false values in Javascrip MARKDOWN steps do step {message "Try creating a Boolean by typing `'x = false'`."} - step {message "`Type x==false?console.log(`'yes`'):console.log("no");`."} + step {message "`Type x==false?console.log(`'yes`'):console.log(`'no`');`."} end - end \ No newline at end of file From 67db94c6c6042f9749a95e6ad900642297bd882c Mon Sep 17 00:00:00 2001 From: Doug May Date: Sun, 18 Aug 2013 01:39:46 -0700 Subject: [PATCH 036/663] update readme.md to suggest early `rake spec` and summarize pull req readiness criteria; flag organizer instructions as outdated --- README.md | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index a8008bd29..34664d76e 100644 --- a/README.md +++ b/README.md @@ -13,21 +13,25 @@ If the above fails (say, because `rerun` doesn't work on your system), try rackup -Then open in a web browser. +Then open in a web browser, and verify that you can navigate the installfest slides. -If you make any changes, and especially before a pull request, run +If you expect to make any changes, run bundle exec rake spec -which will run some unit tests and also do syntax validation on all pages, to make sure you didn't break anything. +which will install any additional needed gems, and then run the test suite to confirm that you are ready to (preliminarily) validate any changes you make. -When you submit a Pull Request, Travis CI will also run all the tests. +NOTE: Before submitting a pull request, you should make sure that you are on a feature branch, in sync with (rebased to) the current upstream master, and that you can cleanly run + + bundle exec rake spec + +which will run our standard unit tests and also do syntax validation on all pages, to make sure you didn't break anything. When you submit a Pull Request, Travis CI will also run all the tests. # Overview -This is a Sinatra app, deployed at . The Railsbridge documentation project is home to a few subprojects, including the Railsbridge installfest instructions, which leads students through the various complicated setup instructions for getting Ruby, Rails, Git, etc. installed on their computer (whatever combination of computer, OS, and version they happened to bring the the workshop!), as well as the Railsbridge workshop "Suggestotron" curriculum. +This is a Sinatra app, deployed at . The RailsBridge documentation project is home to a few subprojects, including the RailsBridge installfest instructions, which leads students through the various complicated setup instructions for getting Ruby, Rails, Git, etc. installed on their computer (whatever combination of computer, OS, and version they happened to bring to the workshop!), as well as the RailsBridge workshop "Suggestotron" curriculum. -Each subproject (a "site") comprises files stored under the "sites" directory; for instance, the installfest instructions are located at ROOT/sites/installfest, while the curriculum can be found under ROOT/sites/curriculum. +Each subproject (a "site") comprises files stored under the "sites" directory; for instance, the installfest instructions are located at ROOT/sites/installfest, while the standard curriculum can be found under ROOT/sites/curriculum. These files can be in any of these formats: @@ -46,9 +50,9 @@ StepFile is a new, Ruby-based DSL for describing complex, nested instructions in [Deck.rb](https://github.com/alexch/deck.rb) converts Markdown files into an interactive in-browser HTML+JavaScript slide deck. -#Organizer Instructions +#Organizer Instructions (probably outdated -- double check) -Slide contents that change with each workshop are contained in three files under the workshop project. The 'hello and welcome, this is when the breaks are' presentation slides are in current.deck.md. The 'this is what we will learn today' slides are in welcome.deck.md. And the 'this is what we have learned' slides are in closing.deck.md. +Slide contents that change with each workshop are contained in three files under the workshop project. The 'hello and welcome, this is when the breaks are' presentation slides are in current.deck.md. The 'this is what we will learn today' slides are in welcome.deck.md. And the 'this is what we have learned, and what comes next' slides are in closing.deck.md. To change those contents, clone this repo, make changes, and then to include your changes in the publicly available repo, send a pull request. @@ -222,6 +226,7 @@ StepFile is an [Erector](http://erector.rubyforge.org)-based DSL, so if you want * move fonts local # TODO (content) +* pull "organizer" content (from this readme.md) and point to the real stuff they should use * install ALL the operating systems! * troubleshooting page * look into installation scripts From b0f0596b9e31e84fa8453c6a44ecabc6727e9e06 Mon Sep 17 00:00:00 2001 From: zaiteki Date: Mon, 19 Aug 2013 19:13:41 -0700 Subject: [PATCH 037/663] javascript curriculum step to copy files from the fabulous Windows 8 GitHub client... Hope the linefeeds aren't changed --- sites/javascript/clone_a_repo.step | 51 ++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 sites/javascript/clone_a_repo.step diff --git a/sites/javascript/clone_a_repo.step b/sites/javascript/clone_a_repo.step new file mode 100644 index 000000000..79b0d7e76 --- /dev/null +++ b/sites/javascript/clone_a_repo.step @@ -0,0 +1,51 @@ +message <<-MARKDOWN + +# Clone a Repo Contining HTML & CSS + +To review these concepts we will be using Javascript to manipulate a deck of cards that will later be used to make a game. +The HTML and CSS files have been provided for you and can be copied to your local computer by cloning a repository from the Railsbridge GitHub account. +If you have a [graphical user interface client for git](http://git-scm.com/downloads/guis) that you like and know how to use you can use that; +otherwise you can use the console. If the wifi is out, or you have other problems, the instructor can probably supply the files +on a USB stick for you to copy. Remember to ask a TA if you get stuck or need help. + +## Install Git +If you have git installed already, great! If not, you can follow the instructions for installing git from the +[Railsbridge Installfest](http://installfest.railsbridge.org/installfest) for Rails, then return to this page. + + +## Configure Git +Follow the [instructions for configuring git](http://installfest.railsbridge.org/installfest/configure_git) from the +Railsbridge Rails workshop and then return to this page. + +## Clone the Repo / Copy the Files + +Create a directory that you want to save your Railsbridge files in (if you haven't done so before). If you're using the console type: +$`mkdir railsbridge` +then, to change to that directory +$`cd railsbridge` . + ++ To clone the repo from the Railsbridge repository type: +$`git clone http://whatever-i'll-look-this-up-later` _note: I don't think these files are in the repo yet, +so the correct URL can't be inserted yet_ - this +will save the files from Github to your computer. ++ If you have issues installing git: to download the files as a `.zip` archive, navigate in your browser +to the page containing them on the GitHub site, and click on _Download ZIP_ button and save to your `railsbridge` directory. ++ If you are getting the files from a USB drive, transfer them to your `railsbridge` directory. + +If you got the files as a `.zip` archive, extract them to a directory using your usual methods. +Look at a file listing in your directory to verify the files are there. + +Now you should be ready to start writing javascript to manipulate the elements on the HTML page (the next step). + +## more info on git (extra stuff you can read later if you want) +[Git](http://git-scm.com) is not just used for transferring files, it's one of a variety of +[version control systems](http://en.wikipedia.org/wiki/Comparison_of_revision_control_software) that let +you backup your files and share them with others in group development. Railsbridge has its files on [GitHub](http://github.com), +a [public Git hosting site](https://git.wiki.kernel.org/index.php/GitHosting). + +There are videos and written documentation on using git at [http://git-scm.com/documentation](http://git-scm.com/documentation). +For more information from Railsbridge on using git see: [Railsbridge Guide on How to Git](http://railsbridge.github.io/bridge_troll/). + +MARKDOWN + +next_step 'manipulate_card' From 03cccf66f573e563546f44f33ccac7a3db362621 Mon Sep 17 00:00:00 2001 From: Doug May Date: Wed, 21 Aug 2013 17:51:41 -0700 Subject: [PATCH 038/663] tweak more_teacher_training.deck --- sites/workshop/more_teacher_training.deck.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sites/workshop/more_teacher_training.deck.md b/sites/workshop/more_teacher_training.deck.md index 1cdc0788d..a5dd9dd8a 100644 --- a/sites/workshop/more_teacher_training.deck.md +++ b/sites/workshop/more_teacher_training.deck.md @@ -46,14 +46,14 @@ There are a few different RailsBridge curricula: * Intro to Ruby * Front End (HTML, CSS, and a tiny bit of JavaScript). -First, we get all the necessary technologies onto the students' computers (the InstallFest). +First, we get all the necessary technologies onto the students' computers (the installfest). The next day we break into small groups and work through the curriculum. # Typical RailsBridge Schedule -* Friday, 6-10pm-ish: InstallFest -- installing things over pizza & beer (no formal presentations) +* Friday, 6-10pm-ish: installfest -- installing things over pizza & beer (no formal presentations) - _n.b.: the Front End workshop doesn't have an InstallFest._ + _n.b.: the Front End workshop doesn't have an installfest._ * Saturday's schedule, often: * 9-9:30am: Check-in, coffee, bagels @@ -226,7 +226,7 @@ Talk about what problems you might anticipate, and what to do about them. * Ask people what they expect a command to produce BEFORE you hit enter. * Ask "How would you do \#\{this\}?" or "If I wanted to do \#\{that\}, what would I do?" -# InstallFest! +# Installfest! #### Keep in mind: * There will be people with _all_ kinds of computers. * Even though Windows is not an ideal Rails development environment, we're here to encourage people and meet them wherever they are right now. From 9f44ab54fe2dec81a47643016b8af710d96a85ab Mon Sep 17 00:00:00 2001 From: Doug May Date: Wed, 21 Aug 2013 18:06:36 -0700 Subject: [PATCH 039/663] remove incorrect note about installing gems --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 34664d76e..b1ce3d15c 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you expect to make any changes, run bundle exec rake spec -which will install any additional needed gems, and then run the test suite to confirm that you are ready to (preliminarily) validate any changes you make. +which will run the test suite to confirm that you are ready to (preliminarily) validate any changes you make. NOTE: Before submitting a pull request, you should make sure that you are on a feature branch, in sync with (rebased to) the current upstream master, and that you can cleanly run From 067b698a22400cd8fc0cecf5de4bfc6b99fc0103 Mon Sep 17 00:00:00 2001 From: aaronwbrown Date: Fri, 23 Aug 2013 19:54:35 -0700 Subject: [PATCH 040/663] Add a step to create a root route We discovered that rails 4.0 on heroku would throw an exception going to the index page if you did not have a root route defined. --- sites/installfest/get_a_sticker.step | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/sites/installfest/get_a_sticker.step b/sites/installfest/get_a_sticker.step index eaf645325..95da3d633 100644 --- a/sites/installfest/get_a_sticker.step +++ b/sites/installfest/get_a_sticker.step @@ -214,8 +214,27 @@ git commit -m "Add pg gem for Heroku." GIT_COMMIT result "[master 4a275be] Add pg gem for Heroku. 2 files changed, 6 insertions(+)" + + message "Use your editor to open the routes.rb (`C:\\sites\\sticker\\config\\routes.rb` or `~/sticker/config/routes.rb`) and find the line containing:" - message "The name of your heroku app will be different. That is fine." + source_code :ruby, <<-RUBY +# root 'welcome#index' + RUBY + + message "Remove this line and replace it with" + + source_code :ruby, <<-RUBY +root 'drinks#index' + RUBY + + message "Commit this change" + + console <<-GIT_COMMIT +git add . +git commit -m "Changed root route" + GIT_COMMIT + + message "The name of your heroku app will be different. That is fine." console "heroku create" result <<-HEROKU_CREATE From 86c5973e453f8f8540c14341c9487a671f3ce015 Mon Sep 17 00:00:00 2001 From: Alex Chaffee Date: Sat, 24 Aug 2013 08:54:59 -0700 Subject: [PATCH 041/663] link to Learn To Code --- sites/docs/docs.step | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sites/docs/docs.step b/sites/docs/docs.step index c43a10cbf..81690545f 100644 --- a/sites/docs/docs.step +++ b/sites/docs/docs.step @@ -19,8 +19,10 @@ HTML + CSS for beginners. Make a website, no server required! A ruby-specific curriculum, expanded from the "Ruby for Beginners" slide deck. Still new, with room for your contributions. +Railsbridge workshops can also use Alex's [Learn To Code In Ruby](http://codelikethis.com/lessons/learn_to_code) curriculum (currently in a separate site). It's also open source and may soon join the main Railsbridge Docs repo. It's geared towards people who may never have written code before. + # [Workshop](/workshop) The Railsbridge junkyard! Slide decks for opening/closing presentations, teacher training. -MARKDOWN \ No newline at end of file +MARKDOWN From 8ba4eff5ca724cd38a9973fb4ab273f081541134 Mon Sep 17 00:00:00 2001 From: Travis Grathwell Date: Mon, 26 Aug 2013 23:12:47 -0700 Subject: [PATCH 042/663] Add extra 'gem install rails' for RailsInstaller RailsInstaller by itself only installs Rails 3.2, and the instructions right now cater to 4.x --- sites/installfest/osx_railsinstaller.step | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sites/installfest/osx_railsinstaller.step b/sites/installfest/osx_railsinstaller.step index 225623764..5e70f064f 100644 --- a/sites/installfest/osx_railsinstaller.step +++ b/sites/installfest/osx_railsinstaller.step @@ -29,6 +29,14 @@ step "Install Sublime Text 2" do link "install_sublime_text_2_for_mac" end +step "Update Rails" do + message "Currently, RailsInstaller installs Rails 3.2.x, but we want 4.x. Upgrading Rails is pretty easy:" + + console "gem install rails" + + message "...and you're done. New Rails! Woo." +end + verify "successful installation" do console "which git" result "/usr/bin/git" From 2af06fb8ab7545840daadd90e2173b694663604a Mon Sep 17 00:00:00 2001 From: Jason Noble Date: Fri, 13 Sep 2013 20:11:05 -0600 Subject: [PATCH 043/663] Add Missing Step In the directions, we have "cd ~", followed by "cd railsbridge". The students are getting directory not found. This change adds a step after "cd ~" and before "cd railsbridge" to create that directory. --- sites/curriculum/getting_started.step | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sites/curriculum/getting_started.step b/sites/curriculum/getting_started.step index 827c2eaf2..9bed25a4a 100644 --- a/sites/curriculum/getting_started.step +++ b/sites/curriculum/getting_started.step @@ -1,4 +1,3 @@ - img src: "img/Start_page.png", alt: "Start Page" goals do @@ -13,6 +12,11 @@ steps do step do switch_to_home_directory end + + step do + console "mkdir railsbridge" + message "This command creates a new directory for us to store our project in." + end step do console "cd railsbridge" From 156844980a2ab15bcbd0995c4d4b8d1a9a58c75a Mon Sep 17 00:00:00 2001 From: Alex Chaffee Date: Sat, 14 Sep 2013 08:44:52 -0700 Subject: [PATCH 044/663] extract switch_to_home_directory into a partial (using 'insert') --- lib/step.rb | 13 ------------- sites/curriculum/getting_started.step | 2 +- sites/curriculum/switch_to_home_directory.step | 10 ++++++++++ .../installfest/create_and_deploy_a_rails_app.step | 2 +- sites/installfest/get_a_sticker.step | 4 +--- sites/installfest/switch_to_home_directory.step | 10 ++++++++++ 6 files changed, 23 insertions(+), 18 deletions(-) create mode 100644 sites/curriculum/switch_to_home_directory.step create mode 100644 sites/installfest/switch_to_home_directory.step diff --git a/lib/step.rb b/lib/step.rb index 02e700a30..d0389c7a5 100644 --- a/lib/step.rb +++ b/lib/step.rb @@ -72,19 +72,6 @@ def insert file end end - def switch_to_home_directory - message "`cd` stands for change directory." - - option "Windows" do - console "cd c:\\Sites" - message "`cd c:\\Sites` sets our Sites directory to our current directory." - end - option "Mac or Linux" do - console "cd ~" - message "`cd ~` sets our home directory to our current directory." - end - end - def consider_deploying div :class => "deploying" do h1 "Deploying" diff --git a/sites/curriculum/getting_started.step b/sites/curriculum/getting_started.step index 827c2eaf2..7d03f3215 100644 --- a/sites/curriculum/getting_started.step +++ b/sites/curriculum/getting_started.step @@ -11,7 +11,7 @@ steps do tip "If you have _any_ problems, contact a TA immediately." step do - switch_to_home_directory + insert 'switch_to_home_directory' end step do diff --git a/sites/curriculum/switch_to_home_directory.step b/sites/curriculum/switch_to_home_directory.step new file mode 100644 index 000000000..093920a03 --- /dev/null +++ b/sites/curriculum/switch_to_home_directory.step @@ -0,0 +1,10 @@ +message "`cd` stands for change directory." + +option "Windows" do + console "cd c:\\Sites" + message "`cd c:\\Sites` sets our Sites directory to our current directory." +end +option "Mac or Linux" do + console "cd ~" + message "`cd ~` sets our home directory to our current directory." +end diff --git a/sites/installfest/create_and_deploy_a_rails_app.step b/sites/installfest/create_and_deploy_a_rails_app.step index fa285ca29..95e1dce30 100644 --- a/sites/installfest/create_and_deploy_a_rails_app.step +++ b/sites/installfest/create_and_deploy_a_rails_app.step @@ -1,5 +1,5 @@ step "Change to your home directory" do - switch_to_home_directory + insert 'switch_to_home_directory' end step "Create a railbridge directory" do diff --git a/sites/installfest/get_a_sticker.step b/sites/installfest/get_a_sticker.step index eaf645325..cfcaab16c 100644 --- a/sites/installfest/get_a_sticker.step +++ b/sites/installfest/get_a_sticker.step @@ -43,9 +43,7 @@ step "Build the sticker app" do verify "rails" do - section "Change to your home directory" do - switch_to_home_directory - end + insert 'switch_to_home_directory' console "cd railsbridge" diff --git a/sites/installfest/switch_to_home_directory.step b/sites/installfest/switch_to_home_directory.step new file mode 100644 index 000000000..093920a03 --- /dev/null +++ b/sites/installfest/switch_to_home_directory.step @@ -0,0 +1,10 @@ +message "`cd` stands for change directory." + +option "Windows" do + console "cd c:\\Sites" + message "`cd c:\\Sites` sets our Sites directory to our current directory." +end +option "Mac or Linux" do + console "cd ~" + message "`cd ~` sets our home directory to our current directory." +end From 278504ac3e05bddec23e32be6ad80624ad545d2c Mon Sep 17 00:00:00 2001 From: Alex Chaffee Date: Sat, 14 Sep 2013 08:50:41 -0700 Subject: [PATCH 045/663] document 'insert' in readme --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index b1ce3d15c..602358d21 100644 --- a/README.md +++ b/README.md @@ -138,6 +138,14 @@ Here Docs are especially useful with `message`s since you can just dump in markd * called out in a blue box * the name is *not* markdown, but is a bold title for the tip box * content should be inside a nested block + +`insert "filename"` + + * inserts the contents of one file inside another + * a way to do "partials" + * current limitations: + * only works with `.step` files + * inserted file must be in same directory as inserting file ## messages From 80749e54402eaaac002682e05689a3c6561f07ad Mon Sep 17 00:00:00 2001 From: Alex Chaffee Date: Sat, 14 Sep 2013 09:08:47 -0700 Subject: [PATCH 046/663] extract consider_deploying pages into partial (using 'insert') --- lib/step.rb | 20 ------------------- sites/curriculum/allow_people_to_vote.step | 2 +- .../clean_up_links_on_the_topics_list.step | 2 +- sites/curriculum/consider_deploying.step | 7 +++++++ .../curriculum/setting_the_default_page.step | 2 +- sites/frontend/add_more_elements.step | 2 +- .../consider_deploying_to_github.step | 7 +++++++ sites/frontend/make_a_web_page.step | 2 +- sites/frontend/make_columns.step | 2 +- 9 files changed, 20 insertions(+), 26 deletions(-) create mode 100644 sites/curriculum/consider_deploying.step create mode 100644 sites/frontend/consider_deploying_to_github.step diff --git a/lib/step.rb b/lib/step.rb index d0389c7a5..728dc152c 100644 --- a/lib/step.rb +++ b/lib/step.rb @@ -72,26 +72,6 @@ def insert file end end - def consider_deploying - div :class => "deploying" do - h1 "Deploying" - blockquote do - message "Before the next step, you could try deploying your app to Heroku!" - link 'deploying_to_heroku' - end - end - end - - def consider_deploying_to_github - div :class => "deploying" do - h1 "Deploying" - blockquote do - message "Before the next step, you could try deploying your page to Github!" - link 'deploying_to_github_pages' - end - end - end - def step name = nil, options = {} num = next_step_number a(:name => "step#{current_anchor_num}") diff --git a/sites/curriculum/allow_people_to_vote.step b/sites/curriculum/allow_people_to_vote.step index dfaf22a7e..cb66f086a 100644 --- a/sites/curriculum/allow_people_to_vote.step +++ b/sites/curriculum/allow_people_to_vote.step @@ -69,6 +69,6 @@ explanation { MARKDOWN } -consider_deploying +insert 'consider_deploying' next_step "redirect_to_the_topics_list_after_creating_a_new_topic" diff --git a/sites/curriculum/clean_up_links_on_the_topics_list.step b/sites/curriculum/clean_up_links_on_the_topics_list.step index 775f1eabc..3168b96e7 100644 --- a/sites/curriculum/clean_up_links_on_the_topics_list.step +++ b/sites/curriculum/clean_up_links_on_the_topics_list.step @@ -39,6 +39,6 @@ explanation { MARKDOWN } -consider_deploying +insert 'consider_deploying' next_step "credits_and_next_steps" diff --git a/sites/curriculum/consider_deploying.step b/sites/curriculum/consider_deploying.step new file mode 100644 index 000000000..79dcf7e68 --- /dev/null +++ b/sites/curriculum/consider_deploying.step @@ -0,0 +1,7 @@ +div :class => "deploying" do + h1 "Deploying" + blockquote do + message "Before the next step, you could try deploying your app to Heroku!" + link 'deploying_to_heroku' + end +end diff --git a/sites/curriculum/setting_the_default_page.step b/sites/curriculum/setting_the_default_page.step index 36201759d..f7f9f32a7 100644 --- a/sites/curriculum/setting_the_default_page.step +++ b/sites/curriculum/setting_the_default_page.step @@ -89,6 +89,6 @@ explanation { MARKDOWN } -consider_deploying +insert 'consider_deploying' next_step "voting_on_topics" diff --git a/sites/frontend/add_more_elements.step b/sites/frontend/add_more_elements.step index f26ad74fe..803bcdb16 100644 --- a/sites/frontend/add_more_elements.step +++ b/sites/frontend/add_more_elements.step @@ -62,6 +62,6 @@ what tags are available. Here are some good sites you can use for reference: MARKDOWN end -consider_deploying_to_github +insert 'consider_deploying_to_github' next_step 'make_columns' diff --git a/sites/frontend/consider_deploying_to_github.step b/sites/frontend/consider_deploying_to_github.step new file mode 100644 index 000000000..1403ca1b6 --- /dev/null +++ b/sites/frontend/consider_deploying_to_github.step @@ -0,0 +1,7 @@ +div :class => "deploying" do + h1 "Deploying" + blockquote do + message "Before the next step, you could try deploying your page to Github!" + link 'deploying_to_github_pages' + end +end diff --git a/sites/frontend/make_a_web_page.step b/sites/frontend/make_a_web_page.step index bf939b8b1..5fd8b0e09 100644 --- a/sites/frontend/make_a_web_page.step +++ b/sites/frontend/make_a_web_page.step @@ -92,6 +92,6 @@ change it in just one place, instead of having to update every page. HTML end -consider_deploying_to_github +insert 'consider_deploying_to_github' next_step "add_more_elements" diff --git a/sites/frontend/make_columns.step b/sites/frontend/make_columns.step index 555c929ed..07760bbb0 100644 --- a/sites/frontend/make_columns.step +++ b/sites/frontend/make_columns.step @@ -44,6 +44,6 @@ to get a sense of how limitless the possibilities are with CSS. MARKDOWN end -consider_deploying_to_github +insert 'consider_deploying_to_github' next_step "basic_javascript" From 7579155424382296ecfa3be9013b1ac383a0d83c Mon Sep 17 00:00:00 2001 From: Alex Chaffee Date: Sat, 14 Sep 2013 09:09:37 -0700 Subject: [PATCH 047/663] improve test checking syntax of all site pages --- spec/site_syntax_spec.rb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/spec/site_syntax_spec.rb b/spec/site_syntax_spec.rb index 2db473ef5..dba563d0d 100644 --- a/spec/site_syntax_spec.rb +++ b/spec/site_syntax_spec.rb @@ -5,9 +5,7 @@ require "rack/test" -# todo: use a dummy set of sites instead of the real "installfest" and "curriculum" - -describe InstallFest do +describe "Syntax check all sites" do include Rack::Test::Methods def app @@ -19,8 +17,8 @@ def get! *args assert { last_response.status == 200 } end - describe "checking pages..." do - Site.all.each do |site| + Site.all.each do |site| + describe "checking #{site.name} pages..." do site.docs.each do |doc| it "renders #{doc.filename}" do get! "/#{site.name}/#{doc.name}" From 41adb8004012b64f85019e7bb77f70788dcff94a Mon Sep 17 00:00:00 2001 From: Lillie Chilen Date: Tue, 17 Sep 2013 19:16:49 -0700 Subject: [PATCH 048/663] Add FAQ and pull request request to docs index --- sites/docs/docs.step | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/sites/docs/docs.step b/sites/docs/docs.step index 81690545f..337f0ab0f 100644 --- a/sites/docs/docs.step +++ b/sites/docs/docs.step @@ -1,4 +1,6 @@ message < Date: Thu, 19 Sep 2013 09:25:51 -0700 Subject: [PATCH 049/663] Add creative commons license info --- sites/docs/docs.step | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sites/docs/docs.step b/sites/docs/docs.step index 337f0ab0f..dee8173ce 100644 --- a/sites/docs/docs.step +++ b/sites/docs/docs.step @@ -30,9 +30,9 @@ The Railsbridge junkyard! Slide decks for opening/closing presentations, teacher # RailsBridge curriculum-related FAQ ### Can I use the RailsBridge curricula at my event? -Anyone can use this site — it's very open source! +Anyone can use this site! It's under a Creative Commons license ([CC-BY, specifically](http://creativecommons.org/licenses/by/3.0/)), which means you're welcome to share, remix, or use our content commercially. We just ask for attribution. -If you're organizing an event and wonder if it could be considered a RailsBridge Workshop, we just have two requests: +Slightly different: if you're organizing an event and wonder if it could be considered a RailsBridge Workshop, we just have two requests: * The event should be free of charge. * The event should work toward making tech more welcoming! From 7584f7f29433d3728593007b2243ee039b21ae4f Mon Sep 17 00:00:00 2001 From: Lillie Chilen Date: Tue, 24 Sep 2013 09:07:07 -0700 Subject: [PATCH 050/663] Add generalized reveal.js presentation template - Improve presentation words - Add Code of Conduct and Anti-Harassment policy info to deck --- sites/workshop/workshop.md | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/sites/workshop/workshop.md b/sites/workshop/workshop.md index fed7c3120..b833c0a22 100644 --- a/sites/workshop/workshop.md +++ b/sites/workshop/workshop.md @@ -1,28 +1,39 @@ -# Materials for Workshop Days +# Materials for Teachers * [Foundational Skills](foundational_skills) * [Ruby for Beginners](ruby_for_beginners) * [Ruby for Programmers](ruby_for_programmers) * [Diagrams (Git, MVC, REST) ](diagrams) -# Materials for Workshop Preparation +### Teacher Training +* [Original Teacher Training](teacher_training) +* [Newer Teacher Training (1/16/13)](more_teacher_training) + +# Materials for Organizers + +### Workshop Intro & Closing Presentation Slide Decks + +If you can edit HTML, this is the presentation for you. It's the prettiest: + +* [Welcome and Closing Reveal.js deck (zip file)](http://cl.ly/0T341w3X130q) -### Workshop Intros/Outros -Either copy these Google Docs presentations +Download, then open up the index.html file in a text editor. Edit pages 0 +(dates, location, logo), 1 (sponsor logos), and 7 (after party location), and +you're good to go. (Run it locally for the presentation itself.) + +#### Or copy one of these other formats: + +Google Docs presentations * [Welcome (google doc)](https://docs.google.com/presentation/d/1VT8J6CTuN8ot_-0ZElLv49_-cxuNmXTp83DBonD1x5w/edit#slide=id.p) * [Closing (google doc)](https://docs.google.com/presentation/d/19ik5tm_enCNRIM4zaY9rIoeRhDoMMfFUDgNXnd2lW6A/edit#slide=id.p) -Or copy these deck.rb versions +deck.rb * [Welcome](welcome) * [Closing](closing) -Or make a presentation in the format of your choice. Powerpoint, Keynote, [reveal.js](http://lab.hakim.se/reveal-js/)-- follow your heart! - -### Teacher Training -* [Teacher Training](teacher_training) -* [Another take on Teacher Training (1/16/13)](more_teacher_training) +Or make a presentation in the format of your choice. Powerpoint, Keynote, your own [reveal.js](http://lab.hakim.se/reveal-js/)deck — follow your heart! # Other? See the Table of Contents for a full list of materials. From 6e24f0452727c9564dd1c48b6548c1d755410894 Mon Sep 17 00:00:00 2001 From: Joanne Date: Wed, 25 Sep 2013 15:24:21 -0600 Subject: [PATCH 051/663] Change `Topic.new(params[:topic])` to `Topic.new(topic_params)` because of strong parameters in Rails 4 --- .../redirect_to_the_topics_list_after_creating_a_new_topic.step | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sites/curriculum/redirect_to_the_topics_list_after_creating_a_new_topic.step b/sites/curriculum/redirect_to_the_topics_list_after_creating_a_new_topic.step index 67e611872..97ae08db2 100644 --- a/sites/curriculum/redirect_to_the_topics_list_after_creating_a_new_topic.step +++ b/sites/curriculum/redirect_to_the_topics_list_after_creating_a_new_topic.step @@ -27,7 +27,7 @@ steps { source_code :ruby, <<-RUBY def create - @topic = Topic.new(params[:topic]) + @topic = Topic.new(topic_params) respond_to do |format| if @topic.save From a172bbc1329d661ab4be51ecc58bde5843439f63 Mon Sep 17 00:00:00 2001 From: Travis Grathwell Date: Fri, 27 Sep 2013 23:21:06 -0700 Subject: [PATCH 052/663] Add Heroku root route instructions to create_and_deploy page --- .../create_and_deploy_a_rails_app.step | 18 ++++++++++++++++-- sites/installfest/get_a_sticker.step | 18 ++++++++---------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/sites/installfest/create_and_deploy_a_rails_app.step b/sites/installfest/create_and_deploy_a_rails_app.step index 95e1dce30..26275ce93 100644 --- a/sites/installfest/create_and_deploy_a_rails_app.step +++ b/sites/installfest/create_and_deploy_a_rails_app.step @@ -103,7 +103,7 @@ step "Use git" do git init BASH - result "Initialized empty Git repository in c:/Sites/test_app/.git/" + result "Initialized empty Git repository in c:/Sites/railsbridge/test_app/.git/" console "git add -A" tip "git add" do @@ -154,7 +154,7 @@ Git remote heroku added step "Prepare your rails app for deploying to Heroku" do message <<-MARKDOWN -Launch your text editor and open the "Gemfile" file located inside of your test_app folder. (On Windows, this should be in `C:\\Sites\\test_app` and on Linux/OS X, it should be under `~/test_app`.) +Launch your text editor and open the "Gemfile" file located inside of your test_app folder. (On Windows, this should be in `C:\\Sites\\railsbridge\\test_app` and on Linux/OS X, it should be under `~/railsbridge/test_app`.) Inside this file, change the line: MARKDOWN @@ -190,6 +190,20 @@ bundle install --without production message "Again, wait for the console prompt, and look for the 'Your bundle is complete!' message just above. If this fails, get a volunteer to help you edit `config/environments/production.rb` " end + step "Set the root route" do + message "Use your editor to open the file routes.rb (`C:\\sites\\railsbridge\\test_app\\config\\routes.rb` or `~/railsbridge/test_app/config/routes.rb`) and find the line containing:" + + source_code :ruby, <<-RUBY +# root 'welcome#index' + RUBY + + message "Remove this line and replace it with:" + + source_code :ruby, <<-RUBY +root 'users#index' + RUBY + end + step "Add the changes to git" do console <<-BASH diff --git a/sites/installfest/get_a_sticker.step b/sites/installfest/get_a_sticker.step index 1346947c1..a3e421c67 100644 --- a/sites/installfest/get_a_sticker.step +++ b/sites/installfest/get_a_sticker.step @@ -141,7 +141,7 @@ verify "git" do message "Make sure you're still in the sticker directory." console "git init" - result "Initialized empty Git repository in /home/steven/Code/ruby/sticker/.git/" + result "Initialized empty Git repository in /home/steven/railsbridge/sticker/.git/" console "git add ." console "git status" @@ -181,7 +181,7 @@ end verify "heroku deploy" do important "Each application has its own `Gemfile`. Be sure you're opening the one inside your sticker app's folder." - message "Use your editor to open the Gemfile (`C:\\sites\\sticker\\Gemfile` or `~/sticker/Gemfile`) and find the line containing:" + message "Use your editor to open the Gemfile (`C:\\sites\\railsbridge\\sticker\\Gemfile` or `~/railsbridge/sticker/Gemfile`) and find the line containing:" source_code :ruby, <<-RUBY gem 'sqlite3' @@ -213,27 +213,23 @@ GIT_COMMIT result "[master 4a275be] Add pg gem for Heroku. 2 files changed, 6 insertions(+)" - message "Use your editor to open the routes.rb (`C:\\sites\\sticker\\config\\routes.rb` or `~/sticker/config/routes.rb`) and find the line containing:" + message "Use your editor to open the file routes.rb (`C:\\sites\\railsbridge\\sticker\\config\\routes.rb` or `~/railsbridge/sticker/config/routes.rb`) and find the line containing:" source_code :ruby, <<-RUBY # root 'welcome#index' RUBY - message "Remove this line and replace it with" + message "Remove this line and replace it with:" - source_code :ruby, <<-RUBY + source_code :ruby, <<-RUBY root 'drinks#index' RUBY - message "Commit this change" - - console <<-GIT_COMMIT + console_with_message "Commit this change:", <<-GIT_COMMIT git add . git commit -m "Changed root route" GIT_COMMIT - message "The name of your heroku app will be different. That is fine." - console "heroku create" result <<-HEROKU_CREATE Creating evening-wind-5284... done, stack is cedar @@ -241,6 +237,8 @@ http://evening-wind-5284.heroku.com/ | git@heroku.com:evening-wind-5284.git Git remote heroku added HEROKU_CREATE + message "The name of your Heroku app will be different. That is fine." + console "git push heroku master" result <<-HEROKU_PUSH Counting objects: 7, done. From fe5eae65ca4f4015d06a08683b432b8307aeb036 Mon Sep 17 00:00:00 2001 From: Zuyu Zhang Date: Fri, 4 Oct 2013 21:46:07 -0500 Subject: [PATCH 053/663] Fix public key permission deny issue when ssh to Heroku --- sites/installfest/create_an_ssh_key.step | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sites/installfest/create_an_ssh_key.step b/sites/installfest/create_an_ssh_key.step index e34325ea4..414ed97ca 100644 --- a/sites/installfest/create_an_ssh_key.step +++ b/sites/installfest/create_an_ssh_key.step @@ -49,6 +49,15 @@ verify do message "`id_rsa` is your **private key** and must be kept secret." message "If someone else gets your private key and your passphrase, then they can pretend to be you and log on to your Heroku or Github accounts and cause mischief!" end + + message "Add your generated public key to the authentication agent using the following command:" + + console "ssh-add ~/.ssh/id_rsa" + + result <<-OUTPUT + Enter passphrase for /Users/student/.ssh/id_rsa: + Identity added: /Users/student/.ssh/id_rsa (/Users/student/.ssh/id_rsa)" + OUTPUT end end From 948018920092931e0b83d3acb982b1fd48e48979 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steven!=20Ragnaro=CC=88k?= Date: Sat, 5 Oct 2013 10:25:34 -0700 Subject: [PATCH 054/663] Use docs as the default app. --- app.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.rb b/app.rb index 58794ac5b..4d7e04ceb 100755 --- a/app.rb +++ b/app.rb @@ -23,7 +23,7 @@ class InstallFest < Sinatra::Application # should this be Sinatra::Base instead def initialize super @here = File.expand_path(File.dirname(__FILE__)) - @default_site = "installfest" + @default_site = "docs" set_downstream_app # todo: test end From 91a9e12e2e3b46da0c7119a1f9f156ee9d3d735a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steven!=20Ragnaro=CC=88k?= Date: Sat, 5 Oct 2013 12:14:00 -0700 Subject: [PATCH 055/663] Update spec to use docs as default site. --- spec/app_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/app_spec.rb b/spec/app_spec.rb index 5a9d8ebf6..d0bc8eab8 100755 --- a/spec/app_spec.rb +++ b/spec/app_spec.rb @@ -40,7 +40,7 @@ def get! *args get "/" assert { last_response.redirect? } follow_redirect! while last_response.redirect? - assert { last_request.path == "/installfest/" } + assert { last_request.path == "/docs/" } end it "redirects /site to /site/" do From 6128788acf93db4396aee96323027e2b8ba4a0d3 Mon Sep 17 00:00:00 2001 From: Travis Grathwell Date: Sun, 6 Oct 2013 18:32:46 -0700 Subject: [PATCH 056/663] Don't show 'partial' steppages in the table of contents 'Partials' (like consider_deploying) now have filenames prefixed with an underscore so they can be ignored by the TOC parser --- lib/contents.rb | 12 ++++++++++-- lib/step.rb | 2 +- ...sider_deploying.step => _consider_deploying.step} | 0 ...directory.step => _switch_to_home_directory.step} | 0 ...ithub.step => _consider_deploying_to_github.step} | 0 ...directory.step => _switch_to_home_directory.step} | 0 spec/sites/meals/_find_utensils.step | 1 + spec/sites/meals/omnivorous.step | 2 ++ spec/sites/meals/vegetarian.step | 2 ++ spec/step_spec.rb | 2 +- 10 files changed, 17 insertions(+), 4 deletions(-) rename sites/curriculum/{consider_deploying.step => _consider_deploying.step} (100%) rename sites/curriculum/{switch_to_home_directory.step => _switch_to_home_directory.step} (100%) rename sites/frontend/{consider_deploying_to_github.step => _consider_deploying_to_github.step} (100%) rename sites/installfest/{switch_to_home_directory.step => _switch_to_home_directory.step} (100%) create mode 100644 spec/sites/meals/_find_utensils.step diff --git a/lib/contents.rb b/lib/contents.rb index 2b9c27486..8660b7475 100755 --- a/lib/contents.rb +++ b/lib/contents.rb @@ -22,6 +22,14 @@ def site_files ext Dir.glob("#{site_dir}/*.{#{ext}}").sort end + def parseable_site_files + site_files("mw,md,step") + end + + def site_page_files + parseable_site_files.reject { |file| File.basename(file).start_with?('_') } + end + def subpages_for filename links = [] content = open("#{site_dir}/#{filename}").read() @@ -104,7 +112,7 @@ def hierarchy end def all_pages - site_files("mw,md,step").map { |file| File.basename(file).sub(/(\..*)$/, '') }.sort + site_page_files.map { |file| File.basename(file).sub(/(\..*)$/, '') }.sort end def orphans @@ -112,7 +120,7 @@ def orphans end def _page_links type="subpages" - site_files("mw,md,step").inject({}) do |result, filename| + site_page_files.inject({}) do |result, filename| page = File.basename(filename) page_no_ext = page.sub(/(\..*)$/, '') result[page_no_ext] = send("#{type}_for", page) diff --git a/lib/step.rb b/lib/step.rb index 728dc152c..3f5b8c3e5 100644 --- a/lib/step.rb +++ b/lib/step.rb @@ -43,7 +43,7 @@ def page_name def insert file # todo: unify into common 'find & process a document file' unit dir = File.dirname(@doc_path) - path = File.join(dir, "#{file}.step") # todo: other file types + path = File.join(dir, "_#{file}.step") # todo: other file types src = File.read(path) step = Step.new(src: src, doc_path: path) widget step diff --git a/sites/curriculum/consider_deploying.step b/sites/curriculum/_consider_deploying.step similarity index 100% rename from sites/curriculum/consider_deploying.step rename to sites/curriculum/_consider_deploying.step diff --git a/sites/curriculum/switch_to_home_directory.step b/sites/curriculum/_switch_to_home_directory.step similarity index 100% rename from sites/curriculum/switch_to_home_directory.step rename to sites/curriculum/_switch_to_home_directory.step diff --git a/sites/frontend/consider_deploying_to_github.step b/sites/frontend/_consider_deploying_to_github.step similarity index 100% rename from sites/frontend/consider_deploying_to_github.step rename to sites/frontend/_consider_deploying_to_github.step diff --git a/sites/installfest/switch_to_home_directory.step b/sites/installfest/_switch_to_home_directory.step similarity index 100% rename from sites/installfest/switch_to_home_directory.step rename to sites/installfest/_switch_to_home_directory.step diff --git a/spec/sites/meals/_find_utensils.step b/spec/sites/meals/_find_utensils.step new file mode 100644 index 000000000..fdaca4416 --- /dev/null +++ b/spec/sites/meals/_find_utensils.step @@ -0,0 +1 @@ +Maybe they are in the drawer? \ No newline at end of file diff --git a/spec/sites/meals/omnivorous.step b/spec/sites/meals/omnivorous.step index deee09443..5e44644ba 100644 --- a/spec/sites/meals/omnivorous.step +++ b/spec/sites/meals/omnivorous.step @@ -1,3 +1,5 @@ You could use meat if you wanted to. +insert 'find_utensils' + next_step "eat_a_meal" \ No newline at end of file diff --git a/spec/sites/meals/vegetarian.step b/spec/sites/meals/vegetarian.step index a1aa3bfc9..84cd8ac91 100644 --- a/spec/sites/meals/vegetarian.step +++ b/spec/sites/meals/vegetarian.step @@ -1,3 +1,5 @@ Make sure not to use any meat! +insert 'find_utensils' + link "find_some_vegetables" \ No newline at end of file diff --git a/spec/step_spec.rb b/spec/step_spec.rb index 0bf273b7b..54acda5c5 100644 --- a/spec/step_spec.rb +++ b/spec/step_spec.rb @@ -164,7 +164,7 @@ def html_doc(src = "step 'hello'; step 'goodbye'") insert 'inner' div 'goodbye' RUBY - file "inner.step", <<-RUBY + file "_inner.step", <<-RUBY div 'yum' RUBY end From 1499c00b0b3775d1e70d3da8806f906e256a4329 Mon Sep 17 00:00:00 2001 From: Travis Grathwell Date: Sun, 6 Oct 2013 18:39:45 -0700 Subject: [PATCH 057/663] Fix another test to deal with changed default site. --- spec/app_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/app_spec.rb b/spec/app_spec.rb index d0bc8eab8..702cb5cae 100755 --- a/spec/app_spec.rb +++ b/spec/app_spec.rb @@ -56,7 +56,7 @@ def get! *args end it "has a default site" do - assert { true_app.default_site == "installfest" } + assert { true_app.default_site == "docs" } end describe "settings" do From 7e8c6d9bcaed2c4c89dded2ab5133d26240b5b07 Mon Sep 17 00:00:00 2001 From: Travis Grathwell Date: Tue, 8 Oct 2013 18:21:30 -0700 Subject: [PATCH 058/663] Add instructions for windows users to install Rails 4 --- sites/installfest/windows.step | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sites/installfest/windows.step b/sites/installfest/windows.step index 518e4bf79..d8ba9f861 100644 --- a/sites/installfest/windows.step +++ b/sites/installfest/windows.step @@ -52,6 +52,14 @@ step "Windows 8 Only — Install Node.js" do fuzzy_result "v0{FUZZY}.8.x{/FUZZY}" end +step "Update Rails" do + message "Currently, RailsInstaller installs Rails 3.2.x, but we want 4.x. Upgrading Rails is pretty easy:" + + console "gem install rails" + + message "...and you're done. New Rails! Woo." +end + step "Sanity Check" do console "ruby -v" From 10e3aef00b23c4a2e3db6b0811ec1f385d57bb3f Mon Sep 17 00:00:00 2001 From: Travis Grathwell Date: Wed, 9 Oct 2013 23:02:02 -0700 Subject: [PATCH 059/663] Upgrade jQuery to 1.10.2 because why not? --- lib/doc_page.rb | 2 +- public/jquery-1.7.2.min.js | 4 ---- public/jquery.min.js | 6 ++++++ 3 files changed, 7 insertions(+), 5 deletions(-) delete mode 100755 public/jquery-1.7.2.min.js create mode 100644 public/jquery.min.js diff --git a/lib/doc_page.rb b/lib/doc_page.rb index 406489db6..fc5dff353 100644 --- a/lib/doc_page.rb +++ b/lib/doc_page.rb @@ -42,7 +42,7 @@ def html_attributes def head_content title page_title - script :src => "/jquery-1.7.2.min.js" + script :src => "/jquery.min.js" script :src => "/js/doc_page.js" end diff --git a/public/jquery-1.7.2.min.js b/public/jquery-1.7.2.min.js deleted file mode 100755 index 93adea19f..000000000 --- a/public/jquery-1.7.2.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.7.2 jquery.com | jquery.org/license */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+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(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
      a",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="

      "+""+"
      ",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="
      t
      ",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="
      ",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( -a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

      ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
      ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,"
      ","
      "],thead:[1,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],col:[2,"","
      "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
      ","
      "]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f -.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
      ").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/public/jquery.min.js b/public/jquery.min.js new file mode 100644 index 000000000..da4170647 --- /dev/null +++ b/public/jquery.min.js @@ -0,0 +1,6 @@ +/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery-1.10.2.min.map +*/ +(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="
      ",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
      a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
      t
      ",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
      ",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t +}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
      ","
      "],area:[1,"",""],param:[1,"",""],thead:[1,"","
      "],tr:[2,"","
      "],col:[2,"","
      "],td:[3,"","
      "],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
      ","
      "]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); +u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("