diff --git a/bundle.js b/bundle.js index 94809875572e7..e5bf560118a81 100644 --- a/bundle.js +++ b/bundle.js @@ -1,28 +1,28 @@ -!function(e){function n(r){if(t[r])return t[r].exports;var a=t[r]={exports:{},id:r,loaded:!1};return e[r].call(a.exports,a,a.exports,n),a.loaded=!0,a.exports}var t={};return n.m=e,n.c=t,n.p="",n(0)}(function(e){for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n))switch(typeof e[n]){case"number":e[n]=e[e[n]];break;case"object":e[n]=function(n){var t=n.slice(1),r=e[n[0]];return function(e,n,a){r.apply(null,[e,n,a].concat(t))}}(e[n])}return e}([function(module,exports,__webpack_require__){eval("module.exports = __webpack_require__(165);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** multi main\n ** module id = 0\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///multi_main?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactBrowserEventEmitter\n * @typechecks static-only\n */\n\n'use strict';\n\nvar EventConstants = __webpack_require__(117);\nvar EventPluginHub = __webpack_require__(211);\nvar EventPluginRegistry = __webpack_require__(236);\nvar ReactEventEmitterMixin = __webpack_require__(237);\nvar ViewportMetrics = __webpack_require__(238);\n\nvar assign = __webpack_require__(72);\nvar isEventSupported = __webpack_require__(205);\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n * - Top-level delegation is used to trap most native browser events. This\n * may only occur in the main thread and is the responsibility of\n * ReactEventListener, which is injected and can therefore support pluggable\n * event sources. This is the only work that occurs in the main thread.\n *\n * - We normalize and de-duplicate events to account for browser quirks. This\n * may be done in the worker thread.\n *\n * - Forward these native events (with the associated top-level type used to\n * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n * to extract any synthetic events.\n *\n * - The `EventPluginHub` will then process each event by annotating them with\n * \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n * - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+ .\n * | DOM | .\n * +------------+ .\n * | .\n * v .\n * +------------+ .\n * | ReactEvent | .\n * | Listener | .\n * +------------+ . +-----------+\n * | . +--------+|SimpleEvent|\n * | . | |Plugin |\n * +-----|------+ . v +-----------+\n * | | | . +--------------+ +------------+\n * | +-----------.--->|EventPluginHub| | Event |\n * | | . | | +-----------+ | Propagators|\n * | ReactEvent | . | | |TapEvent | |------------|\n * | Emitter | . | |<---+|Plugin | |other plugin|\n * | | . | | +-----------+ | utilities |\n * | +-----------.--->| | +------------+\n * | | | . +--------------+\n * +-----|------+ . ^ +-----------+\n * | . | |Enter/Leave|\n * + . +-------+|Plugin |\n * +-------------+ . +-----------+\n * | application | .\n * |-------------| .\n * | | .\n * | | .\n * +-------------+ .\n * .\n * React Core . General Purpose Event Plugin System\n */\n\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0;\n\n// For events like 'submit' which don't consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don't include them here\nvar topEventMapping = {\n topBlur: 'blur',\n topChange: 'change',\n topClick: 'click',\n topCompositionEnd: 'compositionend',\n topCompositionStart: 'compositionstart',\n topCompositionUpdate: 'compositionupdate',\n topContextMenu: 'contextmenu',\n topCopy: 'copy',\n topCut: 'cut',\n topDoubleClick: 'dblclick',\n topDrag: 'drag',\n topDragEnd: 'dragend',\n topDragEnter: 'dragenter',\n topDragExit: 'dragexit',\n topDragLeave: 'dragleave',\n topDragOver: 'dragover',\n topDragStart: 'dragstart',\n topDrop: 'drop',\n topFocus: 'focus',\n topInput: 'input',\n topKeyDown: 'keydown',\n topKeyPress: 'keypress',\n topKeyUp: 'keyup',\n topMouseDown: 'mousedown',\n topMouseMove: 'mousemove',\n topMouseOut: 'mouseout',\n topMouseOver: 'mouseover',\n topMouseUp: 'mouseup',\n topPaste: 'paste',\n topScroll: 'scroll',\n topSelectionChange: 'selectionchange',\n topTextInput: 'textInput',\n topTouchCancel: 'touchcancel',\n topTouchEnd: 'touchend',\n topTouchMove: 'touchmove',\n topTouchStart: 'touchstart',\n topWheel: 'wheel'\n};\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n // directly.\n if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n mountAt[topListenersIDKey] = reactTopListenersCounter++;\n alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n }\n return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n * ReactBrowserEventEmitter.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactBrowserEventEmitter = assign({}, ReactEventEmitterMixin, {\n\n /**\n * Injectable event backend\n */\n ReactEventListener: null,\n\n injection: {\n /**\n * @param {object} ReactEventListener\n */\n injectReactEventListener: function(ReactEventListener) {\n ReactEventListener.setHandleTopLevel(\n ReactBrowserEventEmitter.handleTopLevel\n );\n ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n }\n },\n\n /**\n * Sets whether or not any created callbacks should be enabled.\n *\n * @param {boolean} enabled True if callbacks should be enabled.\n */\n setEnabled: function(enabled) {\n if (ReactBrowserEventEmitter.ReactEventListener) {\n ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n }\n },\n\n /**\n * @return {boolean} True if callbacks are enabled.\n */\n isEnabled: function() {\n return !!(\n (ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled())\n );\n },\n\n /**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\n listenTo: function(registrationName, contentDocumentHandle) {\n var mountAt = contentDocumentHandle;\n var isListening = getListeningForDocument(mountAt);\n var dependencies = EventPluginRegistry.\n registrationNameDependencies[registrationName];\n\n var topLevelTypes = EventConstants.topLevelTypes;\n for (var i = 0, l = dependencies.length; i < l; i++) {\n var dependency = dependencies[i];\n if (!(\n (isListening.hasOwnProperty(dependency) && isListening[dependency])\n )) {\n if (dependency === topLevelTypes.topWheel) {\n if (isEventSupported('wheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topWheel,\n 'wheel',\n mountAt\n );\n } else if (isEventSupported('mousewheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topWheel,\n 'mousewheel',\n mountAt\n );\n } else {\n // Firefox needs to capture a different mouse scroll event.\n // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topWheel,\n 'DOMMouseScroll',\n mountAt\n );\n }\n } else if (dependency === topLevelTypes.topScroll) {\n\n if (isEventSupported('scroll', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\n topLevelTypes.topScroll,\n 'scroll',\n mountAt\n );\n } else {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topScroll,\n 'scroll',\n ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE\n );\n }\n } else if (dependency === topLevelTypes.topFocus ||\n dependency === topLevelTypes.topBlur) {\n\n if (isEventSupported('focus', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\n topLevelTypes.topFocus,\n 'focus',\n mountAt\n );\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\n topLevelTypes.topBlur,\n 'blur',\n mountAt\n );\n } else if (isEventSupported('focusin')) {\n // IE has `focusin` and `focusout` events which bubble.\n // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topFocus,\n 'focusin',\n mountAt\n );\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topBlur,\n 'focusout',\n mountAt\n );\n }\n\n // to make sure blur and focus event listeners are only attached once\n isListening[topLevelTypes.topBlur] = true;\n isListening[topLevelTypes.topFocus] = true;\n } else if (topEventMapping.hasOwnProperty(dependency)) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n dependency,\n topEventMapping[dependency],\n mountAt\n );\n }\n\n isListening[dependency] = true;\n }\n }\n },\n\n trapBubbledEvent: function(topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelType,\n handlerBaseName,\n handle\n );\n },\n\n trapCapturedEvent: function(topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\n topLevelType,\n handlerBaseName,\n handle\n );\n },\n\n /**\n * Listens to window scroll and resize events. We cache scroll values so that\n * application code can access them without triggering reflows.\n *\n * NOTE: Scroll events do not bubble.\n *\n * @see http://www.quirksmode.org/dom/events/scroll.html\n */\n ensureScrollValueMonitoring: function() {\n if (!isMonitoringScrollValue) {\n var refresh = ViewportMetrics.refreshScrollValues;\n ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n isMonitoringScrollValue = true;\n }\n },\n\n eventNameDispatchConfigs: EventPluginHub.eventNameDispatchConfigs,\n\n registrationNameModules: EventPluginHub.registrationNameModules,\n\n putListener: EventPluginHub.putListener,\n\n getListener: EventPluginHub.getListener,\n\n deleteListener: EventPluginHub.deleteListener,\n\n deleteAllListeners: EventPluginHub.deleteAllListeners\n\n});\n\nmodule.exports = ReactBrowserEventEmitter;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/react/lib/ReactBrowserEventEmitter.js\n ** module id = 1\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/react/lib/ReactBrowserEventEmitter.js?")},function(module,exports,__webpack_require__){eval('var Router, filter, includes, last, sortBy;\n\nRouter = __webpack_require__(11);\n\nfilter = __webpack_require__(6);\n\nsortBy = __webpack_require__(9);\n\nlast = __webpack_require__(10);\n\nincludes = __webpack_require__(15);\n\nmodule.exports = function(pages, pagesReq) {\n var filteredPages, handler, htmlWrapper, i, j, len, len1, markdownWrapper, page, parentRoute, parentRoutes, parentTemplateFile, parentTemplates, templateFile, templateFiles, templates;\n templates = {};\n templates.root = Router.createRoute({\n name: \'root-template\',\n path: "/",\n handler: pagesReq(\'./_template\')\n });\n templateFiles = filter(pages, function(page) {\n return page.file.name === "_template" && page.file.dirname !== ".";\n });\n for (i = 0, len = templateFiles.length; i < len; i++) {\n templateFile = templateFiles[i];\n parentTemplates = filter(templateFiles, function(template) {\n return includes(templateFile.requirePath, template.file.dirname);\n });\n parentTemplates = sortBy(parentTemplates, function(template) {\n return template != null ? template.file.dirname.length : void 0;\n });\n parentTemplateFile = last(parentTemplates);\n parentRoute = templates[parentTemplateFile != null ? parentTemplateFile.file.dirname : void 0];\n if (!parentRoute) {\n parentRoute = templates.root;\n }\n templates[templateFile.file.dirname] = Router.createRoute({\n name: templateFile.file.dirname + "-template",\n path: templateFile.templatePath,\n parentRoute: parentRoute,\n handler: pagesReq("./" + templateFile.requirePath)\n });\n }\n filteredPages = filter(pages, function(page) {\n return page.file.name.slice(0, 1) !== \'_\';\n });\n markdownWrapper = __webpack_require__(12);\n htmlWrapper = __webpack_require__(13);\n for (j = 0, len1 = filteredPages.length; j < len1; j++) {\n page = filteredPages[j];\n switch (page.file.ext) {\n case "md":\n handler = markdownWrapper;\n page.data = pagesReq("./" + page.requirePath);\n break;\n case "html":\n handler = htmlWrapper;\n break;\n case "jsx":\n handler = pagesReq("./" + page.requirePath);\n page.data = pagesReq("./" + page.requirePath).metadata ? pagesReq("./" + page.requirePath).metadata() : void 0;\n break;\n case "cjsx":\n handler = pagesReq("./" + page.requirePath);\n page.data = pagesReq("./" + page.requirePath).metadata ? pagesReq("./" + page.requirePath).metadata() : void 0;\n break;\n default:\n handler = pagesReq("./" + page.requirePath);\n }\n parentRoutes = filter(templateFiles, function(templateFile) {\n return includes(page.requirePath, templateFile.file.dirname);\n });\n parentRoutes = sortBy(parentRoutes, function(route) {\n return route != null ? route.file.dirname.length : void 0;\n });\n parentTemplateFile = last(parentRoutes);\n parentRoute = templates[parentTemplateFile != null ? parentTemplateFile.file.dirname : void 0];\n if (!parentRoute) {\n parentRoute = templates.root;\n }\n if (includes(page.path, "/index") && parentRoute.file.dirname === parentTemplateFile.file.dirname) {\n Router.createDefaultRoute({\n name: page.path,\n parentRoute: parentRoute,\n handler: handler\n });\n } else {\n Router.createRoute({\n name: page.path,\n path: page.path,\n parentRoute: parentRoute,\n handler: handler\n });\n }\n }\n return templates.root;\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** /Users/kylemathews/programs/gatsby/lib/isomorphic/create-routes.coffee\n ** module id = 2\n ** module chunks = 0\n **/\n//# sourceURL=webpack:////Users/kylemathews/programs/gatsby/lib/isomorphic/create-routes.coffee?')},function(module,exports,__webpack_require__){eval("exports.loadContext = function(callback) {\n var context;\n context = __webpack_require__(14);\n if (false) {\n module.hot.accept(context.id, function() {\n context = require.context('./pages', true);\n return callback(context);\n });\n }\n return callback(context);\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../app.coffee\n ** module id = 3\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../app.coffee?")},function(module,exports,__webpack_require__){eval("module.exports = __webpack_require__(16);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/react/react.js\n ** module id = 4\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/react/react.js?")},function(module,exports,__webpack_require__){eval("var baseEach = __webpack_require__(21),\n createFind = __webpack_require__(22);\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is bound to `thisArg` and\n * invoked with three arguments: (value, index|key, collection).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @alias detect\n * @category Collection\n * @param {Array|Object|string} collection The collection to search.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.result(_.find(users, function(chr) {\n * return chr.age < 40;\n * }), 'user');\n * // => 'barney'\n *\n * // using the `_.matches` callback shorthand\n * _.result(_.find(users, { 'age': 1, 'active': true }), 'user');\n * // => 'pebbles'\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.result(_.find(users, 'active', false), 'user');\n * // => 'fred'\n *\n * // using the `_.property` callback shorthand\n * _.result(_.find(users, 'active'), 'user');\n * // => 'barney'\n */\nvar find = createFind(baseEach);\n\nmodule.exports = find;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/lodash/collection/find.js\n ** module id = 5\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/lodash/collection/find.js?")},function(module,exports,__webpack_require__){eval("var arrayFilter = __webpack_require__(17),\n baseCallback = __webpack_require__(18),\n baseFilter = __webpack_require__(19),\n isArray = __webpack_require__(20);\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is bound to `thisArg` and\n * invoked with three arguments: (value, index|key, collection).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @alias select\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the new filtered array.\n * @example\n *\n * _.filter([4, 5, 6], function(n) {\n * return n % 2 == 0;\n * });\n * // => [4, 6]\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user');\n * // => ['barney']\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.pluck(_.filter(users, 'active', false), 'user');\n * // => ['fred']\n *\n * // using the `_.property` callback shorthand\n * _.pluck(_.filter(users, 'active'), 'user');\n * // => ['barney']\n */\nfunction filter(collection, predicate, thisArg) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n predicate = baseCallback(predicate, thisArg, 3);\n return func(collection, predicate);\n}\n\nmodule.exports = filter;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/lodash/collection/filter.js\n ** module id = 6\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/lodash/collection/filter.js?")},function(module,exports,__webpack_require__){eval("/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @alias head\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.first([1, 2, 3]);\n * // => 1\n *\n * _.first([]);\n * // => undefined\n */\nfunction first(array) {\n return array ? array[0] : undefined;\n}\n\nmodule.exports = first;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/lodash/array/first.js\n ** module id = 7\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/lodash/array/first.js?")},function(module,exports,__webpack_require__){eval('module.exports = {\n "config": {\n "blogTitle": "My Awesome Blog",\n "authorName": "Kyle Mathews",\n "ghPagesURLPrefix": "/gatsby-starter-blog"\n },\n "relativePath": "",\n "pages": [\n {\n "file": {\n "dirname": "2015-05-01-hello-world",\n "basename": "index.md",\n "name": "index",\n "extname": ".md",\n "extSegments": [\n ".md"\n ],\n "ext": "md"\n },\n "requirePath": "2015-05-01-hello-world/index.md",\n "data": {\n "title": "Hello World",\n "date": "2015-05-01T22:12:03.284Z",\n "layout": "post",\n "readNext": "/my-second-post/",\n "path": "/hello-world/"\n },\n "path": "/gatsby-starter-blog/hello-world/"\n },\n {\n "file": {\n "dirname": "2015-05-06-my-second-post",\n "basename": "index.md",\n "name": "index",\n "extname": ".md",\n "extSegments": [\n ".md"\n ],\n "ext": "md"\n },\n "requirePath": "2015-05-06-my-second-post/index.md",\n "data": {\n "title": "My Second Post!",\n "date": "2015-05-06T23:46:37.121Z",\n "layout": "post",\n "readNext": "/hi-folks/",\n "path": "/my-second-post/"\n },\n "path": "/gatsby-starter-blog/my-second-post/"\n },\n {\n "file": {\n "dirname": "2015-05-28-hi-folks",\n "basename": "index.md",\n "name": "index",\n "extname": ".md",\n "extSegments": [\n ".md"\n ],\n "ext": "md"\n },\n "requirePath": "2015-05-28-hi-folks/index.md",\n "data": {\n "title": "New Beginnings",\n "date": "2015-05-28T22:40:32.169Z",\n "layout": "post",\n "readNext": "/hosting-static-sites-with-docker-and-nginx/",\n "path": "/hi-folks/"\n },\n "path": "/gatsby-starter-blog/hi-folks/"\n },\n {\n "file": {\n "dirname": ".",\n "basename": "_template.cjsx",\n "name": "_template",\n "extname": ".cjsx",\n "extSegments": [\n ".cjsx"\n ],\n "ext": "cjsx"\n },\n "requirePath": "_template.cjsx",\n "templatePath": "/gatsby-starter-blog/./"\n },\n {\n "file": {\n "dirname": ".",\n "basename": "index.cjsx",\n "name": "index",\n "extname": ".cjsx",\n "extSegments": [\n ".cjsx"\n ],\n "ext": "cjsx"\n },\n "requirePath": "index.cjsx",\n "path": "/gatsby-starter-blog/"\n }\n ]\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ../config.toml\n ** module id = 8\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../config.toml?')},function(module,exports,__webpack_require__){eval("var baseCallback = __webpack_require__(18),\n baseMap = __webpack_require__(23),\n baseSortBy = __webpack_require__(24),\n compareAscending = __webpack_require__(25),\n isIterateeCall = __webpack_require__(26);\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection through `iteratee`. This method performs\n * a stable sort, that is, it preserves the original sort order of equal elements.\n * The `iteratee` is bound to `thisArg` and invoked with three arguments:\n * (value, index|key, collection).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * _.sortBy([1, 2, 3], function(n) {\n * return Math.sin(n);\n * });\n * // => [3, 1, 2]\n *\n * _.sortBy([1, 2, 3], function(n) {\n * return this.sin(n);\n * }, Math);\n * // => [3, 1, 2]\n *\n * var users = [\n * { 'user': 'fred' },\n * { 'user': 'pebbles' },\n * { 'user': 'barney' }\n * ];\n *\n * // using the `_.property` callback shorthand\n * _.pluck(_.sortBy(users, 'user'), 'user');\n * // => ['barney', 'fred', 'pebbles']\n */\nfunction sortBy(collection, iteratee, thisArg) {\n if (collection == null) {\n return [];\n }\n if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {\n iteratee = undefined;\n }\n var index = -1;\n iteratee = baseCallback(iteratee, thisArg, 3);\n\n var result = baseMap(collection, function(value, key, collection) {\n return { 'criteria': iteratee(value, key, collection), 'index': ++index, 'value': value };\n });\n return baseSortBy(result, compareAscending);\n}\n\nmodule.exports = sortBy;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/lodash/collection/sortBy.js\n ** module id = 9\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/lodash/collection/sortBy.js?")},function(module,exports,__webpack_require__){eval("/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array ? array.length : 0;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/lodash/array/last.js\n ** module id = 10\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/lodash/array/last.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.DefaultRoute = __webpack_require__(27);\nexports.Link = __webpack_require__(28);\nexports.NotFoundRoute = __webpack_require__(29);\nexports.Redirect = __webpack_require__(30);\nexports.Route = __webpack_require__(31);\nexports.ActiveHandler = __webpack_require__(32);\nexports.RouteHandler = exports.ActiveHandler;\n\nexports.HashLocation = __webpack_require__(33);\nexports.HistoryLocation = __webpack_require__(34);\nexports.RefreshLocation = __webpack_require__(35);\nexports.StaticLocation = __webpack_require__(36);\nexports.TestLocation = __webpack_require__(37);\n\nexports.ImitateBrowserBehavior = __webpack_require__(38);\nexports.ScrollToTopBehavior = __webpack_require__(39);\n\nexports.History = __webpack_require__(40);\nexports.Navigation = __webpack_require__(41);\nexports.State = __webpack_require__(42);\n\nexports.createRoute = __webpack_require__(43).createRoute;\nexports.createDefaultRoute = __webpack_require__(43).createDefaultRoute;\nexports.createNotFoundRoute = __webpack_require__(43).createNotFoundRoute;\nexports.createRedirect = __webpack_require__(43).createRedirect;\nexports.createRoutesFromReactChildren = __webpack_require__(44);\n\nexports.create = __webpack_require__(45);\nexports.run = __webpack_require__(46);\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/react-router/lib/index.js\n ** module id = 11\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/react-router/lib/index.js?")},function(module,exports,__webpack_require__){eval('var DocumentTitle, React, ReadNext, moment;\n\nReact = __webpack_require__(4);\n\n__webpack_require__(92);\n\nmoment = __webpack_require__(91);\n\nDocumentTitle = __webpack_require__(51);\n\nReadNext = __webpack_require__(47);\n\nmodule.exports = React.createClass({\n displayName: "MarkdownWrapper",\n render: function() {\n var post, rhythm;\n rhythm = this.props.typography.rhythm;\n post = this.props.page.data;\n return React.createElement(DocumentTitle, {\n "title": "Name of blog | " + post.title\n }, React.createElement("div", {\n "className": "markdown"\n }, React.createElement("h1", null, post.title), React.createElement("div", {\n "dangerouslySetInnerHTML": {\n __html: post.body\n }\n }), React.createElement("em", {\n "style": {\n display: \'block\',\n marginBottom: rhythm(2)\n }\n }, "Posted ", moment(post.date).format(\'MMMM D, YYYY\')), React.createElement("hr", {\n "style": {\n marginBottom: rhythm(2)\n }\n }), React.createElement(ReadNext, React.__spread({\n "post": post\n }, this.props)), React.createElement("p", null, React.createElement("img", {\n "src": "/kyle-round-small-pantheon.jpg",\n "style": {\n float: \'left\',\n marginRight: rhythm(1 / 4),\n marginBottom: 0,\n width: rhythm(2),\n height: rhythm(2)\n }\n }), React.createElement("strong", null, this.props.config.authorName), " lives and works in San Francisco building useful things. ", React.createElement("a", {\n "href": "https://twitter.com/kylemathews"\n }, "You should follow him on Twitter"))));\n }\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../wrappers/md.cjsx\n ** module id = 12\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../wrappers/md.cjsx?'); -},function(module,exports,__webpack_require__){eval('var React;\n\nReact = __webpack_require__(4);\n\nmodule.exports = React.createClass({\n displayName: "HTMLWrapper",\n render: function() {\n var html;\n console.log(this.props);\n html = "
fix me
";\n return React.createElement("div", {\n "dangerouslySetInnerHTML": {\n __html: html\n }\n });\n }\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../wrappers/html.cjsx\n ** module id = 13\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../wrappers/html.cjsx?')},function(module,exports,__webpack_require__){eval('var map = {\n "./2015-05-01-hello-world/index.md": 52,\n "./2015-05-01-hello-world/salty_egg.jpg": 108,\n "./2015-05-06-my-second-post/index.md": 53,\n "./2015-05-28-hi-folks/index.md": 54,\n "./_template": 48,\n "./_template.cjsx": 48,\n "./favicon.ico": 109,\n "./index": 49,\n "./index.cjsx": 49,\n "./kyle-round-small-pantheon.jpg": 110,\n "./robots.txt": 111\n};\nfunction webpackContext(req) {\n return __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n return map[req] || (function() { throw new Error("Cannot find module \'" + req + "\'.") }());\n};\nwebpackContext.keys = function webpackContextKeys() {\n return Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 14;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** . ^\\.\\/.*$\n ** module id = 14\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///._^\\.\\/.*$?')},function(module,exports,__webpack_require__){eval("var makeString = __webpack_require__(50);\n\nmodule.exports = function include(str, needle) {\n if (needle === '') return true;\n return makeString(str).indexOf(needle) !== -1;\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/underscore.string/include.js\n ** module id = 15\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/underscore.string/include.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule React\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\n'use strict';\n\nvar EventPluginUtils = __webpack_require__(55);\nvar ReactChildren = __webpack_require__(56);\nvar ReactComponent = __webpack_require__(57);\nvar ReactClass = __webpack_require__(58);\nvar ReactContext = __webpack_require__(59);\nvar ReactCurrentOwner = __webpack_require__(60);\nvar ReactElement = __webpack_require__(61);\nvar ReactElementValidator = __webpack_require__(62);\nvar ReactDOM = __webpack_require__(63);\nvar ReactDOMTextComponent = __webpack_require__(64);\nvar ReactDefaultInjection = __webpack_require__(65);\nvar ReactInstanceHandles = __webpack_require__(66);\nvar ReactMount = __webpack_require__(67);\nvar ReactPerf = __webpack_require__(68);\nvar ReactPropTypes = __webpack_require__(69);\nvar ReactReconciler = __webpack_require__(70);\nvar ReactServerRendering = __webpack_require__(71);\n\nvar assign = __webpack_require__(72);\nvar findDOMNode = __webpack_require__(73);\nvar onlyChild = __webpack_require__(74);\n\nReactDefaultInjection.inject();\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (false) {\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar render = ReactPerf.measure('React', 'render', ReactMount.render);\n\nvar React = {\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n only: onlyChild\n },\n Component: ReactComponent,\n DOM: ReactDOM,\n PropTypes: ReactPropTypes,\n initializeTouchEvents: function(shouldUseTouch) {\n EventPluginUtils.useTouchEvents = shouldUseTouch;\n },\n createClass: ReactClass.createClass,\n createElement: createElement,\n cloneElement: cloneElement,\n createFactory: createFactory,\n createMixin: function(mixin) {\n // Currently a noop. Will be used to validate and trace mixins.\n return mixin;\n },\n constructAndRenderComponent: ReactMount.constructAndRenderComponent,\n constructAndRenderComponentByID: ReactMount.constructAndRenderComponentByID,\n findDOMNode: findDOMNode,\n render: render,\n renderToString: ReactServerRendering.renderToString,\n renderToStaticMarkup: ReactServerRendering.renderToStaticMarkup,\n unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n isValidElement: ReactElement.isValidElement,\n withContext: ReactContext.withContext,\n\n // Hook for JSX spread, don't use this for anything else.\n __spread: assign\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n CurrentOwner: ReactCurrentOwner,\n InstanceHandles: ReactInstanceHandles,\n Mount: ReactMount,\n Reconciler: ReactReconciler,\n TextComponent: ReactDOMTextComponent\n });\n}\n\nif (false) {\n var ExecutionEnvironment = require(\"./ExecutionEnvironment\");\n if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n\n // If we're in Chrome, look for the devtools marker and provide a download\n // link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1) {\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n console.debug(\n 'Download the React DevTools for a better development experience: ' +\n 'https://fb.me/react-devtools'\n );\n }\n }\n\n var expectedFeatures = [\n // shims\n Array.isArray,\n Array.prototype.every,\n Array.prototype.forEach,\n Array.prototype.indexOf,\n Array.prototype.map,\n Date.now,\n Function.prototype.bind,\n Object.keys,\n String.prototype.split,\n String.prototype.trim,\n\n // shams\n Object.create,\n Object.freeze\n ];\n\n for (var i = 0; i < expectedFeatures.length; i++) {\n if (!expectedFeatures[i]) {\n console.error(\n 'One or more ES5 shim/shams expected by React are not available: ' +\n 'https://fb.me/react-warning-polyfills'\n );\n break;\n }\n }\n }\n}\n\nReact.version = '0.13.3';\n\nmodule.exports = React;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/react/lib/React.js\n ** module id = 16\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/react/lib/React.js?")},function(module,exports,__webpack_require__){eval("/**\n * A specialized version of `_.filter` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array.length,\n resIndex = -1,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[++resIndex] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/lodash/internal/arrayFilter.js\n ** module id = 17\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/lodash/internal/arrayFilter.js?")},function(module,exports,__webpack_require__){eval("var baseMatches = __webpack_require__(75),\n baseMatchesProperty = __webpack_require__(76),\n bindCallback = __webpack_require__(77),\n identity = __webpack_require__(78),\n property = __webpack_require__(79);\n\n/**\n * The base implementation of `_.callback` which supports specifying the\n * number of arguments to provide to `func`.\n *\n * @private\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction baseCallback(func, thisArg, argCount) {\n var type = typeof func;\n if (type == 'function') {\n return thisArg === undefined\n ? func\n : bindCallback(func, thisArg, argCount);\n }\n if (func == null) {\n return identity;\n }\n if (type == 'object') {\n return baseMatches(func);\n }\n return thisArg === undefined\n ? property(func)\n : baseMatchesProperty(func, thisArg);\n}\n\nmodule.exports = baseCallback;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/lodash/internal/baseCallback.js\n ** module id = 18\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/lodash/internal/baseCallback.js?")},function(module,exports,__webpack_require__){eval("var baseEach = __webpack_require__(21);\n\n/**\n * The base implementation of `_.filter` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/lodash/internal/baseFilter.js\n ** module id = 19\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/lodash/internal/baseFilter.js?")},function(module,exports,__webpack_require__){eval("var getNative = __webpack_require__(80),\n isLength = __webpack_require__(81),\n isObjectLike = __webpack_require__(82);\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/lodash/lang/isArray.js\n ** module id = 20\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/lodash/lang/isArray.js?")},function(module,exports,__webpack_require__){eval("var baseForOwn = __webpack_require__(83),\n createBaseEach = __webpack_require__(84);\n\n/**\n * The base implementation of `_.forEach` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object|string} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/lodash/internal/baseEach.js\n ** module id = 21\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/lodash/internal/baseEach.js?")},function(module,exports,__webpack_require__){eval("var baseCallback = __webpack_require__(18),\n baseFind = __webpack_require__(85),\n baseFindIndex = __webpack_require__(86),\n isArray = __webpack_require__(20);\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(eachFunc, fromRight) {\n return function(collection, predicate, thisArg) {\n predicate = baseCallback(predicate, thisArg, 3);\n if (isArray(collection)) {\n var index = baseFindIndex(collection, predicate, fromRight);\n return index > -1 ? collection[index] : undefined;\n }\n return baseFind(collection, predicate, eachFunc);\n };\n}\n\nmodule.exports = createFind;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/lodash/internal/createFind.js\n ** module id = 22\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/lodash/internal/createFind.js?")},function(module,exports,__webpack_require__){eval("var baseEach = __webpack_require__(21),\n isArrayLike = __webpack_require__(87);\n\n/**\n * The base implementation of `_.map` without support for callback shorthands\n * and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/lodash/internal/baseMap.js\n ** module id = 23\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/lodash/internal/baseMap.js?")},function(module,exports,__webpack_require__){eval("/**\n * The base implementation of `_.sortBy` which uses `comparer` to define\n * the sort order of `array` and replaces criteria objects with their\n * corresponding values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/lodash/internal/baseSortBy.js\n ** module id = 24\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/lodash/internal/baseSortBy.js?")},function(module,exports,__webpack_require__){eval("var baseCompareAscending = __webpack_require__(88);\n\n/**\n * Used by `_.sortBy` to compare transformed elements of a collection and stable\n * sort them in ascending order.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareAscending(object, other) {\n return baseCompareAscending(object.criteria, other.criteria) || (object.index - other.index);\n}\n\nmodule.exports = compareAscending;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/lodash/internal/compareAscending.js\n ** module id = 25\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/lodash/internal/compareAscending.js?")},function(module,exports,__webpack_require__){eval("var isArrayLike = __webpack_require__(87),\n isIndex = __webpack_require__(89),\n isObject = __webpack_require__(90);\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/lodash/internal/isIterateeCall.js\n ** module id = 26\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/lodash/internal/isIterateeCall.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } };\n\nvar _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };\n\nvar PropTypes = __webpack_require__(94);\nvar RouteHandler = __webpack_require__(32);\nvar Route = __webpack_require__(31);\n\n/**\n * A component is a special kind of that\n * renders when its parent matches but none of its siblings do.\n * Only one such route may be used at any given level in the\n * route hierarchy.\n */\n\nvar DefaultRoute = (function (_Route) {\n function DefaultRoute() {\n _classCallCheck(this, DefaultRoute);\n\n if (_Route != null) {\n _Route.apply(this, arguments);\n }\n }\n\n _inherits(DefaultRoute, _Route);\n\n return DefaultRoute;\n})(Route);\n\n// TODO: Include these in the above class definition\n// once we can use ES7 property initializers.\n// https://github.com/babel/babel/issues/619\n\nDefaultRoute.propTypes = {\n name: PropTypes.string,\n path: PropTypes.falsy,\n children: PropTypes.falsy,\n handler: PropTypes.func.isRequired\n};\n\nDefaultRoute.defaultProps = {\n handler: RouteHandler\n};\n\nmodule.exports = DefaultRoute;\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/react-router/lib/components/DefaultRoute.js\n ** module id = 27\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/react-router/lib/components/DefaultRoute.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };\n\nvar React = __webpack_require__(4);\nvar assign = __webpack_require__(72);\nvar PropTypes = __webpack_require__(94);\n\nfunction isLeftClickEvent(event) {\n return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\n/**\n * components are used to create an element that links to a route.\n * When that route is active, the link gets an \"active\" class name (or the\n * value of its `activeClassName` prop).\n *\n * For example, assuming you have the following route:\n *\n * \n *\n * You could use the following component to link to that route:\n *\n * \n *\n * In addition to params, links may pass along query string parameters\n * using the `query` prop.\n *\n * \n */\n\nvar Link = (function (_React$Component) {\n function Link() {\n _classCallCheck(this, Link);\n\n if (_React$Component != null) {\n _React$Component.apply(this, arguments);\n }\n }\n\n _inherits(Link, _React$Component);\n\n _createClass(Link, [{\n key: 'handleClick',\n value: function handleClick(event) {\n var allowTransition = true;\n var clickResult;\n\n if (this.props.onClick) clickResult = this.props.onClick(event);\n\n if (isModifiedEvent(event) || !isLeftClickEvent(event)) {\n return;\n }if (clickResult === false || event.defaultPrevented === true) allowTransition = false;\n\n event.preventDefault();\n\n if (allowTransition) this.context.router.transitionTo(this.props.to, this.props.params, this.props.query);\n }\n }, {\n key: 'getHref',\n\n /**\n * Returns the value of the \"href\" attribute to use on the DOM element.\n */\n value: function getHref() {\n return this.context.router.makeHref(this.props.to, this.props.params, this.props.query);\n }\n }, {\n key: 'getClassName',\n\n /**\n * Returns the value of the \"class\" attribute to use on the DOM element, which contains\n * the value of the activeClassName property when this is active.\n */\n value: function getClassName() {\n var className = this.props.className;\n\n if (this.getActiveState()) className += ' ' + this.props.activeClassName;\n\n return className;\n }\n }, {\n key: 'getActiveState',\n value: function getActiveState() {\n return this.context.router.isActive(this.props.to, this.props.params, this.props.query);\n }\n }, {\n key: 'render',\n value: function render() {\n var props = assign({}, this.props, {\n href: this.getHref(),\n className: this.getClassName(),\n onClick: this.handleClick.bind(this)\n });\n\n if (props.activeStyle && this.getActiveState()) props.style = props.activeStyle;\n\n return React.DOM.a(props, this.props.children);\n }\n }]);\n\n return Link;\n})(React.Component);\n\n// TODO: Include these in the above class definition\n// once we can use ES7 property initializers.\n// https://github.com/babel/babel/issues/619\n\nLink.contextTypes = {\n router: PropTypes.router.isRequired\n};\n\nLink.propTypes = {\n activeClassName: PropTypes.string.isRequired,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.route]).isRequired,\n params: PropTypes.object,\n query: PropTypes.object,\n activeStyle: PropTypes.object,\n onClick: PropTypes.func\n};\n\nLink.defaultProps = {\n activeClassName: 'active',\n className: ''\n};\n\nmodule.exports = Link;\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/react-router/lib/components/Link.js\n ** module id = 28\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/react-router/lib/components/Link.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } };\n\nvar _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };\n\nvar PropTypes = __webpack_require__(94);\nvar RouteHandler = __webpack_require__(32);\nvar Route = __webpack_require__(31);\n\n/**\n * A is a special kind of that\n * renders when the beginning of its parent's path matches\n * but none of its siblings do, including any .\n * Only one such route may be used at any given level in the\n * route hierarchy.\n */\n\nvar NotFoundRoute = (function (_Route) {\n function NotFoundRoute() {\n _classCallCheck(this, NotFoundRoute);\n\n if (_Route != null) {\n _Route.apply(this, arguments);\n }\n }\n\n _inherits(NotFoundRoute, _Route);\n\n return NotFoundRoute;\n})(Route);\n\n// TODO: Include these in the above class definition\n// once we can use ES7 property initializers.\n// https://github.com/babel/babel/issues/619\n\nNotFoundRoute.propTypes = {\n name: PropTypes.string,\n path: PropTypes.falsy,\n children: PropTypes.falsy,\n handler: PropTypes.func.isRequired\n};\n\nNotFoundRoute.defaultProps = {\n handler: RouteHandler\n};\n\nmodule.exports = NotFoundRoute;\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/react-router/lib/components/NotFoundRoute.js\n ** module id = 29\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/react-router/lib/components/NotFoundRoute.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } };\n\nvar _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };\n\nvar PropTypes = __webpack_require__(94);\nvar Route = __webpack_require__(31);\n\n/**\n * A component is a special kind of that always\n * redirects to another route when it matches.\n */\n\nvar Redirect = (function (_Route) {\n function Redirect() {\n _classCallCheck(this, Redirect);\n\n if (_Route != null) {\n _Route.apply(this, arguments);\n }\n }\n\n _inherits(Redirect, _Route);\n\n return Redirect;\n})(Route);\n\n// TODO: Include these in the above class definition\n// once we can use ES7 property initializers.\n// https://github.com/babel/babel/issues/619\n\nRedirect.propTypes = {\n path: PropTypes.string,\n from: PropTypes.string, // Alias for path.\n to: PropTypes.string,\n handler: PropTypes.falsy\n};\n\n// Redirects should not have a default handler\nRedirect.defaultProps = {};\n\nmodule.exports = Redirect;\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/react-router/lib/components/Redirect.js\n ** module id = 30\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/react-router/lib/components/Redirect.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };\n\nvar React = __webpack_require__(4);\nvar invariant = __webpack_require__(95);\nvar PropTypes = __webpack_require__(94);\nvar RouteHandler = __webpack_require__(32);\n\n/**\n * components specify components that are rendered to the page when the\n * URL matches a given pattern.\n *\n * Routes are arranged in a nested tree structure. When a new URL is requested,\n * the tree is searched depth-first to find a route whose path matches the URL.\n * When one is found, all routes in the tree that lead to it are considered\n * \"active\" and their components are rendered into the DOM, nested in the same\n * order as they are in the tree.\n *\n * The preferred way to configure a router is using JSX. The XML-like syntax is\n * a great way to visualize how routes are laid out in an application.\n *\n * var routes = [\n * \n * \n * \n * \n * \n * ];\n * \n * Router.run(routes, function (Handler) {\n * React.render(, document.body);\n * });\n *\n * Handlers for Route components that contain children can render their active\n * child route using a element.\n *\n * var App = React.createClass({\n * render: function () {\n * return (\n *
\n * \n *
\n * );\n * }\n * });\n *\n * If no handler is provided for the route, it will render a matched child route.\n */\n\nvar Route = (function (_React$Component) {\n function Route() {\n _classCallCheck(this, Route);\n\n if (_React$Component != null) {\n _React$Component.apply(this, arguments);\n }\n }\n\n _inherits(Route, _React$Component);\n\n _createClass(Route, [{\n key: 'render',\n value: function render() {\n invariant(false, '%s elements are for router configuration only and should not be rendered', this.constructor.name);\n }\n }]);\n\n return Route;\n})(React.Component);\n\n// TODO: Include these in the above class definition\n// once we can use ES7 property initializers.\n// https://github.com/babel/babel/issues/619\n\nRoute.propTypes = {\n name: PropTypes.string,\n path: PropTypes.string,\n handler: PropTypes.func,\n ignoreScrollBehavior: PropTypes.bool\n};\n\nRoute.defaultProps = {\n handler: RouteHandler\n};\n\nmodule.exports = Route;\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/react-router/lib/components/Route.js\n ** module id = 31\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///../~/react-router/lib/components/Route.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _inherits = function (subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };\n\nvar React = __webpack_require__(4);\nvar ContextWrapper = __webpack_require__(96);\nvar assign = __webpack_require__(72);\nvar PropTypes = __webpack_require__(94);\n\nvar REF_NAME = '__routeHandler__';\n\n/**\n * A component renders the active child route handler\n * when routes are nested.\n */\n\nvar RouteHandler = (function (_React$Component) {\n function RouteHandler() {\n _classCallCheck(this, RouteHandler);\n\n if (_React$Component != null) {\n _React$Component.apply(this, arguments);\n }\n }\n\n _inherits(RouteHandler, _React$Component);\n\n _createClass(RouteHandler, [{\n key: 'getChildContext',\n value: function getChildContext() {\n return {\n routeDepth: this.context.routeDepth + 1\n };\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._updateRouteComponent(this.refs[REF_NAME]);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this._updateRouteComponent(this.refs[REF_NAME]);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._updateRouteComponent(null);\n }\n }, {\n key: '_updateRouteComponent',\n value: function _updateRouteComponent(component) {\n this.context.router.setRouteComponentAtDepth(this.getRouteDepth(), component);\n }\n }, {\n key: 'getRouteDepth',\n value: function getRouteDepth() {\n return this.context.routeDepth;\n }\n }, {\n key: 'createChildRouteHandler',\n value: function createChildRouteHandler(props) {\n var route = this.context.router.getRouteAtDepth(this.getRouteDepth());\n\n if (route == null) {\n return null;\n }var childProps = assign({}, props || this.props, {\n ref: REF_NAME,\n params: this.context.router.getCurrentParams(),\n query: this.context.router.getCurrentQuery()\n });\n\n return React.createElement(route.handler, childProps);\n }\n }, {\n key: 'render',\n value: function render() {\n var handler = this.createChildRouteHandler();\n // \ No newline at end of file +Posted May 1, 2015
READ THIS NEXT:

My Second Post!

Wow! I love blogging so much already. +Did you know that “despite its name, salted duck eggs can also be made from chicken eggs, though the taste and texture will be somewhat different, and the egg...


Kyle Mathews lives and works in San Francisco building useful things. You should follow him on Twitter

\ No newline at end of file diff --git a/hi-folks/index.html b/hi-folks/index.html index 2b03657e7217a..db122d1e6c0f2 100644 --- a/hi-folks/index.html +++ b/hi-folks/index.html @@ -179,10 +179,10 @@ } a:hover { text-decoration: underline; -}

My Awesome Blog

New Beginnings

This post is going to be a little hard to read for those that don’t speak latin.

+}

My Awesome Blog

New Beginnings

This post is going to be a little hard to read for those that don’t speak latin.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vel neque dignissim mi maximus interdum. Cras dictum quam et ex molestie facilisis. Proin dapibus sed sapien nec gravida. Praesent at leo ut erat varius rhoncus at non mi. Quisque cursus non leo et varius. Maecenas porttitor scelerisque sapien at venenatis. Proin pellentesque gravida elementum. Nam eget porttitor ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean nec commodo lacus, eu mollis nisi. Nullam felis mi, tempus ac ipsum a, venenatis blandit magna. Sed mattis magna est, quis tincidunt massa aliquam vitae. Ut in ipsum blandit, ultrices lacus a, condimentum nibh. Sed commodo, lorem eget interdum molestie, lacus nisi lacinia velit, tempus commodo lacus erat porttitor dolor.

Phasellus vitae ante justo. Fusce dui elit, finibus non posuere sed, ullamcorper at odio. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque molestie lorem dolor, eget tincidunt ligula suscipit sit amet. Maecenas tempor nulla orci, sed scelerisque massa convallis id. Fusce iaculis nibh et lectus bibendum viverra. Nulla volutpat vehicula tortor non cursus. Maecenas vulputate mi nec accumsan ultricies. Praesent vitae tellus ligula. Praesent placerat fringilla purus, ac fermentum ipsum faucibus sed. Fusce semper, sapien hendrerit fringilla sagittis, lacus felis accumsan tellus, ac mollis ex arcu vitae lorem. Duis vitae semper felis. Duis consectetur, diam id laoreet suscipit, felis felis imperdiet sem, vel posuere leo ligula nec sapien. Maecenas at imperdiet nulla. Quisque quam nibh, feugiat vitae rhoncus ac, hendrerit eu quam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

Nullam vehicula lorem sed felis rutrum gravida. Nam mattis cursus lacinia. Cras sit amet interdum elit. Morbi viverra, est a tincidunt facilisis, est est maximus urna, id rhoncus mi metus et lacus. Pellentesque finibus ex vel nulla fermentum tempus. Nunc vel lorem enim. Sed varius scelerisque nulla, nec ultrices ligula gravida eu. Curabitur eu turpis sit amet nisl vehicula tempor ultrices eu lacus. Curabitur malesuada nulla neque. Aenean mattis lectus ex, molestie ultricies elit fringilla eget. Quisque iaculis volutpat nisl, vitae lobortis ipsum elementum sed. Nulla facilisi. Maecenas cursus turpis ac lacus efficitur, non bibendum ligula consequat. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris accumsan placerat felis, at bibendum ante.

Quisque varius dui vel commodo lobortis. Vestibulum eu metus vel dui lobortis volutpat. Cras vitae neque ornare, vehicula urna et, efficitur dolor. Nunc congue euismod leo non rhoncus. Nulla mollis libero a ullamcorper placerat. Morbi bibendum viverra orci in auctor. Donec in est varius, hendrerit risus vitae, commodo purus. Praesent eget rhoncus ligula. Suspendisse quis ultricies ligula. Nullam tincidunt rutrum nisl eget luctus. Phasellus eget nulla semper, varius ligula a, gravida urna. Etiam tempor feugiat elit eu cursus. Donec tristique ligula a aliquam tempor.

Proin nec nunc tellus. Donec sapien leo, ornare quis condimentum a, euismod sit amet augue. Aliquam tincidunt mauris at arcu suscipit, quis scelerisque justo rhoncus. Vestibulum lobortis dui at odio lacinia mattis. Praesent nunc urna, bibendum ut dui eget, consequat suscipit leo. Curabitur auctor vel dui fermentum auctor. Sed ultrices ligula mauris, id blandit sapien ultrices id. Morbi volutpat tortor quis ex convallis aliquam. Nunc eleifend risus eget dui condimentum scelerisque.

-
Posted May 28, 2015

Kyle Mathews lives and works in San Francisco building useful things. You should follow him on Twitter

\ No newline at end of file +
Posted May 28, 2015

Kyle Mathews lives and works in San Francisco building useful things. You should follow him on Twitter

\ No newline at end of file diff --git a/index.html b/index.html index 00aa6e031af43..c62fb27b53fa8 100644 --- a/index.html +++ b/index.html @@ -179,4 +179,4 @@ } a:hover { text-decoration: underline; -}

My Awesome Blog

Written by Kyle Mathews who lives and works in San Francisco building useful things. You should follow him on Twitter

\ No newline at end of file +}

My Awesome Blog

Written by Kyle Mathews who lives and works in San Francisco building useful things. You should follow him on Twitter

\ No newline at end of file diff --git a/kyle-round-small-pantheon.jpg b/kyle-round-small-pantheon.jpg new file mode 100644 index 0000000000000..fd0ab2c68da8a Binary files /dev/null and b/kyle-round-small-pantheon.jpg differ diff --git a/my-second-post/index.html b/my-second-post/index.html index 4f15fa57f3109..73540b5d258ff 100644 --- a/my-second-post/index.html +++ b/my-second-post/index.html @@ -179,8 +179,8 @@ } a:hover { text-decoration: underline; -}

My Awesome Blog

My Second Post!

Wow! I love blogging so much already.

+}

My Awesome Blog

My Second Post!

Wow! I love blogging so much already.

Did you know that “despite its name, salted duck eggs can also be made from chicken eggs, though the taste and texture will be somewhat different, and the egg yolk will be less rich.”? (Wikipedia Link)

Yeah, I didn’t either.

-
Posted May 6, 2015
READ THIS NEXT:

New Beginnings

This post is going to be a little hard to read for those that don’t speak latin. -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vel neque dignissim mi maximus interdum. Cras dictum...


Kyle Mathews lives and works in San Francisco building useful things. You should follow him on Twitter

\ No newline at end of file +
Posted May 6, 2015
READ THIS NEXT:

New Beginnings

This post is going to be a little hard to read for those that don’t speak latin. +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vel neque dignissim mi maximus interdum. Cras dictum...


Kyle Mathews lives and works in San Francisco building useful things. You should follow him on Twitter

\ No newline at end of file