From 1714118c9793764cdded5153a15ca46e28c47358 Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Sun, 15 Feb 2015 16:13:27 -0700 Subject: [PATCH 001/176] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2ef0361..e4a0f8c 100644 --- a/README.md +++ b/README.md @@ -93,10 +93,9 @@ Some of these links are affiliate links, meaning that if you make a purchase, I ### Transpilers -* [6to5](https://github.com/6to5/6to5) (ES6) +* [Babel](https://github.com/babel/babel) Transpile ES6, ES7 to ES5 * [CoffeeScript](http://coffeescript.org/) -* [Emscripten](http://kripken.github.io/emscripten-site/) (frequently used for C/C++ JavaScript ports) -* [Traceur](https://github.com/google/traceur-compiler) (ES.next) +* [Emscripten](http://kripken.github.io/emscripten-site/) Frequently used for C/C++ JavaScript ports * [ES6 tools](https://github.com/addyosmani/es6-tools) Addy Osmani's ES6 Tools list From 8eb7a8e78af1a989dd6de52d4570553dfef30e30 Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Wed, 25 Feb 2015 18:13:52 -0700 Subject: [PATCH 002/176] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e4a0f8c..09fc2fb 100644 --- a/README.md +++ b/README.md @@ -141,6 +141,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [Templates](http://webcomponents.org/articles/introduction-to-template-element/) * [Shadow DOM](http://webcomponents.org/articles/introduction-to-shadow-dom/) * [x-gif](http://geelen.github.io/x-gif/#/http://i.imgur.com/iKXH4E2.gif) This web component wins the internet. +* [Vulcanize](https://github.com/Polymer/vulcanize) Don't let web components slow your app down. Bundle your HTML imports. ## QA / Deployment / Monitoring / CI From f7b6af0d20e5b89f5776466690306910b6f187fd Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Fri, 6 Mar 2015 17:36:58 -0700 Subject: [PATCH 003/176] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 09fc2fb..062873c 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [JavaScript Training Sucks](https://medium.com/javascript-scene/javascript-training-sucks-284b53666245) 99 out of 100 JS developers lack the skills they need to fill hundreds of thousands of jobs. We can change that. * [The Two Pillars of JavaScript Part 1: Prototypal OO](https://medium.com/javascript-scene/the-two-pillars-of-javascript-ee6f3281e7f3) * [The Two Pillars of JavaScript Part 2: Functional Programming](https://medium.com/javascript-scene/the-two-pillars-of-javascript-pt-2-functional-programming-a63aa53a41a4) +* [How to Fix the `class` Keyword](https://medium.com/p/how-to-fix-the-es6-class-keyword-2d42bb3f4caf) TL;DR `class` is broken. Don't use it until it's fixed. * [JavaScript Objects](http://davidwalsh.name/javascript-objects) An excellent explanation of inheritance in JavaScript by Kyle Simpson * [Isomorphic JavaScript](http://isomorphic.net/) * [JavaScript Application Architecture on the Road to 2015](https://medium.com/@addyosmani/javascript-application-architecture-on-the-road-to-2015-d8125811101b) - Addy Osmani @@ -156,7 +157,6 @@ Some of these links are affiliate links, meaning that if you make a purchase, I ## Community -* [ES Discuss](https://esdiscuss.org/) The mailing list where all the ECMAScript standard discussion action is. * [JavaScript on Google+](https://plus.google.com/communities/100875929141897651837) * [HTML5 on Google+](https://plus.google.com/communities/103299867207875326585) * [Node.js on Google+](https://plus.google.com/communities/115365528781941125390) @@ -206,6 +206,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [JavaScript for Kids](http://www.amazon.com/gp/product/B00QL616QE?ie=UTF8&camp=213733&creative=393177&creativeASIN=B00QL616QE&linkCode=shr&tag=ericleads-20&linkId=6AOODC27L6URY3K2) * [LearnToMod](http://www.learntomod.com/) Mod Minecraft with JavaScript +* [The Young Person's Guide to Programming in Minecraft](https://github.com/walterhiggins/ScriptCraft/blob/master/docs/YoungPersonsGuideToProgrammingMinecraft.md#the-young-persons-guide-to-programming-in-minecraft) ## Twitter (alphabetical order) From 4fedde068326a5b5ba69c05ba3cce5958db659c5 Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Sat, 7 Mar 2015 14:21:13 -0700 Subject: [PATCH 004/176] README updates * Added Inquirer.js * Standardized link description formating --- README.md | 65 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 062873c..28197be 100644 --- a/README.md +++ b/README.md @@ -13,27 +13,27 @@ Some of these links are affiliate links, meaning that if you make a purchase, I ## Required Reading (Online resources) -* [Learn JavaScript Essentials (for all skill levels)](https://medium.com/javascript-scene/learn-javascript-b631a4af11f2) - One clear path to JavaScript mastery +* [Learn JavaScript Essentials (for all skill levels)](https://medium.com/javascript-scene/learn-javascript-b631a4af11f2) One clear path to JavaScript mastery * [JavaScript Training Sucks](https://medium.com/javascript-scene/javascript-training-sucks-284b53666245) 99 out of 100 JS developers lack the skills they need to fill hundreds of thousands of jobs. We can change that. * [The Two Pillars of JavaScript Part 1: Prototypal OO](https://medium.com/javascript-scene/the-two-pillars-of-javascript-ee6f3281e7f3) * [The Two Pillars of JavaScript Part 2: Functional Programming](https://medium.com/javascript-scene/the-two-pillars-of-javascript-pt-2-functional-programming-a63aa53a41a4) * [How to Fix the `class` Keyword](https://medium.com/p/how-to-fix-the-es6-class-keyword-2d42bb3f4caf) TL;DR `class` is broken. Don't use it until it's fixed. * [JavaScript Objects](http://davidwalsh.name/javascript-objects) An excellent explanation of inheritance in JavaScript by Kyle Simpson * [Isomorphic JavaScript](http://isomorphic.net/) -* [JavaScript Application Architecture on the Road to 2015](https://medium.com/@addyosmani/javascript-application-architecture-on-the-road-to-2015-d8125811101b) - Addy Osmani +* [JavaScript Application Architecture on the Road to 2015](https://medium.com/@addyosmani/javascript-application-architecture-on-the-road-to-2015-d8125811101b) Addy Osmani * [Reactive MVC and the Virtual DOM](http://futurice.com/blog/reactive-mvc-and-the-virtual-dom) Great read, even if you're not a React user. * [Introduction to Reactive Programming](https://gist.github.com/staltz/868e7e9bc2a7b8c1f754) * [The General Theory of Reactivity](https://github.com/kriskowal/gtor) What is all this talk about reactive? Functional? Promises? This is the beginning of a reactive programming bible. * [ES6 Generators](http://davidwalsh.name/es6-generators) A series of blog posts by Kyle Simpson -* [Typed JavaScript](http://www.2ality.com/2014/10/typed-javascript.html) - Excellent post about the state of typed JavaScript by Axel Rauschmayer -* [Taming the Asynchronous Beast with CSP in JavaScript](http://jlongster.com/Taming-the-Asynchronous-Beast-with-CSP-in-JavaScript) - James Long +* [Typed JavaScript](http://www.2ality.com/2014/10/typed-javascript.html) Excellent post about the state of typed JavaScript by Axel Rauschmayer +* [Taming the Asynchronous Beast with CSP in JavaScript](http://jlongster.com/Taming-the-Asynchronous-Beast-with-CSP-in-JavaScript) James Long * [ES6 Modules: The Final Syntax](http://www.2ality.com/2014/09/es6-modules-final.html) by @rauschma #AMDisDead ## Required Viewing -* [Classical Inheritance is Obsolete: How to Think in Prototypal OO](https://vimeo.com/69255635) - by [Eric Elliott](https://twitter.com/_ericelliott) -* [Asynchronous Programming at Netflix](https://www.youtube.com/watch?v=gawmdhCNy-A) - [Jafar Husain](https://twitter.com/jhusain) -* [David Nolen: Immutability: Putting The Dream Machine To Work](https://www.youtube.com/watch?v=SiFwRtCnxv4) - [David Nolen](https://twitter.com/swannodette) +* [Classical Inheritance is Obsolete: How to Think in Prototypal OO](https://vimeo.com/69255635) by [Eric Elliott](https://twitter.com/_ericelliott) +* [Asynchronous Programming at Netflix](https://www.youtube.com/watch?v=gawmdhCNy-A) [Jafar Husain](https://twitter.com/jhusain) +* [David Nolen: Immutability: Putting The Dream Machine To Work](https://www.youtube.com/watch?v=SiFwRtCnxv4) [David Nolen](https://twitter.com/swannodette) * [Immutable Data and React](https://www.youtube.com/watch?v=I7IdS-PbEgI&list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr) by [Lee Byron](https://twitter.com/leeb) * [Delivering the Goods](https://www.youtube.com/watch?v=R8W_6xWphtw) Paul Irish on one of the most important but overlooked topics in the development world today - page load times. * [Simplicity Matters](https://www.youtube.com/watch?v=rI8tNMsozo0) A later version of the influential talk, "Simple Made Easy" by [Rich Hickey](https://twitter.com/richhickey) @@ -68,7 +68,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [Node Inspector](https://github.com/node-inspector/node-inspector) Debug Node code with the Chrome debug tools * [TraceGL](https://github.com/traceglMPL/tracegl) Powerful runtime analysis of live JavaScript code * [Tern](http://ternjs.net/) Static analysis in JavaScript -* [JSDoc](http://usejsdoc.org/) - Pair with [Tern](http://ternjs.net/) for static analysis +* [JSDoc](http://usejsdoc.org/) Pair with [Tern](http://ternjs.net/) for static analysis * [Nitrous.IO](https://www.nitrous.io/join/uJcRo6yQDvs?utm_source=nitrous.io&utm_medium=copypaste&utm_campaign=referral) (Supports live collaboration / pair programming) * [Slack](http://slack.com) Chat for teams, with GitHub and Google hangouts integration * For hangouts, just type /hangout in any channel @@ -103,7 +103,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I ## JavaScript environments * [Node.js](http://nodejs.org/) Server side JavaScript and more -* [io.js](https://iojs.org/) - The Node fork +* [io.js](https://iojs.org/) The Node fork ## Libraries @@ -126,11 +126,12 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [Moment](http://momentjs.com/docs/) A lightweight JavaScript date library for parsing, validating, manipulating, and formatting dates. * [Globalize](https://github.com/jquery/globalize) i18n / translate your app for many languages and locations (locales) * [Express](http://expressjs.com/) The most popular framework for Node. -* [Stampit](https://github.com/ericelliott/stampit) Stampit - create objects from reusable, composable behaviors. Prototypal inheritance with stamps. +* [Stampit](https://github.com/ericelliott/stampit) Create objects from reusable, composable behaviors. Prototypal inheritance with stamps. * [Credential](https://github.com/ericelliott/credential) If you write Node apps with password logins, you need Credential. * [cuid](https://github.com/ericelliott/cuid) GUIDs are broken - use cuid, instead. * [velocity](http://julian.com/research/velocity/) & [Velocity Motion Designer (VMD)](http://julian.com/research/velocity/#vmd) UI animation library. -* [json-schema](https://github.com/kriszyp/json-schema) - Great for model validations. +* [json-schema](https://github.com/kriszyp/json-schema) Great for model validations. +* [inquirer.js](https://github.com/SBoudrias/Inquirer.js) Great library for building CLI tools. ## Web Components @@ -162,7 +163,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [Node.js on Google+](https://plus.google.com/communities/115365528781941125390) * IRC ##JavaScript irc://irc.freenode.net/javascript * IRC #node.js irc://irc.freenode.net/node.js -* IRC #io.js irc://irc.freenode.net/io.js - the Node fork +* IRC #io.js irc://irc.freenode.net/io.js The Node fork ## News @@ -211,24 +212,24 @@ Some of these links are affiliate links, meaning that if you make a purchase, I ## Twitter (alphabetical order) -* [Addy Osmani](https://twitter.com/addyosmani) - App architecture expert, Chrome dev tools champion -* [Angus Croll](https://twitter.com/angustweets) - Author, "If Hemingway Wrote JavaScript" -* [Axel Rauschmayer](https://twitter.com/rauschma) - ES Next evangelist, author -* [Brendan Eich](https://twitter.com/BrendanEich) - Created JavaScript -* [David Nolen](https://twitter.com/swannodette) - Great functional programming content -* [David Herman](https://twitter.com/littlecalculist) - Author, "Effective JavaScript" -* [EchoJS](https://twitter.com/echojs) - News and links -* [Eric Elliott](https://twitter.com/_ericelliott) - That's me. O'Reilly author. JavaScript architect. JS Instructor. -* [Jafar Husain](https://twitter.com/jhusain) - Great talks on RxJS, ES next, etc... +* [Addy Osmani](https://twitter.com/addyosmani) App architecture expert, Chrome dev tools champion +* [Angus Croll](https://twitter.com/angustweets) Author, "If Hemingway Wrote JavaScript" +* [Axel Rauschmayer](https://twitter.com/rauschma) ES Next evangelist, author +* [Brendan Eich](https://twitter.com/BrendanEich) Created JavaScript +* [David Nolen](https://twitter.com/swannodette) Great functional programming content +* [David Herman](https://twitter.com/littlecalculist) Author, "Effective JavaScript" +* [EchoJS](https://twitter.com/echojs) News and links +* [Eric Elliott](https://twitter.com/_ericelliott) That's me. O'Reilly author. JavaScript architect. JS Instructor. +* [Jafar Husain](https://twitter.com/jhusain) Great talks on RxJS, ES next, etc... * [James Halliday](https://twitter.com/substack) aka Substack - author of ~one million~ Node modules you probably use. -* [James Long](https://twitter.com/jlongster) - CSP, functional programming advocate, Mozilla developer -* [JavaScript Cheerleader](https://twitter.com/JS_Cheerleader) - Mover & shaker, JavaScript evangelist, documentary film maker -* [JavaScript Daily](https://twitter.com/JavaScriptDaily) - News and links -* [Jordan Harband](https://twitter.com/ljharb) - Keeping us ahead of the JS curve -* [Kyle Simpson](https://twitter.com/getify) - Author, YDKJS - O'Reilly, JS Instructor, open web evangelist -* [Marijn Haverbeke](https://twitter.com/marijnjh) - Author, "Eloquent JavaScript" -* [Nicholas C. Zakas](https://twitter.com/slicknet) - Author, speaker -* [Nick Morgan](https://twitter.com/skilldrick) - Author, "JavaScript for Kids" -* [Paul Irish](https://twitter.com/paul_irish) - Developer evangelist, Chrome dev tools champion -* [Reginald Braithwaite](https://twitter.com/raganwald) - Author, "JavaScript Allongé", speaker, GitHub -* [YDKJS](https://twitter.com/ydkjs) - You Don't Know JS, O'Reilly book series by Kyle Simpson +* [James Long](https://twitter.com/jlongster) CSP, functional programming advocate, Mozilla developer +* [JavaScript Cheerleader](https://twitter.com/JS_Cheerleader) Mover & shaker, JavaScript evangelist, documentary film maker +* [JavaScript Daily](https://twitter.com/JavaScriptDaily) News and links +* [Jordan Harband](https://twitter.com/ljharb) Keeping us ahead of the JS curve +* [Kyle Simpson](https://twitter.com/getify) Author, YDKJS - O'Reilly, JS Instructor, open web evangelist +* [Marijn Haverbeke](https://twitter.com/marijnjh) Author, "Eloquent JavaScript" +* [Nicholas C. Zakas](https://twitter.com/slicknet) Author, speaker +* [Nick Morgan](https://twitter.com/skilldrick) Author, "JavaScript for Kids" +* [Paul Irish](https://twitter.com/paul_irish) Developer evangelist, Chrome dev tools champion +* [Reginald Braithwaite](https://twitter.com/raganwald) Author, "JavaScript Allongé", speaker, GitHub +* [YDKJS](https://twitter.com/ydkjs) You Don't Know JS, O'Reilly book series by Kyle Simpson From 973d8498caa5e160c47a7c3e645c669659b627bf Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Sat, 7 Mar 2015 15:10:05 -0700 Subject: [PATCH 005/176] README - add lodash Add Lodash-FP --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 28197be..f7e6220 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [EventSource browser Polyfill](https://github.com/Yaffle/EventSource/) Required client-side patching to support Server Sent Events. * [jQuery](http://jquery.com/) Yes, [I still use jQuery](https://docs.google.com/document/d/1LPaPA30bLUB_publLIMF0RlhdnPx_ePXm7oW02iiT6o/edit#) and so do 61% of the top 100,000 websites - for good reason. * [Blaze](http://meteor.github.io/blaze/) DOM-diffing isomorphic reactive templates from Meteor. +* [Lodash-FP](https://github.com/lodash/lodash-fp) Like Underscore, but much faster, and featuring a more expressive API. * [RxJS](https://github.com/Reactive-Extensions/RxJS) Reactive extensions for JavaScript. [What's reactive?](https://medium.com/javascript-scene/the-two-pillars-of-javascript-pt-2-functional-programming-a63aa53a41a4) * [Page.js](https://github.com/visionmedia/page.js) Tiny client-side router, inspired by Express. * [Moment](http://momentjs.com/docs/) A lightweight JavaScript date library for parsing, validating, manipulating, and formatting dates. From 6e5b9f12885424988e1fd72086afb8ef7bf0582f Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Sun, 8 Mar 2015 18:42:34 -0600 Subject: [PATCH 006/176] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f7e6220..e6c5c79 100644 --- a/README.md +++ b/README.md @@ -126,6 +126,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [Page.js](https://github.com/visionmedia/page.js) Tiny client-side router, inspired by Express. * [Moment](http://momentjs.com/docs/) A lightweight JavaScript date library for parsing, validating, manipulating, and formatting dates. * [Globalize](https://github.com/jquery/globalize) i18n / translate your app for many languages and locations (locales) +* [Lusca](https://github.com/krakenjs/lusca) Secure your Express application. By the Kraken team at PayPal. * [Express](http://expressjs.com/) The most popular framework for Node. * [Stampit](https://github.com/ericelliott/stampit) Create objects from reusable, composable behaviors. Prototypal inheritance with stamps. * [Credential](https://github.com/ericelliott/credential) If you write Node apps with password logins, you need Credential. From af98c042677db3fa2908d42b954209ec871a482d Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Fri, 13 Mar 2015 01:56:49 -0600 Subject: [PATCH 007/176] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e6c5c79..618df4f 100644 --- a/README.md +++ b/README.md @@ -132,7 +132,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [Credential](https://github.com/ericelliott/credential) If you write Node apps with password logins, you need Credential. * [cuid](https://github.com/ericelliott/cuid) GUIDs are broken - use cuid, instead. * [velocity](http://julian.com/research/velocity/) & [Velocity Motion Designer (VMD)](http://julian.com/research/velocity/#vmd) UI animation library. -* [json-schema](https://github.com/kriszyp/json-schema) Great for model validations. +* [is-my-json-valid](https://github.com/mafintosh/is-my-json-valid) A fast [json-schema](http://json-schema.org/) validator. * [inquirer.js](https://github.com/SBoudrias/Inquirer.js) Great library for building CLI tools. From 9801a89c7928c5f421a52dbbc8afbf317f78d711 Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Tue, 17 Mar 2015 16:57:33 -0600 Subject: [PATCH 008/176] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 618df4f..64470b0 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [HTML5 Boilerplate](https://github.com/h5bp/html5-boilerplate) You'll want to cherry-pick the best of this for your production apps. See [Initializr](http://www.initializr.com). * [The Isomorphic Express Boilerplate](https://github.com/ericelliott/isomorphic-express-boilerplate) Write apps using the same code for both the client and the server using Node, Express, and Browserify. * [rootrequire](https://github.com/ericelliott/rootrequire) Require files relative to your project path using the normal node require(). +* [dotty](https://github.com/deoxxa/dotty) Get deep properties using dot notation without throwing. e.g., `dotty.get(req, 'user.id');` * [native-promise-only](https://github.com/getify/native-promise-only) An ECMAScript standard promise polyfill by Kyle Simpson. * [isomorphic-fetch](https://github.com/matthew-andrews/isomorphic-fetch) A [WHATWG fetch](https://fetch.spec.whatwg.org/). standard polyfill. * [sseasy](https://github.com/heroku/sseasy) Server Sent Events for Node (HTML5 standard push notifications). From 5bff4cad5eaa0e2b50f0b56f4b5b971dbc810ee6 Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Wed, 18 Mar 2015 13:07:22 -0600 Subject: [PATCH 009/176] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 64470b0..1e0f98e 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,8 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [JSHint](http://jshint.com/) * [ESLint](http://eslint.org/) +* [babel-eslint](https://github.com/babel/babel-eslint) Allow ES6 features to pass ESLint. +* [eslint-plugin-no-class](https://github.com/emmenko/eslint-plugin-no-class) Forbid the ES6 `class` keyword. [Why?](https://github.com/eslint/eslint/pull/2096#issuecomment-83044888) * [Istanbul](https://github.com/gotwarlost/istanbul) Code coverage reporting * [tape](https://github.com/substack/tape) Minimal, dead simple unit testing. (This is all you need, really!) * [faucet](https://github.com/substack/faucet) Prettify unit testing output (like what comes from tape). From d87ec1a6309599cce1584f8d9c0965aeca1b278c Mon Sep 17 00:00:00 2001 From: Ronan Jouchet Date: Sat, 21 Mar 2015 11:57:07 -0400 Subject: [PATCH 010/176] Fix typo in README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit experimantal → experimental --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1e0f98e..15b0871 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [es5-shim](https://github.com/es-shims/es5-shim) Stable, production ready. * [es6-shim](https://github.com/es-shims/es6-shim/) Somewhat stable, but a few things I thought were solid got shifted to ES7. -* [es7-shim](https://www.npmjs.com/package/es7-shim) Experimantal. Use with caution. +* [es7-shim](https://www.npmjs.com/package/es7-shim) Experimental. Use with caution. * [HTML5 Cross Browser Polyfills](https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills) A fairly comprehensive list of HTML5 API polyfills. * [HTML5 Boilerplate](https://github.com/h5bp/html5-boilerplate) You'll want to cherry-pick the best of this for your production apps. See [Initializr](http://www.initializr.com). * [The Isomorphic Express Boilerplate](https://github.com/ericelliott/isomorphic-express-boilerplate) Write apps using the same code for both the client and the server using Node, Express, and Browserify. From 3250fcd450326056d18892b4bd4f7f123677f298 Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Wed, 8 Apr 2015 15:24:11 -0600 Subject: [PATCH 011/176] Added WebGL Fundamentals --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 15b0871..b3b5c44 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [Understanding ECMAScript 6](https://leanpub.com/understandinges6/read/) by Nicholas C. Zakas * [Node.js in Action](http://www.manning.com/cantelon/) * [The Dream Machine: J.C.R. Licklider and the Revolution That Made Computing Personal](http://www.amazon.com/gp/product/0670899763?ie=UTF8&camp=213733&creative=393177&creativeASIN=0670899763&linkCode=shr&tag=ericleads-20&linkId=NDUXYQOCMPC47SQI) +* [WebGL Fundamentals](http://webglfundamentals.org/) An interactive online book about graphics programming. ## Dev tools & collaboration From 3b5c63e0e2c9bbeb0a507e2f4157599c2edac339 Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Fri, 10 Apr 2015 11:41:22 -0600 Subject: [PATCH 012/176] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b3b5c44..aedfc2b 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [JavaScript Objects](http://davidwalsh.name/javascript-objects) An excellent explanation of inheritance in JavaScript by Kyle Simpson * [Isomorphic JavaScript](http://isomorphic.net/) * [JavaScript Application Architecture on the Road to 2015](https://medium.com/@addyosmani/javascript-application-architecture-on-the-road-to-2015-d8125811101b) Addy Osmani +* [The Dao of Immutability](https://medium.com/javascript-scene/the-dao-of-immutability-9f91a70c88cd) The Way of the Functional Programmer * [Reactive MVC and the Virtual DOM](http://futurice.com/blog/reactive-mvc-and-the-virtual-dom) Great read, even if you're not a React user. * [Introduction to Reactive Programming](https://gist.github.com/staltz/868e7e9bc2a7b8c1f754) * [The General Theory of Reactivity](https://github.com/kriskowal/gtor) What is all this talk about reactive? Functional? Promises? This is the beginning of a reactive programming bible. From 7a30ee0172792d3f7b527c0289cff1ea15909c29 Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Fri, 10 Apr 2015 11:59:46 -0600 Subject: [PATCH 013/176] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aedfc2b..d1d2427 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [Typed JavaScript](http://www.2ality.com/2014/10/typed-javascript.html) Excellent post about the state of typed JavaScript by Axel Rauschmayer * [Taming the Asynchronous Beast with CSP in JavaScript](http://jlongster.com/Taming-the-Asynchronous-Beast-with-CSP-in-JavaScript) James Long * [ES6 Modules: The Final Syntax](http://www.2ality.com/2014/09/es6-modules-final.html) by @rauschma #AMDisDead - +* [Advanced Performance Audits with DevTools](http://www.paulirish.com/2015/advanced-performance-audits-with-devtools/) In-depth perf case studies with Paul Irish ## Required Viewing * [Classical Inheritance is Obsolete: How to Think in Prototypal OO](https://vimeo.com/69255635) by [Eric Elliott](https://twitter.com/_ericelliott) From d81da573a6b7eb45998c0d822808c469cd74b1da Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Fri, 10 Apr 2015 14:09:39 -0600 Subject: [PATCH 014/176] Add Onion Omega --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d1d2427..7f3cac8 100644 --- a/README.md +++ b/README.md @@ -204,6 +204,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [Nodecopter](http://www.nodecopter.com/) * [Tessel](https://tessel.io/) * [Espruino](http://www.espruino.com/) +* [Onion Omega](https://onion.io/omega) ## Hosting From 9cff18b6705fce87ac9579a5048469082136502b Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Tue, 28 Apr 2015 18:43:03 -0600 Subject: [PATCH 015/176] Added React Section --- README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7f3cac8..b74bac3 100644 --- a/README.md +++ b/README.md @@ -34,8 +34,8 @@ Some of these links are affiliate links, meaning that if you make a purchase, I ## Required Viewing * [Classical Inheritance is Obsolete: How to Think in Prototypal OO](https://vimeo.com/69255635) by [Eric Elliott](https://twitter.com/_ericelliott) * [Asynchronous Programming at Netflix](https://www.youtube.com/watch?v=gawmdhCNy-A) [Jafar Husain](https://twitter.com/jhusain) +* [What is Reactive Programming?](https://www.youtube.com/watch?v=dwP1TNXE6fc) [Jafar Husain](https://twitter.com/jhusain) explains reactive programming * [David Nolen: Immutability: Putting The Dream Machine To Work](https://www.youtube.com/watch?v=SiFwRtCnxv4) [David Nolen](https://twitter.com/swannodette) -* [Immutable Data and React](https://www.youtube.com/watch?v=I7IdS-PbEgI&list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr) by [Lee Byron](https://twitter.com/leeb) * [Delivering the Goods](https://www.youtube.com/watch?v=R8W_6xWphtw) Paul Irish on one of the most important but overlooked topics in the development world today - page load times. * [Simplicity Matters](https://www.youtube.com/watch?v=rI8tNMsozo0) A later version of the influential talk, "Simple Made Easy" by [Rich Hickey](https://twitter.com/richhickey) @@ -126,6 +126,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [EventSource browser Polyfill](https://github.com/Yaffle/EventSource/) Required client-side patching to support Server Sent Events. * [jQuery](http://jquery.com/) Yes, [I still use jQuery](https://docs.google.com/document/d/1LPaPA30bLUB_publLIMF0RlhdnPx_ePXm7oW02iiT6o/edit#) and so do 61% of the top 100,000 websites - for good reason. * [Blaze](http://meteor.github.io/blaze/) DOM-diffing isomorphic reactive templates from Meteor. +* [React](https://github.com/facebook/react) What do Facebook, Instagram, Netflix and PayPal have in common? React. * [Lodash-FP](https://github.com/lodash/lodash-fp) Like Underscore, but much faster, and featuring a more expressive API. * [RxJS](https://github.com/Reactive-Extensions/RxJS) Reactive extensions for JavaScript. [What's reactive?](https://medium.com/javascript-scene/the-two-pillars-of-javascript-pt-2-functional-programming-a63aa53a41a4) * [Page.js](https://github.com/visionmedia/page.js) Tiny client-side router, inspired by Express. @@ -141,6 +142,16 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [inquirer.js](https://github.com/SBoudrias/Inquirer.js) Great library for building CLI tools. +## React + +* [Introducing React](https://www.youtube.com/watch?v=XxVg_s8xAms) +* [Immutable Data and React](https://www.youtube.com/watch?v=I7IdS-PbEgI&list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr) by [Lee Byron](https://twitter.com/leeb) +* [Data Fetching for React](https://www.youtube.com/watch?v=9sc8Pyc51uU) Relay & GraphQL Described +* [Introducing Relay and GraphQL](https://facebook.github.io/react/blog/2015/02/20/introducing-relay-and-graphql.html) +* [Building the Facebook Newsfeed with Relay](https://facebook.github.io/react/blog/2015/03/19/building-the-facebook-news-feed-with-relay.html) +* [Relay FAQ](https://gist.github.com/wincent/598fa75e22bdfa44cf47) + + ## Web Components * [FIRST](http://addyosmani.com/first/) From edc8a88976b7110b3187bcaaf74c61e002259bc3 Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Tue, 5 May 2015 13:24:04 -0600 Subject: [PATCH 016/176] Update books section --- README.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b74bac3..cc325e9 100644 --- a/README.md +++ b/README.md @@ -48,17 +48,18 @@ Some of these links are affiliate links, meaning that if you make a purchase, I ## Books -* [JavaScript for Kids](http://www.amazon.com/gp/product/B00QL616QE?ie=UTF8&camp=213733&creative=393177&creativeASIN=B00QL616QE&linkCode=shr&tag=ericleads-20&linkId=6AOODC27L6URY3K2) -* [Eloquent JavaScript](http://eloquentjavascript.net/) -* [JavaScript: The Good Parts](http://www.amazon.com/gp/product/0596517742?ie=UTF8&camp=213733&creative=393185&creativeASIN=0596517742&linkCode=shr&tag=ericleads-20&linkId=IJKESYSOTWGC27DR) -* [Effective JavaScript](http://www.amazon.com/gp/product/0321812182?ie=UTF8&camp=213733&creative=393185&creativeASIN=0321812182&linkCode=shr&tag=ericleads-20&linkId=JIC63I267I6UDQQZ) -* [Programming JavaScript Applications](http://pjabook.com) -* [JavaScript: The Definitive Guide](http://www.amazon.com/gp/product/0596805527?ie=UTF8&camp=213733&creative=393185&creativeASIN=0596805527&linkCode=shr&tag=ericleads-20&linkId=AENIF5KLRQI3N335) -* [You Don't Know JS](https://github.com/getify/You-Dont-Know-JS) +* [JavaScript for Kids](http://www.amazon.com/gp/product/B00QL616QE?ie=UTF8&camp=213733&creative=393177&creativeASIN=B00QL616QE&linkCode=shr&tag=ericleads-20&linkId=6AOODC27L6URY3K2) by Nick Morgan +* [Eloquent JavaScript](http://eloquentjavascript.net/) by Marijn Haverbeke +* [JavaScript: The Good Parts](http://www.amazon.com/gp/product/0596517742?ie=UTF8&camp=213733&creative=393185&creativeASIN=0596517742&linkCode=shr&tag=ericleads-20&linkId=IJKESYSOTWGC27DR) by Douglas Crockford +* [Effective JavaScript](http://www.amazon.com/gp/product/0321812182?ie=UTF8&camp=213733&creative=393185&creativeASIN=0321812182&linkCode=shr&tag=ericleads-20&linkId=JIC63I267I6UDQQZ) by David Herman +* [Programming JavaScript Applications](http://pjabook.com) by Eric Elliott +* [JavaScript: The Definitive Guide](http://www.amazon.com/gp/product/0596805527?ie=UTF8&camp=213733&creative=393185&creativeASIN=0596805527&linkCode=shr&tag=ericleads-20&linkId=AENIF5KLRQI3N335) by David Flanagan +* [You Don't Know JS](https://github.com/getify/You-Dont-Know-JS) by Kyle Simpson * [Understanding ECMAScript 6](https://leanpub.com/understandinges6/read/) by Nicholas C. Zakas -* [Node.js in Action](http://www.manning.com/cantelon/) -* [The Dream Machine: J.C.R. Licklider and the Revolution That Made Computing Personal](http://www.amazon.com/gp/product/0670899763?ie=UTF8&camp=213733&creative=393177&creativeASIN=0670899763&linkCode=shr&tag=ericleads-20&linkId=NDUXYQOCMPC47SQI) -* [WebGL Fundamentals](http://webglfundamentals.org/) An interactive online book about graphics programming. +* [JavaScript Allongé](https://leanpub.com/javascriptallongesix) by Reginald Braithwaite +* [Node.js in Action](http://www.manning.com/cantelon/) by Mike Cantelon, Marc Harter, T.J. Holowaychuk and Nathan Rajlich +* [The Dream Machine: J.C.R. Licklider and the Revolution That Made Computing Personal](http://www.amazon.com/gp/product/0670899763?ie=UTF8&camp=213733&creative=393177&creativeASIN=0670899763&linkCode=shr&tag=ericleads-20&linkId=NDUXYQOCMPC47SQI) by M. Mitchell Waldrop +* [WebGL Fundamentals](http://webglfundamentals.org/) by Greggman - An interactive online book about graphics programming. ## Dev tools & collaboration From 435c483ed22765df84d32e08a433aba4252bd68c Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Fri, 15 May 2015 17:15:31 -0600 Subject: [PATCH 017/176] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cc325e9..54f7e7a 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [Classical Inheritance is Obsolete: How to Think in Prototypal OO](https://vimeo.com/69255635) by [Eric Elliott](https://twitter.com/_ericelliott) * [Asynchronous Programming at Netflix](https://www.youtube.com/watch?v=gawmdhCNy-A) [Jafar Husain](https://twitter.com/jhusain) * [What is Reactive Programming?](https://www.youtube.com/watch?v=dwP1TNXE6fc) [Jafar Husain](https://twitter.com/jhusain) explains reactive programming -* [David Nolen: Immutability: Putting The Dream Machine To Work](https://www.youtube.com/watch?v=SiFwRtCnxv4) [David Nolen](https://twitter.com/swannodette) +* [Immutability: Putting The Dream Machine To Work](https://www.youtube.com/watch?v=SiFwRtCnxv4) by [David Nolen](https://twitter.com/swannodette) * [Delivering the Goods](https://www.youtube.com/watch?v=R8W_6xWphtw) Paul Irish on one of the most important but overlooked topics in the development world today - page load times. * [Simplicity Matters](https://www.youtube.com/watch?v=rI8tNMsozo0) A later version of the influential talk, "Simple Made Easy" by [Rich Hickey](https://twitter.com/richhickey) From ea5b2db886f8925db05940107d790a0d8727d2a5 Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Mon, 25 May 2015 15:43:34 -0600 Subject: [PATCH 018/176] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 54f7e7a..3b6cb93 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [ESLint](http://eslint.org/) * [babel-eslint](https://github.com/babel/babel-eslint) Allow ES6 features to pass ESLint. * [eslint-plugin-no-class](https://github.com/emmenko/eslint-plugin-no-class) Forbid the ES6 `class` keyword. [Why?](https://github.com/eslint/eslint/pull/2096#issuecomment-83044888) +* [ESLint no-inferred-methodname](https://github.com/johnstonbl01/eslint-no-inferred-method-name) A custom rule for a common problem. * [Istanbul](https://github.com/gotwarlost/istanbul) Code coverage reporting * [tape](https://github.com/substack/tape) Minimal, dead simple unit testing. (This is all you need, really!) * [faucet](https://github.com/substack/faucet) Prettify unit testing output (like what comes from tape). @@ -151,6 +152,9 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [Introducing Relay and GraphQL](https://facebook.github.io/react/blog/2015/02/20/introducing-relay-and-graphql.html) * [Building the Facebook Newsfeed with Relay](https://facebook.github.io/react/blog/2015/03/19/building-the-facebook-news-feed-with-relay.html) * [Relay FAQ](https://gist.github.com/wincent/598fa75e22bdfa44cf47) +* [react-engine](https://github.com/paypal/react-engine) PayPal's isomorphic React view engine for Express or Kraken +* [Radium](http://projects.formidablelabs.com/radium/) Simplify inline styles +* [ESLint Plugin](https://github.com/yannickcr/eslint-plugin-react) ## Web Components From d2e10ae6c5c51867517890d9681bc22c2b1bac8f Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Mon, 25 May 2015 15:53:28 -0600 Subject: [PATCH 019/176] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3b6cb93..469c25d 100644 --- a/README.md +++ b/README.md @@ -147,6 +147,7 @@ Some of these links are affiliate links, meaning that if you make a purchase, I ## React * [Introducing React](https://www.youtube.com/watch?v=XxVg_s8xAms) +* [JSX Looks Like an Abomination but it's Good for You](https://medium.com/javascript-scene/jsx-looks-like-an-abomination-1c1ec351a918) My take on JSX * [Immutable Data and React](https://www.youtube.com/watch?v=I7IdS-PbEgI&list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr) by [Lee Byron](https://twitter.com/leeb) * [Data Fetching for React](https://www.youtube.com/watch?v=9sc8Pyc51uU) Relay & GraphQL Described * [Introducing Relay and GraphQL](https://facebook.github.io/react/blog/2015/02/20/introducing-relay-and-graphql.html) From d2cfa5a0a5815559b215b7e4d3b95f280f27fe52 Mon Sep 17 00:00:00 2001 From: Eric Elliott Date: Mon, 25 May 2015 18:23:01 -0600 Subject: [PATCH 020/176] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 469c25d..d226ee9 100644 --- a/README.md +++ b/README.md @@ -155,7 +155,9 @@ Some of these links are affiliate links, meaning that if you make a purchase, I * [Relay FAQ](https://gist.github.com/wincent/598fa75e22bdfa44cf47) * [react-engine](https://github.com/paypal/react-engine) PayPal's isomorphic React view engine for Express or Kraken * [Radium](http://projects.formidablelabs.com/radium/) Simplify inline styles -* [ESLint Plugin](https://github.com/yannickcr/eslint-plugin-react) +* [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) +* [React Hot Loader](https://gaearon.github.io/react-hot-loader/) for Webpack +* [livereactload](https://github.com/milankinen/livereactload) for Browserify ## Web Components From 13636f697db94d863debedeaa3281144f6058986 Mon Sep 17 00:00:00 2001 From: hoichi Date: Wed, 27 May 2015 19:56:05 +0300 Subject: [PATCH 021/176] Scaffolding with JSON/Jade/Sass --- dist/404.html | 60 + dist/about.html | 42 + dist/apple-touch-icon.png | Bin 0 -> 3959 bytes dist/browserconfig.xml | 12 + dist/crossdomain.xml | 15 + dist/css/maps/style.css.map | 1 + dist/css/style.css | 588 +++++++ dist/favicon.ico | Bin 0 -> 766 bytes dist/humans.txt | 15 + dist/index.html | 1152 +++++++++++++ dist/js/main.js | 40 + dist/js/plugins.js | 24 + dist/js/vendor/jquery-1.11.2.min.js | 5 + dist/js/vendor/modernizr-2.8.3.min.js | 4 + dist/robots.txt | 5 + dist/tile-wide.png | Bin 0 -> 1854 bytes dist/tile.png | Bin 0 -> 3482 bytes doc/EJSL Func Spec.md | 127 ++ gulpfile.js | 69 + package.json | 20 + src/data/essential-javascript-links.md | 249 +++ src/data/md-import.js | 82 + src/data/the-big-data.json | 1439 +++++++++++++++++ src/data/theBookData.json | 71 + src/img/.gitignore | 0 src/jade/about.jade | 18 + src/jade/index.jade | 10 + src/jade/list/mixins.jade | 39 + src/jade/page/page.jade | 42 + src/js/main.js | 40 + src/js/plugins.js | 24 + src/js/vendor/jquery-1.11.2.min.js | 5 + src/js/vendor/modernizr-2.8.3.min.js | 4 + src/sass/_globals.scss | 17 + src/sass/base/_typography.scss | 12 + src/sass/modules/_content.scss | 4 + src/sass/modules/_list.scss | 43 + src/sass/modules/_masthead.scss | 20 + src/sass/style.scss | 41 + src/sass/vendors/_h5bp-base.scss | 84 + src/sass/vendors/_h5bp-helpers.scss | 166 ++ src/sass/vendors/_include-media.scss | 348 ++++ src/sass/vendors/_modular-scale-tests.scss | 74 + src/sass/vendors/_modular-scale.scss | 17 + src/sass/vendors/_normalize.scss | 424 +++++ src/sass/vendors/_sanitize.scss | 257 +++ src/sass/vendors/modular-scale/_calc.scss | 17 + .../vendors/modular-scale/_function-list.scss | 68 + src/sass/vendors/modular-scale/_function.scss | 55 + .../vendors/modular-scale/_generate-list.scss | 103 ++ src/sass/vendors/modular-scale/_pow.scss | 40 + src/sass/vendors/modular-scale/_ratios.scss | 20 + src/sass/vendors/modular-scale/_respond.scss | 16 + src/sass/vendors/modular-scale/_round-px.scss | 6 + .../vendors/modular-scale/_sort-list.scss | 93 ++ src/sass/vendors/modular-scale/_tests.scss | 22 + src/static/.htaccess | 998 ++++++++++++ src/static/404.html | 60 + src/static/apple-touch-icon.png | Bin 0 -> 3959 bytes src/static/browserconfig.xml | 12 + src/static/crossdomain.xml | 15 + src/static/favicon.ico | Bin 0 -> 766 bytes src/static/humans.txt | 15 + src/static/robots.txt | 5 + src/static/tile-wide.png | Bin 0 -> 1854 bytes src/static/tile.png | Bin 0 -> 3482 bytes 66 files changed, 7254 insertions(+) create mode 100644 dist/404.html create mode 100644 dist/about.html create mode 100644 dist/apple-touch-icon.png create mode 100644 dist/browserconfig.xml create mode 100644 dist/crossdomain.xml create mode 100644 dist/css/maps/style.css.map create mode 100644 dist/css/style.css create mode 100644 dist/favicon.ico create mode 100644 dist/humans.txt create mode 100644 dist/index.html create mode 100644 dist/js/main.js create mode 100644 dist/js/plugins.js create mode 100644 dist/js/vendor/jquery-1.11.2.min.js create mode 100644 dist/js/vendor/modernizr-2.8.3.min.js create mode 100644 dist/robots.txt create mode 100644 dist/tile-wide.png create mode 100644 dist/tile.png create mode 100644 doc/EJSL Func Spec.md create mode 100644 gulpfile.js create mode 100644 src/data/essential-javascript-links.md create mode 100644 src/data/md-import.js create mode 100644 src/data/the-big-data.json create mode 100644 src/data/theBookData.json create mode 100644 src/img/.gitignore create mode 100644 src/jade/about.jade create mode 100644 src/jade/index.jade create mode 100644 src/jade/list/mixins.jade create mode 100644 src/jade/page/page.jade create mode 100644 src/js/main.js create mode 100644 src/js/plugins.js create mode 100644 src/js/vendor/jquery-1.11.2.min.js create mode 100644 src/js/vendor/modernizr-2.8.3.min.js create mode 100644 src/sass/_globals.scss create mode 100644 src/sass/base/_typography.scss create mode 100644 src/sass/modules/_content.scss create mode 100644 src/sass/modules/_list.scss create mode 100644 src/sass/modules/_masthead.scss create mode 100644 src/sass/style.scss create mode 100644 src/sass/vendors/_h5bp-base.scss create mode 100644 src/sass/vendors/_h5bp-helpers.scss create mode 100644 src/sass/vendors/_include-media.scss create mode 100644 src/sass/vendors/_modular-scale-tests.scss create mode 100644 src/sass/vendors/_modular-scale.scss create mode 100644 src/sass/vendors/_normalize.scss create mode 100644 src/sass/vendors/_sanitize.scss create mode 100644 src/sass/vendors/modular-scale/_calc.scss create mode 100644 src/sass/vendors/modular-scale/_function-list.scss create mode 100644 src/sass/vendors/modular-scale/_function.scss create mode 100644 src/sass/vendors/modular-scale/_generate-list.scss create mode 100644 src/sass/vendors/modular-scale/_pow.scss create mode 100644 src/sass/vendors/modular-scale/_ratios.scss create mode 100644 src/sass/vendors/modular-scale/_respond.scss create mode 100644 src/sass/vendors/modular-scale/_round-px.scss create mode 100644 src/sass/vendors/modular-scale/_sort-list.scss create mode 100644 src/sass/vendors/modular-scale/_tests.scss create mode 100644 src/static/.htaccess create mode 100644 src/static/404.html create mode 100644 src/static/apple-touch-icon.png create mode 100644 src/static/browserconfig.xml create mode 100644 src/static/crossdomain.xml create mode 100644 src/static/favicon.ico create mode 100644 src/static/humans.txt create mode 100644 src/static/robots.txt create mode 100644 src/static/tile-wide.png create mode 100644 src/static/tile.png diff --git a/dist/404.html b/dist/404.html new file mode 100644 index 0000000..8d7925a --- /dev/null +++ b/dist/404.html @@ -0,0 +1,60 @@ + + + + + Page Not Found + + + + +

Page Not Found

+

Sorry, but the page you were trying to view does not exist.

+ + + diff --git a/dist/about.html b/dist/about.html new file mode 100644 index 0000000..4b04002 --- /dev/null +++ b/dist/about.html @@ -0,0 +1,42 @@ + + + + + + Essential JavaScript Links + + + + + + + + + + + +
+
+

This is a very exclusive collection of only must-have JavaScript links. I’m only listing my favorite links. Nothing else makes the cut. Feel free to suggest links if you think they’re good enough to make this list. The really curious should feel free to browse the comments to find other links. I can’t guarantee the quality of links in the comments.

+
+ +
+
© ’15 Eric Elliot & friends
+ + + + + + \ No newline at end of file diff --git a/dist/apple-touch-icon.png b/dist/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..600738f2cee82ca5dc8e92efdb4561fd59eaeb47 GIT binary patch literal 3959 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 literal 0 HcmV?d00001 diff --git a/dist/browserconfig.xml b/dist/browserconfig.xml new file mode 100644 index 0000000..219b759 --- /dev/null +++ b/dist/browserconfig.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/dist/crossdomain.xml b/dist/crossdomain.xml new file mode 100644 index 0000000..818b822 --- /dev/null +++ b/dist/crossdomain.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/dist/css/maps/style.css.map b/dist/css/maps/style.css.map new file mode 100644 index 0000000..34bbb8f --- /dev/null +++ b/dist/css/maps/style.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["vendors/_h5bp-helpers.scss","vendors/_normalize.scss","style.css"],"names":[],"mappings":"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","file":"style.css","sourcesContent":["/* ==========================================================================\r\n Helper classes\r\n ========================================================================== */\r\n\r\n/*\r\n * Hide visually and from screen readers:\r\n */\r\n\r\n.hidden {\r\n display: none !important;\r\n}\r\n\r\n/*\r\n * Hide only visually, but have it available for screen readers:\r\n * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility\r\n */\r\n\r\n.visuallyhidden {\r\n border: 0;\r\n clip: rect(0 0 0 0);\r\n height: 1px;\r\n margin: -1px;\r\n overflow: hidden;\r\n padding: 0;\r\n position: absolute;\r\n width: 1px;\r\n}\r\n\r\n/*\r\n * Extends the .visuallyhidden class to allow the element\r\n * to be focusable when navigated to via the keyboard:\r\n * https://www.drupal.org/node/897638\r\n */\r\n\r\n.visuallyhidden.focusable:active,\r\n.visuallyhidden.focusable:focus {\r\n clip: auto;\r\n height: auto;\r\n margin: 0;\r\n overflow: visible;\r\n position: static;\r\n width: auto;\r\n}\r\n\r\n/*\r\n * Hide visually and from screen readers, but maintain layout\r\n */\r\n\r\n.invisible {\r\n visibility: hidden;\r\n}\r\n\r\n/*\r\n * Clearfix: contain floats\r\n *\r\n * For modern browsers\r\n * 1. The space content is one way to avoid an Opera bug when the\r\n * `contenteditable` attribute is included anywhere else in the document.\r\n * Otherwise it causes space to appear at the top and bottom of elements\r\n * that receive the `clearfix` class.\r\n * 2. The use of `table` rather than `block` is only necessary if using\r\n * `:before` to contain the top-margins of child elements.\r\n */\r\n\r\n.clearfix:before,\r\n.clearfix:after {\r\n content: \" \"; /* 1 */\r\n display: table; /* 2 */\r\n}\r\n\r\n.clearfix:after {\r\n clear: both;\r\n}\r\n\r\n/* ==========================================================================\r\n EXAMPLE Media Queries for Responsive Design.\r\n These examples override the primary ('mobile first') styles.\r\n Modify as content requires.\r\n ========================================================================== */\r\n\r\n@media only screen and (min-width: 35em) {\r\n /* Style adjustments for viewports that meet the condition */\r\n}\r\n\r\n@media print,\r\n (-webkit-min-device-pixel-ratio: 1.25),\r\n (min-resolution: 120dpi) {\r\n /* Style adjustments for high resolution devices */\r\n}\r\n\r\n/* ==========================================================================\r\n Print styles.\r\n Inlined to avoid the additional HTTP request:\r\n http://www.phpied.com/delay-loading-your-print-css/\r\n ========================================================================== */\r\n\r\n@media print {\r\n *,\r\n *:before,\r\n *:after {\r\n background: transparent !important;\r\n color: #000 !important; /* Black prints faster:\r\n http://www.sanbeiji.com/archives/953 */\r\n box-shadow: none !important;\r\n text-shadow: none !important;\r\n }\r\n\r\n a,\r\n a:visited {\r\n text-decoration: underline;\r\n }\r\n\r\n a[href]:after {\r\n content: \" (\" attr(href) \")\";\r\n }\r\n\r\n abbr[title]:after {\r\n content: \" (\" attr(title) \")\";\r\n }\r\n\r\n /*\r\n * Don't show links that are fragment identifiers,\r\n * or use the `javascript:` pseudo protocol\r\n */\r\n\r\n a[href^=\"#\"]:after,\r\n a[href^=\"javascript:\"]:after {\r\n content: \"\";\r\n }\r\n\r\n pre,\r\n blockquote {\r\n border: 1px solid #999;\r\n page-break-inside: avoid;\r\n }\r\n\r\n /*\r\n * Printing Tables:\r\n * http://css-discuss.incutio.com/wiki/Printing_Tables\r\n */\r\n\r\n thead {\r\n display: table-header-group;\r\n }\r\n\r\n tr,\r\n img {\r\n page-break-inside: avoid;\r\n }\r\n\r\n img {\r\n max-width: 100% !important;\r\n }\r\n\r\n p,\r\n h2,\r\n h3 {\r\n orphans: 3;\r\n widows: 3;\r\n }\r\n\r\n h2,\r\n h3 {\r\n page-break-after: avoid;\r\n }\r\n}\r\n","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\r\n\r\n/**\r\n * 1. Set default font family to sans-serif.\r\n * 2. Prevent iOS and IE text size adjust after device orientation change,\r\n * without disabling user zoom.\r\n */\r\n\r\nhtml {\r\n font-family: sans-serif; /* 1 */\r\n -ms-text-size-adjust: 100%; /* 2 */\r\n -webkit-text-size-adjust: 100%; /* 2 */\r\n}\r\n\r\n/**\r\n * Remove default margin.\r\n */\r\n\r\nbody {\r\n margin: 0;\r\n}\r\n\r\n/* HTML5 display definitions\r\n ========================================================================== */\r\n\r\n/**\r\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\r\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\r\n * and Firefox.\r\n * Correct `block` display not defined for `main` in IE 11.\r\n */\r\n\r\narticle,\r\naside,\r\ndetails,\r\nfigcaption,\r\nfigure,\r\nfooter,\r\nheader,\r\nhgroup,\r\nmain,\r\nmenu,\r\nnav,\r\nsection,\r\nsummary {\r\n display: block;\r\n}\r\n\r\n/**\r\n * 1. Correct `inline-block` display not defined in IE 8/9.\r\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\r\n */\r\n\r\naudio,\r\ncanvas,\r\nprogress,\r\nvideo {\r\n display: inline-block; /* 1 */\r\n vertical-align: baseline; /* 2 */\r\n}\r\n\r\n/**\r\n * Prevent modern browsers from displaying `audio` without controls.\r\n * Remove excess height in iOS 5 devices.\r\n */\r\n\r\naudio:not([controls]) {\r\n display: none;\r\n height: 0;\r\n}\r\n\r\n/**\r\n * Address `[hidden]` styling not present in IE 8/9/10.\r\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\r\n */\r\n\r\n[hidden],\r\ntemplate {\r\n display: none;\r\n}\r\n\r\n/* Links\r\n ========================================================================== */\r\n\r\n/**\r\n * Remove the gray background color from active links in IE 10.\r\n */\r\n\r\na {\r\n background-color: transparent;\r\n}\r\n\r\n/**\r\n * Improve readability of focused elements when they are also in an\r\n * active/hover state.\r\n */\r\n\r\na:active,\r\na:hover {\r\n outline: 0;\r\n}\r\n\r\n/* Text-level semantics\r\n ========================================================================== */\r\n\r\n/**\r\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\r\n */\r\n\r\nabbr[title] {\r\n border-bottom: 1px dotted;\r\n}\r\n\r\n/**\r\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\r\n */\r\n\r\nb,\r\nstrong {\r\n font-weight: bold;\r\n}\r\n\r\n/**\r\n * Address styling not present in Safari and Chrome.\r\n */\r\n\r\ndfn {\r\n font-style: italic;\r\n}\r\n\r\n/**\r\n * Address variable `h1` font-size and margin within `section` and `article`\r\n * contexts in Firefox 4+, Safari, and Chrome.\r\n */\r\n\r\nh1 {\r\n font-size: 2em;\r\n margin: 0.67em 0;\r\n}\r\n\r\n/**\r\n * Address styling not present in IE 8/9.\r\n */\r\n\r\nmark {\r\n background: #ff0;\r\n color: #000;\r\n}\r\n\r\n/**\r\n * Address inconsistent and variable font size in all browsers.\r\n */\r\n\r\nsmall {\r\n font-size: 80%;\r\n}\r\n\r\n/**\r\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\r\n */\r\n\r\nsub,\r\nsup {\r\n font-size: 75%;\r\n line-height: 0;\r\n position: relative;\r\n vertical-align: baseline;\r\n}\r\n\r\nsup {\r\n top: -0.5em;\r\n}\r\n\r\nsub {\r\n bottom: -0.25em;\r\n}\r\n\r\n/* Embedded content\r\n ========================================================================== */\r\n\r\n/**\r\n * Remove border when inside `a` element in IE 8/9/10.\r\n */\r\n\r\nimg {\r\n border: 0;\r\n}\r\n\r\n/**\r\n * Correct overflow not hidden in IE 9/10/11.\r\n */\r\n\r\nsvg:not(:root) {\r\n overflow: hidden;\r\n}\r\n\r\n/* Grouping content\r\n ========================================================================== */\r\n\r\n/**\r\n * Address margin not present in IE 8/9 and Safari.\r\n */\r\n\r\nfigure {\r\n margin: 1em 40px;\r\n}\r\n\r\n/**\r\n * Address differences between Firefox and other browsers.\r\n */\r\n\r\nhr {\r\n box-sizing: content-box;\r\n height: 0;\r\n}\r\n\r\n/**\r\n * Contain overflow in all browsers.\r\n */\r\n\r\npre {\r\n overflow: auto;\r\n}\r\n\r\n/**\r\n * Address odd `em`-unit font size rendering in all browsers.\r\n */\r\n\r\ncode,\r\nkbd,\r\npre,\r\nsamp {\r\n font-family: monospace, monospace;\r\n font-size: 1em;\r\n}\r\n\r\n/* Forms\r\n ========================================================================== */\r\n\r\n/**\r\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\r\n * styling of `select`, unless a `border` property is set.\r\n */\r\n\r\n/**\r\n * 1. Correct color not being inherited.\r\n * Known issue: affects color of disabled elements.\r\n * 2. Correct font properties not being inherited.\r\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\r\n */\r\n\r\nbutton,\r\ninput,\r\noptgroup,\r\nselect,\r\ntextarea {\r\n color: inherit; /* 1 */\r\n font: inherit; /* 2 */\r\n margin: 0; /* 3 */\r\n}\r\n\r\n/**\r\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\r\n */\r\n\r\nbutton {\r\n overflow: visible;\r\n}\r\n\r\n/**\r\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\r\n * All other form control elements do not inherit `text-transform` values.\r\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\r\n * Correct `select` style inheritance in Firefox.\r\n */\r\n\r\nbutton,\r\nselect {\r\n text-transform: none;\r\n}\r\n\r\n/**\r\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\r\n * and `video` controls.\r\n * 2. Correct inability to style clickable `input` types in iOS.\r\n * 3. Improve usability and consistency of cursor style between image-type\r\n * `input` and others.\r\n */\r\n\r\nbutton,\r\nhtml input[type=\"button\"], /* 1 */\r\ninput[type=\"reset\"],\r\ninput[type=\"submit\"] {\r\n -webkit-appearance: button; /* 2 */\r\n cursor: pointer; /* 3 */\r\n}\r\n\r\n/**\r\n * Re-set default cursor for disabled elements.\r\n */\r\n\r\nbutton[disabled],\r\nhtml input[disabled] {\r\n cursor: default;\r\n}\r\n\r\n/**\r\n * Remove inner padding and border in Firefox 4+.\r\n */\r\n\r\nbutton::-moz-focus-inner,\r\ninput::-moz-focus-inner {\r\n border: 0;\r\n padding: 0;\r\n}\r\n\r\n/**\r\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\r\n * the UA stylesheet.\r\n */\r\n\r\ninput {\r\n line-height: normal;\r\n}\r\n\r\n/**\r\n * It's recommended that you don't attempt to style these elements.\r\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\r\n *\r\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\r\n * 2. Remove excess padding in IE 8/9/10.\r\n */\r\n\r\ninput[type=\"checkbox\"],\r\ninput[type=\"radio\"] {\r\n box-sizing: border-box; /* 1 */\r\n padding: 0; /* 2 */\r\n}\r\n\r\n/**\r\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\r\n * `font-size` values of the `input`, it causes the cursor style of the\r\n * decrement button to change from `default` to `text`.\r\n */\r\n\r\ninput[type=\"number\"]::-webkit-inner-spin-button,\r\ninput[type=\"number\"]::-webkit-outer-spin-button {\r\n height: auto;\r\n}\r\n\r\n/**\r\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\r\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\r\n */\r\n\r\ninput[type=\"search\"] {\r\n -webkit-appearance: textfield; /* 1 */\r\n box-sizing: content-box; /* 2 */\r\n}\r\n\r\n/**\r\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\r\n * Safari (but not Chrome) clips the cancel button when the search input has\r\n * padding (and `textfield` appearance).\r\n */\r\n\r\ninput[type=\"search\"]::-webkit-search-cancel-button,\r\ninput[type=\"search\"]::-webkit-search-decoration {\r\n -webkit-appearance: none;\r\n}\r\n\r\n/**\r\n * Define consistent border, margin, and padding.\r\n */\r\n\r\nfieldset {\r\n border: 1px solid #c0c0c0;\r\n margin: 0 2px;\r\n padding: 0.35em 0.625em 0.75em;\r\n}\r\n\r\n/**\r\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\r\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\r\n */\r\n\r\nlegend {\r\n border: 0; /* 1 */\r\n padding: 0; /* 2 */\r\n}\r\n\r\n/**\r\n * Remove default vertical scrollbar in IE 8/9/10/11.\r\n */\r\n\r\ntextarea {\r\n overflow: auto;\r\n}\r\n\r\n/**\r\n * Don't inherit the `font-weight` (applied by a rule above).\r\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\r\n */\r\n\r\noptgroup {\r\n font-weight: bold;\r\n}\r\n\r\n/* Tables\r\n ========================================================================== */\r\n\r\n/**\r\n * Remove most spacing between table cells.\r\n */\r\n\r\ntable {\r\n border-collapse: collapse;\r\n border-spacing: 0;\r\n}\r\n\r\ntd,\r\nth {\r\n padding: 0;\r\n}\r\n","/*! HTML5 Boilerplate v5.1.0 | MIT License | https://html5boilerplate.com/ */\n/*\r\n * What follows is the result of much research on cross-browser styling.\r\n * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,\r\n * Kroc Camen, and the H5BP dev community and team.\r\n */\n/*\r\n Global theme variables go first. Some of them overwrite third parties'\r\n defaults, none of them the use third parties' mixins.\r\n*/\n/*\r\n @include-media breakpoints.\r\n Those are the defaults, actually, but let's be explicit:\r\n we'll be using those three keys for all our responsive settings.\r\n*/\n/*\r\n Modular scale base\r\n*/\n/*\r\n Font-awesome settings\r\n*/\n/*\r\n Import third-party stuff\r\n*/\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n/**\r\n * 1. Set default font family to sans-serif.\r\n * 2. Prevent iOS and IE text size adjust after device orientation change,\r\n * without disabling user zoom.\r\n */\nhtml {\n font-family: sans-serif;\n /* 1 */\n -ms-text-size-adjust: 100%;\n /* 2 */\n -webkit-text-size-adjust: 100%;\n /* 2 */ }\n\n/**\r\n * Remove default margin.\r\n */\nbody {\n margin: 0; }\n\n/* HTML5 display definitions\r\n ========================================================================== */\n/**\r\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\r\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\r\n * and Firefox.\r\n * Correct `block` display not defined for `main` in IE 11.\r\n */\narticle, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary {\n display: block; }\n\n/**\r\n * 1. Correct `inline-block` display not defined in IE 8/9.\r\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\r\n */\naudio, canvas, progress, video {\n display: inline-block;\n /* 1 */\n vertical-align: baseline;\n /* 2 */ }\n\n/**\r\n * Prevent modern browsers from displaying `audio` without controls.\r\n * Remove excess height in iOS 5 devices.\r\n */\naudio:not([controls]) {\n display: none;\n height: 0; }\n\n/**\r\n * Address `[hidden]` styling not present in IE 8/9/10.\r\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\r\n */\n[hidden], template {\n display: none; }\n\n/* Links\r\n ========================================================================== */\n/**\r\n * Remove the gray background color from active links in IE 10.\r\n */\na {\n background-color: transparent; }\n\n/**\r\n * Improve readability of focused elements when they are also in an\r\n * active/hover state.\r\n */\na:active, a:hover {\n outline: 0; }\n\n/* Text-level semantics\r\n ========================================================================== */\n/**\r\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\r\n */\nabbr[title] {\n border-bottom: 1px dotted; }\n\n/**\r\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\r\n */\nb, strong {\n font-weight: bold; }\n\n/**\r\n * Address styling not present in Safari and Chrome.\r\n */\ndfn {\n font-style: italic; }\n\n/**\r\n * Address variable `h1` font-size and margin within `section` and `article`\r\n * contexts in Firefox 4+, Safari, and Chrome.\r\n */\nh1 {\n font-size: 2em;\n margin: 0.67em 0; }\n\n/**\r\n * Address styling not present in IE 8/9.\r\n */\nmark {\n background: #ff0;\n color: #000; }\n\n/**\r\n * Address inconsistent and variable font size in all browsers.\r\n */\nsmall {\n font-size: 80%; }\n\n/**\r\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\r\n */\nsub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline; }\n\nsup {\n top: -0.5em; }\n\nsub {\n bottom: -0.25em; }\n\n/* Embedded content\r\n ========================================================================== */\n/**\r\n * Remove border when inside `a` element in IE 8/9/10.\r\n */\nimg {\n border: 0; }\n\n/**\r\n * Correct overflow not hidden in IE 9/10/11.\r\n */\nsvg:not(:root) {\n overflow: hidden; }\n\n/* Grouping content\r\n ========================================================================== */\n/**\r\n * Address margin not present in IE 8/9 and Safari.\r\n */\nfigure {\n margin: 1em 40px; }\n\n/**\r\n * Address differences between Firefox and other browsers.\r\n */\nhr {\n box-sizing: content-box;\n height: 0; }\n\n/**\r\n * Contain overflow in all browsers.\r\n */\npre {\n overflow: auto; }\n\n/**\r\n * Address odd `em`-unit font size rendering in all browsers.\r\n */\ncode, kbd, pre, samp {\n font-family: monospace, monospace;\n font-size: 1em; }\n\n/* Forms\r\n ========================================================================== */\n/**\r\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\r\n * styling of `select`, unless a `border` property is set.\r\n */\n/**\r\n * 1. Correct color not being inherited.\r\n * Known issue: affects color of disabled elements.\r\n * 2. Correct font properties not being inherited.\r\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\r\n */\nbutton, input, optgroup, select, textarea {\n color: inherit;\n /* 1 */\n font: inherit;\n /* 2 */\n margin: 0;\n /* 3 */ }\n\n/**\r\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\r\n */\nbutton {\n overflow: visible; }\n\n/**\r\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\r\n * All other form control elements do not inherit `text-transform` values.\r\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\r\n * Correct `select` style inheritance in Firefox.\r\n */\nbutton, select {\n text-transform: none; }\n\n/**\r\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\r\n * and `video` controls.\r\n * 2. Correct inability to style clickable `input` types in iOS.\r\n * 3. Improve usability and consistency of cursor style between image-type\r\n * `input` and others.\r\n */\nbutton, html input[type=\"button\"], input[type=\"reset\"], input[type=\"submit\"] {\n -webkit-appearance: button;\n /* 2 */\n cursor: pointer;\n /* 3 */ }\n\n/**\r\n * Re-set default cursor for disabled elements.\r\n */\nbutton[disabled], html input[disabled] {\n cursor: default; }\n\n/**\r\n * Remove inner padding and border in Firefox 4+.\r\n */\nbutton::-moz-focus-inner, input::-moz-focus-inner {\n border: 0;\n padding: 0; }\n\n/**\r\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\r\n * the UA stylesheet.\r\n */\ninput {\n line-height: normal; }\n\n/**\r\n * It's recommended that you don't attempt to style these elements.\r\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\r\n *\r\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\r\n * 2. Remove excess padding in IE 8/9/10.\r\n */\ninput[type=\"checkbox\"], input[type=\"radio\"] {\n box-sizing: border-box;\n /* 1 */\n padding: 0;\n /* 2 */ }\n\n/**\r\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\r\n * `font-size` values of the `input`, it causes the cursor style of the\r\n * decrement button to change from `default` to `text`.\r\n */\ninput[type=\"number\"]::-webkit-inner-spin-button, input[type=\"number\"]::-webkit-outer-spin-button {\n height: auto; }\n\n/**\r\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\r\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\r\n */\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n /* 1 */\n box-sizing: content-box;\n /* 2 */ }\n\n/**\r\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\r\n * Safari (but not Chrome) clips the cancel button when the search input has\r\n * padding (and `textfield` appearance).\r\n */\ninput[type=\"search\"]::-webkit-search-cancel-button, input[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none; }\n\n/**\r\n * Define consistent border, margin, and padding.\r\n */\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em; }\n\n/**\r\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\r\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\r\n */\nlegend {\n border: 0;\n /* 1 */\n padding: 0;\n /* 2 */ }\n\n/**\r\n * Remove default vertical scrollbar in IE 8/9/10/11.\r\n */\ntextarea {\n overflow: auto; }\n\n/**\r\n * Don't inherit the `font-weight` (applied by a rule above).\r\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\r\n */\noptgroup {\n font-weight: bold; }\n\n/* Tables\r\n ========================================================================== */\n/**\r\n * Remove most spacing between table cells.\r\n */\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\n\ntd, th {\n padding: 0; }\n\n/* ==========================================================================\r\n Base styles: opinionated defaults\r\n ========================================================================== */\nhtml {\n color: #222;\n font-size: 1em;\n line-height: 1.4; }\n\n/*\r\n * Remove text-shadow in selection highlight:\r\n * https://twitter.com/miketaylr/status/12228805301\r\n *\r\n * These selection rule sets have to be separate.\r\n * Customize the background color to match your design.\r\n */\n::-moz-selection {\n background: #b3d4fc;\n text-shadow: none; }\n\n::selection {\n background: #b3d4fc;\n text-shadow: none; }\n\n/*\r\n * A better looking default horizontal rule\r\n */\nhr {\n display: block;\n height: 1px;\n border: 0;\n border-top: 1px solid #ccc;\n margin: 1em 0;\n padding: 0; }\n\n/*\r\n * Remove the gap between audio, canvas, iframes,\r\n * images, videos and the bottom of their containers:\r\n * https://github.com/h5bp/html5-boilerplate/issues/440\r\n */\naudio, canvas, iframe, img, svg, video {\n vertical-align: middle; }\n\n/*\r\n * Remove default fieldset styles.\r\n */\nfieldset {\n border: 0;\n margin: 0;\n padding: 0; }\n\n/*\r\n * Allow only vertical resizing of textareas.\r\n */\ntextarea {\n resize: vertical; }\n\n/* ==========================================================================\r\n Browser Upgrade Prompt\r\n ========================================================================== */\n.browserupgrade {\n margin: 0.2em 0;\n background: #ccc;\n color: #000;\n padding: 0.2em 0; }\n\n/*\r\n And here go our own styles\r\n*/\nbody {\n font-weight: normal;\n font-size: 16px;\n line-height: 1.5;\n font-family: \"Open Sans\", Helvetica, sans-serif; }\n\n.Masthead {\n background-color: #f3df49;\n color: #2e2e2c;\n padding: 0 13px;\n overflow: hidden;\n vertical-align: text-bottom; }\n\n.Masthead-Logo {\n float: left; }\n\n.Masthead-Logo-Title {\n margin: 0; }\n\n.Masthead-Menu {\n float: right; }\n\n.Content {\n margin-left: 13px;\n margin-right: 13px; }\n\n/*\r\n Lists are our collection of links.\r\n It's either a category that a link is part of\r\n or, when filter or search is applied, a virtual collection of all the results.\r\n*/\n.List.is-folded > .List-Body {\n display: none; }\n\n.List-Header {\n margin-bottom: 8px; }\n\n.List-Item {\n margin-bottom: 10px; }\n\n.List-Item-Header {\n font-size: 20px; }\n\n.List-Item-Title {\n font-style: normal; }\n\n.List-Item-Author {\n font-size: 20px;\n font-style: italic; }\n\n.List-Item-Description {\n font-style: italic;\n font-size: 16px;\n margin: 0; }\n\n.List-Item-Tags, .List-Item-Level {\n font-size: 13px; }\n\n/*\r\n H5Bp helpers (supposed to go _after_ custom styles)\r\n*/\n/* ==========================================================================\r\n Helper classes\r\n ========================================================================== */\n/*\r\n * Hide visually and from screen readers:\r\n */\n.hidden {\n display: none !important; }\n\n/*\r\n * Hide only visually, but have it available for screen readers:\r\n * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility\r\n */\n.visuallyhidden {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px; }\n\n/*\r\n * Extends the .visuallyhidden class to allow the element\r\n * to be focusable when navigated to via the keyboard:\r\n * https://www.drupal.org/node/897638\r\n */\n.visuallyhidden.focusable:active, .visuallyhidden.focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto; }\n\n/*\r\n * Hide visually and from screen readers, but maintain layout\r\n */\n.invisible {\n visibility: hidden; }\n\n/*\r\n * Clearfix: contain floats\r\n *\r\n * For modern browsers\r\n * 1. The space content is one way to avoid an Opera bug when the\r\n * `contenteditable` attribute is included anywhere else in the document.\r\n * Otherwise it causes space to appear at the top and bottom of elements\r\n * that receive the `clearfix` class.\r\n * 2. The use of `table` rather than `block` is only necessary if using\r\n * `:before` to contain the top-margins of child elements.\r\n */\n.clearfix:before, .clearfix:after {\n content: \" \";\n /* 1 */\n display: table;\n /* 2 */ }\n\n.clearfix:after {\n clear: both; }\n\n/* ==========================================================================\r\n EXAMPLE Media Queries for Responsive Design.\r\n These examples override the primary ('mobile first') styles.\r\n Modify as content requires.\r\n ========================================================================== */\n/* ==========================================================================\r\n Print styles.\r\n Inlined to avoid the additional HTTP request:\r\n http://www.phpied.com/delay-loading-your-print-css/\r\n ========================================================================== */\n@media print {\n *, *:before, *:after {\n background: transparent !important;\n color: #000 !important;\n /* Black prints faster:\r\n http://www.sanbeiji.com/archives/953 */\n box-shadow: none !important;\n text-shadow: none !important; }\n a, a:visited {\n text-decoration: underline; }\n a[href]:after {\n content: \" (\" attr(href) \")\"; }\n abbr[title]:after {\n content: \" (\" attr(title) \")\"; }\n /*\r\n * Don't show links that are fragment identifiers,\r\n * or use the `javascript:` pseudo protocol\r\n */\n a[href^=\"#\"]:after, a[href^=\"javascript:\"]:after {\n content: \"\"; }\n pre, blockquote {\n border: 1px solid #999;\n page-break-inside: avoid; }\n /*\r\n * Printing Tables:\r\n * http://css-discuss.incutio.com/wiki/Printing_Tables\r\n */\n thead {\n display: table-header-group; }\n tr, img {\n page-break-inside: avoid; }\n img {\n max-width: 100% !important; }\n p, h2, h3 {\n orphans: 3;\n widows: 3; }\n h2, h3 {\n page-break-after: avoid; } }\n\nhtml {\n display: inline-block; }\n\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/dist/css/style.css b/dist/css/style.css new file mode 100644 index 0000000..0bb24df --- /dev/null +++ b/dist/css/style.css @@ -0,0 +1,588 @@ +/*! HTML5 Boilerplate v5.1.0 | MIT License | https://html5boilerplate.com/ */ +/* + * What follows is the result of much research on cross-browser styling. + * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal, + * Kroc Camen, and the H5BP dev community and team. + */ +/* + Global theme variables go first. Some of them overwrite third parties' + defaults, none of them the use third parties' mixins. +*/ +/* + @include-media breakpoints. + Those are the defaults, actually, but let's be explicit: + we'll be using those three keys for all our responsive settings. +*/ +/* + Modular scale base +*/ +/* + Font-awesome settings +*/ +/* + Import third-party stuff +*/ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS and IE text size adjust after device orientation change, + * without disabling user zoom. + */ +html { + font-family: sans-serif; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ } + +/** + * Remove default margin. + */ +body { + margin: 0; } + +/* HTML5 display definitions + ========================================================================== */ +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ +article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { + display: block; } + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ +audio, canvas, progress, video { + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ } + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ +audio:not([controls]) { + display: none; + height: 0; } + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. + */ +[hidden], template { + display: none; } + +/* Links + ========================================================================== */ +/** + * Remove the gray background color from active links in IE 10. + */ +a { + background-color: transparent; } + +/** + * Improve readability of focused elements when they are also in an + * active/hover state. + */ +a:active, a:hover { + outline: 0; } + +/* Text-level semantics + ========================================================================== */ +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ +abbr[title] { + border-bottom: 1px dotted; } + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ +b, strong { + font-weight: bold; } + +/** + * Address styling not present in Safari and Chrome. + */ +dfn { + font-style: italic; } + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +/** + * Address styling not present in IE 8/9. + */ +mark { + background: #ff0; + color: #000; } + +/** + * Address inconsistent and variable font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ +sub, sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +/* Embedded content + ========================================================================== */ +/** + * Remove border when inside `a` element in IE 8/9/10. + */ +img { + border: 0; } + +/** + * Correct overflow not hidden in IE 9/10/11. + */ +svg:not(:root) { + overflow: hidden; } + +/* Grouping content + ========================================================================== */ +/** + * Address margin not present in IE 8/9 and Safari. + */ +figure { + margin: 1em 40px; } + +/** + * Address differences between Firefox and other browsers. + */ +hr { + box-sizing: content-box; + height: 0; } + +/** + * Contain overflow in all browsers. + */ +pre { + overflow: auto; } + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ +code, kbd, pre, samp { + font-family: monospace, monospace; + font-size: 1em; } + +/* Forms + ========================================================================== */ +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ +button, input, optgroup, select, textarea { + color: inherit; + /* 1 */ + font: inherit; + /* 2 */ + margin: 0; + /* 3 */ } + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ +button { + overflow: visible; } + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ +button, select { + text-transform: none; } + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ +button, html input[type="button"], input[type="reset"], input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer; + /* 3 */ } + +/** + * Re-set default cursor for disabled elements. + */ +button[disabled], html input[disabled] { + cursor: default; } + +/** + * Remove inner padding and border in Firefox 4+. + */ +button::-moz-focus-inner, input::-moz-focus-inner { + border: 0; + padding: 0; } + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ +input { + line-height: normal; } + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ +input[type="checkbox"], input[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ +input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { + height: auto; } + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome. + */ +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + box-sizing: content-box; + /* 2 */ } + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ +input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * Define consistent border, margin, and padding. + */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; } + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ +legend { + border: 0; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ +textarea { + overflow: auto; } + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ +optgroup { + font-weight: bold; } + +/* Tables + ========================================================================== */ +/** + * Remove most spacing between table cells. + */ +table { + border-collapse: collapse; + border-spacing: 0; } + +td, th { + padding: 0; } + +/* ========================================================================== + Base styles: opinionated defaults + ========================================================================== */ +html { + color: #222; + font-size: 1em; + line-height: 1.4; } + +/* + * Remove text-shadow in selection highlight: + * https://twitter.com/miketaylr/status/12228805301 + * + * These selection rule sets have to be separate. + * Customize the background color to match your design. + */ +::-moz-selection { + background: #b3d4fc; + text-shadow: none; } + +::selection { + background: #b3d4fc; + text-shadow: none; } + +/* + * A better looking default horizontal rule + */ +hr { + display: block; + height: 1px; + border: 0; + border-top: 1px solid #ccc; + margin: 1em 0; + padding: 0; } + +/* + * Remove the gap between audio, canvas, iframes, + * images, videos and the bottom of their containers: + * https://github.com/h5bp/html5-boilerplate/issues/440 + */ +audio, canvas, iframe, img, svg, video { + vertical-align: middle; } + +/* + * Remove default fieldset styles. + */ +fieldset { + border: 0; + margin: 0; + padding: 0; } + +/* + * Allow only vertical resizing of textareas. + */ +textarea { + resize: vertical; } + +/* ========================================================================== + Browser Upgrade Prompt + ========================================================================== */ +.browserupgrade { + margin: 0.2em 0; + background: #ccc; + color: #000; + padding: 0.2em 0; } + +/* + And here go our own styles +*/ +body { + font-weight: normal; + font-size: 16px; + line-height: 1.5; + font-family: "Open Sans", Helvetica, sans-serif; } + +.Masthead { + background-color: #f3df49; + color: #2e2e2c; + padding: 0 13px; + overflow: hidden; + vertical-align: text-bottom; } + +.Masthead-Logo { + float: left; } + +.Masthead-Logo-Title { + margin: 0; } + +.Masthead-Menu { + float: right; } + +.Content { + margin-left: 13px; + margin-right: 13px; } + +/* + Lists are our collection of links. + It's either a category that a link is part of + or, when filter or search is applied, a virtual collection of all the results. +*/ +.List.is-folded > .List-Body { + display: none; } + +.List-Header { + margin-bottom: 8px; } + +.List-Item { + margin-bottom: 10px; } + +.List-Item-Header { + font-size: 20px; } + +.List-Item-Title { + font-style: normal; } + +.List-Item-Author { + font-size: 20px; + font-style: italic; } + +.List-Item-Description { + font-style: italic; + font-size: 16px; + margin: 0; } + +.List-Item-Tags, .List-Item-Level { + font-size: 13px; } + +/* + H5Bp helpers (supposed to go _after_ custom styles) +*/ +/* ========================================================================== + Helper classes + ========================================================================== */ +/* + * Hide visually and from screen readers: + */ +.hidden { + display: none !important; } + +/* + * Hide only visually, but have it available for screen readers: + * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility + */ +.visuallyhidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; } + +/* + * Extends the .visuallyhidden class to allow the element + * to be focusable when navigated to via the keyboard: + * https://www.drupal.org/node/897638 + */ +.visuallyhidden.focusable:active, .visuallyhidden.focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; } + +/* + * Hide visually and from screen readers, but maintain layout + */ +.invisible { + visibility: hidden; } + +/* + * Clearfix: contain floats + * + * For modern browsers + * 1. The space content is one way to avoid an Opera bug when the + * `contenteditable` attribute is included anywhere else in the document. + * Otherwise it causes space to appear at the top and bottom of elements + * that receive the `clearfix` class. + * 2. The use of `table` rather than `block` is only necessary if using + * `:before` to contain the top-margins of child elements. + */ +.clearfix:before, .clearfix:after { + content: " "; + /* 1 */ + display: table; + /* 2 */ } + +.clearfix:after { + clear: both; } + +/* ========================================================================== + EXAMPLE Media Queries for Responsive Design. + These examples override the primary ('mobile first') styles. + Modify as content requires. + ========================================================================== */ +/* ========================================================================== + Print styles. + Inlined to avoid the additional HTTP request: + http://www.phpied.com/delay-loading-your-print-css/ + ========================================================================== */ +@media print { + *, *:before, *:after { + background: transparent !important; + color: #000 !important; + /* Black prints faster: + http://www.sanbeiji.com/archives/953 */ + box-shadow: none !important; + text-shadow: none !important; } + a, a:visited { + text-decoration: underline; } + a[href]:after { + content: " (" attr(href) ")"; } + abbr[title]:after { + content: " (" attr(title) ")"; } + /* + * Don't show links that are fragment identifiers, + * or use the `javascript:` pseudo protocol + */ + a[href^="#"]:after, a[href^="javascript:"]:after { + content: ""; } + pre, blockquote { + border: 1px solid #999; + page-break-inside: avoid; } + /* + * Printing Tables: + * http://css-discuss.incutio.com/wiki/Printing_Tables + */ + thead { + display: table-header-group; } + tr, img { + page-break-inside: avoid; } + img { + max-width: 100% !important; } + p, h2, h3 { + orphans: 3; + widows: 3; } + h2, h3 { + page-break-after: avoid; } } + +html { + display: inline-block; } + + +/*# sourceMappingURL=maps/style.css.map */ \ No newline at end of file diff --git a/dist/favicon.ico b/dist/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..be74abd69ad6a32de7375df13cab9354798e328f GIT binary patch literal 766 zcmc(dze~eV5XUd2fg&jH87YDYDQKxq1{4b-_ydP-wqS9vgGh17QXQQAwOE{VaBvi* zmu^z9t({y-&1ey8Y_x;?x+`BviV9;aRjMgZ8M*!jgkRrFqSI9;F zHyfX@Az|AvVmn~YWWZP`0&JWEY~BFm?*Vq}VD7&_%x%MP$p`D`4JMC!K|B7pt?Mmp zUJAB7rxMXS6=!P+AtLU9V)J#61WPxwipRXCHO{BJ`l{m53#=t97a!znv~vfmr|AaP zRGIT7#0FyJy3Z*hL{GQp-0TRhX8UzZ)+>%?mK0^goaX4Q;x -- -- + +# THANKS + + + +# TECHNOLOGY COLOPHON + + CSS3, HTML5 + Apache Server Configs, jQuery, Modernizr, Normalize.css diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..52cf604 --- /dev/null +++ b/dist/index.html @@ -0,0 +1,1152 @@ + + + + + + Essential JavaScript Links + + + + + + + + + + + +
+ +
+

Required Reading (Online resources)

+
+ +
+
+ JavaScript Training Sucks +
+

99 out of 100 JS developers lack the skills they need to fill hundreds of thousands of jobs. We can change that.

+
+ + + +
+
+ JavaScript Objects +
+

An excellent explanation of inheritance in JavaScript by Kyle Simpson

+
+ + + + + + + +
+
+ Typed JavaScript +
+

Excellent post about the state of typed JavaScript by Axel Rauschmayer

+
+ + + +
+
+
+

Required Viewing

+
+ + + + +
+
+ Delivering the Goods +
+

Paul Irish on one of the most important but overlooked topics in the development world today - page load times.

+
+
+
+ Simplicity Matters +
+

A later version of the influential talk, "Simple Made Easy" by [Rich Hickey](https://twitter.com/richhickey)

+
+
+
+
+

Spec

+
+
+
+ ES5 Spec +
+

An annotated, hyperlinked version of the ES5 spec

+
+ +
+
+
+

Books

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

Dev tools & collaboration

+
+
+
+ nvm +
+

First install this...

+
+
+
+ Node +
+

Then install Node (with nvm). You'll need this even if you're a front-end dev.

+
+
+
+ npm +
+

Install lots of other things with npm. **The package manager for JavaScript.** Comes with Node.

+
+ +
+
+ Node Inspector +
+

Debug Node code with the Chrome debug tools

+
+
+
+ TraceGL +
+

Powerful runtime analysis of live JavaScript code

+
+
+
+ Tern +
+

Static analysis in JavaScript

+
+
+
+ JSDoc +
+

Pair with [Tern](http://ternjs.net/) for static analysis

+
+
+
+ Nitrous.IO +
+

(Supports live collaboration / pair programming)

+
+
+
+ Slack +
+

Chat for teams, with GitHub and Google hangouts integration

+
+ + +
+
+
+

Building

+
+
+
+ Browserify +
+

Bundle modules for the browser.

+
+ +
+
+
+

Testing / Lint / Quality checkers

+
+ + + +
+
+ eslint-plugin-no-class +
+

Forbid the ES6 `class` keyword. [Why?](https://github.com/eslint/eslint/pull/2096#issuecomment-83044888)

+
+
+
+ Istanbul +
+

Code coverage reporting

+
+
+
+ tape +
+

Minimal, dead simple unit testing. (This is all you need, really!)

+
+
+
+ faucet +
+

Prettify unit testing output (like what comes from tape).

+
+
+
+ Supertest +
+

The best way to test HTTP endpoints.

+
+
+
+
+

Transpilers

+
+
+
+ Babel +
+

Transpile ES6, ES7 to ES5

+
+ +
+
+ Emscripten +
+

Frequently used for C/C++ JavaScript ports

+
+
+
+ ES6 tools +
+

Addy Osmani's ES6 Tools list

+
+
+
+
+

JavaScript environments

+
+
+
+ Node.js +
+

Server side JavaScript and more

+
+
+
+ io.js +
+

The Node fork

+
+
+
+
+

Libraries

+
+
+
+ es5-shim +
+

Stable, production ready.

+
+
+
+ es6-shim +
+

Somewhat stable, but a few things I thought were solid got shifted to ES7.

+
+
+
+ es7-shim +
+

Experimental. Use with caution.

+
+ +
+
+ HTML5 Boilerplate +
+

You'll want to cherry-pick the best of this for your production apps. See [Initializr](http://www.initializr.com).

+
+ +
+
+ rootrequire +
+

Require files relative to your project path using the normal node require().

+
+
+
+ dotty +
+

Get deep properties using dot notation without throwing. e.g., `dotty.get(req, 'user.id');`

+
+ +
+
+ isomorphic-fetch +
+

A [WHATWG fetch](https://fetch.spec.whatwg.org/). standard polyfill.

+
+
+
+ sseasy +
+

Server Sent Events for Node (HTML5 standard push notifications).

+
+ +
+
+ jQuery +
+

Yes, [I still use jQuery](https://docs.google.com/document/d/1LPaPA30bLUB_publLIMF0RlhdnPx_ePXm7oW02iiT6o/edit#) and so do 61% of the top 100,000 websites - for good reason.

+
+
+
+ Blaze +
+

DOM-diffing isomorphic reactive templates from Meteor.

+
+
+
+ React +
+

What do Facebook, Instagram, Netflix and PayPal have in common? React.

+
+
+
+ Lodash-FP +
+

Like Underscore, but much faster, and featuring a more expressive API.

+
+
+
+ RxJS +
+

Reactive extensions for JavaScript. [What's reactive?](https://medium.com/javascript-scene/the-two-pillars-of-javascript-pt-2-functional-programming-a63aa53a41a4)

+
+
+
+ Page.js +
+

Tiny client-side router, inspired by Express.

+
+
+
+ Moment +
+

A lightweight JavaScript date library for parsing, validating, manipulating, and formatting dates.

+
+
+
+ Globalize +
+

i18n / translate your app for many languages and locations (locales)

+
+
+
+ Lusca +
+

Secure your Express application. By the Kraken team at PayPal.

+
+
+
+ Express +
+

The most popular framework for Node.

+
+
+
+ Stampit +
+

Create objects from reusable, composable behaviors. Prototypal inheritance with stamps.

+
+
+
+ Credential +
+

If you write Node apps with password logins, you need Credential.

+
+
+
+ cuid +
+

GUIDs are broken - use cuid, instead.

+
+
+
+ velocity +
+

& [Velocity Motion Designer (VMD)](http://julian.com/research/velocity/#vmd) UI animation library.

+
+
+
+ is-my-json-valid +
+

A fast [json-schema](http://json-schema.org/) validator.

+
+
+
+ inquirer.js +
+

Great library for building CLI tools.

+
+
+
+
+

React

+
+ + + + + + +
+
+
+

Web Components

+
+ + + + + + +
+
+ x-gif +
+

This web component wins the internet.

+
+
+
+ Vulcanize +
+

Don't let web components slow your app down. Bundle your HTML imports.

+
+
+
+
+

QA / Deployment / Monitoring / CI

+
+
+
+ PM2 +
+

Process monitoring / self repair

+
+
+
+ New Relic +
+

Deep insights into the performance and health of your production apps

+
+
+
+ Sauce Labs +
+

Cross platform web application testing with great collaboration and integration support

+
+ +
+
+ Docker +
+

Run your CI process using the same OS configs as your production systems.

+
+
+
+ Shippable +
+

Docker-based hosted build / CI

+
+
+
+
+

Community

+
+ + + +
+
+
+

News

+
+ + + + + + +
+
+
+

Pasting / sharing code

+
+ + +
+
+
+

Contests

+
+
+
+ DemoJS +
+

The JavaScript demoscene party

+
+
+
+ JS1k +
+

JavaScript demos in 1k of memory

+
+
+
+ JS13k Games +
+

JavaScript games in 13k of memory

+
+
+
+ FightCode game +
+

program virtual battle bots and climb the leaderboard

+
+ +
+
+
+

Hackable Hardware

+
+ + + + + + +
+
+
+

Hosting

+
+ +
+
+
+

For kids (and people who just love to have fun)

+
+ +
+
+ LearnToMod +
+

Mod Minecraft with JavaScript

+
+ +
+
+
+

Twitter (alphabetical order)

+
+
+
+ Addy Osmani +
+

App architecture expert, Chrome dev tools champion

+
+
+
+ Angus Croll +
+

Author, "If Hemingway Wrote JavaScript"

+
+ + +
+
+ David Nolen +
+

Great functional programming content

+
+ +
+
+ EchoJS +
+

News and links

+
+
+
+ Eric Elliott +
+

That's me. O'Reilly author. JavaScript architect. JS Instructor.

+
+
+
+ Jafar Husain +
+

Great talks on RxJS, ES next, etc...

+
+
+
+ James Halliday +
+

aka Substack - author of ~one million~ Node modules you probably use.

+
+
+
+ James Long +
+

CSP, functional programming advocate, Mozilla developer

+
+ + + +
+
+ Kyle Simpson +
+

Author, YDKJS - O'Reilly, JS Instructor, open web evangelist

+
+ + + +
+
+ Paul Irish +
+

Developer evangelist, Chrome dev tools champion

+
+ +
+
+ YDKJS +
+

You Don't Know JS, O'Reilly book series by Kyle Simpson

+
+
+
+
+
© ’15 Eric Elliot & friends
+ + + + + + \ No newline at end of file diff --git a/dist/js/main.js b/dist/js/main.js new file mode 100644 index 0000000..74a2982 --- /dev/null +++ b/dist/js/main.js @@ -0,0 +1,40 @@ +function List_Header_onClick(event) { + if (this != event.target) + return; + + var list = $(this).closest('.List'); + + if (!list) { + console.warn('No parent .List found for this header.'); + return; + } + + List_setFolded(list, !list.is('.is-folded')); +} + +function List_setFolded(list, folded) { + if (folded) + list.addClass('is-folded'); + else { + // we're unfolding this one, so folding anything else + $('.List:not(.is-folded)').each(function() { + $(this).addClass('is-folded'); + }); + + list.removeClass('is-folded'); + } +} + +$(document).ready(function() { + $('.List').each(function(index) { + var header = $(this).find('.List-Header'); + if (!header) { + console.warn('No .List-Header found in this category.'); + return; + } + header.click(List_Header_onClick); + + if (index > 0) + $(this).addClass('is-folded'); + }); +}); \ No newline at end of file diff --git a/dist/js/plugins.js b/dist/js/plugins.js new file mode 100644 index 0000000..f887480 --- /dev/null +++ b/dist/js/plugins.js @@ -0,0 +1,24 @@ +// Avoid `console` errors in browsers that lack a console. +(function() { + var method; + var noop = function () {}; + var methods = [ + 'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error', + 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', + 'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd', + 'timeline', 'timelineEnd', 'timeStamp', 'trace', 'warn' + ]; + var length = methods.length; + var console = (window.console = window.console || {}); + + while (length--) { + method = methods[length]; + + // Only stub undefined methods. + if (!console[method]) { + console[method] = noop; + } + } +}()); + +// Place any jQuery/helper plugins in here. diff --git a/dist/js/vendor/jquery-1.11.2.min.js b/dist/js/vendor/jquery-1.11.2.min.js new file mode 100644 index 0000000..826372a --- /dev/null +++ b/dist/js/vendor/jquery-1.11.2.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.11.2 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.2",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; +return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/\s*$/g,rb={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:k.htmlSerialize?[0,"",""]:[1,"X
","
"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?""!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("