From f81405726d675a68ba4b5d4b95572f26aaace211 Mon Sep 17 00:00:00 2001 From: Michael Stillwell Date: Fri, 14 Sep 2018 16:02:01 +0100 Subject: [PATCH 1/4] Add AMP Story test lib --- amp-story/gae/.gcloudignore | 17 + amp-story/gae/.gitignore | 3 + amp-story/gae/README.md | 26 + amp-story/gae/TODO.md | 6 + amp-story/gae/amp-cors.ts | 45 + amp-story/gae/app.ts | 137 + amp-story/gae/app.yaml | 16 + amp-story/gae/index.hbs | 204 + amp-story/gae/package-lock.json | 1601 +++++++ amp-story/gae/package.json | 35 + amp-story/gae/tsconfig.json | 15 + amp-story/gae/tslint.json | 9 + amp-story/linter/.gitignore | 5 + amp-story/linter/index.ts | 660 +++ amp-story/linter/package-lock.json | 1282 +++++ amp-story/linter/package.json | 36 + amp-story/linter/probe-image-size.d.ts | 14 + amp-story/linter/tests/local.ts | 93 + .../local/testAmpStoryV1-1/expected.json | 3 + .../tests/local/testAmpStoryV1-1/source.html | 72 + .../local/testAmpStoryV1-2/expected.json | 4 + .../tests/local/testAmpStoryV1-2/source.html | 72 + .../testMetaCharsetFirst-1/expected.json | 3 + .../local/testMetaCharsetFirst-1/source.html | 72 + .../testMetaCharsetFirst-2/expected.json | 4 + .../local/testMetaCharsetFirst-2/source.html | 72 + .../testRuntimePreloaded-1/expected.json | 4 + .../local/testRuntimePreloaded-1/source.html | 27 + .../testRuntimePreloaded-2/expected.json | 3 + .../local/testRuntimePreloaded-2/source.html | 28 + .../testSchemaMetadataType-1/expected.json | 3 + .../testSchemaMetadataType-1/source.html | 27 + .../testSchemaMetadataType-2/expected.json | 4 + .../testSchemaMetadataType-2/source.html | 27 + amp-story/linter/tests/network.ts | 425 ++ amp-story/linter/tests/network/ampimg1.json | 423 ++ amp-story/linter/tests/network/ampimg2.json | 2078 ++++++++ amp-story/linter/tests/network/ampimg3.json | 189 + .../tests/network/ampstoryv1metadata1.json | 56 + .../tests/network/ampstoryv1metadata2.json | 30 + .../linter/tests/network/bookendcache1.json | 282 ++ .../linter/tests/network/bookendcache2.json | 282 ++ .../tests/network/bookendsameorgin4.json | 219 + .../tests/network/bookendsameorigin1.json | 292 ++ .../tests/network/bookendsameorigin2.json | 285 ++ .../tests/network/bookendsameorigin3.json | 211 + .../linter/tests/network/getimagesize.json | 41 + .../tests/network/getinlinemetadata.json | 56 + .../tests/network/getschemametadata.json | 142 + .../linter/tests/network/testcanonical1.json | 58 + .../linter/tests/network/testcanonical2.json | 30 + .../linter/tests/network/testcanonical3.json | 58 + .../linter/tests/network/testvalidity1.json | 70 + .../linter/tests/network/testvalidity2.json | 30 + .../linter/tests/network/testvideosize1.json | 110 + .../linter/tests/network/testvideosize2.json | 84 + .../linter/tests/network/testvideosize3.json | 200 + .../linter/tests/network/thumbnails1.json | 388 ++ .../linter/tests/network/thumbnails2.json | 117 + amp-story/linter/tsconfig.json | 14 + amp-story/linter/tslint.json | 13 + ampbench_handlers.js | 23 +- ampbench_lib.js | 13 + package-lock.json | 4214 +++++++++-------- package.json | 4 +- views/results.hbs | 32 + 66 files changed, 13055 insertions(+), 2043 deletions(-) create mode 100644 amp-story/gae/.gcloudignore create mode 100644 amp-story/gae/.gitignore create mode 100644 amp-story/gae/README.md create mode 100644 amp-story/gae/TODO.md create mode 100644 amp-story/gae/amp-cors.ts create mode 100644 amp-story/gae/app.ts create mode 100644 amp-story/gae/app.yaml create mode 100644 amp-story/gae/index.hbs create mode 100644 amp-story/gae/package-lock.json create mode 100644 amp-story/gae/package.json create mode 100644 amp-story/gae/tsconfig.json create mode 100644 amp-story/gae/tslint.json create mode 100644 amp-story/linter/.gitignore create mode 100644 amp-story/linter/index.ts create mode 100644 amp-story/linter/package-lock.json create mode 100644 amp-story/linter/package.json create mode 100644 amp-story/linter/probe-image-size.d.ts create mode 100644 amp-story/linter/tests/local.ts create mode 100644 amp-story/linter/tests/local/testAmpStoryV1-1/expected.json create mode 100644 amp-story/linter/tests/local/testAmpStoryV1-1/source.html create mode 100644 amp-story/linter/tests/local/testAmpStoryV1-2/expected.json create mode 100644 amp-story/linter/tests/local/testAmpStoryV1-2/source.html create mode 100644 amp-story/linter/tests/local/testMetaCharsetFirst-1/expected.json create mode 100644 amp-story/linter/tests/local/testMetaCharsetFirst-1/source.html create mode 100644 amp-story/linter/tests/local/testMetaCharsetFirst-2/expected.json create mode 100644 amp-story/linter/tests/local/testMetaCharsetFirst-2/source.html create mode 100644 amp-story/linter/tests/local/testRuntimePreloaded-1/expected.json create mode 100644 amp-story/linter/tests/local/testRuntimePreloaded-1/source.html create mode 100644 amp-story/linter/tests/local/testRuntimePreloaded-2/expected.json create mode 100644 amp-story/linter/tests/local/testRuntimePreloaded-2/source.html create mode 100644 amp-story/linter/tests/local/testSchemaMetadataType-1/expected.json create mode 100644 amp-story/linter/tests/local/testSchemaMetadataType-1/source.html create mode 100644 amp-story/linter/tests/local/testSchemaMetadataType-2/expected.json create mode 100644 amp-story/linter/tests/local/testSchemaMetadataType-2/source.html create mode 100644 amp-story/linter/tests/network.ts create mode 100644 amp-story/linter/tests/network/ampimg1.json create mode 100644 amp-story/linter/tests/network/ampimg2.json create mode 100644 amp-story/linter/tests/network/ampimg3.json create mode 100644 amp-story/linter/tests/network/ampstoryv1metadata1.json create mode 100644 amp-story/linter/tests/network/ampstoryv1metadata2.json create mode 100644 amp-story/linter/tests/network/bookendcache1.json create mode 100644 amp-story/linter/tests/network/bookendcache2.json create mode 100644 amp-story/linter/tests/network/bookendsameorgin4.json create mode 100644 amp-story/linter/tests/network/bookendsameorigin1.json create mode 100644 amp-story/linter/tests/network/bookendsameorigin2.json create mode 100644 amp-story/linter/tests/network/bookendsameorigin3.json create mode 100644 amp-story/linter/tests/network/getimagesize.json create mode 100644 amp-story/linter/tests/network/getinlinemetadata.json create mode 100644 amp-story/linter/tests/network/getschemametadata.json create mode 100644 amp-story/linter/tests/network/testcanonical1.json create mode 100644 amp-story/linter/tests/network/testcanonical2.json create mode 100644 amp-story/linter/tests/network/testcanonical3.json create mode 100644 amp-story/linter/tests/network/testvalidity1.json create mode 100644 amp-story/linter/tests/network/testvalidity2.json create mode 100644 amp-story/linter/tests/network/testvideosize1.json create mode 100644 amp-story/linter/tests/network/testvideosize2.json create mode 100644 amp-story/linter/tests/network/testvideosize3.json create mode 100644 amp-story/linter/tests/network/thumbnails1.json create mode 100644 amp-story/linter/tests/network/thumbnails2.json create mode 100644 amp-story/linter/tsconfig.json create mode 100644 amp-story/linter/tslint.json diff --git a/amp-story/gae/.gcloudignore b/amp-story/gae/.gcloudignore new file mode 100644 index 0000000..a3f0c76 --- /dev/null +++ b/amp-story/gae/.gcloudignore @@ -0,0 +1,17 @@ +# This file specifies files that are *not* uploaded to Google Cloud Platform +# using gcloud. It follows the same syntax as .gitignore, with the addition of +# "#!include" directives (which insert the entries of the given .gitignore-style +# file at that point). +# +# For more information, run: +# $ gcloud topic gcloudignore +# +.gcloudignore +# If you would like to upload your .git directory, .gitignore file or files +# from your .gitignore file, remove the corresponding line +# below: +.git +.gitignore + +# Node.js dependencies: +node_modules/ \ No newline at end of file diff --git a/amp-story/gae/.gitignore b/amp-story/gae/.gitignore new file mode 100644 index 0000000..8e8bb04 --- /dev/null +++ b/amp-story/gae/.gitignore @@ -0,0 +1,3 @@ +node_modules +amp-story-linter +*.js diff --git a/amp-story/gae/README.md b/amp-story/gae/README.md new file mode 100644 index 0000000..c196b2d --- /dev/null +++ b/amp-story/gae/README.md @@ -0,0 +1,26 @@ +Install dependencies: + +```sh +$ npm run install-local-dependencies +$ npm install +``` + +Run locally: + +```sh +$ tsc +$ npm run start +``` + +Run locally with restart on `*.hbs` or `*.js` change: + +```sh +$ npm run watch +``` + +Deployment: + +```sh +$ gcloud config set core/project PROJECT # set default project (if necessary) +$ npm run deploy +``` diff --git a/amp-story/gae/TODO.md b/amp-story/gae/TODO.md new file mode 100644 index 0000000..2fc2c8e --- /dev/null +++ b/amp-story/gae/TODO.md @@ -0,0 +1,6 @@ +- Make results persistent + - Generate URL with "url" query string parameter + - Share via share component + - Do some rendering on server side +- Loader would be nice +- Support V1 format \ No newline at end of file diff --git a/amp-story/gae/amp-cors.ts b/amp-story/gae/amp-cors.ts new file mode 100644 index 0000000..6929326 --- /dev/null +++ b/amp-story/gae/amp-cors.ts @@ -0,0 +1,45 @@ +/** + * Copyright 2018 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS-IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { NextFunction, Request, Response } from "express"; + +export default (serverOrigin: string) => { + return (req: Request, res: Response, next: NextFunction) => { + if (!req.accepts("json")) { + return next(); + } + const sourceOrigin = req.query.__amp_source_origin; + if (!sourceOrigin) { + return next(); + } + let origin; + if (req.headers.origin) { + origin = req.headers.origin; + } else if (req.headers["amp-same-origin"] === "true") { + origin = serverOrigin; + } else { + return next(); + } + + res.setHeader("Access-Control-Allow-Credentials", "true"); + res.setHeader("Access-Control-Allow-Origin", origin); + res.setHeader("Access-Control-Expose-Headers", [ + "AMP-Access-Control-Allow-Source-Origin", + ]); + res.setHeader("AMP-Access-Control-Allow-Source-Origin", sourceOrigin); + next(); + }; +}; diff --git a/amp-story/gae/app.ts b/amp-story/gae/app.ts new file mode 100644 index 0000000..fe95326 --- /dev/null +++ b/amp-story/gae/app.ts @@ -0,0 +1,137 @@ +/** + * Copyright 2018 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS-IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as fs from "fs"; +import {URL} from "url"; + +import * as cheerio from "cheerio"; +import * as debug from "debug"; +import express = require("express"); +import {compile, registerHelper} from "handlebars"; +import {default as fetch, Request, RequestInit, Response} from "node-fetch"; + +import ampCors from "./amp-cors.js"; +import * as validate from "./amp-story-linter"; + +const log = debug("linter"); + +const UA_GOOGLEBOT_MOBILE = [ + "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36", + "(KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36", + "(compatible; Googlebot/2.1; +http://www.google.com/bot.html)", +].join(" "); + +const ORIGIN = process.env.ORIGIN || `https://${process.env.PROJECT_ID}.appspot.com`; + +const PORT = (() => { + if (process.env.NODE_ENV === "production") { + return 8080; + } else { + return (new URL(ORIGIN)).port || 80; + } +})(); + +const INDEX = (() => { + registerHelper("escape", (name) => { + return `{{${name}}}`; + }); + const template = compile(fs.readFileSync("index.hbs").toString()); + return template({ + canonical: ORIGIN, + }); +})(); + +const app = express(); + +app.use((req, res, next) => { + if (process.env.NODE_ENV === "production") { + res.setHeader("strict-transport-security", "max-age=31556926"); + } + next(); +}); + +app.use(ampCors(ORIGIN)); + +app.get("/", (req, res) => { + res.status(200); + res.setHeader("content-type", "text/html"); + // res.send(JSON.stringify(req.query)); + res.send(INDEX); + res.end(); +}); + +app.get("/lint", async (req, res, next) => { + const url = req.query.url; + if (!url) { + res.status(400); + res.setHeader("content-type", "application/json"); + res.send(JSON.stringify({ + message: "no [url] query string parameter provided", + status: "error", + })); + res.end(); + return; + } + + try { + log({url}); + console.log({url}); + const r = await fetch(url, { + headers: { + "user-agent": UA_GOOGLEBOT_MOBILE, + }, + }); + if (!r.ok) { + res.status(200); + res.setHeader("content-type", "application/json"); + res.send(JSON.stringify({ + message: `couldn't load [${url}]`, + status: "error", + })); + res.end(); + r.text().then(console.error); + return; + } + const $ = cheerio.load(await r.text()); + const context = { $, url, headers: {} }; + const data = await validate.testAll(context) as {[key: string]: validate.Message}; + res.status(200); + res.setHeader("content-type", "text/json"); + const body = (() => { + if (req.query.type === "summary") { + return Object.keys(data).filter((k) => data[k].status !== "OKAY").join(","); + } else { + return JSON.stringify(data, undefined, 2); + } + })(); + res.send(body); + res.end(); + } catch (e) { + console.error(e); + res.status(e.code === "ENOTFOUND" ? 400 : 500); // probably caller's fault if ENOTFOUND + res.setHeader("content-type", "application/json"); + res.send(JSON.stringify({ + message: `couldn't load [${url}]`, + status: "error", + })); + res.end(); + } +}); + +app.listen(PORT, () => { + console.log(`App listening at ${ORIGIN}`); + console.log("Press Ctrl+C to quit."); +}); diff --git a/amp-story/gae/app.yaml b/amp-story/gae/app.yaml new file mode 100644 index 0000000..63049e3 --- /dev/null +++ b/amp-story/gae/app.yaml @@ -0,0 +1,16 @@ +# Copyright 2017, Google, Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +runtime: nodejs8 +env_variables: + PROJECT_ID: amp-story-validator-dev diff --git a/amp-story/gae/index.hbs b/amp-story/gae/index.hbs new file mode 100644 index 0000000..c07ed94 --- /dev/null +++ b/amp-story/gae/index.hbs @@ -0,0 +1,204 @@ + + + + + + + + + AMP Story Linter + + + + + + + + + + +
+
+
+ +
+ +
+
+ +
+
+
+
+ + \ No newline at end of file diff --git a/amp-story/gae/package-lock.json b/amp-story/gae/package-lock.json new file mode 100644 index 0000000..385af88 --- /dev/null +++ b/amp-story/gae/package-lock.json @@ -0,0 +1,1601 @@ +{ + "name": "amp-story-linter-gae", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/body-parser": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", + "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==", + "dev": true, + "requires": { + "@types/connect": "3.4.32", + "@types/node": "10.3.3" + } + }, + "@types/cheerio": { + "version": "0.22.8", + "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.8.tgz", + "integrity": "sha512-LzF540VOFabhS2TR2yYFz2Mu/fTfkA+5AwYddtJbOJGwnYrr2e7fHadT7/Z3jNGJJdCRlO3ySxmW26NgRdwhNA==" + }, + "@types/connect": { + "version": "3.4.32", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", + "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", + "dev": true, + "requires": { + "@types/node": "10.3.3" + } + }, + "@types/debug": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-0.0.30.tgz", + "integrity": "sha512-orGL5LXERPYsLov6CWs3Fh6203+dXzJkR7OnddIr2514Hsecwc8xRpzCapshBbKFImCsvS/mk6+FWiN5LyZJAQ==", + "dev": true + }, + "@types/events": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", + "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==", + "dev": true + }, + "@types/express": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.0.tgz", + "integrity": "sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w==", + "dev": true, + "requires": { + "@types/body-parser": "1.17.0", + "@types/express-serve-static-core": "4.16.0", + "@types/serve-static": "1.13.2" + } + }, + "@types/express-serve-static-core": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz", + "integrity": "sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w==", + "dev": true, + "requires": { + "@types/events": "1.2.0", + "@types/node": "10.3.3", + "@types/range-parser": "1.2.2" + } + }, + "@types/handlebars": { + "version": "4.0.39", + "resolved": "https://registry.npmjs.org/@types/handlebars/-/handlebars-4.0.39.tgz", + "integrity": "sha512-vjaS7Q0dVqFp85QhyPSZqDKnTTCemcSHNHFvDdalO1s0Ifz5KuE64jQD5xoUkfdWwF4WpqdJEl7LsWH8rzhKJA==", + "dev": true + }, + "@types/mime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz", + "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==", + "dev": true + }, + "@types/node": { + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.3.tgz", + "integrity": "sha512-/gwCgiI2e9RzzZTKbl+am3vgNqOt7a9fJ/uxv4SqYKxenoEDNVU3KZEadlpusWhQI0A0dOrZ0T68JYKVjzmgdQ==" + }, + "@types/node-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.1.2.tgz", + "integrity": "sha512-XroxUzLpKuL+CVkQqXlffRkEPi4Gh3Oui/mWyS7ztKiyqVxiU+h3imCW5I2NQmde5jK+3q++36/Q96cyRWsweg==", + "dev": true, + "requires": { + "@types/node": "10.3.3" + } + }, + "@types/range-parser": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.2.tgz", + "integrity": "sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw==", + "dev": true + }, + "@types/serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "4.16.0", + "@types/mime": "2.0.0" + } + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "requires": { + "mime-types": "2.1.18", + "negotiator": "0.6.1" + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "amphtml-validator": { + "version": "1.0.23", + "resolved": "https://registry.npmjs.org/amphtml-validator/-/amphtml-validator-1.0.23.tgz", + "integrity": "sha1-26DDhUKJVjwK2qwpLNTWCW7k18g=", + "requires": { + "colors": "1.1.2", + "commander": "2.9.0", + "promise": "7.1.1" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "requires": { + "graceful-readlink": "1.0.1" + } + } + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "2.1.2" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + } + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.6.3", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.16" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "optional": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.2" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "cheerio": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", + "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash": "4.17.10", + "parse5": "3.0.3" + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "optional": true + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "color-convert": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", + "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "dev": true, + "requires": { + "color-name": "1.1.1" + } + }, + "color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "optional": true + }, + "deepmerge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.1.1.tgz", + "integrity": "sha512-urQxA1smbLZ2cBbXbaYObM1dJ82aJ2H57A1C/Kklfh/ZN1bgH4G/n5KWhdNfOK11W98gqZfyYj7W4frJJRwA2w==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "optional": true, + "requires": { + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", + "requires": { + "accepts": "1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.3", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "1.4.0", + "type-is": "1.6.16", + "utils-merge": "1.0.1", + "vary": "1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.4.0", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.2", + "domutils": "1.5.1", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": "1.4.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.2" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ipaddr.js": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", + "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=" + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "optional": true + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "1.33.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "node-fetch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.2.0.tgz", + "integrity": "sha512-OayFWziIxiHY8bCUyLX6sTpDH8Jsbp4FfYd1j1f7vZyfgkcOnAyM4oQR16f8a0s7Gl/viMGRey8eScYk4V4EZA==" + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "requires": { + "boolbase": "1.0.0" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.3" + } + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "requires": { + "@types/node": "10.3.3" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "probe-image-size": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-4.0.0.tgz", + "integrity": "sha512-nm7RvWUxps+2+jZKNLkd04mNapXNariS6G5WIEVzvAqjx7EUuKcY1Dp3e6oUK7GLwzJ+3gbSbPLFAASHFQrPcQ==", + "requires": { + "any-promise": "1.3.0", + "deepmerge": "2.1.1", + "inherits": "2.0.3", + "next-tick": "1.0.0", + "request": "2.88.0", + "stream-parser": "0.3.1" + } + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "promise": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz", + "integrity": "sha1-SJZUxpJha4qlWwck+oCbt9tJxb8=", + "requires": { + "asap": "2.0.6" + } + }, + "proxy-addr": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", + "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.6.0" + } + }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.4.0" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.1.0", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.19", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.4.3", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" + }, + "dependencies": { + "mime-db": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" + }, + "mime-types": { + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", + "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", + "requires": { + "mime-db": "1.35.0" + } + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.3", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.2" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": "1.0.1" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "requires": { + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + }, + "stream-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", + "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", + "requires": { + "debug": "2.6.9" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "1.1.29", + "punycode": "1.4.1" + } + }, + "tslib": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.2.tgz", + "integrity": "sha512-AVP5Xol3WivEr7hnssHDsaM+lVrVXWUvd1cfXTRkTj80b//6g2wIFEH6hZG0muGZRnHGrfttpdzRk3YlBkWjKw==", + "dev": true + }, + "tslint": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz", + "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "builtin-modules": "1.1.1", + "chalk": "2.4.1", + "commander": "2.15.1", + "diff": "3.5.0", + "glob": "7.1.2", + "js-yaml": "3.12.0", + "minimatch": "3.0.4", + "resolve": "1.7.1", + "semver": "5.5.0", + "tslib": "1.9.2", + "tsutils": "2.29.0" + }, + "dependencies": { + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "1.9.2" + } + } + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.18" + } + }, + "typescript": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.1.tgz", + "integrity": "sha512-zQIMOmC+372pC/CCVLqnQ0zSBiY7HHodU7mpQdjiZddek4GMj31I3dUJ7gAs9o65X7mnRma6OokOkc6f9jjfBg==", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "optional": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } +} diff --git a/amp-story/gae/package.json b/amp-story/gae/package.json new file mode 100644 index 0000000..03b2a92 --- /dev/null +++ b/amp-story/gae/package.json @@ -0,0 +1,35 @@ +{ + "name": "amp-story-linter-gae", + "version": "1.0.0", + "description": "", + "scripts": { + "install-local-dependencies": "rm -rf amp-story-linter && npm pack ../linter && tar xfz amp-story-linter-0.0.1.tgz && mv package amp-story-linter && rm amp-story-linter-0.0.1.tgz", + "deploy": "$npm_execpath run install-local-dependencies && tsc && gcloud app deploy --project $PROJECT_ID", + "watch": "ls *.ts *.hbs | entr -r bash -c 'tsc && env ORIGIN=http://localhost:8080 node app.js'", + "start": "node app.js" + }, + "engines": { + "node": "8.x.x" + }, + "author": "Michael Stillwell ", + "license": "Apache-2.0", + "dependencies": { + "@types/cheerio": "^0.22.8", + "amphtml-validator": "^1.0.23", + "cheerio": "^1.0.0-rc.2", + "debug": "^3.1.0", + "express": "^4.16.3", + "handlebars": "^4.0.11", + "node-fetch": "^2.2.0", + "probe-image-size": "^4.0.0", + "throat": "^4.1.0" + }, + "devDependencies": { + "@types/debug": "0.0.30", + "@types/express": "^4.16.0", + "@types/handlebars": "^4.0.39", + "@types/node-fetch": "^2.1.2", + "tslint": "^5.11.0", + "typescript": "^3.0.1" + } +} diff --git a/amp-story/gae/tsconfig.json b/amp-story/gae/tsconfig.json new file mode 100644 index 0000000..3ea31c8 --- /dev/null +++ b/amp-story/gae/tsconfig.json @@ -0,0 +1,15 @@ +{ + // https://www.typescriptlang.org/docs/handbook/compiler-options.html + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "noImplicitAny": true, + "strictNullChecks": true, + "sourceMap": false, + "moduleResolution": "node" + }, + "exclude": [ + "node_modules", + "amp-story-linter" + ] +} diff --git a/amp-story/gae/tslint.json b/amp-story/gae/tslint.json new file mode 100644 index 0000000..a711810 --- /dev/null +++ b/amp-story/gae/tslint.json @@ -0,0 +1,9 @@ +// http://palantir.github.io/tslint/rules/ +{ + "extends": "tslint:recommended", + "rules": { + "interface-name": false, + // "object-literal-sort-keys": false, + "no-console": false + } +} diff --git a/amp-story/linter/.gitignore b/amp-story/linter/.gitignore new file mode 100644 index 0000000..e797eff --- /dev/null +++ b/amp-story/linter/.gitignore @@ -0,0 +1,5 @@ +node_modules +*.js +*.d.ts +*.js.map +validator.js diff --git a/amp-story/linter/index.ts b/amp-story/linter/index.ts new file mode 100644 index 0000000..6652c06 --- /dev/null +++ b/amp-story/linter/index.ts @@ -0,0 +1,660 @@ +/// + +import {readFileSync} from "fs"; +import {resolve, URL} from "url"; +// tslint:disable-next-line:no-var-requires +const validator = require("amphtml-validator").newInstance( + // Let's not fetch over the network on every run. + // Use `yarn run update-validator` to update. + // tslint:disable-next-line:no-var-requires + readFileSync(`${__dirname}/validator.js`).toString(), +); +import * as cheerio from "cheerio"; +import throat = require("throat"); + +import {default as fetch, Request, RequestInit, Response} from "node-fetch"; +import {basename} from "path"; +import * as probe from "probe-image-size"; +import * as punycode from "punycode"; +import * as readline from "readline"; + +const CONCURRENCY = 8; +const UA_GOOGLEBOT_MOBILE = [ + "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36", + "(KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36", + "(compatible; Googlebot/2.1; +http://www.google.com/bot.html)", +].join(" "); + +export interface ActualExpected { + readonly actual: string; + readonly expected: string; +} + +export interface Message { + readonly status: string; + readonly message?: string|ActualExpected; +} + +export interface Context { + readonly url: string; + readonly $: CheerioStatic; + readonly headers: { + [key: string]: string; + }; +} + +export interface Test { + (context: Context): Promise; +} + +export interface TestList { + (context: Context): Promise; +} + +interface InlineMetadata { + "title": string; + "publisher": string; + "publisher-logo-src": string; + "poster-portrait-src": string; + "poster-square-src"?: string; + "poster-landscape-src"?: string; +} + +const S_PASS = "PASS"; +const S_FAIL = "FAIL"; +const S_WARN = "WARN"; +const S_INFO = "INFO"; + +export const PASS = (): Promise => Promise.resolve({status: S_PASS}); +export const FAIL = (s: string|ActualExpected) => { + return Promise.resolve({status: S_FAIL, message: s}); +}; +export const WARN = (s: string|ActualExpected) => { + return Promise.resolve({status: S_WARN, message: s}); +}; +export const INFO = (s: string|ActualExpected) => { + return Promise.resolve({status: S_INFO, message: s}); +}; + +const isPass = (m: Message): boolean => { + return m.status === S_PASS; +}; + +const notPass = (m: Message): boolean => { + return m.status !== S_PASS; +}; + +const getBody = throat(CONCURRENCY, + (context: Context, s: string|Request, init = {}) => { + if (!("headers" in init)) { + init.headers = {}; + } + // Might be able to use type guards to avoid the cast somehow... + (init.headers as {[key: string]: string})["user-agent"] = UA_GOOGLEBOT_MOBILE; + return fetch(s, init); + // return res.ok ? res.text() : new Error(res); + }, +); + +const getUrl = throat(CONCURRENCY, + async (context: Context, s: string|Request) => { + const res = await fetch(s, {headers: context.headers }); + return res.url; + }, +); + +const getContentLength = throat(CONCURRENCY, + async (context: Context, s: string|Request) => { + const options = Object.assign( + {}, + { method: "HEAD" }, + { headers: context.headers } + ); + const res = await fetch(s, options); + if (!res.ok) { return Promise.reject(res); } + const contentLength = res.headers.get("content-length"); + return contentLength ? contentLength : 0; + }, +); + +const absoluteUrl = (s: string, base: string) => { + if (typeof s !== "string" || typeof base !== "string") { + return ""; + } else { + return resolve(base, s); + } +}; + +const getSchemaMetadata = ($: CheerioStatic) => { + const metadata = JSON.parse($('script[type="application/ld+json"]').html() as string); + return metadata ? metadata : {}; +}; + +function getInlineMetadata($: CheerioStatic) { + const e = $("amp-story"); + const inlineMetadata: InlineMetadata = { + "poster-landscape-src": e.attr("poster-landscape-src"), // optional + "poster-portrait-src": e.attr("poster-portrait-src"), + "poster-square-src": e.attr("poster-square-src"), // optional + "publisher": e.attr("publisher"), + "publisher-logo-src": e.attr("publisher-logo-src"), + "title": e.attr("title"), + }; + return inlineMetadata; +} + +function getImageSize(context: Context, url: string): Promise<{width: number, height: number, [k: string]: any}> { + return probe(url, { headers: context.headers }); +} + +function fetchToCurl(url: string, init: { headers?: { [k: string]: string } } = { headers: {} }) { + const headers = init.headers || {}; + + const h = Object.keys(headers).map(k => `-H '${k}: ${headers[k]}'`).join(" "); + + return `curl -i ${h} '${url}'`; +} + +const testValidity: Test = ({$}) => { + const res = validator.validateString($.html()); + return Promise.resolve(res.status === "PASS" ? PASS() : res); +}; + +const testCanonical: Test = (context) => { + const {$, url} = context; + const href = $('link[rel="canonical"]').attr("href"); + if (!href) { + return FAIL(" not specified"); + } + const canonical = absoluteUrl(href, url); + if (url !== canonical) { + return FAIL({ + actual: canonical, + expected: url, + }); + } + return getUrl(context, canonical).then((s) => { + if (s === canonical) { + return PASS(); + } else { + return FAIL({ + actual: s, + expected: canonical, + }); + } + }, + ).catch(() => { + return FAIL(`couldn't retrieve canonical ${canonical}`); + }); +}; + +const testSchemaMetadataType: Test = ({$}) => { + const metadata = getSchemaMetadata($); + const type = metadata["@type"]; + if (type !== "Article" && type !== "NewsArticle" && type !== "ReportageNewsArticle") { + return WARN(`@type is not 'Article' or 'NewsArticle' or 'ReportageNewsArticle'`); + } else { + return PASS(); + } +}; + +const testSchemaMetadataRecent: Test = ({$}) => { + const inLastMonth = (time: number) => { + return (time > Date.now() - (30 * 24 * 60 * 60 * 1000)) && (time < Date.now()); + }; + const metadata = getSchemaMetadata($); + const datePublished = metadata.datePublished; + const dateModified = metadata.dateModified; + if (!datePublished || !dateModified) { + return FAIL(`datePublished or dateModified not found`); + } + const timePublished = Date.parse(datePublished); + const timeModified = Date.parse(dateModified); + if (isNaN(timePublished) || isNaN(timeModified)) { + return FAIL(`couldn't parse datePublished [${datePublished}] or dateModified [${dateModified}]`); + } + if (timeModified < timePublished) { + return FAIL(`dateModified [${dateModified}] is earlier than datePublished [${datePublished}]`); + } + if (inLastMonth(timePublished) && inLastMonth(timeModified)) { + return PASS(); + } else { + return WARN(`datePublished [${datePublished}] or dateModified [${dateModified}] is old or in the future`); + } +}; + +const testAmpStory: Test = ({$}) => { + if ($("body amp-story[standalone]").length === 1) { + return PASS(); + } else { + return FAIL(`couldn't find component`); + } +}; + +const testVideoSize: Test = (context) => { + const {$} = context; + return Promise.all($(`amp-video source[type="video/mp4"][src], amp-video[src]`).map(async (i, e) => { + const url = absoluteUrl($(e).attr("src"), context.url); + const length = await getContentLength(context, url); + return { url, length }; + }).get() as any as Array>).then((args) => { // TODO(stillers): switch to Map + return args.reduce((a, v) => { + a[v.url] = v.length; + return a; + }, {} as {[url: string]: number}); + }).then((videos) => { + const large = Object.keys(videos).filter((v) => videos[v] > 4000000); + if (large.length > 0) { + return FAIL(`videos over 4MB: [${large.join(",")}]`); + } else { + return PASS(); + } + }); +}; + +function addSourceOrigin(url: string, sourceOrigin: string) { + const {parse, format} = require("url"); // use old API to work with node 6+ + const obj = parse(url, true); + obj.query.__amp_source_origin = sourceOrigin; + obj.search = require("querystring").stringify(obj.query); + return format(obj); +} + +function buildCacheOrigin(cacheSuffix: string, url: string): string { + // console.log({cacheSuffix, url}); + function convertHost(hostname: string) { + return punycode + .toASCII(hostname) + .replace(/\-/g, "--") + .replace(/\./g, "-"); + } + const {parse, format} = require("url"); // use old API to work with node 6+ + const obj = parse(url); + const cacheHost = `${convertHost(obj.host)}.${cacheSuffix}`; + return `https://${cacheHost}`; +} + +function isJson(res: Response): Promise { + const contentType = (() => { + if (!res.headers) { + return ""; + } + const s = res.headers.get("content-type") || ""; + return s.toLowerCase().split(";")[0]; + })(); + if (contentType !== "application/json") { + throw new Error(`expected content-type: [application/json]; actual: [${contentType}]`); + } + return res.text().then((text) => { + try { + JSON.parse(text); + } catch (e) { + throw new Error(`couldn't parse body as JSON: ${text.substring(0, 100)}`); + } + return res; + }); +} + +function isStatusNotOk(res: Response) { + if (!res.ok) { + return res; + } else { + throw new Error(`expected status code: [1xx, 3xx, 4xx, 5xx], actual [${res.status}]`); + } +} + +function isStatusOk(res: Response) { + if (res.ok) { + return res; + } else { + throw new Error(`expected status code: [2xx], actual [${res.status}]`); + } +} + +function isAccessControlHeaders(origin: string, sourceOrigin: string): (res: Response) => Response { + return (res) => { + const h1 = res.headers.get("access-control-allow-origin") || ""; + if ((h1 !== origin) && (h1 !== "*")) { throw new Error( + `access-control-allow-origin header is [${h1}], expected [${origin}]`, + ); + } + // The AMP docs specify that the AMP-Access-Control-Allow-Source-Origin and + // Access-Control-Expose-Headers headers must be returned, but this is not + // in true: the runtime does check this header, but only if the + // requireAmpResponseSourceOrigin flag is true, and amp-story sets this to + // false. + // + // https://www.ampproject.org/docs/fundamentals/amp-cors-requests#ensuring-secure-responses + /* + const h2 = res.headers.get('amp-access-control-allow-source-origin') || ''; + if (h2 !== sourceOrigin) throw new Error( + `amp-access-control-allow-source-origin header is [${h2}], expected [${sourceOrigin}]` + ); + const h3 = res.headers.get('access-control-expose-headers') || ''; + if (h3 !== 'AMP-Access-Control-Allow-Source-Origin') throw new Error( + `access-control-expose-headers is [${h3}], expected [AMP-Access-Control-Allow-Source-Origin]` + ); + */ + return res; + }; +} + +function buildSourceOrigin(url: string) { + const {parse} = require("url"); // use old API to work with node 6+ + const obj = parse(url, true); + return `${obj.protocol}//${obj.host}`; +} + +function canXhrSameOrigin(context: Context, xhrUrl: string) { + const sourceOrigin = buildSourceOrigin(context.url); + + const headers = Object.assign( + {}, + {"amp-same-origin": "true"}, + context.headers + ); + + const curl = fetchToCurl(addSourceOrigin(xhrUrl, sourceOrigin), { headers }); + + return fetch(addSourceOrigin(xhrUrl, sourceOrigin), {headers}) + .then(isStatusOk) + .then(isJson) + .then(PASS, (e: Error) => FAIL(`can't retrieve bookend: ${e.message} [debug: ${curl}]`)); +} + +function canXhrCache(context: Context, xhrUrl: string, cacheSuffix: string) { + const sourceOrigin = buildSourceOrigin(context.url); + const origin = buildCacheOrigin(cacheSuffix, context.url); + + const headers = Object.assign( + {}, + {origin}, + context.headers + ); + + const curl = fetchToCurl(addSourceOrigin(xhrUrl, sourceOrigin), { headers }); + + return fetch(addSourceOrigin(xhrUrl, sourceOrigin), {headers}) + .then(isStatusOk) + .then(isAccessControlHeaders(origin, sourceOrigin)) + .then(isJson) + .then(PASS, (e) => FAIL(`can't retrieve bookend: ${e.message} [debug: ${curl}]`)); +} + +const testBookendSameOrigin: Test = (context) => { + const {$, url} = context; + const s1 = $("amp-story amp-story-bookend").attr("src"); + const s2 = $("amp-story").attr("bookend-config-src"); + const bookendSrc = s1 || s2; + if (!bookendSrc) { return WARN("amp-story-bookend missing"); } + const bookendUrl = absoluteUrl(bookendSrc, url); + + return canXhrSameOrigin(context, bookendUrl); +}; + +const testBookendCache: Test = (context) => { + const {$, url} = context; + const s1 = $("amp-story amp-story-bookend").attr("src"); + const s2 = $("amp-story").attr("bookend-config-src"); + const bookendSrc = s1 || s2; + if (!bookendSrc) { return WARN("amp-story-bookend missing"); } + const bookendUrl = absoluteUrl(bookendSrc, url); + + return canXhrCache(context, bookendUrl, "cdn.ampproject.org"); +}; + +const testVideoSource: Test = ({$}) => { + if ($("amp-video[src]").length > 0) { + return FAIL(" used instead of "); + } else { + return PASS(); + } +}; + +const testAmpStoryV1: Test = ({$}) => { + const isV1 = $("script[src='https://cdn.ampproject.org/v0/amp-story-1.0.js']").length > 0; + return isV1 ? PASS() : WARN("amp-story-1.0.js not used (probably 0.1?)"); +}; + +const testAmpStoryV1Metadata: Test = ({$}) => { + const isV1 = $("script[src='https://cdn.ampproject.org/v0/amp-story-1.0.js']").length > 0; + if (!isV1) { return PASS(); } + const attr: string[] = [ "title", "publisher", "publisher-logo-src", "poster-portrait-src" ] + .map(a => $(`amp-story[${a}]`).length > 0 ? false : a) + .filter(Boolean) as string[]; + if (attr.length > 0) { + return WARN(` is missing attribute(s) that will soon be mandatory: [${attr.join(", ")}]`); + } else { + return PASS(); + } +}; + +const testMetaCharsetFirst: Test = ({$}) => { + const firstChild = $("head *:first-child"); + const charset = firstChild.attr("charset"); + return !charset ? FAIL(` not the first tag`) : PASS(); +}; + +const testRuntimePreloaded: Test = ({$}) => { + const attr = [ + "href='https://cdn.ampproject.org/v0.js'", + "rel='preload'", + "as='script'" + ].map(s => `[${s}]`).join(""); + const isPreloaded = $(`link${attr}`).length > 0; + return isPreloaded ? + PASS() : WARN(" is missing"); +}; + +const testMostlyText: Test = ({$}) => { + const text = $("amp-story").text(); + if (text.length > 100) { + return PASS(); + } else { + return WARN(`minimal text in the story [${text}]`); + } +}; + +const testThumbnails: Test = async (context) => { + const $ = context.$; + async function isSquare(url: string) { + const {width, height} = await getImageSize(context, url); + return width === height; + } + async function isPortrait(url: string) { + const {width, height} = await getImageSize(context, url); + return (width > (0.74 * height)) && (width < (0.76 * height)); + } + async function isLandscape(url: string) { + const {width, height} = await getImageSize(context, url); + return (height > (0.74 * width)) && (height < (0.76 * width)); + } + const inlineMetadata = getInlineMetadata($); + + let k: keyof InlineMetadata; + let v: string|undefined; + const errors = []; + + k = "publisher-logo-src"; + v = inlineMetadata[k]; + if (!v || !(await isSquare(v))) { + errors.push(`[${k}] (${v}) is missing or not square (1:1)`); + } + + k = "poster-portrait-src"; + v = inlineMetadata[k]; + if (!v || !(await isPortrait(v))) { + errors.push(`[${k}] (${v}) is missing or not portrait (3:4)`); + } + + k = "poster-square-src"; + v = inlineMetadata[k]; + if (v && !(await isSquare(v))) { + errors.push(`[${k}] (${v}) is not square (1x1)`); + } + + k = "poster-landscape-src"; + v = inlineMetadata[k]; + if (v && !(await isLandscape(v))) { + errors.push(`[${k}] ($v) is not landscape (4:3)`); + } + + return (errors.length > 0) ? FAIL(errors.join(", ")) : PASS(); +}; + +const testSingleAmpImg = ( + context: Context, + { src, expectedWidth, expectedHeight }: { src: string, expectedWidth: number, expectedHeight: number } + ): Promise => { + const success = ({height, width}: {height: number, width: number}): Promise => { + const actualHeight = height; + const actualWidth = width; + const actualRatio = Math.floor(actualWidth * 100 / actualHeight) / 100; + const expectedRatio = Math.floor(expectedWidth * 100 / expectedHeight) / 100; + if (Math.abs(actualRatio - expectedRatio) > 0.01) { + const actualString = `${actualWidth}/${actualHeight} = ${actualRatio}`; + const expectedString = `${expectedWidth}/${expectedHeight} = ${expectedRatio}`; + return FAIL(`[${src}]: actual ratio [${actualString}] does not match specified [${expectedString}]`); + } + const actualVolume = actualWidth * actualHeight; + const expectedVolume = expectedWidth * expectedHeight; + if (expectedVolume < (0.25 * actualVolume)) { + const actualString = `${actualWidth}x${actualHeight}`; + const expectedString = `${expectedWidth}x${expectedHeight}`; + return WARN(`[${src}]: actual dimensions [${actualString}] are much larger than specified [${expectedString}]`); + } + if (expectedVolume > (1.5 * actualVolume)) { + const actualString = `${actualWidth}x${actualHeight}`; + const expectedString = `${expectedWidth}x${expectedHeight}`; + return WARN(`[${src}]: actual dimensions [${actualString}] are much smaller than specified [${expectedString}]`); + } + return PASS(); + }; + const fail = ({statusCode}: {statusCode: number}) => { + return FAIL(`[${src}] returned status ${statusCode}`); + }; + return getImageSize(context, absoluteUrl(src, context.url)).then(success, fail); + +}; + +const testAmpImg: TestList = async (context) => { + const $ = context.$; + const url = context.url; + + return (await Promise.all($("amp-img").map((_, e) => { + const src = $(e).attr("src"); + const expectedHeight = parseInt($(e).attr("height"), 10); + const expectedWidth = parseInt($(e).attr("width"), 10); + return testSingleAmpImg(context, { src, expectedHeight, expectedWidth }); + }).get() as any as Array>)).filter(notPass); +}; + +const testAll = async (context: Context): Promise<{[key: string]: Message}> => { + const tests = [ + testValidity, + testCanonical, + testAmpStory, + testAmpStoryV1, + testAmpStoryV1Metadata, + testSchemaMetadataRecent, + testSchemaMetadataType, + testBookendSameOrigin, + testBookendCache, + testVideoSource, + testVideoSize, + testMostlyText, + testRuntimePreloaded, + testThumbnails, + testMetaCharsetFirst, + testAmpImg, + ]; + const res = await Promise.all(tests.map(async (testFn) => { + const v = await testFn(context); + return [ + testFn.name.substring("test".length).toLowerCase(), // key + v, // value + ]; + })) as Array<[string, Message]>; // not sure why this cast is necessary, but... + return res.reduce((a: {[key: string]: Message}, kv: [string, Message]) => { + a[kv[0]] = kv[1]; + return a; + }, {}); +}; + +export { + testAll, + testAmpStory, + testAmpStoryV1, + testAmpStoryV1Metadata, + testBookendCache, + testBookendSameOrigin, + testCanonical, + testSchemaMetadataType, + testSchemaMetadataRecent, + testMostlyText, + testValidity, + testVideoSize, + testVideoSource, + testMetaCharsetFirst, + testRuntimePreloaded, + testThumbnails, + testAmpImg, + fetchToCurl, + // "private" functions get prefixed + getBody as _getBody, + getSchemaMetadata as _getSchemaMetadata, + getInlineMetadata as _getInlineMetadata, + getImageSize as _getImageSize, +}; + +if (require.main === module) { // invoked directly? + + if (process.argv.length <= 2) { + console.error(`usage: ${basename(process.argv[0])} ${basename(process.argv[1])} URL [copy_as_cURL]`); + process.exit(1); + } + + const url = process.argv[2]; + + function seq(first: number, last: number): number[] { + if (first < last) { + return [first].concat(seq(first + 1, last)); + } else if (first > last) { + return [last].concat(seq(first, last - 1)); + } else { + return [first]; + } + } + + const headers = seq(2, process.argv.length - 1) + .filter(n => process.argv[n] === "-H") + .map(n => process.argv[n + 1]) + .map(s => { + const [h, ...v] = s.split(": "); + return [h, v.join("")]; + }) + .reduce((a: {[key: string]: any}, kv) => { + a[kv[0]] = kv[1]; + return a; + }, {}); + + // console.log(headers); + + const body = (() => { + if (url === "-") { + return Promise.resolve(readFileSync("/dev/stdin").toString()); + } else { + return fetch(url, { headers }).then( + r => r.ok ? r.text() : Promise.reject(`couldn't load [${url}]: ${r.statusText}`) + ); + } + })(); + + body + .then(b => cheerio.load(b)) + .then($ => testAll({$, headers, url})) + .then(console.log) + .then(() => process.exit(0)) + .catch((e) => console.error(`error: ${e}`)); + +} diff --git a/amp-story/linter/package-lock.json b/amp-story/linter/package-lock.json new file mode 100644 index 0000000..b43c5d0 --- /dev/null +++ b/amp-story/linter/package-lock.json @@ -0,0 +1,1282 @@ +{ + "name": "amp-story-linter", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/cheerio": { + "version": "0.22.9", + "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.9.tgz", + "integrity": "sha512-q6LuBI0t5u04f0Q4/R+cGBqIbZMtJkVvCSF+nTfFBBdQqQvJR/mNHeWjRkszyLl7oyf2rDoKUYMEjTw5AV0hiw==", + "dev": true + }, + "@types/debug": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-0.0.30.tgz", + "integrity": "sha512-orGL5LXERPYsLov6CWs3Fh6203+dXzJkR7OnddIr2514Hsecwc8xRpzCapshBbKFImCsvS/mk6+FWiN5LyZJAQ==", + "dev": true + }, + "@types/diff": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@types/diff/-/diff-3.5.1.tgz", + "integrity": "sha512-nkT7bd/YM6QRDQjww8PYf0kOj1MvwxQ/WaCinj2Hm1HlL+JqGTm4cDoQeROfiWX/B3SNI1nyLLhLAQpp5sE3hw==", + "dev": true + }, + "@types/nock": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@types/nock/-/nock-9.3.0.tgz", + "integrity": "sha512-ZHf/X8rTQ5Tb1rHjxIJYqm55uO265agE3G7NoSXVa2ep+EcJXgB2fsme+zBvK7MhrxTwkC/xkB6THyv50u0MGw==", + "dev": true, + "requires": { + "@types/node": "10.5.2" + } + }, + "@types/node": { + "version": "10.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.2.tgz", + "integrity": "sha512-m9zXmifkZsMHZBOyxZWilMwmTlpC8x5Ty360JKTiXvlXZfBWYpsg9ZZvP/Ye+iZUh+Q+MxDLjItVTWIsfwz+8Q==" + }, + "@types/node-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.1.2.tgz", + "integrity": "sha512-XroxUzLpKuL+CVkQqXlffRkEPi4Gh3Oui/mWyS7ztKiyqVxiU+h3imCW5I2NQmde5jK+3q++36/Q96cyRWsweg==", + "dev": true, + "requires": { + "@types/node": "10.5.2" + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "amphtml-validator": { + "version": "1.0.23", + "resolved": "https://registry.npmjs.org/amphtml-validator/-/amphtml-validator-1.0.23.tgz", + "integrity": "sha1-26DDhUKJVjwK2qwpLNTWCW7k18g=", + "requires": { + "colors": "1.1.2", + "commander": "2.9.0", + "promise": "7.1.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "2.1.2" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + } + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chai": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", + "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", + "dev": true, + "requires": { + "assertion-error": "1.1.0", + "check-error": "1.0.2", + "deep-eql": "3.0.1", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.8" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.2" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "cheerio": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", + "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash": "4.17.10", + "parse5": "3.0.3" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "color-convert": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", + "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "dev": true, + "requires": { + "color-name": "1.1.1" + } + }, + "color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "debug": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.0.1.tgz", + "integrity": "sha512-K23FHJ/Mt404FSlp6gSZCevIbTMLX0j3fmHhUEhQ3Wq0FMODW3+cUSoLdy1Gx4polAf4t/lphhmHH35BB8cLYw==", + "requires": { + "ms": "2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deepmerge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.1.1.tgz", + "integrity": "sha512-urQxA1smbLZ2cBbXbaYObM1dJ82aJ2H57A1C/Kklfh/ZN1bgH4G/n5KWhdNfOK11W98gqZfyYj7W4frJJRwA2w==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "optional": true, + "requires": { + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.19" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.2", + "domutils": "1.5.1", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.2" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + }, + "mime-db": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" + }, + "mime-types": { + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", + "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", + "requires": { + "mime-db": "1.35.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "nock": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/nock/-/nock-9.6.1.tgz", + "integrity": "sha512-EDgl/WgNQ0C1BZZlASOQkQdE6tAWXJi8QQlugqzN64JJkvZ7ILijZuG24r4vCC7yOfnm6HKpne5AGExLGCeBWg==", + "dev": true, + "requires": { + "chai": "4.1.2", + "debug": "3.2.5", + "deep-equal": "1.0.1", + "json-stringify-safe": "5.0.1", + "lodash": "4.17.10", + "mkdirp": "0.5.1", + "propagate": "1.0.0", + "qs": "6.5.2", + "semver": "5.5.0" + }, + "dependencies": { + "debug": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", + "dev": true, + "requires": { + "ms": "2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "node-fetch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.2.0.tgz", + "integrity": "sha512-OayFWziIxiHY8bCUyLX6sTpDH8Jsbp4FfYd1j1f7vZyfgkcOnAyM4oQR16f8a0s7Gl/viMGRey8eScYk4V4EZA==" + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "requires": { + "boolbase": "1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "parse-ms": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", + "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", + "dev": true + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "requires": { + "@types/node": "10.5.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "plur": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", + "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=", + "dev": true + }, + "pretty-ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", + "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", + "dev": true, + "requires": { + "is-finite": "1.0.2", + "parse-ms": "1.0.1", + "plur": "1.0.0" + } + }, + "probe-image-size": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-4.0.0.tgz", + "integrity": "sha512-nm7RvWUxps+2+jZKNLkd04mNapXNariS6G5WIEVzvAqjx7EUuKcY1Dp3e6oUK7GLwzJ+3gbSbPLFAASHFQrPcQ==", + "requires": { + "any-promise": "1.3.0", + "deepmerge": "2.1.1", + "inherits": "2.0.3", + "next-tick": "1.0.0", + "request": "2.88.0", + "stream-parser": "0.3.1" + } + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "promise": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz", + "integrity": "sha1-SJZUxpJha4qlWwck+oCbt9tJxb8=", + "requires": { + "asap": "2.0.6" + } + }, + "propagate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-1.0.0.tgz", + "integrity": "sha1-AMLa7t2iDofjeCs0Stuhzd1q1wk=", + "dev": true + }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "re-emitter": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", + "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.1.0", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.19", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.4.3", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" + } + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "1.0.6" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "split": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", + "dev": true, + "requires": { + "through": "2.3.8" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "requires": { + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" + } + }, + "stream-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", + "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", + "requires": { + "debug": "2.6.9" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "tap-out": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-2.1.0.tgz", + "integrity": "sha512-LJE+TBoVbOWhwdz4+FQk40nmbIuxJLqaGvj3WauQw3NYYU5TdjoV3C0x/yq37YAvVyi+oeBXmWnxWSjJ7IEyUw==", + "dev": true, + "requires": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + }, + "dependencies": { + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + } + } + }, + "tap-spec": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tap-spec/-/tap-spec-5.0.0.tgz", + "integrity": "sha512-zMDVJiE5I6Y4XGjlueGXJIX2YIkbDN44broZlnypT38Hj/czfOXrszHNNJBF/DXR8n+x6gbfSx68x04kIEHdrw==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "duplexer": "0.1.1", + "figures": "1.7.0", + "lodash": "4.17.10", + "pretty-ms": "2.1.0", + "repeat-string": "1.6.1", + "tap-out": "2.1.0", + "through2": "2.0.3" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + } + } + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.6", + "xtend": "4.0.1" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "1.1.29", + "punycode": "1.4.1" + } + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tslint": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz", + "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "builtin-modules": "1.1.1", + "chalk": "2.4.1", + "commander": "2.17.1", + "diff": "3.5.0", + "glob": "7.1.2", + "js-yaml": "3.12.0", + "minimatch": "3.0.4", + "resolve": "1.8.1", + "semver": "5.5.0", + "tslib": "1.9.3", + "tsutils": "2.29.0" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + } + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "1.9.3" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "typescript": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.3.tgz", + "integrity": "sha512-kk80vLW9iGtjMnIv11qyxLqZm20UklzuR2tL0QAnDIygIUIemcZMxlMWudl9OOt76H3ntVzcTiddQ1/pAAJMYg==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } +} diff --git a/amp-story/linter/package.json b/amp-story/linter/package.json new file mode 100644 index 0000000..a76fa54 --- /dev/null +++ b/amp-story/linter/package.json @@ -0,0 +1,36 @@ +{ + "name": "amp-story-linter", + "version": "0.0.1", + "description": "AMP Story lint and validation tools", + "repository": "https://github.com/ampproject/ampbench/amp-story/linter", + "license": "Apache-2.0", + "author": "Michael Stillwell ", + "dependencies": { + "amphtml-validator": "^1.0.23", + "cheerio": "^1.0.0-rc.2", + "debug": "^4.0.1", + "node-fetch": "^2.2.0", + "probe-image-size": "^4.0.0", + "throat": "^4.1.0" + }, + "engines": { + "node": "8.x.x" + }, + "scripts": { + "prepare": "$npm_execpath run update-validator && tsc -p tsconfig.json --sourceMap -d --module commonjs", + "update-validator": "curl -sS --remote-name-all https://cdn.ampproject.org/v0/validator.js", + "test": "$npm_execpath run update-validator && cd tests && tsc && for t in *.js ; do node $t | tap-spec ; done" + }, + "devDependencies": { + "@types/cheerio": "^0.22.9", + "@types/debug": "0.0.30", + "@types/diff": "^3.5.1", + "@types/nock": "^9.3.0", + "@types/node-fetch": "^2.1.2", + "diff": "^3.5.0", + "nock": "^9.6.1", + "tap-spec": "^5.0.0", + "tslint": "^5.11.0", + "typescript": "^3.0.3" + } +} diff --git a/amp-story/linter/probe-image-size.d.ts b/amp-story/linter/probe-image-size.d.ts new file mode 100644 index 0000000..88b9741 --- /dev/null +++ b/amp-story/linter/probe-image-size.d.ts @@ -0,0 +1,14 @@ +declare module "probe-image-size"; // TODO: Fix the type definitions + +/* +{ + + export interface ImageSize { + width: number, + height: number + } + + export function probe(url: string): Promise; + +} +*/ \ No newline at end of file diff --git a/amp-story/linter/tests/local.ts b/amp-story/linter/tests/local.ts new file mode 100644 index 0000000..e77e7d4 --- /dev/null +++ b/amp-story/linter/tests/local.ts @@ -0,0 +1,93 @@ +const FIXTURES = __dirname + "/local"; + +import {basename} from "path"; + +import * as cheerio from "cheerio"; +import {diffJson as diff} from "diff"; +import * as fs from "fs"; + +import * as linter from "../index"; + +async function run(prefix: string) { + + const match = prefix.match(/\/(.*)\-/); + + if (!match) { + console.warn(`skipping ${prefix}`); + return; + } + + const name = basename(match[1]); + + if (!(name in linter)) { + console.warn(`${name}() not found`); + return; + } + + const $ = (() => { + try { + return cheerio.load(fs.readFileSync(`${prefix}/source.html`).toString()); + } catch (e) { + console.error(`error: can't read/parse ${prefix}/source.html, skipping ${prefix}`); + return null; + } + })(); + + const expected = (() => { + try { + return JSON.parse(fs.readFileSync(`${prefix}/expected.json`).toString()); + } catch (e) { + console.error(`error: can't read/parse ${prefix}/expected.json, skipping ${prefix}`); + return null; + } + })(); + + if (!$ || !expected) { return; } + + const url = expected._url || "https://example.com/"; + + const fn = (linter as any)[name] as linter.Test; + const context = { + $, + headers: {}, + url + }; + const actual = await fn(context); + + return diff(expected, actual); +} + +let COUNT = 0; + +if (process.argv.length === 3) { + + const prefix = process.argv[2]; + + run(prefix).then(res => { + if (!res) { return; } + res.forEach(part => { + const color = part.added ? "green" : + part.removed ? "red" : "grey"; + process.stdout.write((part.value as any)[color]); + }); + process.stdout.write("\n"); + }); + +} else { + + fs.readdirSync(FIXTURES).forEach(async d => { + const count = ++COUNT; + const prefix = `${FIXTURES}/${d}`; + const res = await run(prefix); + if (res && res.length === 1) { + console.log(`ok ${count} - ${basename(prefix)}`); + } else { + console.log( + `not ok ${count} - ${prefix} # more info: ${basename(process.argv[0])} ${basename(process.argv[1])} ${prefix}`, + ); + } + }); + + console.log(`1..${COUNT}`); + +} diff --git a/amp-story/linter/tests/local/testAmpStoryV1-1/expected.json b/amp-story/linter/tests/local/testAmpStoryV1-1/expected.json new file mode 100644 index 0000000..2933ce6 --- /dev/null +++ b/amp-story/linter/tests/local/testAmpStoryV1-1/expected.json @@ -0,0 +1,3 @@ +{ + "status": "PASS" +} diff --git a/amp-story/linter/tests/local/testAmpStoryV1-1/source.html b/amp-story/linter/tests/local/testAmpStoryV1-1/source.html new file mode 100644 index 0000000..3cfc844 --- /dev/null +++ b/amp-story/linter/tests/local/testAmpStoryV1-1/source.html @@ -0,0 +1,72 @@ + + + + + + + Hello, Ken Burns! + + + + + + + + + + +
+

Ready?

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

Thanks!

+
+
+
+
+ + \ No newline at end of file diff --git a/amp-story/linter/tests/local/testAmpStoryV1-2/expected.json b/amp-story/linter/tests/local/testAmpStoryV1-2/expected.json new file mode 100644 index 0000000..9880e1d --- /dev/null +++ b/amp-story/linter/tests/local/testAmpStoryV1-2/expected.json @@ -0,0 +1,4 @@ +{ + "message": "amp-story-1.0.js not used (probably 0.1?)", + "status": "WARN" +} diff --git a/amp-story/linter/tests/local/testAmpStoryV1-2/source.html b/amp-story/linter/tests/local/testAmpStoryV1-2/source.html new file mode 100644 index 0000000..a40b0c2 --- /dev/null +++ b/amp-story/linter/tests/local/testAmpStoryV1-2/source.html @@ -0,0 +1,72 @@ + + + + + + + Hello, Ken Burns! + + + + + + + + + + +
+

Ready?

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

Thanks!

+
+
+
+
+ + \ No newline at end of file diff --git a/amp-story/linter/tests/local/testMetaCharsetFirst-1/expected.json b/amp-story/linter/tests/local/testMetaCharsetFirst-1/expected.json new file mode 100644 index 0000000..78f724a --- /dev/null +++ b/amp-story/linter/tests/local/testMetaCharsetFirst-1/expected.json @@ -0,0 +1,3 @@ +{ + "status": "PASS" +} \ No newline at end of file diff --git a/amp-story/linter/tests/local/testMetaCharsetFirst-1/source.html b/amp-story/linter/tests/local/testMetaCharsetFirst-1/source.html new file mode 100644 index 0000000..3cfc844 --- /dev/null +++ b/amp-story/linter/tests/local/testMetaCharsetFirst-1/source.html @@ -0,0 +1,72 @@ + + + + + + + Hello, Ken Burns! + + + + + + + + + + +
+

Ready?

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

Thanks!

+
+
+
+
+ + \ No newline at end of file diff --git a/amp-story/linter/tests/local/testMetaCharsetFirst-2/expected.json b/amp-story/linter/tests/local/testMetaCharsetFirst-2/expected.json new file mode 100644 index 0000000..918e01f --- /dev/null +++ b/amp-story/linter/tests/local/testMetaCharsetFirst-2/expected.json @@ -0,0 +1,4 @@ +{ + "message": " not the first tag", + "status": "FAIL" +} \ No newline at end of file diff --git a/amp-story/linter/tests/local/testMetaCharsetFirst-2/source.html b/amp-story/linter/tests/local/testMetaCharsetFirst-2/source.html new file mode 100644 index 0000000..d854dd1 --- /dev/null +++ b/amp-story/linter/tests/local/testMetaCharsetFirst-2/source.html @@ -0,0 +1,72 @@ + + + + + + Hello, Ken Burns! + + + + + + + + + + + +
+

Ready?

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

Thanks!

+
+
+
+
+ + \ No newline at end of file diff --git a/amp-story/linter/tests/local/testRuntimePreloaded-1/expected.json b/amp-story/linter/tests/local/testRuntimePreloaded-1/expected.json new file mode 100644 index 0000000..20372ba --- /dev/null +++ b/amp-story/linter/tests/local/testRuntimePreloaded-1/expected.json @@ -0,0 +1,4 @@ +{ + "message": " is missing", + "status": "WARN" +} \ No newline at end of file diff --git a/amp-story/linter/tests/local/testRuntimePreloaded-1/source.html b/amp-story/linter/tests/local/testRuntimePreloaded-1/source.html new file mode 100644 index 0000000..e87fb85 --- /dev/null +++ b/amp-story/linter/tests/local/testRuntimePreloaded-1/source.html @@ -0,0 +1,27 @@ + + + + + + Hello, AMPs + + + + + + + +

Hello, AMP!

+ + \ No newline at end of file diff --git a/amp-story/linter/tests/local/testRuntimePreloaded-2/expected.json b/amp-story/linter/tests/local/testRuntimePreloaded-2/expected.json new file mode 100644 index 0000000..78f724a --- /dev/null +++ b/amp-story/linter/tests/local/testRuntimePreloaded-2/expected.json @@ -0,0 +1,3 @@ +{ + "status": "PASS" +} \ No newline at end of file diff --git a/amp-story/linter/tests/local/testRuntimePreloaded-2/source.html b/amp-story/linter/tests/local/testRuntimePreloaded-2/source.html new file mode 100644 index 0000000..716f17e --- /dev/null +++ b/amp-story/linter/tests/local/testRuntimePreloaded-2/source.html @@ -0,0 +1,28 @@ + + + + + + + Hello, AMPs + + + + + + + +

Hello, AMP!

+ + \ No newline at end of file diff --git a/amp-story/linter/tests/local/testSchemaMetadataType-1/expected.json b/amp-story/linter/tests/local/testSchemaMetadataType-1/expected.json new file mode 100644 index 0000000..78f724a --- /dev/null +++ b/amp-story/linter/tests/local/testSchemaMetadataType-1/expected.json @@ -0,0 +1,3 @@ +{ + "status": "PASS" +} \ No newline at end of file diff --git a/amp-story/linter/tests/local/testSchemaMetadataType-1/source.html b/amp-story/linter/tests/local/testSchemaMetadataType-1/source.html new file mode 100644 index 0000000..3ca885d --- /dev/null +++ b/amp-story/linter/tests/local/testSchemaMetadataType-1/source.html @@ -0,0 +1,27 @@ + + + + + + Hello, AMPs + + + + + + + +

Hello, AMP!

+ + diff --git a/amp-story/linter/tests/local/testSchemaMetadataType-2/expected.json b/amp-story/linter/tests/local/testSchemaMetadataType-2/expected.json new file mode 100644 index 0000000..f84859e --- /dev/null +++ b/amp-story/linter/tests/local/testSchemaMetadataType-2/expected.json @@ -0,0 +1,4 @@ +{ + "message": "@type is not 'Article' or 'NewsArticle' or 'ReportageNewsArticle'", + "status": "WARN" +} \ No newline at end of file diff --git a/amp-story/linter/tests/local/testSchemaMetadataType-2/source.html b/amp-story/linter/tests/local/testSchemaMetadataType-2/source.html new file mode 100644 index 0000000..8bfd752 --- /dev/null +++ b/amp-story/linter/tests/local/testSchemaMetadataType-2/source.html @@ -0,0 +1,27 @@ + + + + + + Hello, AMPs + + + + + + + +

Hello, AMP!

+ + diff --git a/amp-story/linter/tests/network.ts b/amp-story/linter/tests/network.ts new file mode 100644 index 0000000..6eec582 --- /dev/null +++ b/amp-story/linter/tests/network.ts @@ -0,0 +1,425 @@ +const FIXTURES = "network"; + +import { existsSync } from "fs"; + +import * as cheerio from "cheerio"; +import * as debug from "debug"; +import { diffJson as diff } from "diff"; +import { back as nockBack } from "nock"; +import { default as fetch } from "node-fetch"; + +import { _getBody as getBody } from ".."; +import { _getSchemaMetadata as getSchemaMetadata } from ".."; +import { _getInlineMetadata as getInlineMetadata } from ".."; +import { _getImageSize as getImageSize } from ".."; +import * as linter from ".."; + +import throat = require("throat"); + +const PASS = linter.PASS(); + +const log = debug("linter"); + +nockBack.fixtures = `${__dirname}/${FIXTURES}`; + +// Need to throttle to one run at a time because nock() works by monkey patching +// the (global) http.* object, which means it can't run in parallel. +const withFixture = throat(1, + async (fixtureName: string, fn: () => Promise): Promise => { + const fixturePath = `${fixtureName}.json`; + if (existsSync(`${nockBack.fixtures}/${fixturePath}`)) { + log(`nocking HTTP requests with fixture [${fixturePath}]`); + nockBack.setMode("lockdown"); + const { nockDone } = await nockBack(fixturePath); + const res = await fn(); + nockDone(); + return res; + } else { + log(`recording HTTP requests to fixture [${fixturePath}] ...`); + nockBack.setMode("record"); + const { nockDone } = await nockBack(fixturePath); + const res = await fn(); + return new Promise((resolve) => { + setTimeout(() => { // wait for probe-image-size's aborts to settle + nockDone(); + log(`... created fixture [${fixturePath}]`); + resolve(res); + }, 2000); + }); + } + } +) as (fixtureName: string, fn: () => Promise) => Promise; + +async function assertEqual( + testName: string, + actual: T|Promise, + expected: T|Promise +) { + COUNT++; + const res = diff( + await Promise.resolve(expected), + await Promise.resolve(actual) + ); + if (res && res.length === 1) { + console.log(`ok ${COUNT} - ${testName}`); + } else { + const s = JSON.stringify(await Promise.resolve(actual)); + console.log(`not ok ${COUNT} - ${testName} actual: ${s}`); + } + return res; +} + +async function assertNotEqual( + testName: string, + actual: T|Promise, + expected: T|Promise +) { + COUNT++; + const res = diff( + await Promise.resolve(expected), + await Promise.resolve(actual) + ); + if (res && res.length === 1) { + const s = JSON.stringify(await Promise.resolve(actual)); + console.log(`not ok ${COUNT} - ${testName} actual: ${s}`); + } else { + console.log(`ok ${COUNT} - ${testName}`); + } + return res; +} + +async function assertMatch( + testName: string, + actual: T|Promise, + expected: string +) { + COUNT++; + const s = JSON.stringify(await Promise.resolve(actual)); + if (s.match(expected)) { + console.log(`ok ${COUNT} - ${testName}`); + } else { + console.log(`not ok ${COUNT} - ${testName} actual: ${s}`); + } +} + +async function assertFn( + testName: string, + actual: T|Promise, + expectedFn: (expected: T) => string, +) { + COUNT++; + const res = expectedFn(await actual); + if (!res) { + console.log(`ok ${COUNT} - ${testName}`); + } else { + console.log(`not ok ${COUNT} - ${testName} [${res}]`); + } + return res; +} + +async function runTest(fn: linter.Test, url: string) { + const res = await fetch(url); + const body = await res.text(); + const $ = cheerio.load(body); + const context = { + $, + headers: {}, + url + }; + return Promise.resolve(fn(context)); +} + +async function runTestList(fn: linter.TestList, url: string) { + const res = await fetch(url); + const body = await res.text(); + const $ = cheerio.load(body); + const context = { + $, + headers: {}, + url + }; + return Promise.resolve(fn(context)); +} + +async function runCheerioFn(fn: ($: CheerioStatic, url?: string) => T|Promise, url: string) { + const res = await fetch(url); + const body = await res.text(); + const $ = cheerio.load(body); + return Promise.resolve(fn($, url)); +} + +async function runUrlFn(fn: (url: string) => T, url: string) { + return Promise.resolve(fn(url)); +} + +let COUNT = 0; + +withFixture("getschemametadata", () => assertEqual( + "getSchemaMetadata", + runCheerioFn( + getSchemaMetadata, + "https://ampbyexample.com/stories/introduction/amp_story_hello_world/preview/embed/" + ), + { + "@context": "http://schema.org", + "@type": "BreadcrumbList", + "itemListElement": [ + { + "@type": "ListItem", + "item": { + "@id": "https://ampbyexample.com/#/stories#stories/introduction", + "name": "Introduction", + }, + "position": 1, + }, + { + "@type": "ListItem", + "item": { + "@id": + "https://ampbyexample.com/stories/introduction/amp_story_hello_world/", + "name": " AMP Story Hello World", + }, + "position": 2, + } + ] + }, +)); + +withFixture("getinlinemetadata", () => assertEqual( + "getInlineMetadata", + runCheerioFn( + getInlineMetadata, + "https://ithinkihaveacat.github.io/hello-world-amp-story/" + ), + { + "poster-portrait-src": + [ + "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ee/", + "Cantilever_bridge_human_model.jpg/", + "627px-Cantilever_bridge_human_model.jpg" + ].join(""), + "publisher": "Michael Stillwell", + "publisher-logo-src": + "https://s.gravatar.com/avatar/3928085cafc1e496fb3d990a9959f233?s=150", + "title": "Hello, Ken Burns", + }, +)); + +withFixture("thumbnails1", () => assertEqual( + "testThumbnails - correctly sized", + runTest( + linter.testThumbnails, + "https://ampbyexample.com/stories/introduction/amp_story_hello_world/preview/embed/" + ), + PASS +)); + +withFixture("thumbnails2", () => assertMatch( + "testThumbnails - publisher-logo-src missing", + runTest( + linter.testThumbnails, + "https://regular-biology.glitch.me/" + ), + "publisher-logo-src" +)); + +withFixture("testvalidity1", () => assertEqual( + "testValidity - valid", + runTest( + linter.testValidity, + "https://www.ampproject.org/" + ), + PASS +)); + +withFixture("testvalidity2", async () => assertNotEqual( + "testValidity - not valid", + runTest( + linter.testValidity, + "https://precious-sturgeon.glitch.me/" + ), + PASS +)); + +withFixture("testcanonical1", () => assertEqual( + "testCanonical - canonical", + runTest( + linter.testCanonical, + "https://regular-biology.glitch.me/" + ), + PASS +)); + +withFixture("testcanonical2", () => assertMatch( + "testCanonical - not canonical", + runTest( + linter.testCanonical, + "https://regular-biology.glitch.me/" + ), + "https://regular-biology.glitch.me/" +)); + +withFixture("testcanonical3", () => assertEqual( + "testCanonical - relative", + runTest( + linter.testCanonical, + "https://regular-biology.glitch.me/" + ), + PASS +)); + +withFixture("testvideosize1", () => assertEqual( + "testVideoSize - too big", + runTest( + linter.testVideoSize, + "https://regular-biology.glitch.me/" + ), + { + message: "videos over 4MB: [https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4]", + status: "FAIL" + } +)); + +withFixture("testvideosize2", () => assertEqual( + "testVideoSize - good size #1", + runTest( + linter.testVideoSize, + "https://regular-biology.glitch.me/" + ), + PASS +)); + +withFixture("testvideosize3", () => assertEqual( + "testVideoSize - good size #2", + runTest( + linter.testVideoSize, + "https://ampbyexample.com/stories/features/media/preview/embed/" + ), + PASS +)); + +withFixture("bookendsameorigin1", () => assertEqual( + "testBookendSameOrigin - configured correctly", + runTest( + linter.testBookendSameOrigin, + "https://ampbyexample.com/stories/introduction/amp_story_hello_world/preview/embed/" + ), + PASS +)); + +withFixture("bookendsameorigin2", () => assertMatch( + "testBookendSameOrigin - bookend not application/json", + runTest( + linter.testBookendSameOrigin, + "https://ampbyexample.com/stories/introduction/amp_story_hello_world/preview/embed/" + ), + "application/json" +)); + +withFixture("bookendsameorigin3", () => assertMatch( + "testBookendSameOrigin - bookend not JSON", + runTest( + linter.testBookendSameOrigin, + "https://ampbyexample.com/stories/introduction/amp_story_hello_world/preview/embed/" + ), + "JSON" +)); + +withFixture("bookendsameorgin4", () => assertEqual( + "testBookendSameOrigin - v0 AMP Story - configured correctly", + runTest( + linter.testBookendSameOrigin, + "https://ampbyexample.com/stories/introduction/amp_story_hello_world/preview/embed/" + ), + PASS +)); + +withFixture("bookendcache1", () => assertEqual( + "testBookendCache - configured correctly", + runTest( + linter.testBookendCache, + "https://ampbyexample.com/stories/introduction/amp_story_hello_world/preview/embed/" + ), + PASS +)); + +withFixture("bookendcache2", () => assertMatch( + "testBookendCache - incorrect headers", + runTest( + linter.testBookendCache, + "https://ampbyexample.com/stories/introduction/amp_story_hello_world/preview/embed/" + ), + "access-control-allow-origin" +)); + +withFixture("ampstoryv1metadata1", () => assertEqual( + "testAmpStoryV1Metadata - valid metadata", + runTest( + linter.testAmpStoryV1Metadata, + "https://ithinkihaveacat.github.io/hello-world-amp-story/" + ), + PASS +)); + +withFixture("ampstoryv1metadata2", () => assertMatch( + "testAmpStoryV1Metadata - invalid metadata", + runTest( + linter.testAmpStoryV1Metadata, + "https://ithinkihaveacat-hello-world-amp-story-7.glitch.me/" + ), + "publisher-logo-src" +)); + +withFixture("ampimg1", () => assertFn( + "testAmpImg - height/width are incorrect #1", + runTestList( + linter.testAmpImg, + "https://ampbyexample.com/components/amp-img/" + ), + (res) => { + if (res.length !== 3) { + return "expected 3 failures"; + } + const message = res[1].message; + if (typeof(message) !== "string" || !message.match("does-not-exist")) { + return "does-not-exist.jpg should be a 404"; + } + return ""; + } +)); + +withFixture("ampimg2", () => assertFn( + "testAmpImg - height/width are incorrect #2", + runTestList( + linter.testAmpImg, + "https://www.ampproject.org/docs/reference/components/amp-story" + ), + (res) => { + if (res.length !== 6) { + return "expected 6 failures"; + } + const message1 = res[0].message; + if (typeof(message1) !== "string" || !message1.match("amp-story-tag-hierarchy")) { + return "amp-story-tag-hierarchy.png is wrong ratio"; + } + const message2 = res[5].message; + if (typeof(message2) !== "string" || !message2.match("layers-layer-3")) { + return "layers-layer-3.jpg is too big"; + } + return ""; + } +)); + +withFixture("ampimg3", () => assertFn( + "testAmpImg - height/width are correct", + runTestList( + linter.testAmpImg, + "https://ampbyexample.com/introduction/hello_world/" + ), + (res) => { + return res.length === 0 ? "" : `expected 0 failures, got ${JSON.stringify(res)}`; + } +)); + +console.log("# dummy"); // https://github.com/scottcorgan/tap-spec/issues/63 (sigh) +console.log(`1..23`); diff --git a/amp-story/linter/tests/network/ampimg1.json b/amp-story/linter/tests/network/ampimg1.json new file mode 100644 index 0000000..873a86b --- /dev/null +++ b/amp-story/linter/tests/network/ampimg1.json @@ -0,0 +1,423 @@ +[ + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/components/amp-img/", + "body": "", + "status": 200, + "response": "amp-imgamp-img - AMP by Example
☰

amp-img

Edit on Github

Introduction

AMP HTML files don't support the normal HTML img tag. With amp-img AMP provides a powerful replacement.

Setup

amp-img is a built-in element and is automatically imported via the AMP runtime.

<script async src=\"https://cdn.ampproject.org/v0.js\"></script>

Basic Usage

A simple responsive image - width and height are used to determine the aspect ratio. Use alt to specify text that can act as an alternative for the image.

Example

<amp-img src=\"/img/amp.jpg\"\n  width=\"1080\"\n  height=\"610\"\n  layout=\"responsive\"\n  alt=\"AMP\"></amp-img>

srcset

Use srcset to specify different images for varying viewport widths and pixel densities (change the width of your browser windows to test it).

Example

<amp-img src=\"/img/amp.jpg\"\n  srcset=\"/img/amp.jpg 1080w, /img/amp-900.jpg 900w, /img/amp-800.jpg 800w,\n/img/amp-700.jpg 700w, /img/amp-600.jpg 600w, /img/amp-500.jpg 500w, /img/amp-400.jpg 400w,\n/img/amp-300.jpg 300w, /img/amp-200.jpg 200w, /img/amp-100.jpg 100w\"\n  width=\"1080\"\n  height=\"610\"\n  layout=\"responsive\"\n  alt=\"AMP\"></amp-img>

Offline Fallback

amp-img supports AMP's common attributes, which means you can show a fallback in case the image couldn't be loaded. This is great for adding offline support to your AMPs.

Example

offline
<amp-img src=\"/img/does-not-exist.jpg\"\n  width=\"300\"\n  height=\"100\"\n  layout=\"responsive\"\n  class=\"m1\">\n  <div fallback>offline</div>\n</amp-img>

No Script

If you want to ensure that users with JavaScript disabled can see your images, you can add an additional img element inside a noscript tag. This also makes it possible for webcrawlers without JavaScript runtime to discover your images.

Example

<amp-img src=\"/img/amp.jpg\"\n  alt=\"AMP\"\n  width=\"475\"\n  height=\"268\"\n  layout=\"responsive\"\n  class=\"m1\">\n  <noscript>\n    <img src=\"/img/amp.jpg\" width=\"475\" height=\"268\" alt=\"AMP\"> \n  </noscript>\n</amp-img>

Hiding the Loading Indicator

Use the noloading attribute to hide the loading indicators on page load. This is recommended for logos and small images/icons.

Example

<amp-img src=\"/img/amp_by_example_logo.svg\"\n  width=\"208\"\n  height=\"40\"\n  alt=\"AMP by Example\"\n  noloading></amp-img>
", + "rawHeaders": [ + "Access-Control-Allow-Origin", + "*", + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "Access-Control-Allow-Credentials", + "true", + "Cache-Control", + "max-age=60, public, must-revalidate", + "Content-Type", + "text/html; charset=utf-8", + "Accept-Ranges", + "bytes", + "X-Cloud-Trace-Context", + "28f4de22f795aa3e10809b5dd0073915", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "1486us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Date", + "Thu, 13 Sep 2018 10:52:30 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/707", + "Content-Length", + "107252", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wqdc11-v6:9896,wakh16:9829,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/707,wakh16:9829,wqdc11-v6:9896", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/1158,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/707,wakh16:9829,/bns/wa/borg/wa/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/22,wqdc11-v6:9896", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:cloud-layer2-gfe-apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close" + ] + }, + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/img/does-not-exist.jpg", + "body": "", + "status": 404, + "response": "", + "rawHeaders": [ + "X-Cloud-Trace-Context", + "f545787f12d2991dcfc86ac929828e2f", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "44", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Date", + "Thu, 13 Sep 2018 10:52:31 GMT", + "Content-Type", + "text/html; charset=UTF-8", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1042", + "Content-Length", + "299", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wsuq2-v6:9836,wog7:9834,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1042,wog7:9834,wsuq2-v6:9836", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/1158,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1042,wog7:9834,/bns/wo/borg/wo/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/25,wsuq2-v6:9836", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:cloud-layer2-gfe-apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close" + ] + }, + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/img/amp_by_example_logo.svg", + "body": "", + "status": 200, + "response": "You are being redirected.", + "rawHeaders": [ + "Server", + "GitHub.com", + "Date", + "Thu, 13 Sep 2018 15:35:59 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Status", + "302 Found", + "Cache-Control", + "no-cache", + "Vary", + "X-PJAX", + "Access-Control-Allow-Origin", + "https://render.githubusercontent.com", + "Location", + "https://raw.githubusercontent.com/ampproject/docs/master/assets/img/docs/amp-story-tag-hierarchy.png", + "X-Runtime", + "0.052182", + "Strict-Transport-Security", + "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options", + "deny", + "X-Content-Type-Options", + "nosniff", + "X-XSS-Protection", + "1; mode=block", + "Expect-CT", + "max-age=2592000, report-uri=\"https://api.github.com/_private/browser/errors\"", + "Content-Security-Policy", + "default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: assets-cdn.github.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com", + "X-Runtime-rack", + "0.060666", + "Age", + "0", + "Content-Length", + "166", + "Connection", + "close", + "X-GitHub-Request-Id", + "8F87:72DE:CA7727:10DFFF1:5B9A83DF" + ] + }, + { + "scope": "https://github.com:443", + "method": "GET", + "path": "/ampproject/amphtml/raw/master/extensions/amp-story/img/publisher-logo-2.png", + "body": "", + "status": 302, + "response": "You are being redirected.", + "rawHeaders": [ + "Server", + "GitHub.com", + "Date", + "Thu, 13 Sep 2018 15:35:59 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Status", + "302 Found", + "Cache-Control", + "no-cache", + "Vary", + "X-PJAX", + "Access-Control-Allow-Origin", + "https://render.githubusercontent.com", + "Location", + "https://raw.githubusercontent.com/ampproject/amphtml/master/extensions/amp-story/img/publisher-logo-2.png", + "X-Runtime", + "0.069917", + "Strict-Transport-Security", + "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options", + "deny", + "X-Content-Type-Options", + "nosniff", + "X-XSS-Protection", + "1; mode=block", + "Expect-CT", + "max-age=2592000, report-uri=\"https://api.github.com/_private/browser/errors\"", + "Content-Security-Policy", + "default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: assets-cdn.github.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com", + "X-Runtime-rack", + "0.080932", + "Age", + "0", + "Content-Length", + "171", + "Connection", + "close", + "X-GitHub-Request-Id", + "A9F5:72DE:CA7726:10DFFEF:5B9A83DF" + ] + }, + { + "scope": "https://github.com:443", + "method": "GET", + "path": "/ampproject/amphtml/raw/master/extensions/amp-story/img/amp-story-bookend-component-textbox.png", + "body": "", + "status": 302, + "response": "You are being redirected.", + "rawHeaders": [ + "Server", + "GitHub.com", + "Date", + "Thu, 13 Sep 2018 15:35:59 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Status", + "302 Found", + "Cache-Control", + "no-cache", + "Vary", + "X-PJAX", + "Access-Control-Allow-Origin", + "https://render.githubusercontent.com", + "Location", + "https://raw.githubusercontent.com/ampproject/amphtml/master/extensions/amp-story/img/amp-story-bookend-component-textbox.png", + "X-Runtime", + "0.047648", + "Strict-Transport-Security", + "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options", + "deny", + "X-Content-Type-Options", + "nosniff", + "X-XSS-Protection", + "1; mode=block", + "Expect-CT", + "max-age=2592000, report-uri=\"https://api.github.com/_private/browser/errors\"", + "Content-Security-Policy", + "default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: assets-cdn.github.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com", + "X-Runtime-rack", + "0.055883", + "Age", + "0", + "Content-Length", + "190", + "Connection", + "close", + "X-GitHub-Request-Id", + "DE93:72DF:F3BC16:14425BA:5B9A83DF" + ] + }, + { + "scope": "https://github.com:443", + "method": "GET", + "path": "/ampproject/amphtml/raw/master/extensions/amp-story/img/amp-story-bookend-component-heading.png", + "body": "", + "status": 302, + "response": "You are being redirected.", + "rawHeaders": [ + "Server", + "GitHub.com", + "Date", + "Thu, 13 Sep 2018 15:35:59 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Status", + "302 Found", + "Cache-Control", + "no-cache", + "Vary", + "X-PJAX", + "Access-Control-Allow-Origin", + "https://render.githubusercontent.com", + "Location", + "https://raw.githubusercontent.com/ampproject/amphtml/master/extensions/amp-story/img/amp-story-bookend-component-heading.png", + "X-Runtime", + "0.057759", + "Strict-Transport-Security", + "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options", + "deny", + "X-Content-Type-Options", + "nosniff", + "X-XSS-Protection", + "1; mode=block", + "Expect-CT", + "max-age=2592000, report-uri=\"https://api.github.com/_private/browser/errors\"", + "Content-Security-Policy", + "default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: assets-cdn.github.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com", + "X-Runtime-rack", + "0.065823", + "Age", + "0", + "Content-Length", + "190", + "Connection", + "close", + "X-GitHub-Request-Id", + "C8D2:72DD:7C9EE0:A28878:5B9A83DF" + ] + }, + { + "scope": "https://github.com:443", + "method": "GET", + "path": "/ampproject/amphtml/raw/master/extensions/amp-story/img/amp-story-bookend-component-small.png", + "body": "", + "status": 302, + "response": "You are being redirected.", + "rawHeaders": [ + "Server", + "GitHub.com", + "Date", + "Thu, 13 Sep 2018 15:35:59 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Status", + "302 Found", + "Cache-Control", + "no-cache", + "Vary", + "X-PJAX", + "Access-Control-Allow-Origin", + "https://render.githubusercontent.com", + "Location", + "https://raw.githubusercontent.com/ampproject/amphtml/master/extensions/amp-story/img/amp-story-bookend-component-small.png", + "X-Runtime", + "0.050325", + "Strict-Transport-Security", + "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options", + "deny", + "X-Content-Type-Options", + "nosniff", + "X-XSS-Protection", + "1; mode=block", + "Expect-CT", + "max-age=2592000, report-uri=\"https://api.github.com/_private/browser/errors\"", + "Content-Security-Policy", + "default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: assets-cdn.github.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com", + "X-Runtime-rack", + "0.061469", + "Age", + "0", + "Content-Length", + "188", + "Connection", + "close", + "X-GitHub-Request-Id", + "94E9:72DC:9EA5C9:D25DD9:5B9A83DF" + ] + }, + { + "scope": "https://github.com:443", + "method": "GET", + "path": "/ampproject/amphtml/raw/master/extensions/amp-story/img/publisher-logo-1.png", + "body": "", + "status": 302, + "response": "You are being redirected.", + "rawHeaders": [ + "Server", + "GitHub.com", + "Date", + "Thu, 13 Sep 2018 15:35:59 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Status", + "302 Found", + "Cache-Control", + "no-cache", + "Vary", + "X-PJAX", + "Access-Control-Allow-Origin", + "https://render.githubusercontent.com", + "Location", + "https://raw.githubusercontent.com/ampproject/amphtml/master/extensions/amp-story/img/publisher-logo-1.png", + "X-Runtime", + "0.068195", + "Strict-Transport-Security", + "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options", + "deny", + "X-Content-Type-Options", + "nosniff", + "X-XSS-Protection", + "1; mode=block", + "Expect-CT", + "max-age=2592000, report-uri=\"https://api.github.com/_private/browser/errors\"", + "Content-Security-Policy", + "default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: assets-cdn.github.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com", + "X-Runtime-rack", + "0.080016", + "Age", + "0", + "Content-Length", + "171", + "Connection", + "close", + "X-GitHub-Request-Id", + "9270:72DD:7C9EE0:A28877:5B9A83DF" + ] + }, + { + "scope": "https://github.com:443", + "method": "GET", + "path": "/ampproject/amphtml/raw/master/extensions/amp-story/img/publisher-logo-3.png", + "body": "", + "status": 302, + "response": "You are being redirected.", + "rawHeaders": [ + "Server", + "GitHub.com", + "Date", + "Thu, 13 Sep 2018 15:35:59 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Status", + "302 Found", + "Cache-Control", + "no-cache", + "Vary", + "X-PJAX", + "Access-Control-Allow-Origin", + "https://render.githubusercontent.com", + "Location", + "https://raw.githubusercontent.com/ampproject/amphtml/master/extensions/amp-story/img/publisher-logo-3.png", + "X-Runtime", + "0.055673", + "Strict-Transport-Security", + "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options", + "deny", + "X-Content-Type-Options", + "nosniff", + "X-XSS-Protection", + "1; mode=block", + "Expect-CT", + "max-age=2592000, report-uri=\"https://api.github.com/_private/browser/errors\"", + "Content-Security-Policy", + "default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: assets-cdn.github.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com", + "X-Runtime-rack", + "0.062852", + "Age", + "0", + "Content-Length", + "171", + "Connection", + "close", + "X-GitHub-Request-Id", + "C4D9:72DF:F3BC14:14425B8:5B9A83DF" + ] + }, + { + "scope": "https://github.com:443", + "method": "GET", + "path": "/ampproject/amphtml/raw/master/extensions/amp-story/img/amp-story-bookend-component-landscape.png", + "body": "", + "status": 302, + "response": "You are being redirected.", + "rawHeaders": [ + "Server", + "GitHub.com", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Status", + "302 Found", + "Cache-Control", + "no-cache", + "Vary", + "X-PJAX", + "Access-Control-Allow-Origin", + "https://render.githubusercontent.com", + "Location", + "https://raw.githubusercontent.com/ampproject/amphtml/master/extensions/amp-story/img/amp-story-bookend-component-landscape.png", + "X-Runtime", + "0.068263", + "Strict-Transport-Security", + "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options", + "deny", + "X-Content-Type-Options", + "nosniff", + "X-XSS-Protection", + "1; mode=block", + "Expect-CT", + "max-age=2592000, report-uri=\"https://api.github.com/_private/browser/errors\"", + "Content-Security-Policy", + "default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: assets-cdn.github.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com", + "X-Runtime-rack", + "0.080735", + "Age", + "0", + "Content-Length", + "192", + "Connection", + "close", + "X-GitHub-Request-Id", + "D104:72DF:F3BC16:14425B9:5B9A83DF" + ] + }, + { + "scope": "https://github.com:443", + "method": "GET", + "path": "/ampproject/amphtml/raw/master/extensions/amp-story/img/amp-story-bookend-component-portrait.png", + "body": "", + "status": 302, + "response": "You are being redirected.", + "rawHeaders": [ + "Server", + "GitHub.com", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Status", + "302 Found", + "Cache-Control", + "no-cache", + "Vary", + "X-PJAX", + "Access-Control-Allow-Origin", + "https://render.githubusercontent.com", + "Location", + "https://raw.githubusercontent.com/ampproject/amphtml/master/extensions/amp-story/img/amp-story-bookend-component-portrait.png", + "X-Runtime", + "0.083102", + "Strict-Transport-Security", + "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options", + "deny", + "X-Content-Type-Options", + "nosniff", + "X-XSS-Protection", + "1; mode=block", + "Expect-CT", + "max-age=2592000, report-uri=\"https://api.github.com/_private/browser/errors\"", + "Content-Security-Policy", + "default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: assets-cdn.github.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com", + "X-Runtime-rack", + "0.095806", + "Age", + "0", + "Content-Length", + "191", + "Connection", + "close", + "X-GitHub-Request-Id", + "E4D3:72DE:CA7727:10DFFF4:5B9A83DF" + ] + }, + { + "scope": "https://raw.githubusercontent.com:443", + "method": "GET", + "path": "/ampproject/amphtml/master/extensions/amp-story/img/layers-layer-4.gif", + "body": "", + "status": 200, + "response": "4749463839612c011502e67f00afb1bb8792ba8a8a8d234fcd536baad0d1d8b3c4e61534a00d268c1844c72147b5010c4e4d8de19aadd9eceff8dce7f43978dc1339c76878ab0318780626a5223786576391484f71cbd6eb427fdd3465c259975aeff7fb203da3afcfaf0432bb4379c90529b7295ad64468c6777e9fc7cde4c9daf861637297a0c23858a73975c68fb6901029a85675c70731a86973994479e7606b9b3473e3426bd9797981d6def86c83c9f7f7edd0ebce2a5aca5679d81029b60015a2eef7ed6b738a2976dcc2d9c1e7dee8f7efee506bc0eae7def7eff7bdc0cc3a59c5bdcef4175bcb2872cdf7f7f79f9fa72b5ade1839b31839bde5dedc1031b21039bdefefef82849d4a6bd61031bd315ed50f39b3e6e7e7f7f7ff3163dee7e7f0dedee1f7ffff316bded4deef316bd43962d4dedef0d6d6e73a6bdfe5eff0fffff7396bd2d5dee53963de1831affff7fffff7f6f7fff7efe7efd6d6efefefe6e3f1e31831bdefe7e7ded6e17caf7c6f6f6fd6cededed6ef736b949dc29e6d89e1000000ffffffffffff21ff0b4e45545343415045322e30030100000021ff0b584d502044617461584d503c3f787061636b657420626567696e3d22efbbbf222069643d2257354d304d7043656869487a7265537a4e54637a6b633964223f3e203c783a786d706d65746120786d6c6e733a783d2261646f62653a6e733a6d6574612f2220783a786d70746b3d2241646f626520584d5020436f726520352e362d633133382037392e3135393832342c20323031362f30392f31342d30313a30393a30312020202020202020223e203c7264663a52444620786d6c6e733a7264663d22687474703a2f2f7777772e77332e6f72672f313939392f30322f32322d7264662d73796e7461782d6e7323223e203c7264663a4465736372697074696f6e207264663a61626f75743d222220786d6c6e733a786d703d22687474703a2f2f6e732e61646f62652e636f6d2f7861702f312e302f2220786d6c6e733a786d704d4d3d22687474703a2f2f6e732e61646f62652e636f6d2f7861702f312e302f6d6d2f2220786d6c6e733a73745265663d22687474703a2f2f6e732e61646f62652e636f6d2f7861702f312e302f73547970652f5265736f75726365526566232220786d703a43726561746f72546f6f6c3d2241646f62652050686f746f73686f70204343203230313720284d6163696e746f7368292220786d704d4d3a496e7374616e636549443d22786d702e6969643a44393745333037333041393931314538394334333835313044334542313631432220786d704d4d3a446f63756d656e7449443d22786d702e6469643a4439374533303734304139393131453839433433383531304433454231363143223e203c786d704d4d3a4465726976656446726f6d2073745265663a696e7374616e636549443d22786d702e6969643a4439374533303731304139393131453839433433383531304433454231363143222073745265663a646f63756d656e7449443d22786d702e6469643a4439374533303732304139393131453839433433383531304433454231363143222f3e203c2f7264663a4465736372697074696f6e3e203c2f7264663a5244463e203c2f783a786d706d6574613e203c3f787061636b657420656e643d2272223f3e01fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0dfdedddcdbdad9d8d7d6d5d4d3d2d1d0cfcecdcccbcac9c8c7c6c5c4c3c2c1c0bfbebdbcbbbab9b8b7b6b5b4b3b2b1b0afaeadacabaaa9a8a7a6a5a4a3a2a1a09f9e9d9c9b9a999897969594939291908f8e8d8c8b8a898887868584838281807f7e7d7c7b7a797877767574737271706f6e6d6c6b6a696867666564636261605f5e5d5c5b5a595857565554535251504f4e4d4c4b4a494847464544434241403f3e3d3c3b3a393837363534333231302f2e2d2c2b2a292827262524232221201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201000021f9040502007f002c000000002c0115020007ff807d82838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaea80baf9eb1b2b5b6b793171727bbba9bba17b8c2c3c4aeba77c827cac834bc8e77c185bb2777cbd1a7b4c5dadba917c9bacabcc734d789273487e1e1e888270284465d008617755def82025d05dcfdfeace104c49b42a700136877165d28d0ac5c9f05bd80392b7462891f3f83fc74a1b1240ba10b7e0008f0c3a4cf4881180d65fbc7b225261a5d2ecabc38c508a3297ebc1d3262a440cf9e270cf112b044d0424127521a3926c808c629f3faf849e8b2aa554c2067ce8c8ae842cc2eca1c4ad5ea079fa191860014ed5320e8439809fffdb02babf2aaddbb8a929205a26841968b5d741ab2a895ddd9948392ae14c4c4cf1441722197c44bb932a29133a7881de4552658688516e0d46ab6105ace910f2d300245eadcd282165b9eedd2a9cccd83627a165c68f44cc3a6112ff0e396d09dc968bbd8945a9cb6f3bb7e2f523d74218856b01309f996097b50e38c24012ced9345971f238d4bde0949e471dde7f0ff81e44a8fac9f25e70ed9ef6e14df0526020020603000c4b29a11d39d60047df135e8126e0f010005103e1540", + "rawHeaders": [ + "Content-Security-Policy", + "default-src 'none'; style-src 'unsafe-inline'; sandbox", + "Strict-Transport-Security", + "max-age=31536000", + "X-Content-Type-Options", + "nosniff", + "X-Frame-Options", + "deny", + "X-XSS-Protection", + "1; mode=block", + "ETag", + "\"f3b21eaab83cac979bbde07b0cafc19c93177159\"", + "Content-Type", + "image/gif", + "Cache-Control", + "max-age=300", + "X-Geo-Block-List", + "", + "X-GitHub-Request-Id", + "339C:5474:3BC14:3DE74:5B9A83D8", + "Content-Length", + "5097968", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6340-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.743508,VS0,VE322", + "Vary", + "Authorization,Accept-Encoding", + "Access-Control-Allow-Origin", + "*", + "X-Fastly-Request-ID", + "056bf1176e3a1e85705b60ea77816051455f7f49", + "Expires", + "Thu, 13 Sep 2018 15:41:00 GMT", + "Source-Age", + "0" + ], + "responseIsBinary": true + }, + { + "scope": "https://github.com:443", + "method": "GET", + "path": "/ampproject/amphtml/raw/master/extensions/amp-story/img/amp-story-bookend-component-cta-links.png", + "body": "", + "status": 302, + "response": "You are being redirected.", + "rawHeaders": [ + "Server", + "GitHub.com", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Status", + "302 Found", + "Cache-Control", + "no-cache", + "Vary", + "X-PJAX", + "Access-Control-Allow-Origin", + "https://render.githubusercontent.com", + "Location", + "https://raw.githubusercontent.com/ampproject/amphtml/master/extensions/amp-story/img/amp-story-bookend-component-cta-links.png", + "X-Runtime", + "0.083547", + "Strict-Transport-Security", + "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options", + "deny", + "X-Content-Type-Options", + "nosniff", + "X-XSS-Protection", + "1; mode=block", + "Expect-CT", + "max-age=2592000, report-uri=\"https://api.github.com/_private/browser/errors\"", + "Content-Security-Policy", + "default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: assets-cdn.github.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com", + "X-Runtime-rack", + "0.101581", + "Age", + "0", + "Content-Length", + "192", + "Connection", + "close", + "X-GitHub-Request-Id", + "8535:72DC:9EA5C9:D25DDB:5B9A83DF" + ] + }, + { + "scope": "https://github.com:443", + "method": "GET", + "path": "/ampproject/amphtml/raw/master/extensions/amp-story/img/template-thirds.png", + "body": "", + "status": 302, + "response": "You are being redirected.", + "rawHeaders": [ + "Server", + "GitHub.com", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Status", + "302 Found", + "Cache-Control", + "no-cache", + "Vary", + "X-PJAX", + "Access-Control-Allow-Origin", + "https://render.githubusercontent.com", + "Location", + "https://raw.githubusercontent.com/ampproject/amphtml/master/extensions/amp-story/img/template-thirds.png", + "X-Runtime", + "0.050835", + "Strict-Transport-Security", + "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options", + "deny", + "X-Content-Type-Options", + "nosniff", + "X-XSS-Protection", + "1; mode=block", + "Expect-CT", + "max-age=2592000, report-uri=\"https://api.github.com/_private/browser/errors\"", + "Content-Security-Policy", + "default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: assets-cdn.github.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com", + "X-Runtime-rack", + "0.059073", + "Age", + "0", + "Content-Length", + "170", + "Connection", + "close", + "X-GitHub-Request-Id", + "B1E8:72DF:F3BC4F:14425E5:5B9A83DF" + ] + }, + { + "scope": "https://github.com:443", + "method": "GET", + "path": "/ampproject/amphtml/raw/master/extensions/amp-story/img/template-vertical.png", + "body": "", + "status": 302, + "response": "You are being redirected.", + "rawHeaders": [ + "Server", + "GitHub.com", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Status", + "302 Found", + "Cache-Control", + "no-cache", + "Vary", + "X-PJAX", + "Access-Control-Allow-Origin", + "https://render.githubusercontent.com", + "Location", + "https://raw.githubusercontent.com/ampproject/amphtml/master/extensions/amp-story/img/template-vertical.png", + "X-Runtime", + "0.070610", + "Strict-Transport-Security", + "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options", + "deny", + "X-Content-Type-Options", + "nosniff", + "X-XSS-Protection", + "1; mode=block", + "Expect-CT", + "max-age=2592000, report-uri=\"https://api.github.com/_private/browser/errors\"", + "Content-Security-Policy", + "default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: assets-cdn.github.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com", + "X-Runtime-rack", + "0.082281", + "Age", + "0", + "Content-Length", + "172", + "Connection", + "close", + "X-GitHub-Request-Id", + "B904:72DF:F3BC4F:14425D7:5B9A83DF" + ] + }, + { + "scope": "https://github.com:443", + "method": "GET", + "path": "/ampproject/amphtml/raw/master/extensions/amp-story/img/template-fill.png", + "body": "", + "status": 302, + "response": "You are being redirected.", + "rawHeaders": [ + "Server", + "GitHub.com", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Status", + "302 Found", + "Cache-Control", + "no-cache", + "Vary", + "X-PJAX", + "Access-Control-Allow-Origin", + "https://render.githubusercontent.com", + "Location", + "https://raw.githubusercontent.com/ampproject/amphtml/master/extensions/amp-story/img/template-fill.png", + "X-Runtime", + "0.075165", + "Strict-Transport-Security", + "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options", + "deny", + "X-Content-Type-Options", + "nosniff", + "X-XSS-Protection", + "1; mode=block", + "Expect-CT", + "max-age=2592000, report-uri=\"https://api.github.com/_private/browser/errors\"", + "Content-Security-Policy", + "default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: assets-cdn.github.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com", + "X-Runtime-rack", + "0.085399", + "Age", + "0", + "Content-Length", + "168", + "Connection", + "close", + "X-GitHub-Request-Id", + "EC77:72DC:9EA5EB:D25DF5:5B9A83DF" + ] + }, + { + "scope": "https://github.com:443", + "method": "GET", + "path": "/ampproject/amphtml/raw/master/extensions/amp-story/img/template-horizontal.png", + "body": "", + "status": 302, + "response": "You are being redirected.", + "rawHeaders": [ + "Server", + "GitHub.com", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Status", + "302 Found", + "Cache-Control", + "no-cache", + "Vary", + "X-PJAX", + "Access-Control-Allow-Origin", + "https://render.githubusercontent.com", + "Location", + "https://raw.githubusercontent.com/ampproject/amphtml/master/extensions/amp-story/img/template-horizontal.png", + "X-Runtime", + "0.071514", + "Strict-Transport-Security", + "max-age=31536000; includeSubdomains; preload", + "X-Frame-Options", + "deny", + "X-Content-Type-Options", + "nosniff", + "X-XSS-Protection", + "1; mode=block", + "Expect-CT", + "max-age=2592000, report-uri=\"https://api.github.com/_private/browser/errors\"", + "Content-Security-Policy", + "default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: assets-cdn.github.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com", + "X-Runtime-rack", + "0.081671", + "Age", + "0", + "Content-Length", + "174", + "Connection", + "close", + "X-GitHub-Request-Id", + "DC71:72DC:9EA5EB:D25DF9:5B9A83DF" + ] + }, + { + "scope": "https://raw.githubusercontent.com:443", + "method": "GET", + "path": "/ampproject/amphtml/master/extensions/amp-story/img/amp-story-bookend-component-small.png", + "body": "", + "status": 200, + "response": "89504e470d0a1a0a0000000d494844520000017b000000a20806000000a0786d5800000aae694343504943432050726f66696c65000048899596075493d91280efffffe985168874426fd2050248afa108d2c14648028412624268766551c1b5a02202ea8a0a220aae0590b520a2d816454550d10559149475b1002a2aef071e71f7bdf3de3b6fce99cc772673e7cedcffde7306004a0f5b284c85e50048136488427d3d18d131b10cfc7380004540043460cae68885ee212181009559fb77197b08a0297bdf6c2ad7bfffff5f459ecb1373008042508ee78a3969289f41b585231465008064a37eddac0ce11497a3ac28420b44f9e41427ce70eb14c7cf70f7744c78a827cac30010286cb6281100f247d4cfc8e424a27928ca285b0ab87c01ca7e28bb7092d85c9437a13c372d2d7d8ad11a8051fc5ff224fe2d67bc34279b9d28e5995ea685e0c5170b53d939ffe771fc6f494b95cceea18b2a2549e4178a5a99a9734b490f90b2207e41f02cf3b9d3f1d39c24f18b98658ed8337696b96caf00e9dad40581b39cc0f76149f364b0c26759941e2acdcf137b87cd325bf47d2f494a84bb745f1e4b9a3337293c6a9633f9910b66599c1216f03dc653ea174942a53527887ca43da689ffd2179f258dcf480af793f6c8fe5e1b4f1c2dad81cbf3f296fa0511d21861868734bf3035441acf4bf595fac59961d2b519e865fbbe36447a3ec96cff9059067e200430402cb006f600bd7519bcec8ca9c23dd38539227e625206c31d7d393c064bc0319fcbb0b6b4620230f50e673ef3fbeee9f705d109df7de97701b0af46a1eabb8f1d0740237a224abadf7dfa470090fd1d800b1c8e449439e3c34cfd600109c8a26f5c0568a2f7c80898a1b5d90127e006bc813f0806e120062c051c9004d28008648195601dc80785603bd80d4ac10170081c0527c029d000ce83cbe01ab805ee824ef004f48201f01a8c8031300141101ea242344805d282f42153c81a62422e90371408854231501c9408092009b412da0015424550297410aa867e86ce4197a11b5007f408ea8386a077d067188129b022ac011bc0163013768703e07078099c082f8773e13c782b5c0257c0c7e17af8327c0bee847be1d7f0280210324247b4113384897822c1482c92808890d54801528c5420b54813d286dc477a9161e4130687a1611818338c13c60f1381e16096635663b6604a314731f59856cc7d4c1f6604f30d4bc5aa634db18e5816361a9b88cdc2e6638bb195d8b3d8abd84eec00760c87c3d17186387b9c1f2e06978c5b81db82db87abc335e33a70fdb8513c1eaf8237c53be383f16c7c063e1fbf177f1c7f097f0f3f80ff482013b408d6041f422c4140584f28261c235c24dc23bc244c10e588fa44476230914bcc216e231e263611ef1007881324799221c999144e4a26ad2395906a4957493da4f764325987ec405e48e693d7924bc827c9d7c97de44f14058a09c593b29822a16ca554519a298f28efa954aa01d58d1a4bcda06ea55653af509f513fcad064cc6558325c9935326532f532f764dec81265f565dd6597cae6ca16cb9e96bd233b2c47943390f39463cbad962b933b27d725372a4f93b7920f964f93df227f4cfe86fca0025ec140c15b81ab90a77048e18a423f0da1e9d23c691cda06da61da55da80224ed15091a598ac58a87842b15d71444941699e52a452b65299d205a55e3a4237a0b3e8a9f46df453f487f4cf7334e6b8cfe1cdd93ca776cebd39e3ca6aca6eca3ce502e53ae54ee5cf2a0c156f9514951d2a0d2a4f5531aa26aa0b55b354f7ab5e551d5653547352e3a815a89d527bac0eab9ba887aaaf503fa47e5b7d544353c35743a8b157e38ac6b0265dd34d33597397e645cd212d9a968b165f6b97d625ad570c25863b239551c268658c68ab6bfb694bb40f6ab76b4fe818ea44e8acd7a9d379aa4bd265ea26e8eed26dd11dd1d3d20bd25ba957a3f7589fa8cfd44fd2dfa3dfa63f6e60681065b0d1a0c160d050d99065986b5863d863443572355a6e5461f4c01867cc344e31de677cd70436b13549322933b9630a9bda99f24df79976ccc5ce75982b985b31b7cb8c62e66e96695663d6674e370f345f6fde60fec642cf22d66287459bc5374b5bcb54cbc3964fac14acfcadd65b3559bdb336b1e65897593fb0a1daf8d8acb169b4793bcf741e6fdefe79ddb634db20db8db62db65fedeced4476b57643f67af671f6e5f65d4c456608730bf3ba03d6c1c3618dc379874f8e768e198ea71cff7432734a713ae63438df703e6ffee1f9fdce3ace6ce783cebd2e0c9738979f5c7a5db55dd9ae15aecfdd74ddb86e956e2fdd8ddd93dd8fbbbff1b0f410799cf518f774f45ce5d9ec8578f97a1578b57b2b784778977a3ff3d1f149f4a9f119f1b5f55de1dbec87f50bf0dbe1d7c5d2607158d5ac117f7bff55fead019480b080d280e7812681a2c0a62038c83f686750cf02fd0582050dc1209815bc33f8698861c8f2905f16e216862c2c5bf822d42a7465685b182d6c59d8b1b0b1708ff06de14f228c2224112d91b2918b23ab23c7a3bca28aa27aa32da25745df8a518de1c734c6e26323632b634717792fdabd6860b1ede2fcc50f97182ec95e7263a9ead2d4a51796c92e632f3b1d878d8b8a3b16f7851dccae608fc6b3e2cbe347389e9c3d9cd75c37ee2eee10cf9957c47b99e09c50943098e89cb8337128", + "rawHeaders": [ + "Content-Security-Policy", + "default-src 'none'; style-src 'unsafe-inline'; sandbox", + "Strict-Transport-Security", + "max-age=31536000", + "X-Content-Type-Options", + "nosniff", + "X-Frame-Options", + "deny", + "X-XSS-Protection", + "1; mode=block", + "ETag", + "\"e9f17ed22727f651a5bc0793844f29f401af0710\"", + "Content-Type", + "image/png", + "Cache-Control", + "max-age=300", + "X-Geo-Block-List", + "", + "X-GitHub-Request-Id", + "10A4:563B:1A755:1C7D4:5B9A83DF", + "Content-Length", + "10691", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6342-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.044361,VS0,VE114", + "Vary", + "Authorization,Accept-Encoding", + "Access-Control-Allow-Origin", + "*", + "X-Fastly-Request-ID", + "9d5d791d259f23adc5f733cab794ba1447cd26ce", + "Expires", + "Thu, 13 Sep 2018 15:41:00 GMT", + "Source-Age", + "0" + ], + "responseIsBinary": true + }, + { + "scope": "https://raw.githubusercontent.com:443", + "method": "GET", + "path": "/ampproject/amphtml/master/extensions/amp-story/img/amp-story-bookend-component-heading.png", + "body": "", + "status": 200, + "response": "89504e470d0a1a0a0000000d49484452000001820000007b0806000000791087ec00000aae694343504943432050726f66696c65000048899596075493d91280efffffe985168874426fd2050248afa108d2c14648028412624268766551c1b5a02202ea8a0a220aae0590b520a2d816454550d10559149475b1002a2aef071e71f7bdf3de3b6fce99cc772673e7cedcffde7306004a0f5b284c85e50048136488427d3d18d131b10cfc7380004540043460cae68885ee212181009559fb77197b08a0297bdf6c2ad7bfffff5f459ecb1373008042508ee78a3969289f41b585231465008064a37eddac0ce11497a3ac28420b44f9e41427ce70eb14c7cf70f7744c78a827cac30010286cb6281100f247d4cfc8e424a27928ca285b0ab87c01ca7e28bb7092d85c9437a13c372d2d7d8ad11a8051fc5ff224fe2d67bc34279b9d28e5995ea685e0c5170b53d939ffe771fc6f494b95cceea18b2a2549e4178a5a99a9734b490f90b2207e41f02cf3b9d3f1d39c24f18b98658ed8337696b96caf00e9dad40581b39cc0f76149f364b0c26759941e2acdcf137b87cd325bf47d2f494a84bb745f1e4b9a3337293c6a9633f9910b66599c1216f03dc653ea174942a53527887ca43da689ffd2179f258dcf480af793f6c8fe5e1b4f1c2dad81cbf3f296fa0511d21861868734bf3035441acf4bf595fac59961d2b519e865fbbe36447a3ec96cff9059067e200430402cb006f600bd7519bcec8ca9c23dd38539227e625206c31d7d393c064bc0319fcbb0b6b4620230f50e673ef3fbeee9f705d109df7de97701b0af46a1eabb8f1d0740237a224abadf7dfa470090fd1d800b1c8e449439e3c34cfd600109c8a26f5c0568a2f7c80898a1b5d90127e006bc813f0806e120062c051c9004d28008648195601dc80785603bd80d4ac10170081c0527c029d000ce83cbe01ab805ee824ef004f48201f01a8c8031300141101ea242344805d282f42153c81a62422e90371408854231501c9408092009b412da0015424550297410aa867e86ce4197a11b5007f408ea8386a077d067188129b022ac011bc0163013768703e07078099c082f8773e13c782b5c0257c0c7e17af8327c0bee847be1d7f0280210324247b4113384897822c1482c92808890d54801528c5420b54813d286dc477a9161e4130687a1611818338c13c60f1381e16096635663b6604a314731f59856cc7d4c1f6604f30d4bc5aa634db18e5816361a9b88cdc2e6638bb195d8b3d8abd84eec00760c87c3d17186387b9c1f2e06978c5b81db82db87abc335e33a70fdb8513c1eaf8237c53be383f16c7c063e1fbf177f1c7f097f0f3f80ff482013b408d6041f422c4140584f28261c235c24dc23bc244c10e588fa44476230914bcc216e231e263611ef1007881324799221c999144e4a26ad2395906a4957493da4f764325987ec405e48e693d7924bc827c9d7c97de44f14058a09c593b29822a16ca554519a298f28efa954aa01d58d1a4bcda06ea55653af509f513fcad064cc6558325c9935326532f532f764dec81265f565dd6597cae6ca16cb9e96bd233b2c47943390f39463cbad962b933b27d725372a4f93b7920f964f93df227f4cfe86fca0025ec140c15b81ab90a77048e18a423f0da1e9d23c691cda06da61da55da80224ed15091a598ac58a87842b15d71444941699e52a452b65299d205a55e3a4237a0b3e8a9f46df453f487f4cf7334e6b8cfe1cdd93ca776cebd39e3ca6aca6eca3ce502e53ae54ee5cf2a0c156f9514951d2a0d2a4f5531aa26aa0b55b354f7ab5e551d5653547352e3a815a89d527bac0eab9ba887aaaf503fa47e5b7d544353c35743a8b157e38ac6b0265dd34d33597397e645cd212d9a968b165f6b97d625ad570c25863b239551c268658c68ab6bfb694bb40f6ab76b4fe818ea44e8acd7a9d379aa4bd265ea26e8eed26dd11dd1d3d20bd25ba957a3f7589fa8cfd44fd2dfa3dfa63f6e60681065b0d1a0c160d050d99065986b5863d863443572355a6e5461f4c01867cc344e31de677cd70436b13549322933b9630a9bda99f24df79976ccc5ce75982b985b31b7cb8c62e66e96695663d6674e370f345f6fde60fec642cf22d66287459bc5374b5bcb54cbc3964fac14acfcadd65b3559bdb336b1e65897593fb0a1daf8d8acb169b4793bcf741e6fdefe79ddb634db20db8db62db65fedeced4476b57643f67af671f6e5f65d4c456608730bf3ba03d6c1c3618dc379874f8e768e198ea71cff7432734a713ae63438df703e6ffee1f9fdce3ace6ce783cebd2e0c9738979f5c7a5db55dd9ae15aecfdd74ddb86e956e2fdd8ddd93dd8fbbbff1b0f410799cf518f774f45ce5d9ec8578f97a1578b57b2b784778977a3ff3d1f149f4a9f119f1b5f55de1dbec87f50bf0dbe1d7c5d2607158d5ac117f7bff55fead019480b080d280e7812681a2c0a62038c83f686750cf02fd0582050dc1209815bc33f8698861c8f2905f16e216862c2c5bf822d42a7465685b182d6c59d8b1b0b1708ff06de14f228c2224112d91b2918b23ab23c7a3bca28aa27aa32da25745df8a518de1c734c6e26323632b634717792fdabd6860b1ede2fcc50f97182ec95e7263a9ead2d4a51796c92e632f3b1d878d8b8a3b16f7851dccae608fc6b3e2cbe347389e9c3d9cd75c37ee2eee10cf9957c47b99e09c50943098e89cb8337128c9", + "rawHeaders": [ + "Content-Security-Policy", + "default-src 'none'; style-src 'unsafe-inline'; sandbox", + "Strict-Transport-Security", + "max-age=31536000", + "X-Content-Type-Options", + "nosniff", + "X-Frame-Options", + "deny", + "X-XSS-Protection", + "1; mode=block", + "ETag", + "\"d0062da04358889768431b6fae5b060bc5594773\"", + "Content-Type", + "image/png", + "Cache-Control", + "max-age=300", + "X-Geo-Block-List", + "", + "X-GitHub-Request-Id", + "45FC:5E0A:1BD44:1DC53:5B9A83DF", + "Content-Length", + "6804", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6342-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.039276,VS0,VE125", + "Vary", + "Authorization,Accept-Encoding", + "Access-Control-Allow-Origin", + "*", + "X-Fastly-Request-ID", + "092dc06895d2db6c0fd5b303f631f2ef11da742e", + "Expires", + "Thu, 13 Sep 2018 15:41:00 GMT", + "Source-Age", + "0" + ], + "responseIsBinary": true + }, + { + "scope": "https://raw.githubusercontent.com:443", + "method": "GET", + "path": "/ampproject/amphtml/master/extensions/amp-story/img/amp-story-bookend-component-textbox.png", + "body": "", + "status": 200, + "response": "89504e470d0a1a0a0000000d494844520000017b000000b20806000000a3ae6fc300000aae694343504943432050726f66696c65000048899596075493d91280efffffe985168874426fd2050248afa108d2c14648028412624268766551c1b5a02202ea8a0a220aae0590b520a2d816454550d10559149475b1002a2aef071e71f7bdf3de3b6fce99cc772673e7cedcffde7306004a0f5b284c85e50048136488427d3d18d131b10cfc7380004540043460cae68885ee212181009559fb77197b08a0297bdf6c2ad7bfffff5f459ecb1373008042508ee78a3969289f41b585231465008064a37eddac0ce11497a3ac28420b44f9e41427ce70eb14c7cf70f7744c78a827cac30010286cb6281100f247d4cfc8e424a27928ca285b0ab87c01ca7e28bb7092d85c9437a13c372d2d7d8ad11a8051fc5ff224fe2d67bc34279b9d28e5995ea685e0c5170b53d939ffe771fc6f494b95cceea18b2a2549e4178a5a99a9734b490f90b2207e41f02cf3b9d3f1d39c24f18b98658ed8337696b96caf00e9dad40581b39cc0f76149f364b0c26759941e2acdcf137b87cd325bf47d2f494a84bb745f1e4b9a3337293c6a9633f9910b66599c1216f03dc653ea174942a53527887ca43da689ffd2179f258dcf480af793f6c8fe5e1b4f1c2dad81cbf3f296fa0511d21861868734bf3035441acf4bf595fac59961d2b519e865fbbe36447a3ec96cff9059067e200430402cb006f600bd7519bcec8ca9c23dd38539227e625206c31d7d393c064bc0319fcbb0b6b4620230f50e673ef3fbeee9f705d109df7de97701b0af46a1eabb8f1d0740237a224abadf7dfa470090fd1d800b1c8e449439e3c34cfd600109c8a26f5c0568a2f7c80898a1b5d90127e006bc813f0806e120062c051c9004d28008648195601dc80785603bd80d4ac10170081c0527c029d000ce83cbe01ab805ee824ef004f48201f01a8c8031300141101ea242344805d282f42153c81a62422e90371408854231501c9408092009b412da0015424550297410aa867e86ce4197a11b5007f408ea8386a077d067188129b022ac011bc0163013768703e07078099c082f8773e13c782b5c0257c0c7e17af8327c0bee847be1d7f0280210324247b4113384897822c1482c92808890d54801528c5420b54813d286dc477a9161e4130687a1611818338c13c60f1381e16096635663b6604a314731f59856cc7d4c1f6604f30d4bc5aa634db18e5816361a9b88cdc2e6638bb195d8b3d8abd84eec00760c87c3d17186387b9c1f2e06978c5b81db82db87abc335e33a70fdb8513c1eaf8237c53be383f16c7c063e1fbf177f1c7f097f0f3f80ff482013b408d6041f422c4140584f28261c235c24dc23bc244c10e588fa44476230914bcc216e231e263611ef1007881324799221c999144e4a26ad2395906a4957493da4f764325987ec405e48e693d7924bc827c9d7c97de44f14058a09c593b29822a16ca554519a298f28efa954aa01d58d1a4bcda06ea55653af509f513fcad064cc6558325c9935326532f532f764dec81265f565dd6597cae6ca16cb9e96bd233b2c47943390f39463cbad962b933b27d725372a4f93b7920f964f93df227f4cfe86fca0025ec140c15b81ab90a77048e18a423f0da1e9d23c691cda06da61da55da80224ed15091a598ac58a87842b15d71444941699e52a452b65299d205a55e3a4237a0b3e8a9f46df453f487f4cf7334e6b8cfe1cdd93ca776cebd39e3ca6aca6eca3ce502e53ae54ee5cf2a0c156f9514951d2a0d2a4f5531aa26aa0b55b354f7ab5e551d5653547352e3a815a89d527bac0eab9ba887aaaf503fa47e5b7d544353c35743a8b157e38ac6b0265dd34d33597397e645cd212d9a968b165f6b97d625ad570c25863b239551c268658c68ab6bfb694bb40f6ab76b4fe818ea44e8acd7a9d379aa4bd265ea26e8eed26dd11dd1d3d20bd25ba957a3f7589fa8cfd44fd2dfa3dfa63f6e60681065b0d1a0c160d050d99065986b5863d863443572355a6e5461f4c01867cc344e31de677cd70436b13549322933b9630a9bda99f24df79976ccc5ce75982b985b31b7cb8c62e66e96695663d6674e370f345f6fde60fec642cf22d66287459bc5374b5bcb54cbc3964fac14acfcadd65b3559bdb336b1e65897593fb0a1daf8d8acb169b4793bcf741e6fdefe79ddb634db20db8db62db65fedeced4476b57643f67af671f6e5f65d4c456608730bf3ba03d6c1c3618dc379874f8e768e198ea71cff7432734a713ae63438df703e6ffee1f9fdce3ace6ce783cebd2e0c9738979f5c7a5db55dd9ae15aecfdd74ddb86e956e2fdd8ddd93dd8fbbbff1b0f410799cf518f774f45ce5d9ec8578f97a1578b57b2b784778977a3ff3d1f149f4a9f119f1b5f55de1dbec87f50bf0dbe1d7c5d2607158d5ac117f7bff55fead019480b080d280e7812681a2c0a62038c83f686750cf02fd0582050dc1209815bc33f8698861c8f2905f16e216862c2c5bf822d42a7465685b182d6c59d8b1b0b1708ff06de14f228c2224112d91b2918b23ab23c7a3bca28aa27aa32da25745df8a518de1c734c6e26323632b634717792fdabd6860b1ede2fcc50f97182ec95e7263a9ead2d4a51796c92e632f3b1d878d8b8a3b16f7851dccae608fc6b3e2cbe347389e9c3d9cd75c37ee2eee10cf9957c47b99e09c50943098e89cb8337128", + "rawHeaders": [ + "Content-Security-Policy", + "default-src 'none'; style-src 'unsafe-inline'; sandbox", + "Strict-Transport-Security", + "max-age=31536000", + "X-Content-Type-Options", + "nosniff", + "X-Frame-Options", + "deny", + "X-XSS-Protection", + "1; mode=block", + "ETag", + "\"a8c60b2e61f20340ec6e7c0839d0d555fdf76050\"", + "Content-Type", + "image/png", + "Cache-Control", + "max-age=300", + "X-Geo-Block-List", + "", + "X-GitHub-Request-Id", + "C6FC:1EA9:28FCF:2B716:5B9A83DF", + "Content-Length", + "15201", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6351-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.036406,VS0,VE129", + "Vary", + "Authorization,Accept-Encoding", + "Access-Control-Allow-Origin", + "*", + "X-Fastly-Request-ID", + "42653d6ee0cb0b48a7cab385023f3d2ce2be6888", + "Expires", + "Thu, 13 Sep 2018 15:41:00 GMT", + "Source-Age", + "0" + ], + "responseIsBinary": true + }, + { + "scope": "https://raw.githubusercontent.com:443", + "method": "GET", + "path": "/ampproject/amphtml/master/extensions/amp-story/img/publisher-logo-2.png", + "body": "", + "status": 200, + "response": "89504e470d0a1a0a0000000d494844520000006b0000006508060000004ab51d7c00000c23694343504943432050726f66696c65000048899557075493c9169ebfa492d002084809bd8952a44b0d2dd27bb111924042093121a8d8914505d7828a052bba2aa2e0aa14596cd8cba2d8fbc3828ab22e166ca0bc4902e8ea79ef9d77cfb9ffffe5ce9d7bbf7b3333e71f00d4a23962710eaa0e40ae285f121b12c04c4e4965921e010c100005d80202872b15fb474787032843ef7fcafb1b0091bfafdacb63fd3cfe5f4583c797720140a2214ee749b9b9101f040077e58a25f90010baa1dd6c5abe1862226409b4249020c4e6729ca9c4ee729caec4e10a9ff85816c4690090691c8e24130055392f66013713c6515d02b18388271441dc02b10f57c0e141dc0ff1a8dcdc3c88d5ac21b64eff2e4ee63f62a60fc7e4703287b1b2168590038552710e67c6ffd98eff2db939b2a11c665069024968acbc6679dfb2f3c2e49806f159517a6414c49a105f13f214fe72fc54200b4d18f4ffc895b260cf800e00288dc7090c83d8006253514e64f8a0dd274318cc8618f61e8d17e6b3e39573519e242f76303e3a9d2f0d8a1bc21c892297dca754969de03f18739380cf1e8ad95c28884f52f2442f17081323215685f89e343b2e6cd0e745a1801539e42391c5ca39c3ff1c031992e058a50f669e2b1daa0bf31408d99183383c5f101faa9c8b4de67214dc7421cee24b93c38778f2f88141cabab022be2861903f562ece0f881df4df2ece891ef4c75af8392172bb29c46dd282b8a1b93df970b129ebc581383f3a5ec90dd7cae28c8f5672c06d4138608140c00432a8e9200f6401615b776337fca51c09061c200199800fec072d433392142322f88c0385e02f88f8403a3c2f4031ca0705d0fe65d8aa7cda830cc56881624636780a712e080339f0b74c314b349c2d113c8116e14fd9b9906b0e54f9d84f36a6da908d18440c248612838936b83eee837be1e1f0e907d50977c73d86787df3273c25b4131e11ae133a08b7a7088b243f30678208d00139060f5697fe7d75b8258cea8207e0de303e8c8debe0fac01e1f0b33f9e3be30b70bb47ecf55365cf1b75e0ec6a2385050ca088a1fc5fa4706aab6aa2ec351e49dfabe174a5ee9c3dd620d8ffc5807ebbbfef1e03bec474f6c1176003b831dc7ce612d5823606247b126ec2276588e87d7c613c5da18ca16abe0930de3087fcac719cc29ef9ad4a1c6a1cba17f700ce4f3a7e7cb370b2b4f3c4322cc14e433fde169cd67b245dcd1a3984e0e8ef014959ffdcaa3a5e792e24c47f434bed9e6270330ae7c6060e0d0375b241980fa1800a81ddf6c5605703b1b0270761557262950da70f98300a8400dee143d6004cf2e6b58911370055ec00f0481f1200ac483143019f65900d7a9044c03b3c07c5002cac072b01aac079bc136b00bec05fb41236801c7c16970015c06d7c15db8563ac14bd003de833e044148081d61207a88316281d8214e883be2830421e1482c9282a4219988089121b390054819528eac47b622d5c8efc821e438720e69476e230f912ee40df219c5501aaa851aa296e818d41df547c3d07874129a894e450bd1627429ba16ad42f7a00de871f4027a1ded405fa2bd18c054301dcc04b3c7dc31161685a5621998049b839562155815568b35c37ffa2ad68175639f7022cec099b83d5cafa17802cec5a7e273f025f87a7c17de809fc4afe20ff11efc2b814e3020d8113c096c42322193308d5042a820ec20d4134ec1bdd349784f24127588564437b8f7528859c499c425c48dc43ae231623bf131b1974422e991ec48dea4281287944f2a21ad23ed211d255d2175923e9255c8c66427723039952c2217912bc8bbc947c857c8cfc87d14758a05c5931245e15166509651b6539a2997289d943eaa06d58aea4d8da76651e753d7526ba9a7a8f7a86f5554544c553c546254842af354d6aaec5339abf250e5134d93664b63d126d264b4a5b49db463b4dbb4b7743add92ee474fa5e7d397d2abe927e80fe81f5519aaa355d9aa3cd5b9aa95aa0daa57545fa951d42cd4fcd526ab15aa55a81d50bba4d6ad4e51b75467a973d4e7a857aa1f52bfa9deabc1d070d488d2c8d558a2b15be39cc6734d92a6a56690264fb358739be609cdc70c8c61c66031b88c058ced8c538c4e2da29695165b2b4bab4c6baf569b568fb6a6f658ed44ede9da95da87b53b74301d4b1db64e8ece329dfd3a37743e8f301ce13f823f62f188da1157467cd01da9eba7cbd72dd5add3bdaefb598fa917a497adb742af51efbe3eae6fab1fa33f4d7f93fe29fdee915a23bd467247968edc3ff28e016a606b106b30d3609bc145835e4323c31043b1e13ac31386dd463a467e465946ab8c8e187519338c7d8c85c6ab8c8f1abf606a33fd9939ccb5cc93cc1e130393501399c9569336933e532bd304d322d33ad3fb66543377b30cb35566ad663de6c6e611e6b3cc6bccef58502cdc2d04166b2cce587cb0b4b24cb25c68d968f9dc4ad78a6d5568556375cf9a6eed6b3dd5bacafa9a0dd1c6dd26db66a3cd655bd4d6c556605b697bc90eb573b513da6db46b1f4518e5314a34aa6ad44d7b9abdbf7d817d8dfdc3d13aa3c347178d6e1cfd6a8cf998d4312bc69c19f3d5c1c521c761bbc35d474dc7f18e458ecd8e6f9c6c9db84e954ed79ce9cec1ce739d9b9c5f8fb51bcb1fbb69ec2d17", + "rawHeaders": [ + "Content-Security-Policy", + "default-src 'none'; style-src 'unsafe-inline'; sandbox", + "Strict-Transport-Security", + "max-age=31536000", + "X-Content-Type-Options", + "nosniff", + "X-Frame-Options", + "deny", + "X-XSS-Protection", + "1; mode=block", + "ETag", + "\"d77502af39eaa29b69d38dee6fa70d0f8401d552\"", + "Content-Type", + "image/png", + "Cache-Control", + "max-age=300", + "X-Geo-Block-List", + "", + "X-GitHub-Request-Id", + "C646:1EA8:12BF1:13FFE:5B9A83DF", + "Content-Length", + "6765", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6350-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.037525,VS0,VE131", + "Vary", + "Authorization,Accept-Encoding", + "Access-Control-Allow-Origin", + "*", + "X-Fastly-Request-ID", + "25380fe5ac976719913976f105fd89b3a16cdcdb", + "Expires", + "Thu, 13 Sep 2018 15:41:00 GMT", + "Source-Age", + "0" + ], + "responseIsBinary": true + }, + { + "scope": "https://raw.githubusercontent.com:443", + "method": "GET", + "path": "/ampproject/docs/master/assets/img/docs/amp-story-tag-hierarchy.png", + "body": "", + "status": 200, + "response": "89504e470d0a1a0a0000000d494844520000022d000001630803000000c68dcbc10000024c504c5445efefefcc00001155cc38761d0000002c68d0d01e1e4e85367da46c6594516aa84fc1d1ba94b3863e7a24d8e0d5666666abc2a1d1d1d1ebeceb7878781e1e1e3c3c3c969696b3b3b39db6e2d3dcebe8e9e7658fd95a5a5a050505ededebb7c8e6dfe5dd497cd51558cd0c0c0c48812fdce2ec81a3de7bb163d9d9d9777777232323ebecee1414142462cfced8eae6b3b3e4e4e4e4e7e2769f63588c43e0e0e0c0cfe85f9049434343e5e8eec7d5c1b8cbb13232321b5ccd437e2ac2c2c2e9ebee6a9857b0c3e581a771d3ddcfe1e5ed3970d384848494b0e14d7fd6d53b3b2a2a2a4075d3dcdcdc5c89d8ebd1d1cdd8c7d01616dbe2d8e296964d4d4d54883da4be99d7deeb759adc6a93dacd07076d6d6da3bae3ecdbdbd5d5d5cececebccdb487aa78ce0d0d9d9d9d7b9eddbbbbbbde7878383838d0dacbc4d3beb0b0b0b3c7aaa1a1a1d5ded1cacacaa9a9a9aec5a49292925584d74579d4bebebe525252c9d6c41a1a1a336dd1c6c6c69fba94da5b5bd84e4e1f5fceb7b7b752873bd330307f7f7fbbcbe7acacac316bd1a7bde3878787474747a5a5a58b8b8bd12323eee4e49a9a9a99b68deee8e88eae7f8cad7d707070565656d641418e8e8e696969719c5fe5a8a8a8c19d9cb890b0c5a797b58ade7e7e40404087a7de616161c5d2e8aabfe48eace0eacbcbdc6a6a5e5e5e6f96db6e9a5be8bbbbe08686c9d5e999b3e17c7c7c8ba9df747474ede0e0e3a1a1999999e18c8cdd7272ebd5d5e39c9ce19292d85656618cd8e6afafe8c2c2595959e9c6c6db6565d22929d64747da616160606048484882b56c9cc38b26cb5528000043b44944415478daecc1810000000080a0fda917a90200000000000080d9af635c3761388ee3bfffe2637005cee10559de2c79f1c02560f00c120b030b1b0c301141026ad424ef6ab5955490b66adf6ba4b6aaf808450161598abfc261b7dbed76bfa118f0711a3fd1f3ed0963ec88dd7fc2487c5847f889986115853d45d8fd939a061f44121f16beb7162ffc652d15767fc3273301186f996d738077f6d2d834402b0f3cabb191c796d91334e794719efaa137c62500d9464bb668c40b9cf682d5e725cb4a0dc92d71ce6ba05b6c9676c0990f4956fa50f5c4f9950179cb199f37b5f819b32502cee93165a906e0e6f1b7a0314b81dd1f37aa1ace521f7a9102c425953375e056f4b51ab14ab353387f422e2525521e804a5d4e931f1e67629a4582037540aefa4d6126adaa5ee32c27925286c03c9d4ed60c088925d266c0e0d67fb60c382ee3a1a5c35a4bc0b3f9648546a8443b6725701449389adae792598dddabba541091603fd5e321783315beea154031a88538818b08482d56acfd6627cade00b426404c27606208c4059895de6e29dd0f76a28642773e011569d4a2d8ec4436596ba9a8010653bbd3d1670db416402ce00ca53863f72241ef10e3ae28c5e7c7b7aa8e530228f40793e00980da009a3b12404ce929dfd4a2c987f689a2fb5a471d309902658a5571356df85c4bd7c72d85f720fc47b9e0518b9671cc36b5b45738b7db7dac24c0722965421a4e9098fdcfcbabe823b5a05633bce19a5d7e504b6f802176423855aacc61ad25227f35fc5acbfdd2e9a82a6ce4b525db6c6ab998e5b9169e3c6aa954393dd592703869b9d6c2ae8957c0d1f6babf38bd8a48445114e09d2ad3fa7b471a00f95d2d89c593213570688693ab118054f95a0bcab217019e7d166ff001dcd7d897163d3d5b523f8e01f606806f6aa94d00206bd75a36cfadb32873ec5e44c4f05eebafde5384903dd59202a1925835005a03e75a16c881944588b2049b5a0e2a9bb0a10760c85adf8c4f2c87a611c7dbb696da34c5c5f85acaa0a8d5a696464d016af579ad65540700da4fe42bdffde95aa0ed1ba09912a27daa858c5035364831232a38955182f991c4e8966f6b090435d8902498b21a4e42c624c0424c4ddb5a72ab4c39325f9a306599009cbc1890c60873c05a4bf0e62636890f69c6ee2fd4823c0750745d51444054f8e39883a7e72ec796eec2ae780ce9420da7092338c3110f014bf1a409bfb063362d4e03711cfe313288a09ea7040c1398b98464f110885008818446423c268178cb27682fbd7829ed49f0232cbb458ab82c7af0a0e09733d3179368d4ee5a114d1e4a1936c9d3c3ffa133dbb3433e1fceb6c2cfd5a31f5ee195da2db76f8fdebcc14b65787ef619cf2beff3678a77ea73cece5e41dda6d6ea0dcff7bee1dfe7bf534b37ea0071731ebdaef68d817f87bf59cb53b56f0cfc439caa964f67b831efdf0f1bc4bf85aa656060a86560a865e068865a068ee77fac45e08f20e81407b20435295da7f41c47628e3c54aca93da10e7acedfaf25e7f823a4e3180734debc40a44b248ea358121d1513326264849e73ea5a4c1f3744e3f83304de0f3e833090098e418463beab8511516c6bd15df49713d72266cb007092904e17c0b99fc4232d74e0277642a7291a14119d6b40c6ad179cf30b20cde7612e00c15319c63e1cf547e85cd4726e67f399834a1cd13053635b71ba7bdae774aaa341c2790645ba8963daaa85fb98fa4a976e6a5df99d6e01400ab6ab65c171a124661cf6f81be6b4b5bca591007055aefce958400bcb38ce673998453757f31835be71ae5f", + "rawHeaders": [ + "Content-Security-Policy", + "default-src 'none'; style-src 'unsafe-inline'; sandbox", + "Strict-Transport-Security", + "max-age=31536000", + "X-Content-Type-Options", + "nosniff", + "X-Frame-Options", + "deny", + "X-XSS-Protection", + "1; mode=block", + "ETag", + "\"f19c038d1dba109b3b9d90e142722ea59334006c\"", + "Content-Type", + "image/png", + "Cache-Control", + "max-age=300", + "X-Geo-Block-List", + "", + "X-GitHub-Request-Id", + "862E:34B5:135B5:148F2:5B9A83DF", + "Content-Length", + "17989", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6349-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.032776,VS0,VE141", + "Vary", + "Authorization,Accept-Encoding", + "Access-Control-Allow-Origin", + "*", + "X-Fastly-Request-ID", + "87de8217b759cae614759397250d9a3c36d07257", + "Expires", + "Thu, 13 Sep 2018 15:41:00 GMT", + "Source-Age", + "0" + ], + "responseIsBinary": true + }, + { + "scope": "https://raw.githubusercontent.com:443", + "method": "GET", + "path": "/ampproject/amphtml/master/extensions/amp-story/img/publisher-logo-1.png", + "body": "", + "status": 200, + "response": "89504e470d0a1a0a0000000d494844520000006b00000070080600000019ae8e5400000c23694343504943432050726f66696c65000048899557075493c9169ebfa492d002084809bd8952a44b0d2dd27bb111924042093121a8d8914505d7828a052bba2aa2e0aa14596cd8cba2d8fbc3828ab22e166ca0bc4902e8ea79ef9d77cfb9ffffe5ce9d7bbf7b3333e71f00d4a23962710eaa0e40ae285f121b12c04c4e4965921e010c100005d80202872b15fb474787032843ef7fcafb1b0091bfafdacb63fd3cfe5f4583c797720140a2214ee749b9b9101f040077e58a25f90010baa1dd6c5abe1862226409b4249020c4e6729ca9c4ee729caec4e10a9ff85816c4690090691c8e24130055392f66013713c6515d02b18388271441dc02b10f57c0e141dc0ff1a8dcdc3c88d5ac21b64eff2e4ee63f62a60fc7e4703287b1b2168590038552710e67c6ffd98eff2db939b2a11c665069024968acbc6679dfb2f3c2e49806f159517a6414c49a105f13f214fe72fc54200b4d18f4ffc895b260cf800e00288dc7090c83d8006253514e64f8a0dd274318cc8618f61e8d17e6b3e39573519e242f76303e3a9d2f0d8a1bc21c892297dca754969de03f18739380cf1e8ad95c28884f52f2442f17081323215685f89e343b2e6cd0e745a1801539e42391c5ca39c3ff1c031992e058a50f669e2b1daa0bf31408d99183383c5f101faa9c8b4de67214dc7421cee24b93c38778f2f88141cabab022be2861903f562ece0f881df4df2ece891ef4c75af8392172bb29c46dd282b8a1b93df970b129ebc581383f3a5ec90dd7cae28c8f5672c06d4138608140c00432a8e9200f6401615b776337fca51c09061c200199800fec072d433392142322f88c0385e02f88f8403a3c2f4031ca0705d0fe65d8aa7cda830cc56881624636780a712e080339f0b74c314b349c2d113c8116e14fd9b9906b0e54f9d84f36a6da908d18440c248612838936b83eee837be1e1f0e907d50977c73d86787df3273c25b4131e11ae133a08b7a7088b243f30678208d00139060f5697fe7d75b8258cea8207e0de303e8c8debe0fac01e1f0b33f9e3be30b70bb47ecf55365cf1b75e0ec6a2385050ca088a1fc5fa4706aab6aa2ec351e49dfabe174a5ee9c3dd620d8ffc5807ebbbfef1e03bec474f6c1176003b831dc7ce612d5823606247b126ec2276588e87d7c613c5da18ca16abe0930de3087fcac719cc29ef9ad4a1c6a1cba17f700ce4f3a7e7cb370b2b4f3c4322cc14e433fde169cd67b245dcd1a3984e0e8ef014959ffdcaa3a5e792e24c47f434bed9e6270330ae7c6060e0d0375b241980fa1800a81ddf6c5605703b1b0270761557262950da70f98300a8400dee143d6004cf2e6b58911370055ec00f0481f1200ac483143019f65900d7a9044c03b3c07c5002cac072b01aac079bc136b00bec05fb41236801c7c16970015c06d7c15db8563ac14bd003de833e044148081d61207a88316281d8214e883be2830421e1482c9282a4219988089121b390054819528eac47b622d5c8efc821e438720e69476e230f912ee40df219c5501aaa851aa296e818d41df547c3d07874129a894e450bd1627429ba16ad42f7a00de871f4027a1ded405fa2bd18c054301dcc04b3c7dc31161685a5621998049b839562155815568b35c37ffa2ad68175639f7022cec099b83d5cafa17802cec5a7e273f025f87a7c17de809fc4afe20ff11efc2b814e3020d8113c096c42322193308d5042a820ec20d4134ec1bdd349784f24127588564437b8f7528859c499c425c48dc43ae231623bf131b1974422e991ec48dea4281287944f2a21ad23ed211d255d2175923e9255c8c66427723039952c2217912bc8bbc947c857c8cfc87d14758a05c5931245e15166509651b6539a2997289d943eaa06d58aea4d8da76651e753d7526ba9a7a8f7a86f5554544c553c546254842af354d6aaec5339abf250e5134d93664b63d126d264b4a5b49db463b4dbb4b7743add92ee474fa5e7d397d2abe927e80fe81f5519aaa355d9aa3cd5b9aa95aa0daa57545fa951d42cd4fcd526ab15aa55a81d50bba4d6ad4e51b75467a973d4e7a857aa1f52bfa9deabc1d070d488d2c8d558a2b15be39cc6734d92a6a56690264fb358739be609cdc70c8c61c66031b88c058ced8c538c4e2da29695165b2b4bab4c6baf569b568fb6a6f658ed44ede9da95da87b53b74301d4b1db64e8ece329dfd3a37743e8f301ce13f823f62f188da1157467cd01da9eba7cbd72dd5add3bdaefb598fa917a497adb742af51efbe3eae6fab1fa33f4d7f93fe29fdee915a23bd467247968edc3ff28e016a606b106b30d3609bc145835e4323c31043b1e13ac31386dd463a467e465946ab8c8e187519338c7d8c85c6ab8c8f1abf606a33fd9939ccb5cc93cc1e130393501399c9569336933e532bd304d322d33ad3fb66543377b30cb35566ad663de6c6e611e6b3cc6bccef58502cdc2d04166b2cce587cb0b4b24cb25c68d968f9dc4ad78a6d5568556375cf9a6eed6b3dd5bacafa9a0dd1c6dd26db66a3cd655bd4d6c556605b697bc90eb573b513da6db46b1f4518e5314a34aa6ad44d7b9abdbf7d817d8dfdc3d13aa3c347178d6e1cfd6a8cf998d4312bc69c19f3d5c1c521c761bbc35d474dc7f18e458ecd8e6f9c6c9db84e954ed79ce9cec1ce739d9b9c5f8fb51bcb1fbb69ec2d17864b", + "rawHeaders": [ + "Content-Security-Policy", + "default-src 'none'; style-src 'unsafe-inline'; sandbox", + "Strict-Transport-Security", + "max-age=31536000", + "X-Content-Type-Options", + "nosniff", + "X-Frame-Options", + "deny", + "X-XSS-Protection", + "1; mode=block", + "ETag", + "\"866e7996262c45444443064798609c80c3eeafaf\"", + "Content-Type", + "image/png", + "Cache-Control", + "max-age=300", + "X-Geo-Block-List", + "", + "X-GitHub-Request-Id", + "6878:5485:4692:5053:5B9A83D8", + "Content-Length", + "7468", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6344-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.046144,VS0,VE129", + "Vary", + "Authorization,Accept-Encoding", + "Access-Control-Allow-Origin", + "*", + "X-Fastly-Request-ID", + "25fc5499de121c4aff922a4d8d1e35054397ddbe", + "Expires", + "Thu, 13 Sep 2018 15:41:00 GMT", + "Source-Age", + "0" + ], + "responseIsBinary": true + }, + { + "scope": "https://raw.githubusercontent.com:443", + "method": "GET", + "path": "/ampproject/amphtml/master/extensions/amp-story/img/publisher-logo-3.png", + "body": "", + "status": 200, + "response": "89504e470d0a1a0a0000000d4948445200000067000000660806000000d61d8f5c00000c23694343504943432050726f66696c65000048899557075493c9169ebfa492d002084809bd8952a44b0d2dd27bb111924042093121a8d8914505d7828a052bba2aa2e0aa14596cd8cba2d8fbc3828ab22e166ca0bc4902e8ea79ef9d77cfb9ffffe5ce9d7bbf7b3333e71f00d4a23962710eaa0e40ae285f121b12c04c4e4965921e010c100005d80202872b15fb474787032843ef7fcafb1b0091bfafdacb63fd3cfe5f4583c797720140a2214ee749b9b9101f040077e58a25f90010baa1dd6c5abe1862226409b4249020c4e6729ca9c4ee729caec4e10a9ff85816c4690090691c8e24130055392f66013713c6515d02b18388271441dc02b10f57c0e141dc0ff1a8dcdc3c88d5ac21b64eff2e4ee63f62a60fc7e4703287b1b2168590038552710e67c6ffd98eff2db939b2a11c665069024968acbc6679dfb2f3c2e49806f159517a6414c49a105f13f214fe72fc54200b4d18f4ffc895b260cf800e00288dc7090c83d8006253514e64f8a0dd274318cc8618f61e8d17e6b3e39573519e242f76303e3a9d2f0d8a1bc21c892297dca754969de03f18739380cf1e8ad95c28884f52f2442f17081323215685f89e343b2e6cd0e745a1801539e42391c5ca39c3ff1c031992e058a50f669e2b1daa0bf31408d99183383c5f101faa9c8b4de67214dc7421cee24b93c38778f2f88141cabab022be2861903f562ece0f881df4df2ece891ef4c75af8392172bb29c46dd282b8a1b93df970b129ebc581383f3a5ec90dd7cae28c8f5672c06d4138608140c00432a8e9200f6401615b776337fca51c09061c200199800fec072d433392142322f88c0385e02f88f8403a3c2f4031ca0705d0fe65d8aa7cda830cc56881624636780a712e080339f0b74c314b349c2d113c8116e14fd9b9906b0e54f9d84f36a6da908d18440c248612838936b83eee837be1e1f0e907d50977c73d86787df3273c25b4131e11ae133a08b7a7088b243f30678208d00139060f5697fe7d75b8258cea8207e0de303e8c8debe0fac01e1f0b33f9e3be30b70bb47ecf55365cf1b75e0ec6a2385050ca088a1fc5fa4706aab6aa2ec351e49dfabe174a5ee9c3dd620d8ffc5807ebbbfef1e03bec474f6c1176003b831dc7ce612d5823606247b126ec2276588e87d7c613c5da18ca16abe0930de3087fcac719cc29ef9ad4a1c6a1cba17f700ce4f3a7e7cb370b2b4f3c4322cc14e433fde169cd67b245dcd1a3984e0e8ef014959ffdcaa3a5e792e24c47f434bed9e6270330ae7c6060e0d0375b241980fa1800a81ddf6c5605703b1b0270761557262950da70f98300a8400dee143d6004cf2e6b58911370055ec00f0481f1200ac483143019f65900d7a9044c03b3c07c5002cac072b01aac079bc136b00bec05fb41236801c7c16970015c06d7c15db8563ac14bd003de833e044148081d61207a88316281d8214e883be2830421e1482c9282a4219988089121b390054819528eac47b622d5c8efc821e438720e69476e230f912ee40df219c5501aaa851aa296e818d41df547c3d07874129a894e450bd1627429ba16ad42f7a00de871f4027a1ded405fa2bd18c054301dcc04b3c7dc31161685a5621998049b839562155815568b35c37ffa2ad68175639f7022cec099b83d5cafa17802cec5a7e273f025f87a7c17de809fc4afe20ff11efc2b814e3020d8113c096c42322193308d5042a820ec20d4134ec1bdd349784f24127588564437b8f7528859c499c425c48dc43ae231623bf131b1974422e991ec48dea4281287944f2a21ad23ed211d255d2175923e9255c8c66427723039952c2217912bc8bbc947c857c8cfc87d14758a05c5931245e15166509651b6539a2997289d943eaa06d58aea4d8da76651e753d7526ba9a7a8f7a86f5554544c553c546254842af354d6aaec5339abf250e5134d93664b63d126d264b4a5b49db463b4dbb4b7743add92ee474fa5e7d397d2abe927e80fe81f5519aaa355d9aa3cd5b9aa95aa0daa57545fa951d42cd4fcd526ab15aa55a81d50bba4d6ad4e51b75467a973d4e7a857aa1f52bfa9deabc1d070d488d2c8d558a2b15be39cc6734d92a6a56690264fb358739be609cdc70c8c61c66031b88c058ced8c538c4e2da29695165b2b4bab4c6baf569b568fb6a6f658ed44ede9da95da87b53b74301d4b1db64e8ece329dfd3a37743e8f301ce13f823f62f188da1157467cd01da9eba7cbd72dd5add3bdaefb598fa917a497adb742af51efbe3eae6fab1fa33f4d7f93fe29fdee915a23bd467247968edc3ff28e016a606b106b30d3609bc145835e4323c31043b1e13ac31386dd463a467e465946ab8c8e187519338c7d8c85c6ab8c8f1abf606a33fd9939ccb5cc93cc1e130393501399c9569336933e532bd304d322d33ad3fb66543377b30cb35566ad663de6c6e611e6b3cc6bccef58502cdc2d04166b2cce587cb0b4b24cb25c68d968f9dc4ad78a6d5568556375cf9a6eed6b3dd5bacafa9a0dd1c6dd26db66a3cd655bd4d6c556605b697bc90eb573b513da6db46b1f4518e5314a34aa6ad44d7b9abdbf7d817d8dfdc3d13aa3c347178d6e1cfd6a8cf998d4312bc69c19f3d5c1c521c761bbc35d474dc7f18e458ecd8e6f9c6c9db84e954ed79ce9cec1ce739d9b9c5f8fb51bcb1fbb69ec2d17864b", + "rawHeaders": [ + "Content-Security-Policy", + "default-src 'none'; style-src 'unsafe-inline'; sandbox", + "Strict-Transport-Security", + "max-age=31536000", + "X-Content-Type-Options", + "nosniff", + "X-Frame-Options", + "deny", + "X-XSS-Protection", + "1; mode=block", + "ETag", + "\"bfaa3d245dbdb352a964a0b962e13f5261cf7f72\"", + "Content-Type", + "image/png", + "Cache-Control", + "max-age=300", + "X-Geo-Block-List", + "", + "X-GitHub-Request-Id", + "569E:5486:BD7B:D11E:5B9A83DF", + "Content-Length", + "5585", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6333-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.045189,VS0,VE130", + "Vary", + "Authorization,Accept-Encoding", + "Access-Control-Allow-Origin", + "*", + "X-Fastly-Request-ID", + "ad61468b849a0dd229ce034d4a9d63fe15b8656d", + "Expires", + "Thu, 13 Sep 2018 15:41:00 GMT", + "Source-Age", + "0" + ], + "responseIsBinary": true + }, + { + "scope": "https://raw.githubusercontent.com:443", + "method": "GET", + "path": "/ampproject/amphtml/master/extensions/amp-story/img/amp-story-bookend-component-landscape.png", + "body": "", + "status": 200, + "response": "89504e470d0a1a0a0000000d49484452000001840000019a08060000000f61343800000aae694343504943432050726f66696c65000048899596075493d91280efffffe985168874426fd2050248afa108d2c14648028412624268766551c1b5a02202ea8a0a220aae0590b520a2d816454550d10559149475b1002a2aef071e71f7bdf3de3b6fce99cc772673e7cedcffde7306004a0f5b284c85e50048136488427d3d18d131b10cfc7380004540043460cae68885ee212181009559fb77197b08a0297bdf6c2ad7bfffff5f459ecb1373008042508ee78a3969289f41b585231465008064a37eddac0ce11497a3ac28420b44f9e41427ce70eb14c7cf70f7744c78a827cac30010286cb6281100f247d4cfc8e424a27928ca285b0ab87c01ca7e28bb7092d85c9437a13c372d2d7d8ad11a8051fc5ff224fe2d67bc34279b9d28e5995ea685e0c5170b53d939ffe771fc6f494b95cceea18b2a2549e4178a5a99a9734b490f90b2207e41f02cf3b9d3f1d39c24f18b98658ed8337696b96caf00e9dad40581b39cc0f76149f364b0c26759941e2acdcf137b87cd325bf47d2f494a84bb745f1e4b9a3337293c6a9633f9910b66599c1216f03dc653ea174942a53527887ca43da689ffd2179f258dcf480af793f6c8fe5e1b4f1c2dad81cbf3f296fa0511d21861868734bf3035441acf4bf595fac59961d2b519e865fbbe36447a3ec96cff9059067e200430402cb006f600bd7519bcec8ca9c23dd38539227e625206c31d7d393c064bc0319fcbb0b6b4620230f50e673ef3fbeee9f705d109df7de97701b0af46a1eabb8f1d0740237a224abadf7dfa470090fd1d800b1c8e449439e3c34cfd600109c8a26f5c0568a2f7c80898a1b5d90127e006bc813f0806e120062c051c9004d28008648195601dc80785603bd80d4ac10170081c0527c029d000ce83cbe01ab805ee824ef004f48201f01a8c8031300141101ea242344805d282f42153c81a62422e90371408854231501c9408092009b412da0015424550297410aa867e86ce4197a11b5007f408ea8386a077d067188129b022ac011bc0163013768703e07078099c082f8773e13c782b5c0257c0c7e17af8327c0bee847be1d7f0280210324247b4113384897822c1482c92808890d54801528c5420b54813d286dc477a9161e4130687a1611818338c13c60f1381e16096635663b6604a314731f59856cc7d4c1f6604f30d4bc5aa634db18e5816361a9b88cdc2e6638bb195d8b3d8abd84eec00760c87c3d17186387b9c1f2e06978c5b81db82db87abc335e33a70fdb8513c1eaf8237c53be383f16c7c063e1fbf177f1c7f097f0f3f80ff482013b408d6041f422c4140584f28261c235c24dc23bc244c10e588fa44476230914bcc216e231e263611ef1007881324799221c999144e4a26ad2395906a4957493da4f764325987ec405e48e693d7924bc827c9d7c97de44f14058a09c593b29822a16ca554519a298f28efa954aa01d58d1a4bcda06ea55653af509f513fcad064cc6558325c9935326532f532f764dec81265f565dd6597cae6ca16cb9e96bd233b2c47943390f39463cbad962b933b27d725372a4f93b7920f964f93df227f4cfe86fca0025ec140c15b81ab90a77048e18a423f0da1e9d23c691cda06da61da55da80224ed15091a598ac58a87842b15d71444941699e52a452b65299d205a55e3a4237a0b3e8a9f46df453f487f4cf7334e6b8cfe1cdd93ca776cebd39e3ca6aca6eca3ce502e53ae54ee5cf2a0c156f9514951d2a0d2a4f5531aa26aa0b55b354f7ab5e551d5653547352e3a815a89d527bac0eab9ba887aaaf503fa47e5b7d544353c35743a8b157e38ac6b0265dd34d33597397e645cd212d9a968b165f6b97d625ad570c25863b239551c268658c68ab6bfb694bb40f6ab76b4fe818ea44e8acd7a9d379aa4bd265ea26e8eed26dd11dd1d3d20bd25ba957a3f7589fa8cfd44fd2dfa3dfa63f6e60681065b0d1a0c160d050d99065986b5863d863443572355a6e5461f4c01867cc344e31de677cd70436b13549322933b9630a9bda99f24df79976ccc5ce75982b985b31b7cb8c62e66e96695663d6674e370f345f6fde60fec642cf22d66287459bc5374b5bcb54cbc3964fac14acfcadd65b3559bdb336b1e65897593fb0a1daf8d8acb169b4793bcf741e6fdefe79ddb634db20db8db62db65fedeced4476b57643f67af671f6e5f65d4c456608730bf3ba03d6c1c3618dc379874f8e768e198ea71cff7432734a713ae63438df703e6ffee1f9fdce3ace6ce783cebd2e0c9738979f5c7a5db55dd9ae15aecfdd74ddb86e956e2fdd8ddd93dd8fbbbff1b0f410799cf518f774f45ce5d9ec8578f97a1578b57b2b784778977a3ff3d1f149f4a9f119f1b5f55de1dbec87f50bf0dbe1d7c5d2607158d5ac117f7bff55fead019480b080d280e7812681a2c0a62038c83f686750cf02fd0582050dc1209815bc33f8698861c8f2905f16e216862c2c5bf822d42a7465685b182d6c59d8b1b0b1708ff06de14f228c2224112d91b2918b23ab23c7a3bca28aa27aa32da25745df8a518de1c734c6e26323632b634717792fdabd6860b1ede2fcc50f97182ec95e7263a9ead2d4a51796c92e632f3b1d878d8b8a3b16f7851dccae608fc6b3e2cbe347389e9c3d9cd75c37ee2eee10cf9957c47b99e09c50943098e89cb8337128c935", + "rawHeaders": [ + "Content-Security-Policy", + "default-src 'none'; style-src 'unsafe-inline'; sandbox", + "Strict-Transport-Security", + "max-age=31536000", + "X-Content-Type-Options", + "nosniff", + "X-Frame-Options", + "deny", + "X-XSS-Protection", + "1; mode=block", + "ETag", + "\"58b511e26de2178f3e239629eecbc89c20ccea19\"", + "Content-Type", + "image/png", + "Cache-Control", + "max-age=300", + "X-Geo-Block-List", + "", + "X-GitHub-Request-Id", + "A1F2:205C:7359:7D26:5B9A83DF", + "Content-Length", + "22436", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6326-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.062716,VS0,VE127", + "Vary", + "Authorization,Accept-Encoding", + "Access-Control-Allow-Origin", + "*", + "X-Fastly-Request-ID", + "651390cfa008edcc6318a11a772ac346e74feb91", + "Expires", + "Thu, 13 Sep 2018 15:41:00 GMT", + "Source-Age", + "0" + ], + "responseIsBinary": true + }, + { + "scope": "https://raw.githubusercontent.com:443", + "method": "GET", + "path": "/ampproject/amphtml/master/extensions/amp-story/img/amp-story-bookend-component-portrait.png", + "body": "", + "status": 200, + "response": "89504e470d0a1a0a0000000d494844520000017f000002230806000000ebe01b7600000aae694343504943432050726f66696c65000048899596075493d91280efffffe985168874426fd2050248afa108d2c14648028412624268766551c1b5a02202ea8a0a220aae0590b520a2d816454550d10559149475b1002a2aef071e71f7bdf3de3b6fce99cc772673e7cedcffde7306004a0f5b284c85e50048136488427d3d18d131b10cfc7380004540043460cae68885ee212181009559fb77197b08a0297bdf6c2ad7bfffff5f459ecb1373008042508ee78a3969289f41b585231465008064a37eddac0ce11497a3ac28420b44f9e41427ce70eb14c7cf70f7744c78a827cac30010286cb6281100f247d4cfc8e424a27928ca285b0ab87c01ca7e28bb7092d85c9437a13c372d2d7d8ad11a8051fc5ff224fe2d67bc34279b9d28e5995ea685e0c5170b53d939ffe771fc6f494b95cceea18b2a2549e4178a5a99a9734b490f90b2207e41f02cf3b9d3f1d39c24f18b98658ed8337696b96caf00e9dad40581b39cc0f76149f364b0c26759941e2acdcf137b87cd325bf47d2f494a84bb745f1e4b9a3337293c6a9633f9910b66599c1216f03dc653ea174942a53527887ca43da689ffd2179f258dcf480af793f6c8fe5e1b4f1c2dad81cbf3f296fa0511d21861868734bf3035441acf4bf595fac59961d2b519e865fbbe36447a3ec96cff9059067e200430402cb006f600bd7519bcec8ca9c23dd38539227e625206c31d7d393c064bc0319fcbb0b6b4620230f50e673ef3fbeee9f705d109df7de97701b0af46a1eabb8f1d0740237a224abadf7dfa470090fd1d800b1c8e449439e3c34cfd600109c8a26f5c0568a2f7c80898a1b5d90127e006bc813f0806e120062c051c9004d28008648195601dc80785603bd80d4ac10170081c0527c029d000ce83cbe01ab805ee824ef004f48201f01a8c8031300141101ea242344805d282f42153c81a62422e90371408854231501c9408092009b412da0015424550297410aa867e86ce4197a11b5007f408ea8386a077d067188129b022ac011bc0163013768703e07078099c082f8773e13c782b5c0257c0c7e17af8327c0bee847be1d7f0280210324247b4113384897822c1482c92808890d54801528c5420b54813d286dc477a9161e4130687a1611818338c13c60f1381e16096635663b6604a314731f59856cc7d4c1f6604f30d4bc5aa634db18e5816361a9b88cdc2e6638bb195d8b3d8abd84eec00760c87c3d17186387b9c1f2e06978c5b81db82db87abc335e33a70fdb8513c1eaf8237c53be383f16c7c063e1fbf177f1c7f097f0f3f80ff482013b408d6041f422c4140584f28261c235c24dc23bc244c10e588fa44476230914bcc216e231e263611ef1007881324799221c999144e4a26ad2395906a4957493da4f764325987ec405e48e693d7924bc827c9d7c97de44f14058a09c593b29822a16ca554519a298f28efa954aa01d58d1a4bcda06ea55653af509f513fcad064cc6558325c9935326532f532f764dec81265f565dd6597cae6ca16cb9e96bd233b2c47943390f39463cbad962b933b27d725372a4f93b7920f964f93df227f4cfe86fca0025ec140c15b81ab90a77048e18a423f0da1e9d23c691cda06da61da55da80224ed15091a598ac58a87842b15d71444941699e52a452b65299d205a55e3a4237a0b3e8a9f46df453f487f4cf7334e6b8cfe1cdd93ca776cebd39e3ca6aca6eca3ce502e53ae54ee5cf2a0c156f9514951d2a0d2a4f5531aa26aa0b55b354f7ab5e551d5653547352e3a815a89d527bac0eab9ba887aaaf503fa47e5b7d544353c35743a8b157e38ac6b0265dd34d33597397e645cd212d9a968b165f6b97d625ad570c25863b239551c268658c68ab6bfb694bb40f6ab76b4fe818ea44e8acd7a9d379aa4bd265ea26e8eed26dd11dd1d3d20bd25ba957a3f7589fa8cfd44fd2dfa3dfa63f6e60681065b0d1a0c160d050d99065986b5863d863443572355a6e5461f4c01867cc344e31de677cd70436b13549322933b9630a9bda99f24df79976ccc5ce75982b985b31b7cb8c62e66e96695663d6674e370f345f6fde60fec642cf22d66287459bc5374b5bcb54cbc3964fac14acfcadd65b3559bdb336b1e65897593fb0a1daf8d8acb169b4793bcf741e6fdefe79ddb634db20db8db62db65fedeced4476b57643f67af671f6e5f65d4c456608730bf3ba03d6c1c3618dc379874f8e768e198ea71cff7432734a713ae63438df703e6ffee1f9fdce3ace6ce783cebd2e0c9738979f5c7a5db55dd9ae15aecfdd74ddb86e956e2fdd8ddd93dd8fbbbff1b0f410799cf518f774f45ce5d9ec8578f97a1578b57b2b784778977a3ff3d1f149f4a9f119f1b5f55de1dbec87f50bf0dbe1d7c5d2607158d5ac117f7bff55fead019480b080d280e7812681a2c0a62038c83f686750cf02fd0582050dc1209815bc33f8698861c8f2905f16e216862c2c5bf822d42a7465685b182d6c59d8b1b0b1708ff06de14f228c2224112d91b2918b23ab23c7a3bca28aa27aa32da25745df8a518de1c734c6e26323632b634717792fdabd6860b1ede2fcc50f97182ec95e7263a9ead2d4a51796c92e632f3b1d878d8b8a3b16f7851dccae608fc6b3e2cbe347389e9c3d9cd75c37ee2eee10cf9957c47b99e09c50943098e89cb8337128c9", + "rawHeaders": [ + "Content-Security-Policy", + "default-src 'none'; style-src 'unsafe-inline'; sandbox", + "Strict-Transport-Security", + "max-age=31536000", + "X-Content-Type-Options", + "nosniff", + "X-Frame-Options", + "deny", + "X-XSS-Protection", + "1; mode=block", + "ETag", + "\"0ec4585dfe4e234e4289fbae31495d4ecbd68f9e\"", + "Content-Type", + "image/png", + "Cache-Control", + "max-age=300", + "X-Geo-Block-List", + "", + "X-GitHub-Request-Id", + "5EFC:1B91:F7FD:10893:5B9A83DF", + "Content-Length", + "17375", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6343-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.066328,VS0,VE126", + "Vary", + "Authorization,Accept-Encoding", + "Access-Control-Allow-Origin", + "*", + "X-Fastly-Request-ID", + "2562d7bf075c02f0df1160da3db03d68ae602f89", + "Expires", + "Thu, 13 Sep 2018 15:41:00 GMT", + "Source-Age", + "0" + ], + "responseIsBinary": true + }, + { + "scope": "https://raw.githubusercontent.com:443", + "method": "GET", + "path": "/ampproject/amphtml/master/extensions/amp-story/img/amp-story-bookend-component-cta-links.png", + "body": "", + "status": 200, + "response": "89504e470d0a1a0a0000000d494844520000017d0000005108060000003e6076a800000aae694343504943432050726f66696c65000048899596075493d91280efffffe985168874426fd2050248afa108d2c14648028412624268766551c1b5a02202ea8a0a220aae0590b520a2d816454550d10559149475b1002a2aef071e71f7bdf3de3b6fce99cc772673e7cedcffde7306004a0f5b284c85e50048136488427d3d18d131b10cfc7380004540043460cae68885ee212181009559fb77197b08a0297bdf6c2ad7bfffff5f459ecb1373008042508ee78a3969289f41b585231465008064a37eddac0ce11497a3ac28420b44f9e41427ce70eb14c7cf70f7744c78a827cac30010286cb6281100f247d4cfc8e424a27928ca285b0ab87c01ca7e28bb7092d85c9437a13c372d2d7d8ad11a8051fc5ff224fe2d67bc34279b9d28e5995ea685e0c5170b53d939ffe771fc6f494b95cceea18b2a2549e4178a5a99a9734b490f90b2207e41f02cf3b9d3f1d39c24f18b98658ed8337696b96caf00e9dad40581b39cc0f76149f364b0c26759941e2acdcf137b87cd325bf47d2f494a84bb745f1e4b9a3337293c6a9633f9910b66599c1216f03dc653ea174942a53527887ca43da689ffd2179f258dcf480af793f6c8fe5e1b4f1c2dad81cbf3f296fa0511d21861868734bf3035441acf4bf595fac59961d2b519e865fbbe36447a3ec96cff9059067e200430402cb006f600bd7519bcec8ca9c23dd38539227e625206c31d7d393c064bc0319fcbb0b6b4620230f50e673ef3fbeee9f705d109df7de97701b0af46a1eabb8f1d0740237a224abadf7dfa470090fd1d800b1c8e449439e3c34cfd600109c8a26f5c0568a2f7c80898a1b5d90127e006bc813f0806e120062c051c9004d28008648195601dc80785603bd80d4ac10170081c0527c029d000ce83cbe01ab805ee824ef004f48201f01a8c8031300141101ea242344805d282f42153c81a62422e90371408854231501c9408092009b412da0015424550297410aa867e86ce4197a11b5007f408ea8386a077d067188129b022ac011bc0163013768703e07078099c082f8773e13c782b5c0257c0c7e17af8327c0bee847be1d7f0280210324247b4113384897822c1482c92808890d54801528c5420b54813d286dc477a9161e4130687a1611818338c13c60f1381e16096635663b6604a314731f59856cc7d4c1f6604f30d4bc5aa634db18e5816361a9b88cdc2e6638bb195d8b3d8abd84eec00760c87c3d17186387b9c1f2e06978c5b81db82db87abc335e33a70fdb8513c1eaf8237c53be383f16c7c063e1fbf177f1c7f097f0f3f80ff482013b408d6041f422c4140584f28261c235c24dc23bc244c10e588fa44476230914bcc216e231e263611ef1007881324799221c999144e4a26ad2395906a4957493da4f764325987ec405e48e693d7924bc827c9d7c97de44f14058a09c593b29822a16ca554519a298f28efa954aa01d58d1a4bcda06ea55653af509f513fcad064cc6558325c9935326532f532f764dec81265f565dd6597cae6ca16cb9e96bd233b2c47943390f39463cbad962b933b27d725372a4f93b7920f964f93df227f4cfe86fca0025ec140c15b81ab90a77048e18a423f0da1e9d23c691cda06da61da55da80224ed15091a598ac58a87842b15d71444941699e52a452b65299d205a55e3a4237a0b3e8a9f46df453f487f4cf7334e6b8cfe1cdd93ca776cebd39e3ca6aca6eca3ce502e53ae54ee5cf2a0c156f9514951d2a0d2a4f5531aa26aa0b55b354f7ab5e551d5653547352e3a815a89d527bac0eab9ba887aaaf503fa47e5b7d544353c35743a8b157e38ac6b0265dd34d33597397e645cd212d9a968b165f6b97d625ad570c25863b239551c268658c68ab6bfb694bb40f6ab76b4fe818ea44e8acd7a9d379aa4bd265ea26e8eed26dd11dd1d3d20bd25ba957a3f7589fa8cfd44fd2dfa3dfa63f6e60681065b0d1a0c160d050d99065986b5863d863443572355a6e5461f4c01867cc344e31de677cd70436b13549322933b9630a9bda99f24df79976ccc5ce75982b985b31b7cb8c62e66e96695663d6674e370f345f6fde60fec642cf22d66287459bc5374b5bcb54cbc3964fac14acfcadd65b3559bdb336b1e65897593fb0a1daf8d8acb169b4793bcf741e6fdefe79ddb634db20db8db62db65fedeced4476b57643f67af671f6e5f65d4c456608730bf3ba03d6c1c3618dc379874f8e768e198ea71cff7432734a713ae63438df703e6ffee1f9fdce3ace6ce783cebd2e0c9738979f5c7a5db55dd9ae15aecfdd74ddb86e956e2fdd8ddd93dd8fbbbff1b0f410799cf518f774f45ce5d9ec8578f97a1578b57b2b784778977a3ff3d1f149f4a9f119f1b5f55de1dbec87f50bf0dbe1d7c5d2607158d5ac117f7bff55fead019480b080d280e7812681a2c0a62038c83f686750cf02fd0582050dc1209815bc33f8698861c8f2905f16e216862c2c5bf822d42a7465685b182d6c59d8b1b0b1708ff06de14f228c2224112d91b2918b23ab23c7a3bca28aa27aa32da25745df8a518de1c734c6e26323632b634717792fdabd6860b1ede2fcc50f97182ec95e7263a9ead2d4a51796c92e632f3b1d878d8b8a3b16f7851dccae608fc6b3e2cbe347389e9c3d9cd75c37ee2eee10cf9957c47b99e09c50943098e89cb8337128c9", + "rawHeaders": [ + "Content-Security-Policy", + "default-src 'none'; style-src 'unsafe-inline'; sandbox", + "Strict-Transport-Security", + "max-age=31536000", + "X-Content-Type-Options", + "nosniff", + "X-Frame-Options", + "deny", + "X-XSS-Protection", + "1; mode=block", + "ETag", + "\"b24f352a36654b64712dc7df7148332c49da3918\"", + "Content-Type", + "image/png", + "Cache-Control", + "max-age=300", + "X-Geo-Block-List", + "", + "X-GitHub-Request-Id", + "7562:3E7F:12AA9:14774:5B9A83DF", + "Content-Length", + "6881", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6346-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.082703,VS0,VE118", + "Vary", + "Authorization,Accept-Encoding", + "Access-Control-Allow-Origin", + "*", + "X-Fastly-Request-ID", + "a6b23fa959acf4a6dbbcca1cd1c2cb2a6e9bfe39", + "Expires", + "Thu, 13 Sep 2018 15:41:00 GMT", + "Source-Age", + "0" + ], + "responseIsBinary": true + }, + { + "scope": "https://raw.githubusercontent.com:443", + "method": "GET", + "path": "/ampproject/amphtml/master/extensions/amp-story/img/template-fill.png", + "body": "", + "status": 200, + "response": "89504e470d0a1a0a0000000d4948445200000091000000ff0806000000f1263409000005ad4944415478daeddacf8b556500c7e10119fc275a042d8216418ba2458ba05d8ba04510b4085a042d5a042d8a082962b0a82892288c92a222432232949232b5c90cb349cd91699c5233b3d1f1576a89bdf13d74e476e79c99b9e30c39e373e1c33877cedc1fe73cf7bcef79c7befefefef1bebebe22cda6a54b978ef6e51f43434352cfad5bb7aec6d457262626ca4b1b46ca4dcb07a519b57aeb5805e93f8806d60e97ab1edd28cda8559bf7412488049120124410092241248824880491201244124482481009220922412488049104912012448248824810092241244124880491209220124482481049100922412488248804912012441244824810092209224124880491049120124482488248100922412441248804912092201244824810491009224124882488049120124412448248100922092241248804919d23880491201244768e20124482481041248804912012441009224124880411448248100922410491201244824810412488049120124410092241248804114482e8f2ebba27b65441b448bbfab12fcacdcf6cadbeced7730c1d3c59761d3a05d1622d8072cbd7f97a8efbdeda550511445ac8886e5cfe5559b1f1e7b269e458f974cf7879f2e31fcb358f6f6adcf68681c1f2e2673f95cff71eadb67f65d3fe72cbb35f4fda6ed94723e5b90d6365e5960315a27ccdf7e9a1f7f75cf21ca87eacbab633515e4700dfbb6a67f970e8b732383a51de183cd88a3ac3ee231fecadf643dedfc0fad172edb2cd171f07a2866e5fb1bd1c3dfd5705e3ae95df957b5effbedad9c3874f4f9aac766f9bf2ef1367cf573febdcf6feb77757580232b77ccdf729cf7129af3907b57eacb47ef7ef65f5f65f1bb73d70ec6c59bbf348559ef7eed786ca9b5b7fa95e7313febcf7ccaff2faf3fe8268dbd8f172e4e49fd5f710357ceac6c6cf9487d70c37eecc9c653aefcbcecc27b27bdb9c097266fabf86b33cff5488d6ec383ce9febcb79c69bae756c112a49df7075e6e1035949d73e8f8b9c69f658775c3b8e3e56f1b2fa5b36d0ed6e58aa8e9e05fffd497d5ebcaf05cdf97b3d5d39fecebe971ae7844196272c6e9f5f7b2e303b01e4e329f5a68889a7e96b372db500bd12c767e1b880c012347fea8e615f5a4368fb110116592fdc0bbbb67050ea28e33514ee133dd3e93ed4c3417c37096329477fe2c1f8e5cc541d443d9296d73a25b9fdf560d53dd189a569e33b42d344459d6c8ad738e9709781e0ba21ecbe56cd3d55986abaced744e44cf5ff87bd26571ae6432c4b5214ae7ce5fa826e5337d4d01dccbdfc2a643f4ceb64393eecf5a519606ba3f54b93aeb9c6cd7f7bb3a9be680e56c944bde9c51ea45b9e0ea3e90f5043a8b71d936c36186b8ac15054adbdfc772c032543cf8de0fd58108da362435d62cf6cd15a220cfb09df7968973ce38c1d2b44e940f4e26d8f57a56dedbf6fd27ac134d570e5c2e6df3c90ca01ce4b615eb2cc2e58065dbece01c886c9b0399c7695b8fca63e6b1f37b4135d5b6c1da39e19d8be1ac5e640ccebceeeeb34d6779eebcd6c0cbba58de9fe16c9197b34760ced75c2667cddcdae043b408fe2f51869ab958dfc9e43f67abee6139437ddb8a3c440bb4faef70596e689b38cf0651f06458cc3c2fc37b86b2e0c9f7530d7f102db07235983950ce1899dbdcf9ea8e29b7cf1cae5700b7bdf04d0535cf93df9fcfff5007912012448208224124880491208248100922412488201244824810092288049120124482082241248804912082481009224124882012448248100922880491201244820822412488049120824810092241244124880491209220124482481049100922412488248804912012441244824810092209224124880491049120124482488248100922412441248804912092201244824810491009224124882488049120124412448248100922092241248804910491201244824882481009224124412488049120922012448248573022a9d72e225ab264c9997f35493dd7dfdf3ffe0f4f8719621e894a7b0000000049454e44ae426082", + "rawHeaders": [ + "Content-Security-Policy", + "default-src 'none'; style-src 'unsafe-inline'; sandbox", + "Strict-Transport-Security", + "max-age=31536000", + "X-Content-Type-Options", + "nosniff", + "X-Frame-Options", + "deny", + "X-XSS-Protection", + "1; mode=block", + "ETag", + "\"17e2a26669ee68c0fd498208b014f2272d9f028d\"", + "Content-Type", + "image/png", + "Cache-Control", + "max-age=300", + "X-Geo-Block-List", + "", + "X-GitHub-Request-Id", + "9AD8:6833:180C2:19EE9:5B9A83E0", + "Content-Length", + "1510", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6323-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.168296,VS0,VE134", + "Vary", + "Authorization,Accept-Encoding", + "Access-Control-Allow-Origin", + "*", + "X-Fastly-Request-ID", + "db310058bbdc12c6b6e7d8d470abda7fb2097404", + "Expires", + "Thu, 13 Sep 2018 15:41:00 GMT", + "Source-Age", + "0" + ], + "responseIsBinary": true + }, + { + "scope": "https://raw.githubusercontent.com:443", + "method": "GET", + "path": "/ampproject/amphtml/master/extensions/amp-story/img/template-horizontal.png", + "body": "", + "status": 200, + "response": "89504e470d0a1a0a0000000d4948445200000091000000ff0806000000f1263409000006534944415478daeddccd6b1c651800f085b0e49ff02078103c081e04ef1e040f820741f0e6c19b078f52a45824a820a81415142d8a828a876224a58ad644d3529bea6a635bd324fd88b14dd3a6adb1b5ad75e4199c30d9cec66c9964dfc4dfe121cd76c83ef3ce6fde793fa7d16c36e71b8d4626c4ad447f7fff6423fed16ab584e83a8686860a4c8d6c61614188ae23204124ea47b4f7e86cb663642ad9183c7822cff3d8ccd9a4f38c28ca34f53ca32c6b4534307824bbede93dc9c6c3af1fc8f3dcdd3a95749e114599a69e6794254410410411441041041144104104114410410411441041041144104104114410410411441041041144104104114410410411441041041144104104114410410411441041041144104104114410410411441041041144104104114410410411441041041144104104114410410411441041041144104104114410410411441041041144104104114410410411441041041144104104114410410411441041041144104104114410410411441041041144104104114410410411441041041144104104114410410411441041041144104104114410410411441041041144104104114410410411441041041144104104114410410411441041041144104104114410410411441041041144104104114410410411441041b4be881e79f387eca52fa62be3be17f72d1df7f87b8796fdbede88e2bb3be519e7501cf7c0ab0796fdde0b445b3f9da8ccf3a98f0f2f1d73d7b3dfe4c76d0a4471721f8dfd96177c7bc48916c715c7f40a517cf7a1d9df2bf32ce38e0b15e7d44b44a7ce5fa9cc3380976f8a386ed3205a4da1a7806874f2bf2f682a885653b3420411441041542ba25de367f3c22f47f9f99d0aa289b93f6ecaf3b1b77f4c12517b9e11776e1d810822883cce3cce2082082288208208a21586e86324382e507b941bd76f0c9fccc64e5eac3cee9e81d13547f4d06b07f38675d5f797a7139e787fbce3f9b437c2d70ad1fee90b95dfbfb37566e9987b9fdf9b4dcf5fae3c6e60d7a4095813b066f121820822882082082288208208228820820822882082082288208208228820ea0da298007e70fbd8b22d4e29228a958d91671dfbf7360ca298697ee5cbe3f9ec7d8a88e282c48c7d31bb7f6ef15a36f8d35c76f773df268528f07cb07f36bb78e57a9ee791d38bf90c7eb7ab0a3614a258bb131763f6c29ff9cfbad6bdd48928eee6b828b1f4a3f8ec8e6786f37c57b3ee683d117d7e783e5f0612f9159f3dfa562bcffffe97bfdb9c885a3397b2273ffc393fe9009522a277f7fd9abd333a73d3e791f3e2d5bf6ab93875208a3c024b195011917fd5396cba3651aa88e2ee8ebbb9eaffe2f156c72acc3a10c5c2bef2a2b9f6559875d49a10d51ca9d5442b45b493b6ef3901516a88b6ecfc25b9365115f4c8331ad875740220aa31a2f6891e5afbc6cb541045e33aca326aca78e446eff77f314eb45110c55851749ba34390ea3851e418bdcad874100deaa889ea8004514d8378d1a3ec769744afdb44d11e8a2dec10f518d1ed5bbecebe3a7aae96aef25a208a51f44e23e9f1f88d471b443d46143d9c18600c4c29227a61f754f6c9f7a73b76ffa30d07510f11c54ed7d828587edb466a88024ad43655f365517bc64d00518f10c574c7f51b7f67db3e3b56f91a974e037cbd6813c52ee3b94b57f39f519e316716dbd2a387d6cdeee10d8b28eea0bade725a27a295de7abbdaf70bac67c33a6aa4a8798627cee78de91827aa9a0ab114c47a22eb89208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822882082082288208208228820820822886e1951fcc180946aec1899caf31c3f7e26e93c23ca3766ca1165592b2221201210890d8aa8afafeff2bf9a84e83a9acde6fc3fb26c2a1d6eccc7e50000000049454e44ae426082", + "rawHeaders": [ + "Content-Security-Policy", + "default-src 'none'; style-src 'unsafe-inline'; sandbox", + "Strict-Transport-Security", + "max-age=31536000", + "X-Content-Type-Options", + "nosniff", + "X-Frame-Options", + "deny", + "X-XSS-Protection", + "1; mode=block", + "ETag", + "\"bc8f4b9465e2c117fb276aca5bfc0b8ab01c4f98\"", + "Content-Type", + "image/png", + "Cache-Control", + "max-age=300", + "X-Geo-Block-List", + "", + "X-GitHub-Request-Id", + "E04A:0D6F:12BBA:14C59:5B9A83DF", + "Content-Length", + "1676", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6320-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.168756,VS0,VE144", + "Vary", + "Authorization,Accept-Encoding", + "Access-Control-Allow-Origin", + "*", + "X-Fastly-Request-ID", + "1d0c7759bc1330d3979d95d5cf5c7f22017f4c79", + "Expires", + "Thu, 13 Sep 2018 15:41:00 GMT", + "Source-Age", + "0" + ], + "responseIsBinary": true + }, + { + "scope": "https://raw.githubusercontent.com:443", + "method": "GET", + "path": "/ampproject/amphtml/master/extensions/amp-story/img/template-vertical.png", + "body": "", + "status": 200, + "response": "89504e470d0a1a0a0000000d4948445200000091000000ff0806000000f1263409000009d64944415478daed9ddbab155500870fc8c17fa287a087a087a087a2871e021f821e821e82a087a08720a287a08742428a108b8a6e74c130292c322c2443a9e8a2a5a6691dcdd2bc5f3235cb32f392e9c4b76b1dd65e7b66ef993db3f7d6edb7e1c373e6acb366cdccb7d765f6f137139393934727262632917e983973e6ce09be989a9a12a9ccf2e5cb834c13d9b163c7b2e73fde9e5d376fb5482916afdddd12a94da2b9cbb666973df499482916aedaa544a244a244a244a2444a244a244a244a24a244a244a244a24415b863c1a66cf5ce6385cc5db1b3ad3cdbae99bbba54dd4ba70e77ad3bae87b28f7fb8aba38ecb677f9e7df4c3d1b67654693365a93baf7dec9ff2e1fbf95fecef5a6fa089f37ecb8b1bb39757ee1b0f89ee7fe787ecbb837f66b7cdff36971b9f5ed7569ed7f54fac2d55f7fedf4e6573dedf5e58f7150faf6c2bfbc7a9b36ddb8204bc166ff8b9af365396d77d6f7fdfd13e8e8357f8fea6e7be6eabe785cff6669f6efbb5a3fe7ecf35c7f6e07bdb5a6de778616c24aaf2eeaa2a51d9934e594eee5d6f7cd7d19baddcfe5b874465db4c59e4dc7df46487a0a94479bf1befb70ef47a478e9fc9967c7328bbf9850dadf3a2440390886168c5965fa6b75df5c817d9af27fe6ebd7beb48445986447ac5514984c0f1f0ad4403928861086990876dc8f3e6ba831d17b31f89663db3beadee614b94a2440392887ab9680f2cf9ef38a70e1ccf6e7de59b4624e26bea609e5356a2a73edead44654f326335272b255d99f5231113d3bcbad3097b90e8f657a7a67b0ee631793d429536c712319c303fba76de1a256a5aa2ed47fe6afd9bc2caa8ae44bcf3f3ea4e6f1384e18c253d82c44bfed94b7fec90a86c9bd35eebd94ff64cd7a54463389c85b2dcaf397beefc748f915ecc7e87b378b2ce725e89c658222ef06bab0f145ecc3a1201ab348659251a63897a5dccba12b1dc66be156e442a9112f53cbe659b8f746ce70e36732f256a48a20dfbfe688991c7d58f7dd92111cbeea2f24c8c6331ee796b4be9b25524ead6e678d2deed5e0f77c895a801ee5eb465fa739c3cd20f09bb958530198675bb7faf54960f25f3dac81c266e47af36c71fb852b6e883ce5e1732dd6f9370ac1cb37f0a22fe2988289188128912891289128928912891289128918812c9882462e3ad2f7d2d528a651bf7764a2452950e89b6ec399c7d38b55fa4143b0efce29c489c588b1289128912299128912891289188128912891289128928d1f842ac0d11c49046225fd4a920a7cf9e2b1de850355a86f89632810e7c4f5e755a07c966b42f4d0529dbe690631da7c606d2902b8220e27a48543b71e69f8efafb3dd7e4495227410ea49ad0aebca708984f54239f083162b18018622e649d7c225e716a6c914479bfdb54b4cca31fec68a5e1c6c7c7fe09dbe21895a8218908424f03cb79c792655d47224242e3d4d8614b440e13fb67084b7f467ed3d6432794a82989482f23782a6c234d36c4e2d58ddb8b5363872dd10d4f7e55280ac7484fab440d4914baf79071cddc86394313123127627e46a8685989d2e8e341404fc430a7440d4a448f0121cf9a21a8a944fd901a5b56a241c6ed85618ee19a365ef41215bdf22e5455898a5ea95c4122ba7e7aa33b176e9ebee07912956d732c11178dbac3be472d11f5b3528bb32bed896af64461e249f7cec5a6ab0f2b9ba62288a933ccbb462911ede098cb3e8050892a9665d8891fa0d7748e359232891f95441c274375fa7c13256a5022628f79504cd1c5ac2b11fb0913f8614bc43e118818e7b1f9d8e3524cd4071ea2c7a31f86291143d7c1df4fb76291c7eab3b34b41221e99996e67a9cf1df2614974e59c55ad9b9edc3618bb0f6039c95c404e581ee9335979f114a0a2f2f16754d4cb45285bb68a44ddda1c2f99bbdd3064fbb02462a5c9843eeff15a3088e16d6812f18e2cba187912752b9b8ac104b94ad9a21e0eb9e276f46a732c1165d36308700f8af2dd26c045bf5b955ee7a2a9fdf8a720a244a244a244224a244a244a244a24a244a244a244a2442225255ab3ed60eb07226598da75c8447d1940a2febbebf664f72eda24528a4f361f704e244eac4589448944899448944894489448448944894489448944862911f1764521037941036c23e1a24cdd44a874ab3bae87b245a106a48ac53fabd266ca12dd5794d411ffbffd3b166cea5a6fa0cef9661f6452126a4a5d834cd51f6a2a08a14ba45fe4f1c092adb5a26548c328aa9b30abb82cc15379a150bcd25490b26da6ecd973e7db52630369521a89f7713de429d2a6b4fe7ea36588c3a14ee26568e3b2cd475ac78de8e61335944fc4230b6e797163db7692f0c385ec379f0889e2d4d82289f27eb7a96819e2789026ddcef1e53d8e4289fa9488e4324e76d8166288c9b2ae2351e851e208bf614b5494a84fbc0d920f2241f6929488b90cd28413ca5c8677691339d6ccb9e2b4fe614bc4bef24421a38957d979a612f5284bbd48137a0cba7f26d54d85a1a7c1e3bd240a73a441aea0d8c7580c67bc43b9d8297993d1aa129110965777fae8a82011134e32169974d32bb17ac993a86c9b6389f839fb092ba251441013fe493b58a5f1e01b8e635059d617c4ea8c77495d898a566769867390886e9d093601e8af", + "rawHeaders": [ + "Content-Security-Policy", + "default-src 'none'; style-src 'unsafe-inline'; sandbox", + "Strict-Transport-Security", + "max-age=31536000", + "X-Content-Type-Options", + "nosniff", + "X-Frame-Options", + "deny", + "X-XSS-Protection", + "1; mode=block", + "ETag", + "\"0ab3e8c6adc882043b41de4bafc3c0c051d7f81c\"", + "Content-Type", + "image/png", + "Cache-Control", + "max-age=300", + "X-Geo-Block-List", + "", + "X-GitHub-Request-Id", + "C646:1EA8:12BF6:14017:5B9A83E0", + "Content-Length", + "2575", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6326-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.174099,VS0,VE150", + "Vary", + "Authorization,Accept-Encoding", + "Access-Control-Allow-Origin", + "*", + "X-Fastly-Request-ID", + "bc81d3ac1ed49a9b8256b69066e9b283131e9a03", + "Expires", + "Thu, 13 Sep 2018 15:41:00 GMT", + "Source-Age", + "0" + ], + "responseIsBinary": true + }, + { + "scope": "https://www.ampproject.org:443", + "method": "GET", + "path": "/static/img/footer/line-right.png", + "body": "", + "status": 200, + "response": "89504e470d0a1a0a0000000d494844520000015e000000d70803000000653dc98c000000c0504c54454c697149e0ff1dd9ff23daff11d8ff86ebff1fdaff19d9ff31ddff21dbff29dcff83eaff58e3ff30ddff51e2ff36deff53e3ff3adfff3ee0ff51e2ff44e1ff4be2ff59e4ff51e3ff57e4ff5de5ff63e6ff69e7ff94edff7ae9ff6ee7ff74e9ff91edff7beaff8eecff89ebff82ebff89ecffa3f0ff91edff98eeffcff7ff9ff0ffa6f1ffbcf4ffadf2ffb4f3ffd3f8ffcdf6ffbbf4ffd5f8ffc2f5ffc7f6ffccf7ffd0f8ffecfcffd5f8ffdaf9ffeefdffe0faffe6fbffecfcfff2fdfff9feff15f60f670000003b74524e530030ec8eff10c4ff52ffff2040ff7cffb3ffffd6fffff0ffffffffff4fcfffff7dffabeeffffd0ffff34ffffacffff82cdff5dffffffffd5ffff9d6970a2da00000762494441547801ecd8018ac4200c46e1a831aa33cedeffb61b98a5454a015a0bb0bcef088ff05b2a000000000000000000000000000000000000f8bf420c82a724d598058fc85654d5044fa8b1147555d6432a4eddfaf945b0f2cdcb3c3c340c5b5e4d82b56fda1f756be71721b6b9eec2af33a4d6da7cbdcbe617d99a2b6daabb687e51636bc7eb7541b06418e6eb5d36bf08d6f7b873dfdbf38b1a7b3fbb5ef792eb90adbbd3ebb53be38b77dceaba43dd74677a91badbafb7cd7963155cf7b2d1ddf17abf81edceeca2c631e72d65d51f1de434c696777edbd4c5b75c8760c39d5eaf65b90e9f9fb1e76df3f5aaea47ae43fe65c73cb21d058220b8196f64f11e593e8cee7fbda1d4259aa6c5dfe436f308f1e25507ecb606aee0f5b297b18bc6ee56f0aedd5e30767918c6295d1f2e63178cddbd8bd705ccd8c562f7b0df7f622f63178bddbdd075f1da3063ec62b17b3cccf0da7050be8c5d689be060f1fa5f158c5d2c760fe37c7b952f63178bdda3d05db5178c5d1e8640e93af62a5ec62e16bbbbc0c76bed65ec62b11b062e5ef7970363178bdd20f0f05a7b19bb60ec8abbabf63276a16da230fcc45ec62e16bbe138a5ebe1fdc5d8056337b478030f2f6317da267ec25db197b10bc66e2c785d7b6df63276b1d88d946e60f82ebe89f9a621fbba89c7856bf66e19bb58ecc68ad7bdbd8a77c7370d8bddc4e055c00bbc3c0c58ec2649e2d93b850363178cdd64c26bca4c6fafc1cbd885b64964d65ef79bf880c52e63373574adbdc10cef118b5dc66eeae0359bf0626f1a63374d5f789337f662b1cbd84d65bebd862e18bb8cddd4e04dadbdf665030f036337cb52cfde89ef118b5dc66ee6e24d1cbc3c0cd03659e6e2753eda422c7619bbb9c19bb9f686063063175a11e58a57e67db4616f1a63371f67ed4d526befb8088a5dc66e69e8aed8cb370ddaa6aa9e78f3a5bd32f4303076abaa5ab7178b5dc66e59558ebdf6a34dc6c3001e06996fafc11b41b1cbd82debaa5ab797b10bada8eb195eefa38d6f1ab2af4d2d786b4357edb51f6d472c7619bbb54ce5f5ece59b06ad69eb7addde888701d9d753dbd6ebf662b1cbd83db7ad6feff4d1b6410e03d708dcb65db197b10bc66e2b5b3b0e3b2476b9e27c79c275f0da8f36be69d89b76b95cacbdcb8f36c62e18bb17c5abfaba1f6d50ec728dc075edad2d5e347679182c5ddf5ec62e18bb57c57b79672f14bb5c73bd5ed7ed8d0a128262f7fac2db7af6e63963178c5d81ab7c55de59f6f24dc3deb4abd9fcf6d693bd2563178add9bc2bd2a5cf7b3028a5daeb9dfaf8ebd0a57f162878187e13eceb177fe59513276b1d855bab28b672f1abb3c0cb2abeabbbcbd8c5d28766fdd8cae5e076b6fc9d8c562b7eb66f65e5c7beb8684a037adeb26bcbebd50ec721fb74ee6d9ab744fc89bc635dd9caeb5d7e03d63878187a1b7787d7ba1d8e53ebafe85b7f36e6fdb36c861e09abe9ff0ea660fdb99b18bc56e2f53ba9d737bc741b1cb15bda1db2fc241ede59b86bd6983c0b5c7c1b5f7ccd8c5627718acbc0ad77e1443b1cb35c338df5ea50bc52ef7f59fc01d8637f6caa0d8e53e06b399bc06b0d197b10bad793c9e7015efc25ec62e18bb0f83f7f5b4e9942e63175a2170d5dec1b7976f1af6a63d64bebd862e63f77ffb658cebaa0e45d12a55a6f08b5f45f2d5bb100304006ce63fab17732076e0846693e2497b0d6169eb78198cddc46e7a7b452f6317e2ff2c5bf4fe2aeb65ec8287217be97d9bafe8bd3176114c1610bbca7a19bb10f92c77f51bed8a602876c9f59e05c46e2cb375bd372476c97f9915b959f2b0c570c0de34be69d6dafd7a7f166ec86120e66e9f28eb15c150ec92c28a5d2be3ddac9787013c0ca515bfc266bd37434500c696ab5e1bc7fbaa5e2876495e3e11b9ca7a7fb0378db15b063eadf7864c9714a5d8ddad57ec626f1adfb4aa12bd89e0385ef04d63ec5655a5ad574eef1fe43090a20a88dd45709abd050d015ceef54b6f9abd8b60e8301053d5a9dea4cc7e03390d21e4751df5dadda70d8b5dc66e1dd8ac37cb96e30bc52e29eac74b6fb95f2f16bb8cddc723d19bdede00df3408d3b4a9de44eeec178a5d92b7ed4e6f126658ec3276c5aebe5eec3010d3061e9fd60bc52ec9bb4ed72ba7018b5d", + "rawHeaders": [ + "Server", + "nginx", + "Content-Type", + "image/png", + "x-guploader-uploadid", + "AEnB2UoqqMIeuJ47FXhe0fFAQqGYaD0JxSHWc0Q3biXNFimAb9pwqqp7JA6zLAVA7tBpl-000Pi8TZtCjEF0HwxZxbwYsg4OHQ", + "expires", + "Thu, 13 Sep 2018 15:36:00 GMT", + "cache-control", + "max-age=604800", + "last-modified", + "Tue, 14 Aug 2018 18:23:52 GMT", + "etag", + "W/\"117c7a258e0f3881cc1748aae3f7a381\"", + "x-goog-generation", + "1534271032430245", + "x-goog-metageneration", + "1", + "x-goog-stored-content-encoding", + "gzip", + "x-goog-stored-content-length", + "2155", + "x-goog-hash", + "crc32c=+gGPCA==, md5=EXx6JY4POIHMF0iq4/ejgQ==", + "x-goog-storage-class", + "MULTI_REGIONAL", + "warning", + "214 UploadServer gunzipped", + "strict-transport-security", + "max-age=31556926", + "Content-Length", + "2222", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6321-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.748994,VS0,VE624", + "Vary", + "Accept-Encoding" + ], + "responseIsBinary": true + }, + { + "scope": "https://raw.githubusercontent.com:443", + "method": "GET", + "path": "/ampproject/amphtml/master/extensions/amp-story/img/layers-layer-2.jpg", + "body": "", + "status": 200, + "response": "ffd8ffe000104a46494600010100004800480000ffe100404578696600004d4d002a00000008000187690004000000010000001a000000000002a002000400000001000002d0a0030004000000010000050000000000ffed003850686f746f73686f7020332e30003842494d04040000000000003842494d0425000000000010d41d8cd98f00b204e9800998ecf8427effc0001108050002d003011100021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030101010101010101010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffdb00430001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101ffdb00430101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101ffdd0004005affda000c03010002110311003f00fec73fe099dff28e0ff827e7fd991feca5ff00aa23c055fa6f8d7ff2797c5bff00b39bc79ffad566a6387ff77a1ff5e697fe908ea7f6afff00900f863fec2775ff00a4e2bf32363e1aa002803ef6fd95bfe44dd63fec3d71ff00a4763401f515001401f9a7fb42ff00c954d7ff00eb8e99ff00a410500789d001401fabff000cbfe49f7837fec5ed33ff004992803b9a00a7a8ff00c83efbfebcee7ff44c9401f8f371ff001f13ff00d7697ff4334010d00773f0cbfe4a0f837fec61d33ff4a52803f57e800a00f03fda43fe49addffd842cff00f6a5007e71d001401f597eca1ff230789bfec176ff00fa53401f735001401f0cfed5ff00f2307867fec1771ffa53401f26d001401fa53fb3cffc92ed0bfdfbff00fd38ddd007b7d001401f941f137fe4a0f8cbfec61d4fff004a5e80386a00b9a77fc842c7febf2dbff4747401fb01a77fc83ec7febcedbff44c74017280386f89bff24fbc65ff0062f6a7ff00a4cf401f9414005007b67ecf5ff255340ffae3a9ff00e904f401fa594005007ca1fb567fc8bde1dffb08dc7fe8a8e803e16a002803ee6fd943fe45ff00137fd852dfff0049a803eb2a002803f38ff690ff00929577ff0060fb3ffda9401e074005007eaffc32ff00927de0dffb17b4cffd264a00ee68021b8ff8f79ffeb8cbff00a01a00fc79d47fe4217dff005f973ffa3a4a00a7401d9fc3bff91e7c29ff0061bb1ffd1c2803f596800a00f13fda17fe495ebfff005db4cffd2f82803f34e800a00fa8bf656ff91cb58ffb00dc7fe9658d007ded4005007c35fb57ff00c87bc31ff60cbaff00d281401f265001401fa33fb35ffc934b5ffb09ea1ffa305007bfd001401f961f17bfe4a3f8abfec22dff00a2e3a00f36a009adff00e3e20ffaed17fe862803f61b4eff00907d8ffd79db7fe898e802e500725e3dff009127c59ff62f6adffa4535007e4a5001401ed9fb3d7fc954d03feb8ea7ff00a413d007e965001401f307ed53ff00224e8bff00630c7ffa4575401f035001401f6afec9bff1ede2ff00f7f4afe77f401f61d001401f9cff00b4affc94bb8ffb05e9ff00fa03d007cff4005007ffd0fec73fe099dff28e0ff827e7fd991feca5ff00aa23c055fa6f8d7ff2797c5bff00b39bc79ffad566a6387ff77a1ff5e697fe908ea7f6afff00900f863fec2775ff00a4e2bf32363e1aa002803ef6fd95bfe44dd63fec3d71ff00a4763401f515001401f9a7fb42ff00c954d7ff00eb8e99ff00a410500789d001401fabff000cbfe49f7837fec5ed33ff004992803b9a00a7a8ff00c83efbfebcee7ff44c9401f8f371ff001f13ff00d7697ff4334010d00773f0cbfe4a0f837fec61d33ff4a52803f57e800a00f03fda43fe49addffd842cff00f6a5007e71d001401f597eca1ff230789bfec176ff00fa53401f735001401f0cfed5ff00f2307867fec1771ffa53401f26d001401fa53fb3cffc92ed0bfdfbff00fd38ddd007b7d001401f941f137fe4a0f8cbfec61d4fff004a5e80386a00b9a77fc842c7febf2dbff4747401fb01a77fc83ec7febcedbff44c74017280386f89bff24fbc65ff0062f6a7ff00a4cf401f9414005007b67ecf5ff255340ffae3a9ff00e904f401fa594005007ca1fb567fc8bde1dffb08dc7fe8a8e803e16a002803ee6f", + "rawHeaders": [ + "Content-Security-Policy", + "default-src 'none'; style-src 'unsafe-inline'; sandbox", + "Strict-Transport-Security", + "max-age=31536000", + "X-Content-Type-Options", + "nosniff", + "X-Frame-Options", + "deny", + "X-XSS-Protection", + "1; mode=block", + "ETag", + "\"7ee1664e290622ed9f9738ac5e4383c618028748\"", + "Content-Type", + "image/jpeg", + "Cache-Control", + "max-age=300", + "X-Geo-Block-List", + "", + "X-GitHub-Request-Id", + "607E:34B4:7313:7B89:5B9A83DF", + "Content-Length", + "677493", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6321-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.744020,VS0,VE634", + "Vary", + "Authorization,Accept-Encoding", + "Access-Control-Allow-Origin", + "*", + "X-Fastly-Request-ID", + "5ad344eeb8a0338af2dc94d7032c658491910992", + "Expires", + "Thu, 13 Sep 2018 15:41:00 GMT", + "Source-Age", + "0" + ], + "responseIsBinary": true + }, + { + "scope": "https://raw.githubusercontent.com:443", + "method": "GET", + "path": "/ampproject/amphtml/master/extensions/amp-story/img/template-thirds.png", + "body": "", + "status": 200, + "response": "89504e470d0a1a0a0000000d4948445200000091000000ff0806000000f12634090000123a4944415478daed9c6f681557dec707aa688b14177cc017be08b45029522c74c1177911a85059a458b020db8595224b1fe88285bc48b1455b44dc624b5aa458943ed26e77ddaa6cc514c36e68dac4aad5a6691add685337aeb1c626fe49bcb19a4dddf3f8b9b3273977ee997be7de9b5cabf37df1217766cefce6fcf9cc39bf99690d66ce9c79310802234439cc9a35eb74c08faeae2e214ae6c0810356a6c05cb972c57c303a6a7e3d362644220e6432599172246ab87edd04c6089188b7af5d8b97e8de1343e617bb4f0ae16556df707189ee6f396316bcf8a9105eeeebb820898424129248482221892491904422cb43ebdbcd92d78e9847367e9e6e895e6fe933bd83d7cca1d357f278e2ad2f27ca7dd831609edefe75c15874e8c8f5716fac1776f74c94637b6fe785bc01191dfb295b1fbbaffff275d37176242fd6beae1f72eacfbe685da82b75e6f733ef7e9373fee0d53173fc7cc61baf947e3b7961347b8db6decb591edd7428bd12b9031c4752897c031ac50ee4032fb74deca30e4813958898c5ea3f7ef33fe6b73bbb63252aa72d8558b7efdbec4d50b3eeb3897d0d7f3d55968c92a802891884dfffe51f39fbfef0b77f962511b19859dc419d4e898ef60d9bc71b8fe5ece3dacca492a88a12addad165fede7331bb5dbbe58bec72f0eac7df9525116c3fd89fd38ee994c8c7c3af1c349746ff2d89aa291165c977484adffce44c7656b24294231171c8edec12594d8910a8a97b30bba429b18e49842b4daca3b9829568fdfede2c24a80cbe4f225f62ed26b0ee39fc6549ac9644dbdace66eb7863fc6676264cf5d3d9ed9a89908125e0bd23dfe70951ea4cc46f44e4866056aae64c441d89b9f5d37f49a26a4bc46f72a127dffe6a4a2482fabd27b3b342b5732212ebbe8b3f56ed9d912472242a2444391231982c8fc8142711e2562251eba94bb1ed72dfad49a23b542278f6fde3d973e324e2fa954884845c239a5c9f1fbe91f3ee2b5512fde9e8f9ac4851dc04d6aef9be72bc6db6129193f8ca3cf54e675912f1d81f8df5bb0f4e1494c85e63ba24aa7be368b69d5c97383c59769dbb9a53af5449c4f4eb1bf4a844481057ce4ac4dfb832ae447c86b0e744ebe22e070c8a2f963b58d173dc8176afe9c2f52bfd44c1ccc392894888cebb2e7d8015fa8a2f249124129248482221898424d2ff012ba6e3ff8015a2e2ff175f084924249190444212a973842412924848222189d4394212094924249190449248482221898424129248120949242491904442124922218984241292484822492424919044421209492489842412924878a9ad35417d7df1723d3d2678fe7913dc1ac38aaeb7678f096a6a4cd0df2f89ee28dadb4db07ab5098686f28f31a01c2b1663c70e13cc986182eeeecaeab2736728445f9f24ca833b746020fe782653f83803ec1be428dcc1c49aaa8173252276a5e313d70eda4ebd5327516b6b58791aeeeb747b7cd9b2f02eb5bfed20d351ec5bb9d27fdc762e4b4ad8492658ba3457361ba3a1c1048b1787bfe7cf4f567f7b6e94babadcf650a7c71e0b8fcd99132e39f6f8860db9e7c689481bc196b333166d253efb66cf0eaf2d893c12ad5811e60c5bb786db1b37e60e229dc8719604b6dd1c84c15bb8d004c78e85f110c45d5e6c0c24e43cea429c24f51f1f0fcfdfb2258cc1b2c6b62b29ed01aeddd919d667debcdceb730c890b49646f16eab679f3e48cb6766d5877c4442c7bc348a2d5f1c7992de8285700f73877e2a245e16fc4b1b30cb160d5aa7036884af4d24bfe3a363787315d18b872963377e68926bec562d06e5ffdb841962f4f714e548e44484099388938d71eb7e7fb884ae4c67061f660e05da265cb91285ab6580c778974e18670e3a74e223b53943a13d90e8d9b89ec5deb8b1f97d7142a335589f5744894fa9988a49064904e40189b5b4425e23842900bb1ddd8982b00cb1b33463467b2391179d0ae5d610c96a2356ba656a2a6a6c95c8c3ab3042695887a736deac47efa80ed685e152711f1c889683bd7b50f07a97ac46770e7ce0d3b82ce2689b689b195880e64daa60c9d4d42eb0ac013978dc172e7f6018341428aac56b8c387731fe91924f789a91ca8bb7d42b4399bef65233780fb32d06e4771eb480cdae5bb2e6de518d72661a77ff4b2b148ce34d54b913e7b48224924898abfcc63cd276f887b8b5de8b890444212094924249110924848222189842412421289db28d199e161d33532224422cee14b5422214a254fa20f4647cdafc7c68448c4814c46399198c6c47acee7e7ccfcd78e08e1e5deeec1e212dddf72c62c78f15321bcdcd77141120949242491904442124922715749b4e4d6e3e2d3dbbff6f2f02b0727cad5bd713467dbc7032fb7c5c6e27c5bee89b7becc5e377afeafb676e4eca79c2fd6936f7f95537f5f2cea6aaff9e8a643b1f58ac62b8787d6b767db9e5a895e6fe933c7cf67cc871d0379b803cf361d5e4cc8c1ab63de58f57b4f4e943b74fa8a69ebbd9c73ee231b3f3737c66f66ebe3966bea1ecc8bb5aded6c4efd7b07af999a759fe5c4a3ae94e5f753ef74e69cdf77f147d37aea92375e293cde78ccbc77e47b333af69357e45449e40e5c1c492562e08bc5a24cffe5eb5971ecbe75fbbe35272f8ce649546c7028cf20", + "rawHeaders": [ + "Content-Security-Policy", + "default-src 'none'; style-src 'unsafe-inline'; sandbox", + "Strict-Transport-Security", + "max-age=31536000", + "X-Content-Type-Options", + "nosniff", + "X-Frame-Options", + "deny", + "X-XSS-Protection", + "1; mode=block", + "ETag", + "\"82407ad1d8ca53b7b97a4dfe85f1eaaeb4e28462\"", + "Content-Type", + "image/png", + "Cache-Control", + "max-age=300", + "X-Geo-Block-List", + "", + "X-GitHub-Request-Id", + "5E0E:34B6:276F1:298A8:5B9A83E0", + "Content-Length", + "4723", + "Accept-Ranges", + "bytes", + "Date", + "Thu, 13 Sep 2018 15:36:00 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6329-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1536852960.120695,VS0,VE401", + "Vary", + "Authorization,Accept-Encoding", + "Access-Control-Allow-Origin", + "*", + "X-Fastly-Request-ID", + "916ec0d35deea3cee3ecb6f0deb36b661b149601", + "Expires", + "Thu, 13 Sep 2018 15:41:00 GMT", + "Source-Age", + "0" + ], + "responseIsBinary": true + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/ampimg3.json b/amp-story/linter/tests/network/ampimg3.json new file mode 100644 index 0000000..3e45960 --- /dev/null +++ b/amp-story/linter/tests/network/ampimg3.json @@ -0,0 +1,189 @@ +[ + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/introduction/hello_world/", + "body": "", + "status": 200, + "response": "Hello WorldHello World - AMP by Example
☰

Hello World

Edit on Github

Introduction

An AMP HTML tutorial - learn the different building blocks of an AMP HTML file. AMP HTML is entirely built on existing web technologies. It achieves reliable performance by restricting some parts of HTML, CSS and JavaScript. To make up for those limitations AMP HTML defines a set of custom elements for rich content beyond basic HTML. This samples shows what's necessary to create a valid AMP HTML file.

Doctype declaration is required.

<!doctype html>

This tells everyone that this is an AMP file. <html amp> works too.

<html âš¡>

Head

The charset definition must be the first child of the <head> tag.

<meta charset=\"utf-8\">

The AMP runtime must be loaded as the second child of the <head> tag.

<script async src=\"https://cdn.ampproject.org/v0.js\"></script>

AMP HTML files require a canonical link pointing to the regular HTML. If no HTML version exists, it should point to itself.

<link rel=\"canonical\" href=\"https://ampbyexample.com/introduction/hello_world/\">

AMP HTML files require a viewport declaration. It's recommended to include initial-scale=1.

<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1,initial-scale=1\">

CSS must be embedded inline.

<style amp-custom>\n  h1 {\n    color: red;\n  }\n</style>

The AMP boilerplate.

<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>

Body

Most HTML tags can be used directly in AMP HTML.

Example

Hello World!

<h1>Hello World!</h1>

Certain tags, such as the <img> tag, are replaced with equivalent or slightly enhanced custom AMP HTML tags (see HTML Tags in the specification).

You can use the AMP Validator to check if your AMP HTML file is valid AMP HTML. Simply add #development=1 to an AMP URL. Validation errors will be printed in the Javascript console. You can try it with this website which is built with AMP.

Check out the other examples to learn more about AMP.

Example

<amp-img src=\"/img/amp.jpg\"\n  width=\"1080\"\n  height=\"610\"\n  layout=\"responsive\"></amp-img>
", + "rawHeaders": [ + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "Access-Control-Allow-Credentials", + "true", + "Cache-Control", + "max-age=60, public, must-revalidate", + "Content-Type", + "text/html; charset=utf-8", + "Accept-Ranges", + "bytes", + "Access-Control-Allow-Origin", + "*", + "X-Cloud-Trace-Context", + "6edb735ab3c648b9ebb74b1a622626dc", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "1503us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Date", + "Thu, 13 Sep 2018 15:50:10 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2134", + "Content-Length", + "107072", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wlee64-v6:9893,wsqz14:9829,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2134,wsqz14:9829,wlee64-v6:9893", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/1158,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2134,wsqz14:9829,/bns/ws/borg/ws/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/6,wlee64-v6:9893", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:cloud-layer2-gfe-apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close" + ] + }, + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/img/amp_by_example_logo.svg", + "body": "", + "status": 200, + "response": "\n\n \n \n \n \n Hello, Ken Burns!\n \n \n \n \n \n \n \n \n \n \n
\n

Ready?

\n
\n
\n
\n \n \n
\n \n
\n
\n
\n \n \n
\n

Thanks!

\n
\n
\n
\n
\n \n\n", + "rawHeaders": [ + "Date", + "Thu, 23 Aug 2018 20:51:17 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Content-Length", + "3147", + "Connection", + "close", + "X-Powered-By", + "Express", + "vary", + "Origin", + "last-modified", + "Thu, 23 Aug 2018 20:51:04 GMT", + "cache-control", + "max-age=0", + "etag", + "W/\"c4b-165688e0e91\"" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/bookendcache1.json b/amp-story/linter/tests/network/bookendcache1.json new file mode 100644 index 0000000..06ce0cc --- /dev/null +++ b/amp-story/linter/tests/network/bookendcache1.json @@ -0,0 +1,282 @@ +[ + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/stories/introduction/amp_story_hello_world/preview/embed/", + "body": "", + "status": 200, + "response": [ + "1f", + "8b", + "08", + "00", + "00", + "00", + "00", + "00", + "02", + "ff", + "d5", + "7d", + "5d", + "97", + "db", + "36", + "b2e0bb7f054739d97127229ba43e5a2db9fb26763edc67ed4c2671eecc38c7c78722218936257248aa5bb2aeced9877ddcb7fb76cfbeec5f9b5fb255f8200110544b6dcf24d776bb49a0502854150a05a0003ef9439486e53623d6a25c26d78f9ee02feb1ffff5ffae1f59d6930509227c607f9e2c491958e122c80b525e75d6e5cc1e7558f69322cce3acb48262bb0aad220faf3a8bb2cc8af1f97918ad9c60996579fa8e84a593e6f3f35bd7795774ae9f9cb3522614e1ba28d3a54d12b2242ba80c30d890926f3b47603fafa06dcf79585db77144d2a3eba2d0b6eb78a6bacab84cc8f5cf404e4c0a2b5e595fbffcd1b2ade7244952eb2f699e444fce19cca39acbab6049ae3ab731b9cbd2bcec5861ba2a29717771542eae22721b87c4a62fdd65bc8a97eba55d844142aebc2ebc967190887721a2245ebdb772925c75c26095ae62c8ed588b9cccae3ae705a3ee3c5e95791aadc3324e57d8b2b7948b6f1748ebdb3ba4f5bc9278b94d8885ad9fa67142f22c094a723d4da3edcebe23d3f7716907405780a8c63693489097d6a8b08a9264c563af4b56d199e5169667add27c1924d6342d17137b997e7870d1e281251f546aff9568e97bb29de520b2c2aa8bef6679badcddc6453c8d93b8dc8e17711491d5be4ce544fa98903de0c2767f1a44c5a7c1937e12349f0007f428d4b6eb27ab9477add3d40fd49de87ac5d30a3d497dadab3eafea7e74a40d095641b22de3b038da8e5425da6c89641b107e9ea6f384d8611243a5761cd941164bb68265d7641c6bfce2150829010342723433d0efdf93fce846184bb735e87e2686619a47208ee399284a3cb8ce98eaebf10da6e087cd3f35fa38066c65c36f3dfe312768e4cf60404088e9d6fa76033813528d09b2cc23c250537654627eb588615c29acc04ae25b62650ca595ceac7241acfff159ef7262ae9e6515b43ec77a41827c652dd23bab4cad3027d09fac6dbacead599c17658dc1e958e7d0079efcc1b6ad9fc3055906c80c6b19e4efd799354b73eb7baa775f5ab62dc88f4bb204ce65579d15e56c45fbc97ce93451fe4eb8d2240c0cc95c6eac5025403ddd12d61e274c97e7f1727e5ea4210cda4eb69a7790bb5c49d13503a5ccb204c66b3a2a27d197ef0a6829aad78eaa58e72b5ac3a6ec8c2d5a0754515482e9743910a24288a7d08828ccd7cbe98bb8284536528defdfb28e0080bfeeb8e7571745801b00e485202b4b8b98327e6c795522e282845de53976be8a23419c91019f090fe433932752550798a8fe00aa1b399f67efe9ef7dd73a9172ff23283fc5733234c3ac825a83de3cc2c7daaeb0bef7ea2e2e4b925bcf823cb2a20034afee6fcc5c940c621c0284a486c57a099d75db31030357649dfd0ada8273821668da23d25c2e5090693025ab0f2d25a859fb241640c5fb3bb3022a710fb704add8c64122cf0b1a3c624af2a78cacaceff3205be82a82268ae4e5f6aa339b8ec1c0bc8d651df107fd9e3fb818f52f3d6fe8b9d4e4ebe5d2f92710661b62ecb7355e7019e3b01dfaa1ec6d41b7ce9363909dd0f5b9de9db7d5f83b51de16ead024bcd506ee23c4c88536ced6d3242e16247a5bc60a0edff546b63bb2bdfe2b6f38f6fbe3dec8b9ec5fbc3e886d9946f12c3e15593df95d82833f2330f089b9af4870f8b02ac1e2b84bec325d870b3b0ea90f1a7f20c5556770b1195c541866c12de616e73abc4de1444f3e02efd0dd0cdd23f052b813f05ef89b0bff08bc14ee14bcc3cdc5f018bc0877025ecfeb6fe0e708cc1cf214dcbebb819f637033c85370f7819afe517433c853700ffc0dfc1c839b419e827b042d1d1dc5130669189d18e83285c93bc129384c46333b0cb260aa0c115b521c5310e690e5bab0a7416ed309b884619a04e17bbbcc835591ac4374568fc0a78f544d9fa26613630d73bde9d0724e070bce2bdf1f6de0a7c9ab300d8ad2e6d906063d803560e7616619a689e2627d36a37f0ccde69304fbb0b1561abb0d5611d9d825d212ac7149714eca66e338d8344fef60626f1f309a87b9d7f3373d830ef3079b663715f7304e6fb8f10c5648e0a4d94d9cc522cdcb705d5a0c794b6907fed3e558c8ac7e05327d7694809ae56e34bfa5ae7d5994a82b9a956845066566f1dc88894b8c41381be6c99b4d025d9a5b673677a796248a83abce6379b1796cf57c37db9c59a00e96c8599078be28c7567f54678945380e92", + "c51b92d839520b33c5b3c38646a10354c2ddf4ef1bedfe55a4fb27913eecbb9bcbfb06908f257d301cfd9348f7dccb7b06ede368bf18b4d13e1c5efc1368bf18e0b87d79cfe07a14ed7dafdf46fb456f5865e1446055b265632b81a402ac3b39a261bd931ae679231f061777f41bb50cf7a2f2202e3f7dc3fc3e34cceb7f8a865d48fd416b98e7fafd8f97d969e6eba23fda60bdbf55cb4e90d9890d1b62c3dcdfac61a788ec34fbe1f52f871bdffdedb4f104999dd8b2410f5ba619105a5e2c73ccc085289c39fadf7188eb1cace1d1aab033802365b8c09508a86845425c81cad3a200eae7f14ade6866346948d97e54161774fd242c8a7f9b05cb38d95eddac90f03409cae03f5e222cc9a17d1deea8a1ff5f2c08299b7bcf6cfb46c428388be45db18be2224b82ed789aa4e1fb49164451bc9a8fdd0975a3c79ff57abd3d0504af69896bdd5df6f6f7755a921d07babc1c4d906836f918c76500be162ff69e6cefd23ce2c50a92001fd21c3ce8b9485a4f8b72d7a82e894b920709075aad975392f31728cb88b783b2ac12c992ee6adab7411ea37bced3c52bafa12441c26bc0588e9a8a3287760b3222afbf1704d3952a9dfc583488ce942a3eb82ee3c31d53da0bd7ddcb8d94f3fa555e9804456149e8046a70e005e6fe60d4821959104fd7a528850e6fcd275e7e15dc6e27e6da51ff387c4ee66493892a5df7f2d21f72a8e93a4988907db15d4ed3a416beeb5ef42ab83829dfc6825ff4356633ac1aef683815f0e8a3d7882e5bda1801db510abb29cc65e779ba5e45e3cf66512458003adbc88e66221b1463111471b16b5351907d0ab2d7ebe6bd043a0e350bf6740bbcaa2512e0dfbd9e6de1429b5c138b8098dc2d409fed220b424cbacb838c1685792dd00b6a05ac2a4b9c8b924d29b58359225c637dfc475c92668bb7e7c5edfc4b989c4c4478118d2eea3e81648b85bc743c9c72d3b6b0675c0b7d9a6eae3aaee55abd3efceb588061555c894db0bbbb3be7ae47b76ac1e6b95847e75ac4e32c60e4109bac4fb2a05c58d155e7a53f7006830bcbeb3b172fbc9e33f24696ef5c0e3d0b669023cb4de82ffccfae9f2800fbff85283f722e9fbbb776dff13f74ac599c8019fbdcef7df7dd77eccdced7094ce2c82d59a551d439c74de3dbf9f51fcfcc2cc495dfff362cecf59c2165e0f391e3f67b2fbc4be762", + "e4", + "2b", + "6c", + "84", + "bf", + "f8", + "50", + "73", + "d3", + "92", + "79", + "48", + "8b311622ae073090a96f94a75994dead764be8af6c388636641b0388134c61f40193b3fb60c7b8d031f6b0abb6c35d5756f47e986b0ca323f98e8ffb80f973036a1d5a1237ef9fb3d96c32858187e4f560361dbaa3fee07e74e36006834f3534c62becd9361b21f9a2c1b8f365a71e2da990fc9c2c279591ebcd2e7ba69a7e05138bab43d11bb5b20aef3ffed77f76f6155bac260a1bf75d8b8af7be91f714a8852d0a8d93146c12c60f39976d68c60130e79618a4c7b217e92d3440e0f12434b3342d5ba55391c1074d5c9f1a3b17036423e72cb865d9f8424e98a6d0c79734ad518fc42b74ed76a8fa14ff2148b6c105e94992de59493c4e705d325cc449b45b0639386a764e3551c6c2fcc3190c8a193e2c489eeeda744c81b251e6b46160e7bb07115a7a6e9883cf5c56015bd37403036398e66c516b9a93e0fd384c302aeb50963c8282106a15f61ce4bce5f82a6b0d945dd3389ee51cf8b311fe791824e163e8acb70bcbb67a14d5d971582cc464a7763ac550217b16033254a8899e701f4f77b497727a069a822805c0ef937d05e8bc1228067c2cd39cc81082e7584390dbf31c2a84cefa986963379f4f83c76e17ff3ac3c15997aeb667410e206732c7f5e26e44e67a61cb558b2b6a35e11ad9d62db4568ba668f64c3364fff83fffbb23f5402affafe8fccc7a5c0f0603df718728d5dd71bac1e530048dd8371441484c6ddcef82e16db45e7fc1cd011802d9eb6874d3bbb85c540de4f2e2e2699a100a0cd372eca73054cff963e564cef0ef44566ccff17c2ae6fb8910c80e10b1cad625edc64cc838da4ed8630f07ff492d7f8fbed76ae2a1faa98469da47915bbf82d6e1fc2b7ad36dcffa3209a624a98610677000cd7896c23c7697ae4bacbdd99c6bfabf5ed9359bba3592d10e83e0839dc400a993b5b4b2f62cd8838d0ab62eea77ce6b2fdb58308ec791c5e70b13d5ec4c94c9c4a4bd4d8c3feac09da531f4e0dc46b7ae2c583cae34908ed848aa108f0982c9eea419faebf8c5447d6bc0c01475891667b65e5197691caea771684fc98798e48f9d3ef62abfeb9d4d4e2fd1ac8b3aafcb342220f4fc2ec823893c43a6591598c2b428444ba6508be3948d418d2bab45136db0b52159a449840b17072a3fa59c4ad7819262b9a3b66c0749c7d0ee13a93eae8846b0b1d089b48e8f67ec29ac7c0841abb47c2c17b48b0578c56734bdb65867ccbcb5d1fa7148aa669c84c6e8ad37587d98ee43202a73799dcdfe8deb42e360a227988e8a04bb3295a8964f4ae85946e3a94fb33a136e147d18d64478eb584cbb2662b09c2464568efb83cf15cf995b6041255594b8b299da6b13ea688bf880228d63221331b22973f91659332e1d21f1164093dc39e72923dd8934ce1a0eaf1809fc95863214e0c9858b37b5166519a4042bbaa0569d58d112b5f743f8016a4edeecd401bcc5e0cb2594460a17db5819e3e2a76d00c3c9699892194e5c54cfdee0bd34d59d4d7107d0153ea4d06c7f82ce8f5bf782b6650d66cbc3c57b5d13a8479472af2a5897e9a46ddd94f977125bc30509dfc314b6e9302abc07f46f7692ab26f9330f60ec442c79010b8461c067eee8498e1ceffb30212df154a01d24f17c355e425f4bc8445931a0ee16f6080e83d157ca34b6ad55aa53e91b7aae915fc78d18cdfa5a8608cdbfa4426c392da6bd9a79d33ae4181b73c8cc349b7074273433eec85a38fe66f761fac72d", + "5cd569f8ba513dd3b6f4ded8470d3173aba13793e62a5a63ade94013e9138978139ab8b85aab33f2da92fc5fba28791f7f782506f4f793aab01819daa3dd8ff2121f2977f181b1b557754ed14f3cff703f51696cfa03f5dca947a7782d2c32bb17ddb7d4b74d604878bc39bbd7bd323bcf2a8e639dd0f12740f169e8e16e022dc596b9dbfa225bfa9e0647ac0d8b756edc1ec485cd621144e91d5d7387f1ca02a15bf28a8e7766aae64b6ae370c9a488230209675d139404f0e517f2e0d2d31737aa32e0b2de4acb2ff0c696def585557de65fad758cdab02aeb990d024445cdc5f92a479fda5619ed0bf60082b597d0c7e630ecb5cf7eb1d541b7ada094c1d969cf82bf83a31eaef30204cb871666e4ea956a5d4b54a4067ee8cb966d9c94d7cc67096e58d1c3ccfc91fdd278cbdccd6649675015b5d940704b309126807cefd4d5ab8a0ecb84be29bc7be07591de03ce042df59a268339283304dcf360a3b86a5da9099604c0f6b5355c476c22ca603428a53a816c1db3976768400bb67562c6d456ba6577ab7b34f8717b92b5653b91905ddb28c47bd8fd96b4160a5bdc959e9be8da36d3cc957345347551acb5cd8835ebaab8c010360dc911726a4282f1b91f4898c78340ca7661b52380bbbff7b74ded216233e19e126d06305e2d481e97741b608d870c60808b673cc47da76ff39d3a70e60463a9223b60e7c84418949899b4cde55a8a59aac192767ef8c2772334a91563b53b27a97842f0a0270daea123aea13827846d9d5f27f1ee9e75fa2350c81bc566e3642c7978ab46b84bd2b033a9d2f8b023a7e17b3d1e6158d118ff9b68aff228a6cc29aaa24a2a7d61e48aa4f63da4d35b29f608bb1f8544da2d3b7178ffb8cac4962b9d8ff04dafe67669df6d6e97dea38c1faf3e06323985d6ef4d62950b8551b2798e88e8ae22ae0bd28c2986ecb1f09f7dc3fc82a01fd4558c9868e3f82bd84865e7dfec371806440ccd4861b862bf2d67be2eef8d7c190c06fbaa004e72c008ced7300874a554be326a639c1a788bd5e60435dda34197fd73fcb31a15767986a859ff81629ce49a383d58a40685e12fb2f10e1311bea437dc72e858c5c2762938890ec254d3715a39195d4c711868b06167621d9b76d27126277375f8136c271efe15659c18f4035d6912590e9b9368439b5b57af001f5357300bfb51602c2e7385d56bb3a4d4ae3077db0aca255a24eb0f065dfcf17afdaed3eb4bd2e5e1dbf7846c572c6d86435759e93a0f8900b11c0ce17508b4280219533abbadb0ecbd1262807fdb3167b8d7b1a60e8dc3cd4c55517b1d874ae9145cfaeed48f6426e1754cabd201118177151a195001555db2dbccc3459335584043565a2e6a4d1fbac320f00cc8cd41d66d84aadd2dc6a857ba414ec0242f831226b2929278fd5ed7bb64f12f3d49458ca1f27aa69305b8eb56b6378147fc8b6cdff79b61dd1aacb35ec5956af607a3264091116aa0a1e6451ad57321164b5eab6d9a2b4ce7098e1c4b0f04d525a04bc4e5d6c17d478706e277f52c2a2e87bbdb304e51a89dbe7201fd90e42884490b57e48ac4269e746ec00c5847f0abc25048ab4e002861f6c613034662404bf883a43695251e46d30bb9f7af333c6f532960b791231ad7ccd10e34189052d69a1a0c030018a84aeeb311fc758d4bb4c1281c36ca3911c15338e8b0dc8b62349b129957d4be8171598355c98913c5b47541bea5a7b9afb9dd71e88118a8285d6327c1aceec7a3d0ac996c94f148c7314442fbd7e4be7a8c768ee28ce2d9acdb4c72f87c9f97bb185c78032299a7a2a8842a2e2561daa9a9a472cc482e2df4abeae99797fa40e1cc67d5a248bf2f110ee968f5f08635479b6f7a9ea7c1b1f32f4a5265ea92b83e99341a490a8bc8d95a0d5ac339de1864a4a4863b44470da512a3a6eb83b242105bc403a7bc582765c18aa287d5e6a348abf8862dce", + "4b85d946d4e88b60699e5ed764d82f85ce348581f23d296d3a1619fde2f012ffd6cbe2175a289d6bb1e991200b4ca3430359b530fdfdf9177fb09e821da1a7c1acffb05edebcb25ec4308d2df08d9fd498c3bc643da507eb60a25180c6d1dfaccc17e788832d70c2a404f5d1ba1d3830a36ba093f0ac603000fb75ae96fbe21cef03636acf8eef8d0b603ddef71837023bd9d2321d5a70366407d1bb75c1ce40d45124a6dc3dbdcab38e4f658b25dd005794ba2ce4bdcb17d4c06e74c56a8e1210bc5f783b69391d57ee183e6778412790f5f4ad0b8f6066bacb20d691b01c418a0705fbb8bcb8e0abd0f1079c93f24d373a65e3ad7727b8543d4bd2bb2a16042cb6c2b765ba4ae901aa6ef524c7a36248ec6145575828c5c717efe36ccca2cd8b7d20d6e403b14dc2763ff8bc1e983b9de6bfd2633c7ab0085d356f770c5a73ac08ca93683fed1a4ea271c74319cba7747b6e1fa620ddf7d3a88b77579dc8aa68b6329c87c3be6d9cb34a1120eebe00fd4e245d198102166ba07e9d49a91783cf15fd76ebb013ba76003cd6b7bea10b12da8701db8e33d576fc01d08bb87123ce76f02d584771daa517491b4fe9300016d780ca96a749f1e64cd98cac146f8fd1ea5c90e2c81e92703b67217539749fb35da59dfcee5d76d6accb628dd3ac4486655d1e645c0515b7747b4914d8b51b56a0eac8722dbb4607e1b93cac88aa1755f7195820d608bef14d0a52bee9f230aaf57419c31b2f4c6f3067392cc51860c5b2f60a1c6ef3a61fd80c15dcc615d816b9bad66c4e80219f216e6634a5531f5bd168aa8be250a91264cc13d468999c1435b5da08c5d18df559eb29057c05bc07d34792086a6a8e81459cdc566ba83092d19043de02a737c05337439ffeba40ed4ec89cac22d960567666c3fba1b00a42a3e98544132d90bf3eccad9e3ea51b77e096cd813185f9945b5bc7ac34bb52460c0bdaeb815b5a3493a91dba04d9dcf58d1cd2bca28bfab8eacc74b50510a4a2028ab3271269078207b149547422fcde4e673310e3d8c67812a5785d27778a42c490a8f4b5c1d696bf2d02705f97c13998bdce92348844a35abb253527d57e50042e7a9c14dd2559adb5b1995f655aa5a27b4bd76df7d08edbc0ac0afb5f99c57bd31527ecb5980ec56de8d13db085bfd337e6173d29491c1559f495447eb0c5590c768d730c903adce9c704f78e64606dce01c5e80aae385551158c22ab8074c7001bd898e9b356e310dc38318e4ef03a09f2e6417f36be9a4ea0834b55e8b61b664e240fa1cfe95b5b8e8f8dc69d07d63177529418a6023aba5db333441dd2b0a966319abc77d0958c675b398727ed1d765e7d673ac24e8f16da74b907ff635b4e75e2de91c636db5336303d2a4039dfdf692321d70719a6a7c13421fa0a84cff30bce7726d3fa9d8bb3f2c5da1776403d72988c6307d0ecace61b3047af4a24491267455c18af00a084d0f149a769a2ec33a10ad14ea9cf76b43910ebb28edc81cdbddaa123c64e193f78a20d262d517368d2de116db259431b4e510d5084e0722535007b9700d0366b8388035396209fc51bb1a550bdeb71cd5667a211ae16ddd1d731fdea04ed2d3ba825287917a11acf53b8f6cf62fd14dcdea9de416feb3cbf4f15aacef4a5cc9eaf65f6a4ccfe48cbec4b994386b61e1fcda3e6de615bb3623cdeb58dd31c0e3c661d0492442e8b34d501586a5513f5c21bf5d054688c2bc5312c4b5789c78694dc6d9ca15e4edde681c465e2769de5a6ca113a2f25d508b66a35cdade9a557cd3f19cb4b4f2ec113734f45cd93a79e461e4f4f3ca4d05328e4591b33a66da3d68911b35f51cbadd9b2f495922239f7b57a44c6d4d7691639898f54fb2ad52273d3866f6ba85fa75dc0f604f55cf7cb9e5c9627e63db5269e3ced6974f3f4a48754f714aa79d6c68c69dba87562c4dcafa8ad78dd574a56bcee6bf554bc", + "eeeb3457bcee23d57d95ea8ad76df8b686fa75da2b242b55ff6c59a9185e5be8e4cad74015cc02b8c6ac72dbf6", + "9b", + "c0", + "42", + "02", + "ab", + "be", + "06", + "6a", + "c2", + "5c", + "7385997ab904b3f6cb9ce620cf1490bcf6ddf52ca974e6d611b6f05656afc2f664799d54d98e6c5a27d6f62243eb936ddc9d3ee4ca69358ead56977e081f61bc3afe82b2212b3da5104fcd3d0d3f4f9f7a3a993c23f1b4f81396bc6d62d7a9e2901b03828991065f0b21c146f86a35223df7f566889ca9df6888c84a7c63280d34c6544ba339027a6344a3374940f7aa46f9bc493da5329e9af7b406f1f4694f6f0ecf487a2a153c79dbc4ae3784436e0c0826461afa75132ab9f4d56a2ab9f4f5665472e9371a52c9a5af5152c9c5544ba339955c8c68f42671e8304d14170ddebbf81f036bf3856a00c599c3648f9f3c1b393dfcf3394bf5c529ffa133843f173cb9c793fd014fe8f3845e4f293ee0c97d4f293ee4c90397275c8804b5f6114f1eaab55ff2e40b51bbe70ae2d5ea3dd1a84bb57ecf972e2f381c8a562c6d95d59316d632c02677ef816fb29d671838cf7314e6f33403ff798e41043c4791024f330882e71864c17314718866192422b20c4211598a5c0e5fa9b28c8e140c033c5e301cbe29189e61100ccf5104c3d30c82e13906c1f01c45303ccd20189e63100ccf5104239a65108cc832084664dd279861bf124c323f52300cf078c170f8a660788641303c47110c4f330886e71804c37314c1f0348360788e41303c47118c6896413022cb201891a50ac6c190cd87c579de67051f8ef9de7efc4951ab9af811a8292f91c9eba51a2fcdaed21d8b09be122a1ec539db2916b7585661bb750e433931a6f25ae9eae1bd41eab8484a9605ffe46533629da6eb01eb2c518e57a799345920c4bd94263a48d59161520315240a447c6df5a383e905be6a15a7895164e938ab74196bbdea233898e3c5c3461ed29c261759b28c94a7ed31e2752684228a2188410208aa088096a5fc3794acd95d97a3dca6a504b30d052576cff338b2735c4f6cb29c62151ca7386b861bb06aaca5a56bce722e70c61af950b356a34a652f455c71972fb21bb43e0bc2f7bad24b69a2a0581495d92ef274cda7c515c5af528ce8a834aa9ca6f6d3d2baf2cb893a56210d913e25e51d21ab26520ea06115a93a5abaa62e90d5d8031ac4b053718059e4e1922d68582974ad59908aa6fa740d5d920313aa490a0281a2ff75f15afd9b3c1745f54e509756345d676f155f23d8db2c2f58a922d01829f0e88cacd148dc34616af252eb403237e54e52a111fd84592b5c0b3a78d8c7f22c7a4f85fa568fa7ae7c1cd1e568e9965003ad5ba36557ab89a7bdc3dc38571b47615e1b24360d049168b2c54d71fcb728ed1d28edeba53d5eda13a5fd03a57b7a699f97f645e9de81d27dbd748f97ee89d278eeed50d35dfca363b9c43f13e919374b5914d0ae1117545f7fdbbc6b03376b3624aa33e8ebde29d30c24c217ffd85ea7bbab16edd8ea04a4d46b747417d5dd89b5be0f5e7d9b31bcf9f5fdbaf0d6abde800b1ffad55b5f6cd9a8212a34ea43c42f728f16cfd8f214dc95a91f4d6530b9594e2c86d42fa6b22ca3599aefe4286fa6f23ca789806ea449cfa6c234bd5994f6307167228807ad0289aaa65427ccc152c47998102d87ce507821997b75410b7fe83dae024c6516bf9ed1aa406b40952f1564055b43ca0c90aae6b0b84f5edae6a6e145f6781cab79738cd8c8ae8e63e393bea11c26713646d7fa31e476a59fb37aca50ef33ba6cbeb0296c5aa712ad716862c43e9f51231af8d574e92844d5344847443737d9e4e82844eaa4c750c4e1af4caf94bc2f5a160b6980ac", + "7e2a5a3d846cb8284b0e25a9bfb4d1b5d937438a6d81c7c59f6274f6cb20fc99be7e0760dd9fc93c25d62f37dd9f5250afb4fba7cd764e56dd5fa6eb55b9ee3e0b5618449524ddefe23cb07e0e5645f79b3c8d23f6f89c24b7042763d60f644dba5fe7719074a5e841e918bf3790b4c5de087d616126cb34c5bbb792bb605b5f42276521878012c01e839b1bed6934af16da5085acd15d97acde73a96314a52395eba9f2390c7e7bad2196a72a1284a174288d1fa6fc4c8cfe003227a5bc3f46af9976a1d355974c2b5785372e18c08f39cbf75fb81646e579b4d72a87dffb67dd3acff6f4b3f155f6a05914cf502ebc6e230e4a512841d9c2ef36a2a31440b124bee8750d315393666ccba2df35c651192fe75d0cbaa6e82af30dc3ce62d835445d35ae94dd63eba15d4031d032c032423ba418442d26aa11dae40e31b0b72bc55f639c6b7d62a78ad2aa843b2d57a6602fa52625adede262ceb02a2413e3dd9d91b8bc4d8bfd32c4f14cead827be5062bed34bbbfde6e0e160712776e33c45e3262d6083c62a230c9ed44e57110600b65dcf3591c86856ac9e815630eaf53740b9502d35915f2f64ba0909b28d37472be9cdeb73d46cfdb61c3557bd05c919d4d72f0b41456416ac1359e5f0fa8e30c84c1b948da807bdd0987e41da667a2fdf5fa1990dfd8894bad9aedcd592ad93847d89c970710fbbb95491dfa4614f0cbb96777777fc3a976eb363cbfd4dfa0ed56f3b243ee05e2e65affbe8d29437e2e413de795f8d5cc3e1e0a2f7319844d01b4d4f9719081267deab7091e6bfb2107faaf1faad75eaa5fedca4f5f172bcf66bf02fe93df89f5df63db7472cb7fb593475dd7e7426cbbef9059d63b1547614bf5050df718eea27bc1074686dfc060ed8c2643b4f57f8e988cf2dfcaf4b9fdcaedda7bfcf2627c0d6f4d3cf41a8038c1809e403fe12f8919cf52b47dd6f5ceb261cc9f6db849b9f4631cd7d559046f463c75081e4b2098763a0e8c0a932546eb46c7e00457c5c2f27f855247b1914f20db05a2e3fa0a278df97b38bd9453b4251e4b86b8b943e43bfd9466f7d6b7c444677246dcffac2baa05ea4541373f1f07f7ba055d63f93bf8830a41767993a6c51cbb53a0500e6ebfdb6161d7f17b499f1c881ac3883b1ccb599937f4de961bd37b5f5906ff2fbbdd899eb2fd43811e5b3264cf14cfc894811ea450d01268396a25a0c5f1b98052eb8d98c98a0f97cc5d0618dcc13530243b5bf4ab770bed1a7ad7a091842008c44f23ce900eed66395cd4f45182615b2f30b98e802eea4d9b3eb49e9965d1c5c4f179124c2bead6ed3138c8d14e4bac95834e0b4eb037b4dad95d0e007e0e2e51c3fd2760ed342523ac5edfc8caede488744ad550a0ccd48500a9bead537425f64f5b6aa725caa19a87a0fadf557c06ab2957be2e9399002ac14f91b98297e13bc967860f1e7fecee26a3da561120cddc4a855853988b8bd871f8ad07bc8fad469d428b1a4f52880fa7ed02e35f965607f6fd8cb360df6c7f43b05744f23009dc9d96d5a34b14de88f9d8b4bbf21759eda2863b32fcad27b658d899cba3e2e53f2ef5ad273ad3bdb964f505167faf7b3d0a51257d9a9f13336eb28ba2fc92a49bb406f10a6dd17eb308e028b6592ee8b784ad8acdd0280b4fb0d7917fcfb9a56cc129ec625ee2e054bebdf09278e653c4bd7794c7220eaae3e3e2dcf36bea8a51664f602d421a16bee867b98f007fc52bafa281bdddb207f6ce0fdd93e708229ba41313da9a74fe7a7787c6d96ea2342446457aa9eea1cf02dab7908e2c4173c7e341643577585b9e680e1597e7df9ebacba25fc8f7f9cf05873bc5db4fece50dbe706181c9d42d387fab319bcace5f885458282e019cf7b89a7f3f9aa092db71bd372162d480f5c559d722791ce48025f5afd9247454a7527b5ed29cd6c7e8fc9b07dd5721db391a6aa113af220492a22f4", + "8b64b51632f155c7e907aeb84b9d3dea7b0dadc21a08ce1c559fae4a03f631850768132dd9fac58a2389aa6daf722d309b954a9715ab9555f7143497334fa8ae71d8f0d89216bd1ad27878fa889edd8ed40a5abefa7de1e084a7d7bcb0f95e7cf5353eb2d338d4ee8cf6872762161758cb02c37b9b46cc1616eb2996325c717eb0373dbcab9ad05a3229d2a96f7ae211ef656efb2c09dfec3a9a25f75564978bf572aaed3caa33347988e23d4ef227b4ee596d82c88319bd31f274720d223cce1a886f68b0f588da1fa24f781afdaf8f2f2f3f3f330e1ebd62d2f685526f04b59de9b39407e8a6daca43f6fa04e432ceaaa623b5bc95b896eed4b810fd30629ab1088a5a0fd9e4459c8e953e9f83cf92316f33e1d44aa07847a6052b9cb519beda8d8179c37ef7c7e73ff8afb74ffbd3bf6cd6e107370e9effe486dfa4b72f7a512fda0e7a2fb783db7019debe7cf7f5ddcb67971fa26518df3c8fb2d7cf7f4a7ffcf966fbc3f3a7fd9bf869fafa2fc92a78fee7cb9b77376ef87c0e30afb3d77f8d9e4d7b7348fb7afef2d9d7db1fe8cfcdfcf53229a6dfb8f18dffc3bbbfe1cff6e6cb6ffe9cce6f9e7d3dfff1f9d345f4fd7cfe1af25fbdfaf6eee69bd72ffff4aceffde9e7af7b2fdefd7973f3cdb71f5ebcfbb607bfb7d367aefbe2dd2ffd9b6ffebcfee155f2f2e52ba8e7d5a2f821767d12dfdcfe3877ff27e2bcf96673f7b7bffe94de7c0ff4bd7701e7d3f4e5bb9f7cf8b979f93c8d6fbe7f9d4dbfbfbbbc590e6ea7cb5fe2171ffa3f3c7b77771bf65eaf7e9c5f5db5af8f6997f4cbcb63765f9da4615adfb4b96ab10fcf297b2c67fa2a365d77c071e258d8cc086abc8aa1f5dbde0f5ecb6f603ae5767ee53bbdeae7c342e503e807afd96ffd5039eb9d6de3f7c8f8b9765ea6b95976efedfbbc886a307cfc7bca1dfeca5148cb1c3970d43dfbd2c9c9fb3ebea05e27cc85a27eaebde5be7e7190a26ffa5e9ef21956f3278d94af0dca8c3be1634d477cf8ec887de18ff9de55e3bb5127019ff63dad23e09adf95d23eda7ddcc79e0e8a032c8c233687f56f9f514363fc3a31946adb60fe986de96ea05611b4d5d196c12b69cd669ec083620d4c9beea636195b524577988a0786f2d5d5a474ebc04023cb688d4c30512b651be896724d2d68e26ecd37b54ac72e0702c8fad9dade0361186ded68d34913c4618edca3a712296d19551fbb1fe21efed5700719d9aadcc848752d948d1d62c230c0a959336e90ef6fd4412b9fb1153bb671d9d83c6f7c858763672b804a8d67f536eeed5db5bc036fa62aae03f5262424d60066b3883ce9589d0c54f911f43b2286cf7e980f70c8dbcd523cbd32c332b5ef4ca9fc3a8a6f9b6b31d55afa25dd5e6daeb1d3f4b35d03534be4a258ef667fe8a71eca34df5abb47224d5e97b5d4156fcbb0e46d75c4a2b7d5e95a7cdddbaad6b2bb165bc7b6ea056328f23562b59ea11658df2ed3773196ad1119927ea6f7bf5b9d09a773ff486b01f559ad2fa4863025b3e816dda44a956ef4b2b8f83494bf8a9bddaeca459c47c51b09a7f099c06fab4ad18727e77449ebfa113ea298e91376976b9acfa13ff217a0ac458617424741026331cda59a7dd5f9b9c4238c050cfed6d72f7f04cd035124a9f597344fa20e05cce8547541f2ab0e42fc98a778d5ab966727e93cb58b3cbceae01dc1c5f8fc1c6a9e6ef9261ebde27716dca2935e9c87297efbc7f7471bf871b2d59c234b0b741af0daeb3cc0a59983d870339236ec6d94cefdb7a294f32e53d1157f5f0739390d192bd3409500038b30c84ec45615a308af1f3d7a24c9265805c91634bfb0a8e3d599a7e93c21556ac78aa3ab4efd7a5d4bb608f3382b7931ec77fceb55e77825b9046849fa887f3a605b8ace584b8574dc5f5daf4ac8eafcf2b57dd11bf58697177ddbeb2880fbae8a8d7f5dcb889147005ad8d7d0d21860000aa885", + "2af9b5ac9d6e1320277f5f93821256613280b5b48b5189", + "da", + "8e", + "08", + "a8", + "96", + "ff", + "4c", + "3b84a4e9d6e31f992d3c831e8010d3adf52d9368a7816effe8d0bbfc563f437fa7e212627972ae085f96d613cd46a102e00308e2fa5103841e96843188e45665873a380d96552560df1fb24e51db5afbd91f3a385c752e7c574e6543d355c7f3474a3a5094ae213d2745065d1efc3c999e734e90ca0dbd41c7b656440bcb352cbc6b49bc60623d2933bb7eb588c1e41556b0aaf5c179729e1d43909c8772b916fdf9d13142f43f4a88f4ce667a9a00fd0e99df699a1d2d2cf001e46466dd8e520c5a3faac7db109d465d470e4a1d4d16fbd8cc6135a475e8f539cbacaff64466f7183066eaea4573fea9f2ac3edb6d476499fe2b3b675f673c2305b7b7013fbdcc15577bfe7b745fe635299dd73735886d85ca545274789ff2552749efd05b475466be808ca0e2ab8eebf40b45299fc2c862dd05c97b8b8046ff416ae5c2ffa7aa0fe3f169bad3e495d01e8917f4fedb262f8ed52f56c75baf6500180c8d1ad4f73f4281cced60c73e3eba216d23d9bfae212dca79623b7affc2767c4a859fa6e97bb28aee692e3aade71c947e5447102f085fa57cb6dd6992c1cb5d3fd25a44736bfa30994db19ed0ef8a5c3ffaffbaae9ed393bc0000" + ], + "rawHeaders": [ + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "Access-Control-Allow-Credentials", + "true", + "Cache-Control", + "max-age=60, public, must-revalidate", + "Content-Type", + "text/html; charset=utf-8", + "Accept-Ranges", + "bytes", + "Access-Control-Allow-Origin", + "*", + "Content-Encoding", + "gzip", + "X-Cloud-Trace-Context", + "2fcd0af1e452b0835a6185cd28571e9e", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "1617us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Vary", + "Accept-Encoding", + "Date", + "Wed, 22 Aug 2018 13:11:05 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1270", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wlgl65-v6:9863,wamg7:9838,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1270,wamg7:9838,wlgl65-v6:9863", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1270,wamg7:9838,/bns/wa/borg/wa/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/14,wlgl65-v6:9863", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Response-Body-Transformations", + "chunked", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close", + "Transfer-Encoding", + "chunked" + ] + }, + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/json/bookend.json?__amp_source_origin=https%3A%2F%2Fampbyexample.com", + "body": "", + "status": 200, + "response": { + "bookendVersion": "v1.0", + "shareProviders": [ + "email", + "twitter", + "tumblr", + { + "provider": "facebook", + "app_id": "254325784911610" + } + ], + "components": [ + { + "type": "heading", + "text": "Introduction" + }, + { + "type": "small", + "title": " AMP Story Hello World", + "url": "/stories/introduction/amp_story_hello_world/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "Features" + }, + { + "type": "small", + "title": "Animations", + "url": "/stories/features/animations/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "small", + "title": "Layouts", + "url": "/stories/features/layouts/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "small", + "title": "Media", + "url": "/stories/features/media/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "Monetization" + }, + { + "type": "small", + "title": "DoubleClick", + "url": "/stories/monetization/doubleclick/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "small", + "title": "Publisher Served", + "url": "/stories/monetization/publisher_served/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "Visual Effects" + }, + { + "type": "small", + "title": "Ken Burns", + "url": "/stories/visual_effects/ken_burns/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "User Consent" + }, + { + "type": "small", + "title": "Story User Consent", + "url": "/stories/user_consent/story_user_consent/", + "image": "/favicons/android-chrome-256x256.png" + } + ] + }, + "rawHeaders": [ + "Access-Control-Allow-Origin", + "https://ampbyexample-com.cdn.ampproject.org", + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "Amp-Access-Control-Allow-Source-Origin", + "https://ampbyexample.com", + "Cache-Control", + "max-age=60, public, must-revalidate", + "Content-Type", + "application/json", + "Accept-Ranges", + "bytes", + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Access-Control-Allow-Credentials", + "true", + "Access-Control-Expose-Headers", + "AMP-Access-Control-Allow-Source-Origin", + "X-Cloud-Trace-Context", + "fc0a52d84fd7ee758dad7536e3e1737e", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "1540us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Date", + "Wed, 22 Aug 2018 13:11:06 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/262", + "Content-Length", + "1907", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wafu79-v6:9850,wamg7:9838,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/262,wamg7:9838,wafu79-v6:9850", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/262,wamg7:9838,/bns/wa/borg/wa/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/14,wafu79-v6:9850", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/bookendcache2.json b/amp-story/linter/tests/network/bookendcache2.json new file mode 100644 index 0000000..f3e5c38 --- /dev/null +++ b/amp-story/linter/tests/network/bookendcache2.json @@ -0,0 +1,282 @@ +[ + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/stories/introduction/amp_story_hello_world/preview/embed/", + "body": "", + "status": 200, + "response": [ + "1f", + "8b", + "08", + "00", + "00", + "00", + "00", + "00", + "02", + "ff", + "d5", + "7d", + "5d", + "97", + "db", + "36", + "b2e0bb7f054739d97127229ba43e5a2db9fb26763edc67ed4c2671eecc38c7c78722218936257248aa5bb2aeced9877ddcb7fb76cfbeec5f9b5fb255f8200110544b6dcf24d776bb49a0502854150a05a0003ef9439486e53623d6a25c26d78f9ee02feb1ffff5ffae1f59d6930509227c607f9e2c491958e122c80b525e75d6e5cc1e7558f69322cce3acb48262bb0aad220faf3a8bb2cc8af1f97918ad9c60996579fa8e84a593e6f3f35bd7795774ae9f9cb3522614e1ba28d3a54d12b2242ba80c30d890926f3b47603fafa06dcf79585db77144d2a3eba2d0b6eb78a6bacab84cc8f5cf404e4c0a2b5e595fbffcd1b2ade7244952eb2f699e444fce19cca39acbab6049ae3ab731b9cbd2bcec5861ba2a29717771542eae22721b87c4a62fdd65bc8a97eba55d844142aebc2ebc967190887721a2245ebdb772925c75c26095ae62c8ed588b9cccae3ae705a3ee3c5e95791aadc3324e57d8b2b7948b6f1748ebdb3ba4f5bc9278b94d8885ad9fa67142f22c094a723d4da3edcebe23d3f7716907405780a8c63693489097d6a8b08a9264c563af4b56d199e5169667add27c1924d6342d17137b997e7870d1e281251f546aff9568e97bb29de520b2c2aa8bef6679badcddc6453c8d93b8dc8e17711491d5be4ce544fa98903de0c2767f1a44c5a7c1937e12349f0007f428d4b6eb27ab9477add3d40fd49de87ac5d30a3d497dadab3eafea7e74a40d095641b22de3b038da8e5425da6c89641b107e9ea6f384d8611243a5761cd941164bb68265d7641c6bfce2150829010342723433d0efdf93fce846184bb735e87e2686619a47208ee399284a3cb8ce98eaebf10da6e087cd3f35fa38066c65c36f3dfe312768e4cf60404088e9d6fa76033813528d09b2cc23c250537654627eb588615c29acc04ae25b62650ca595ceac7241acfff159ef7262ae9e6515b43ec77a41827c652dd23bab4cad3027d09fac6dbacead599c17658dc1e958e7d0079efcc1b6ad9fc3055906c80c6b19e4efd799354b73eb7baa775f5ab62dc88f4bb204ce65579d15e56c45fbc97ce93451fe4eb8d2240c0cc95c6eac5025403ddd12d61e274c97e7f1727e5ea4210cda4eb69a7790bb5c49d13503a5ccb204c66b3a2a27d197ef0a6829aad78eaa58e72b5ac3a6ec8c2d5a0754515482e9743910a24288a7d08828ccd7cbe98bb8284536528defdfb28e0080bfeeb8e7571745801b00e485202b4b8b98327e6c795522e282845de53976be8a23419c91019f090fe433932752550798a8fe00aa1b399f67efe9ef7dd73a9172ff23283fc5733234c3ac825a83de3cc2c7daaeb0bef7ea2e2e4b925bcf823cb2a20034afee6fcc5c940c621c0284a486c57a099d75db31030357649dfd0ada8273821668da23d25c2e5090693025ab0f2d25a859fb241640c5fb3bb3022a710fb704add8c64122cf0b1a3c624af2a78cacaceff3205be82a82268ae4e5f6aa339b8ec1c0bc8d651df107fd9e3fb818f52f3d6fe8b9d4e4ebe5d2f92710661b62ecb7355e7019e3b01dfaa1ec6d41b7ce9363909dd0f5b9de9db7d5f83b51de16ead024bcd506ee23c4c88536ced6d3242e16247a5bc60a0edff546b63bb2bdfe2b6f38f6fbe3dec8b9ec5fbc3e886d9946f12c3e15593df95d82833f2330f089b9af4870f8b02ac1e2b84bec325d870b3b0ea90f1a7f20c5556770b1195c541866c12de616e73abc4de1444f3e02efd0dd0cdd23f052b813f05ef89b0bff08bc14ee14bcc3cdc5f018bc0877025ecfeb6fe0e708cc1cf214dcbebb819f637033c85370f7819afe517433c853700ffc0dfc1c839b419e827b042d1d1dc5130669189d18e83285c93bc129384c46333b0cb260aa0c115b521c5310e690e5bab0a7416ed309b884619a04e17bbbcc835591ac4374568fc0a78f544d9fa26613630d73bde9d0724e070bce2bdf1f6de0a7c9ab300d8ad2e6d906063d803560e7616619a689e2627d36a37f0ccde69304fbb0b1561abb0d5611d9d825d212ac7149714eca66e338d8344fef60626f1f309a87b9d7f3373d830ef3079b663715f7304e6fb8f10c5648e0a4d94d9cc522cdcb705d5a0c794b6907fed3e558c8ac7e05327d7694809ae56e34bfa5ae7d5994a82b9a956845066566f1dc88894b8c41381be6c99b4d025d9a5b673677a796248a83abce6379b1796cf57c37db9c59a00e96c8599078be28c7567f54678945380e92", + "c51b92d839520b33c5b3c38646a10354c2ddf4ef1bedfe55a4fb27913eecbb9bcbfb06908f257d301cfd9348f7dccb7b06ede368bf18b4d13e1c5efc1368bf18e0b87d79cfe07a14ed7dafdf46fb456f5865e1446055b265632b81a402ac3b39a261bd931ae679231f061777f41bb50cf7a2f2202e3f7dc3fc3e34cceb7f8a865d48fd416b98e7fafd8f97d969e6eba23fda60bdbf55cb4e90d9890d1b62c3dcdfac61a788ec34fbe1f52f871bdffdedb4f104999dd8b2410f5ba619105a5e2c73ccc085289c39fadf7188eb1cace1d1aab033802365b8c09508a86845425c81cad3a200eae7f14ade6866346948d97e54161774fd242c8a7f9b05cb38d95eddac90f03409cae03f5e222cc9a17d1deea8a1ff5f2c08299b7bcf6cfb46c428388be45db18be2224b82ed789aa4e1fb49164451bc9a8fdd0975a3c79ff57abd3d0504af69896bdd5df6f6f7755a921d07babc1c4d906836f918c76500be162ff69e6cefd23ce2c50a92001fd21c3ce8b9485a4f8b72d7a82e894b920709075aad975392f31728cb88b783b2ac12c992ee6adab7411ea37bced3c52bafa12441c26bc0588e9a8a3287760b3222afbf1704d3952a9dfc583488ce942a3eb82ee3c31d53da0bd7ddcb8d94f3fa555e9804456149e8046a70e005e6fe60d4821959104fd7a528850e6fcd275e7e15dc6e27e6da51ff387c4ee66493892a5df7f2d21f72a8e93a4988907db15d4ed3a416beeb5ef42ab83829dfc6825ff4356633ac1aef683815f0e8a3d7882e5bda1801db510abb29cc65e779ba5e45e3cf66512458003adbc88e66221b1463111471b16b5351907d0ab2d7ebe6bd043a0e350bf6740bbcaa2512e0dfbd9e6de1429b5c138b8098dc2d409fed220b424cbacb838c1685792dd00b6a05ac2a4b9c8b924d29b58359225c637dfc475c92668bb7e7c5edfc4b989c4c4478118d2eea3e81648b85bc743c9c72d3b6b0675c0b7d9a6eae3aaee55abd3efceb588061555c894db0bbbb3be7ae47b76ac1e6b95847e75ac4e32c60e4109bac4fb2a05c58d155e7a53f7006830bcbeb3b172fbc9e33f24696ef5c0e3d0b669023cb4de82ffccfae9f2800fbff85283f722e9fbbb776dff13f74ac599c8019fbdcef7df7dd77eccdced7094ce2c82d59a551d439c74de3dbf9f51fcfcc2cc495dfff362cecf59c2165e0f391e3f67b2fbc4be762", + "e4", + "2b", + "6c", + "84", + "bf", + "f8", + "50", + "73", + "d3", + "92", + "79", + "48", + "8b311622ae073090a96f94a75994dead764be8af6c388636641b0388134c61f40193b3fb60c7b8d031f6b0abb6c35d5756f47e986b0ca323f98e8ffb80f973036a1d5a1237ef9fb3d96c32858187e4f560361dbaa3fee07e74e36006834f3534c62becd9361b21f9a2c1b8f365a71e2da990fc9c2c279591ebcd2e7ba69a7e05138bab43d11bb5b20aef3ffed77f76f6155bac260a1bf75d8b8af7be91f714a8852d0a8d93146c12c60f39976d68c60130e79618a4c7b217e92d3440e0f12434b3342d5ba55391c1074d5c9f1a3b17036423e72cb865d9f8424e98a6d0c79734ad518fc42b74ed76a8fa14ff2148b6c105e94992de59493c4e705d325cc449b45b0639386a764e3551c6c2fcc3190c8a193e2c489eeeda744c81b251e6b46160e7bb07115a7a6e9883cf5c56015bd37403036398e66c516b9a93e0fd384c302aeb50963c8282106a15f61ce4bce5f82a6b0d945dd3389ee51cf8b311fe791824e163e8acb70bcbb67a14d5d971582cc464a7763ac550217b16033254a8899e701f4f77b497727a069a822805c0ef937d05e8bc1228067c2cd39cc81082e7584390dbf31c2a84cefa986963379f4f83c76e17ff3ac3c15997aeb667410e206732c7f5e26e44e67a61cb558b2b6a35e11ad9d62db4568ba668f64c3364fff83fffbb23f5402affafe8fccc7a5c0f0603df718728d5dd71bac1e530048dd8371441484c6ddcef82e16db45e7fc1cd011802d9eb6874d3bbb85c540de4f2e2e2699a100a0cd372eca73054cff963e564cef0ef44566ccff17c2ae6fb8910c80e10b1cad625edc64cc838da4ed8630f07ff492d7f8fbed76ae2a1faa98469da47915bbf82d6e1fc2b7ad36dcffa3209a624a98610677000cd7896c23c7697ae4bacbdd99c6bfabf5ed9359bba3592d10e83e0839dc400a993b5b4b2f62cd8838d0ab62eea77ce6b2fdb58308ec791c5e70b13d5ec4c94c9c4a4bd4d8c3feac09da531f4e0dc46b7ae2c583cae34908ed848aa108f0982c9eea419faebf8c5447d6bc0c01475891667b65e5197691caea771684fc98798e48f9d3ef62abfeb9d4d4e2fd1ac8b3aafcb342220f4fc2ec823893c43a6591598c2b428444ba6508be3948d418d2bab45136db0b52159a449840b17072a3fa59c4ad7819262b9a3b66c0749c7d0ee13a93eae8846b0b1d089b48e8f67ec29ac7c0841abb47c2c17b48b0578c56734bdb65867ccbcb5d1fa7148aa669c84c6e8ad37587d98ee43202a73799dcdfe8deb42e360a227988e8a04bb3295a8964f4ae85946e3a94fb33a136e147d18d64478eb584cbb2662b09c2464568efb83cf15cf995b6041255594b8b299da6b13ea688bf880228d63221331b22973f91659332e1d21f1164093dc39e72923dd8934ce1a0eaf1809fc95863214e0c9858b37b5166519a4042bbaa0569d58d112b5f743f8016a4edeecd401bcc5e0cb2594460a17db5819e3e2a76d00c3c9699892194e5c54cfdee0bd34d59d4d7107d0153ea4d06c7f82ce8f5bf782b6650d66cbc3c57b5d13a8479472af2a5897e9a46ddd94f977125bc30509dfc314b6e9302abc07f46f7692ab26f9330f60ec442c79010b8461c067eee8498e1ceffb30212df154a01d24f17c355e425f4bc8445931a0ee16f6080e83d157ca34b6ad55aa53e91b7aae915fc78d18cdfa5a8608cdbfa4426c392da6bd9a79d33ae4181b73c8cc349b7074273433eec85a38fe66f761fac72d", + "5cd569f8ba513dd3b6f4ded8470d3173aba13793e62a5a63ade94013e9138978139ab8b85aab33f2da92fc5fba28791f7f782506f4f793aab01819daa3dd8ff2121f2977f181b1b557754ed14f3cff703f51696cfa03f5dca947a7782d2c32bb17ddb7d4b74d604878bc39bbd7bd323bcf2a8e639dd0f12740f169e8e16e022dc596b9dbfa225bfa9e0647ac0d8b756edc1ec485cd621144e91d5d7387f1ca02a15bf28a8e7766aae64b6ae370c9a488230209675d139404f0e517f2e0d2d31737aa32e0b2de4acb2ff0c696def585557de65fad758cdab02aeb990d024445cdc5f92a479fda5619ed0bf60082b597d0c7e630ecb5cf7eb1d541b7ada094c1d969cf82bf83a31eaef30204cb871666e4ea956a5d4b54a4067ee8cb966d9c94d7cc67096e58d1c3ccfc91fdd278cbdccd6649675015b5d940704b309126807cefd4d5ab8a0ecb84be29bc7be07591de03ce042df59a268339283304dcf360a3b86a5da9099604c0f6b5355c476c22ca603428a53a816c1db3976768400bb67562c6d456ba6577ab7b34f8717b92b5653b91905ddb28c47bd8fd96b4160a5bdc959e9be8da36d3cc957345347551acb5cd8835ebaab8c010360dc911726a4282f1b91f4898c78340ca7661b52380bbbff7b74ded216233e19e126d06305e2d481e97741b608d870c60808b673cc47da76ff39d3a70e60463a9223b60e7c84418949899b4cde55a8a59aac192767ef8c2772334a91563b53b27a97842f0a0270daea123aea13827846d9d5f27f1ee9e75fa2350c81bc566e3642c7978ab46b84bd2b033a9d2f8b023a7e17b3d1e6158d118ff9b68aff228a6cc29aaa24a2a7d61e48aa4f63da4d35b29f608bb1f8544da2d3b7178ffb8cac4962b9d8ff04dafe67669df6d6e97dea38c1faf3e06323985d6ef4d62950b8551b2798e88e8ae22ae0bd28c2986ecb1f09f7dc3fc82a01fd4558c9868e3f82bd84865e7dfec371806440ccd4861b862bf2d67be2eef8d7c190c06fbaa004e72c008ced7300874a554be326a639c1a788bd5e60435dda34197fd73fcb31a15767986a859ff81629ce49a383d58a40685e12fb2f10e1311bea437dc72e858c5c2762938890ec254d3715a39195d4c711868b06167621d9b76d27126277375f8136c271efe15659c18f4035d6912590e9b9368439b5b57af001f5357300bfb51602c2e7385d56bb3a4d4ae3077db0aca255a24eb0f065dfcf17afdaed3eb4bd2e5e1dbf7846c572c6d86435759e93a0f8900b11c0ce17508b4280219533abbadb0ecbd1262807fdb3167b8d7b1a60e8dc3cd4c55517b1d874ae9145cfaeed48f6426e1754cabd201118177151a195001555db2dbccc3459335584043565a2e6a4d1fbac320f00cc8cd41d66d84aadd2dc6a857ba414ec0242f831226b2929278fd5ed7bb64f12f3d49458ca1f27aa69305b8eb56b6378147fc8b6cdff79b61dd1aacb35ec5956af607a3264091116aa0a1e6451ad57321164b5eab6d9a2b4ce7098e1c4b0f04d525a04bc4e5d6c17d478706e277f52c2a2e87bbdb304e51a89dbe7201fd90e42884490b57e48ac4269e746ec00c5847f0abc25048ab4e002861f6c613034662404bf883a43695251e46d30bb9f7af333c6f532960b791231ad7ccd10e34189052d69a1a0c030018a84aeeb311fc758d4bb4c1281c36ca3911c15338e8b0dc8b62349b129957d4be8171598355c98913c5b47541bea5a7b9afb9dd71e88118a8285d6327c1aceec7a3d0ac996c94f148c7314442fbd7e4be7a8c768ee28ce2d9acdb4c72f87c9f97bb185c78032299a7a2a8842a2e2561daa9a9a472cc482e2df4abeae99797fa40e1cc67d5a248bf2f110ee968f5f08635479b6f7a9ea7c1b1f32f4a5265ea92b83e99341a490a8bc8d95a0d5ac339de1864a4a4863b44470da512a3a6eb83b242105bc403a7bc582765c18aa287d5e6a348abf8862dce", + "4b85d946d4e88b60699e5ed764d82f85ce348581f23d296d3a1619fde2f012ffd6cbe2175a289d6bb1e991200b4ca3430359b530fdfdf9177fb09e821da1a7c1acffb05edebcb25ec4308d2df08d9fd498c3bc643da507eb60a25180c6d1dfaccc17e788832d70c2a404f5d1ba1d3830a36ba093f0ac603000fb75ae96fbe21cef03636acf8eef8d0b603ddef71837023bd9d2321d5a70366407d1bb75c1ce40d45124a6dc3dbdcab38e4f658b25dd005794ba2ce4bdcb17d4c06e74c56a8e1210bc5f783b69391d57ee183e6778412790f5f4ad0b8f6066bacb20d691b01c418a0705fbb8bcb8e0abd0f1079c93f24d373a65e3ad7727b8543d4bd2bb2a16042cb6c2b765ba4ae901aa6ef524c7a36248ec6145575828c5c717efe36ccca2cd8b7d20d6e403b14dc2763ff8bc1e983b9de6bfd2633c7ab0085d356f770c5a73ac08ca93683fed1a4ea271c74319cba7747b6e1fa620ddf7d3a88b77579dc8aa68b6329c87c3be6d9cb34a1120eebe00fd4e245d198102166ba07e9d49a91783cf15fd76ebb013ba76003cd6b7bea10b12da8701db8e33d576fc01d08bb87123ce76f02d584771daa517491b4fe9300016d780ca96a749f1e64cd98cac146f8fd1ea5c90e2c81e92703b67217539749fb35da59dfcee5d76d6accb628dd3ac4486655d1e645c0515b7747b4914d8b51b56a0eac8722dbb4607e1b93cac88aa1755f7195820d608bef14d0a52bee9f230aaf57419c31b2f4c6f3067392cc51860c5b2f60a1c6ef3a61fd80c15dcc615d816b9bad66c4e80219f216e6634a5531f5bd168aa8be250a91264cc13d468999c1435b5da08c5d18df559eb29057c05bc07d34792086a6a8e81459cdc566ba83092d19043de02a737c05337439ffeba40ed4ec89cac22d960567666c3fba1b00a42a3e98544132d90bf3eccad9e3ea51b77e096cd813185f9945b5bc7ac34bb52460c0bdaeb815b5a3493a91dba04d9dcf58d1cd2bca28bfab8eacc74b50510a4a2028ab3271269078207b149547422fcde4e673310e3d8c67812a5785d27778a42c490a8f4b5c1d696bf2d02705f97c13998bdce92348844a35abb253527d57e50042e7a9c14dd2559adb5b1995f655aa5a27b4bd76df7d08edbc0ac0afb5f99c57bd31527ecb5980ec56de8d13db085bfd337e6173d29491c1559f495447eb0c5590c768d730c903adce9c704f78e64606dce01c5e80aae385551158c22ab8074c7001bd898e9b356e310dc38318e4ef03a09f2e6417f36be9a4ea0834b55e8b61b664e240fa1cfe95b5b8e8f8dc69d07d63177529418a6023aba5db333441dd2b0a966319abc77d0958c675b398727ed1d765e7d673ac24e8f16da74b907ff635b4e75e2de91c636db5336303d2a4039dfdf692321d70719a6a7c13421fa0a84cff30bce7726d3fa9d8bb3f2c5da1776403d72988c6307d0ecace61b3047af4a24491267455c18af00a084d0f149a769a2ec33a10ad14ea9cf76b43910ebb28edc81cdbddaa123c64e193f78a20d262d517368d2de116db259431b4e510d5084e0722535007b9700d0366b8388035396209fc51bb1a550bdeb71cd5667a211ae16ddd1d731fdea04ed2d3ba825287917a11acf53b8f6cf62fd14dcdea9de416feb3cbf4f15aacef4a5cc9eaf65f6a4ccfe48cbec4b994386b61e1fcda3e6de615bb3623cdeb58dd31c0e3c661d0492442e8b34d501586a5513f5c21bf5d054688c2bc5312c4b5789c78694dc6d9ca15e4edde681c465e2769de5a6ca113a2f25d508b66a35cdade9a557cd3f19cb4b4f2ec113734f45cd93a79e461e4f4f3ca4d05328e4591b33a66da3d68911b35f51cbadd9b2f495922239f7b57a44c6d4d7691639898f54fb2ad52273d3866f6ba85fa75dc0f604f55cf7cb9e5c9627e63db5269e3ced6974f3f4a48754f714aa79d6c68c69dba87562c4dcafa8ad78dd574a56bcee6bf554bc", + "eeeb3457bcee23d57d95ea8ad76df8b686fa75da2b242b55ff6c59a9185e5be8e4cad74015cc02b8c6ac72dbf6", + "9b", + "c0", + "42", + "02", + "ab", + "be", + "06", + "6a", + "c2", + "5c", + "7385997ab904b3f6cb9ce620cf1490bcf6ddf52ca974e6d611b6f05656afc2f664799d54d98e6c5a27d6f62243eb936ddc9d3ee4ca69358ead56977e081f61bc3afe82b2212b3da5104fcd3d0d3f4f9f7a3a993c23f1b4f81396bc6d62d7a9e2901b03828991065f0b21c146f86a35223df7f566889ca9df6888c84a7c63280d34c6544ba339027a6344a3374940f7aa46f9bc493da5329e9af7b406f1f4694f6f0ecf487a2a153c79dbc4ae3784436e0c0826461afa75132ab9f4d56a2ab9f4f5665472e9371a52c9a5af5152c9c5544ba339955c8c68f42671e8304d14170ddebbf81f036bf3856a00c599c3648f9f3c1b393dfcf3394bf5c529ffa133843f173cb9c793fd014fe8f3845e4f293ee0c97d4f293ee4c90397275c8804b5f6114f1eaab55ff2e40b51bbe70ae2d5ea3dd1a84bb57ecf972e2f381c8a562c6d95d59316d632c02677ef816fb29d671838cf7314e6f33403ff798e41043c4791024f330882e71864c17314718866192422b20c4211598a5c0e5fa9b28c8e140c033c5e301cbe29189e61100ccf5104c3d30c82e13906c1f01c45303ccd20189e63100ccf5104239a65108cc832084664dd279861bf124c323f52300cf078c170f8a660788641303c47110c4f330886e71804c37314c1f0348360788e41303c47118c6896413022cb201891a50ac6c190cd87c579de67051f8ef9de7efc4951ab9af811a8292f91c9eba51a2fcdaed21d8b09be122a1ec539db2916b7585661bb750e433931a6f25ae9eae1bd41eab8484a9605ffe46533629da6eb01eb2c518e57a799345920c4bd94263a48d59161520315240a447c6df5a383e905be6a15a7895164e938ab74196bbdea233898e3c5c3461ed29c261759b28c94a7ed31e2752684228a2188410208aa088096a5fc3794acd95d97a3dca6a504b30d052576cff338b2735c4f6cb29c62151ca7386b861bb06aaca5a56bce722e70c61af950b356a34a652f455c71972fb21bb43e0bc2f7bad24b69a2a0581495d92ef274cda7c515c5af528ce8a834aa9ca6f6d3d2baf2cb893a56210d913e25e51d21ab26520ea06115a93a5abaa62e90d5d8031ac4b053718059e4e1922d68582974ad59908aa6fa740d5d920313aa490a0281a2ff75f15afd9b3c1745f54e509756345d676f155f23d8db2c2f58a922d01829f0e88cacd148dc34616af252eb403237e54e52a111fd84592b5c0b3a78d8c7f22c7a4f85fa568fa7ae7c1cd1e568e9965003ad5ba36557ab89a7bdc3dc38571b47615e1b24360d049168b2c54d71fcb728ed1d28edeba53d5eda13a5fd03a57b7a699f97f645e9de81d27dbd748f97ee89d278eeed50d35dfca363b9c43f13e919374b5914d0ae1117545f7fdbbc6b03376b3624aa33e8ebde29d30c24c217ffd85ea7bbab16edd8ea04a4d46b747417d5dd89b5be0f5e7d9b31bcf9f5fdbaf0d6abde800b1ffad55b5f6cd9a8212a34ea43c42f728f16cfd8f214dc95a91f4d6530b9594e2c86d42fa6b22ca3599aefe4286fa6f23ca789806ea449cfa6c234bd5994f6307167228807ad0289aaa65427ccc152c47998102d87ce507821997b75410b7fe83dae024c6516bf9ed1aa406b40952f1564055b43ca0c90aae6b0b84f5edae6a6e145f6781cab79738cd8c8ae8e63e393bea11c26713646d7fa31e476a59fb37aca50ef33ba6cbeb0296c5aa712ad716862c43e9f51231af8d574e92844d5344847443737d9e4e82844eaa4c750c4e1af4caf94bc2f5a160b6980ac", + "7e2a5a3d846cb8284b0e25a9bfb4d1b5d937438a6d81c7c59f6274f6cb20fc99be7e0760dd9fc93c25d62f37dd9f5250afb4fba7cd764e56dd5fa6eb55b9ee3e0b5618449524ddefe23cb07e0e5645f79b3c8d23f6f89c24b7042763d60f644dba5fe7719074a5e841e918bf3790b4c5de087d616126cb34c5bbb792bb605b5f42276521878012c01e839b1bed6934af16da5085acd15d97acde73a96314a52395eba9f2390c7e7bad2196a72a1284a174288d1fa6fc4c8cfe003227a5bc3f46af9976a1d355974c2b5785372e18c08f39cbf75fb81646e579b4d72a87dffb67dd3acff6f4b3f155f6a05914cf502ebc6e230e4a512841d9c2ef36a2a31440b124bee8750d315393666ccba2df35c651192fe75d0cbaa6e82af30dc3ce62d835445d35ae94dd63eba15d4031d032c032423ba418442d26aa11dae40e31b0b72bc55f639c6b7d62a78ad2aa843b2d57a6602fa52625adede262ceb02a2413e3dd9d91b8bc4d8bfd32c4f14cead827be5062bed34bbbfde6e0e160712776e33c45e3262d6083c62a230c9ed44e57110600b65dcf3591c86856ac9e815630eaf53740b9502d35915f2f64ba0909b28d37472be9cdeb73d46cfdb61c3557bd05c919d4d72f0b41456416ac1359e5f0fa8e30c84c1b948da807bdd0987e41da667a2fdf5fa1990dfd8894bad9aedcd592ad93847d89c970710fbbb95491dfa4614f0cbb96777777fc3a976eb363cbfd4dfa0ed56f3b243ee05e2e65affbe8d29437e2e413de795f8d5cc3e1e0a2f7319844d01b4d4f9719081267deab7091e6bfb2107faaf1faad75eaa5fedca4f5f172bcf66bf02fe93df89f5df63db7472cb7fb593475dd7e7426cbbef9059d63b1547614bf5050df718eea27bc1074686dfc060ed8c2643b4f57f8e988cf2dfcaf4b9fdcaedda7bfcf2627c0d6f4d3cf41a8038c1809e403fe12f8919cf52b47dd6f5ceb261cc9f6db849b9f4631cd7d559046f463c75081e4b2098763a0e8c0a932546eb46c7e00457c5c2f27f855247b1914f20db05a2e3fa0a278df97b38bd9453b4251e4b86b8b943e43bfd9466f7d6b7c444677246dcffac2baa05ea4541373f1f07f7ba055d63f93bf8830a41767993a6c51cbb53a0500e6ebfdb6161d7f17b499f1c881ac3883b1ccb599937f4de961bd37b5f5906ff2fbbdd899eb2fd43811e5b3264cf14cfc894811ea450d01268396a25a0c5f1b98052eb8d98c98a0f97cc5d0618dcc13530243b5bf4ab770bed1a7ad7a091842008c44f23ce900eed66395cd4f45182615b2f30b98e802eea4d9b3eb49e9965d1c5c4f179124c2bead6ed3138c8d14e4bac95834e0b4eb037b4dad95d0e007e0e2e51c3fd2760ed342523ac5edfc8caede488744ad550a0ccd48500a9bead537425f64f5b6aa725caa19a87a0fadf557c06ab2957be2e9399002ac14f91b98297e13bc967860f1e7fecee26a3da561120cddc4a855853988b8bd871f8ad07bc8fad469d428b1a4f52880fa7ed02e35f965607f6fd8cb360df6c7f43b05744f23009dc9d96d5a34b14de88f9d8b4bbf21759eda2863b32fcad27b658d899cba3e2e53f2ef5ad273ad3bdb964f505167faf7b3d0a51257d9a9f13336eb28ba2fc92a49bb406f10a6dd17eb308e028b6592ee8b784ad8acdd0280b4fb0d7917fcfb9a56cc129ec625ee2e054bebdf09278e653c4bd7794c7220eaae3e3e2dcf36bea8a51664f602d421a16bee867b98f007fc52bafa281bdddb207f6ce0fdd93e708229ba41313da9a74fe7a7787c6d96ea2342446457aa9eea1cf02dab7908e2c4173c7e341643577585b9e680e1597e7df9ebacba25fc8f7f9cf05873bc5db4fece50dbe706181c9d42d387fab319bcace5f885458282e019cf7b89a7f3f9aa092db71bd372162d480f5c559d722791ce48025f5afd9247454a7527b5ed29cd6c7e8fc9b07dd5721db391a6aa113af220492a22f4", + "8b64b51632f155c7e907aeb84b9d3dea7b0dadc21a08ce1c559fae4a03f631850768132dd9fac58a2389aa6daf722d309b954a9715ab9555f7143497334fa8ae71d8f0d89216bd1ad27878fa889edd8ed40a5abefa7de1e084a7d7bcb0f95e7cf5353eb2d338d4ee8cf6872762161758cb02c37b9b46cc1616eb2996325c717eb0373dbcab9ad05a3229d2a96f7ae211ef656efb2c09dfec3a9a25f75564978bf572aaed3caa33347988e23d4ef227b4ee596d82c88319bd31f274720d223cce1a886f68b0f588da1fa24f781afdaf8f2f2f3f3f330e1ebd62d2f685526f04b59de9b39407e8a6daca43f6fa04e432ceaaa623b5bc95b896eed4b810fd30629ab1088a5a0fd9e4459c8e953e9f83cf92316f33e1d44aa07847a6052b9cb519beda8d8179c37ef7c7e73ff8afb74ffbd3bf6cd6e107370e9effe486dfa4b72f7a512fda0e7a2fb783db7019debe7cf7f5ddcb67971fa26518df3c8fb2d7cf7f4a7ffcf966fbc3f3a7fd9bf869fafa2fc92a78fee7cb9b77376ef87c0e30afb3d77f8d9e4d7b7348fb7afef2d9d7db1fe8cfcdfcf53229a6dfb8f18dffc3bbbfe1cff6e6cb6ffe9cce6f9e7d3dfff1f9d345f4fd7cfe1af25fbdfaf6eee69bd72ffff4aceffde9e7af7b2fdefd7973f3cdb71f5ebcfbb607bfb7d367aefbe2dd2ffd9b6ffebcfee155f2f2e52ba8e7d5a2f821767d12dfdcfe3877ff27e2bcf96673f7b7bffe94de7c0ff4bd7701e7d3f4e5bb9f7cf8b979f93c8d6fbe7f9d4dbfbfbbbc590e6ea7cb5fe2171ffa3f3c7b77771bf65eaf7e9c5f5db5af8f6997f4cbcb63765f9da4615adfb4b96ab10fcf297b2c67fa2a365d77c071e258d8cc086abc8aa1f5dbde0f5ecb6f603ae5767ee53bbdeae7c342e503e807afd96ffd5039eb9d6de3f7c8f8b9765ea6b95976efedfbbc886a307cfc7bca1dfeca5148cb1c3970d43dfbd2c9c9fb3ebea05e27cc85a27eaebde5be7e7190a26ffa5e9ef21956f3278d94af0dca8c3be1634d477cf8ec887de18ff9de55e3bb5127019ff63dad23e09adf95d23eda7ddcc79e0e8a032c8c233687f56f9f514363fc3a31946adb60fe986de96ea05611b4d5d196c12b69cd669ec083620d4c9beea636195b524577988a0786f2d5d5a474ebc04023cb688d4c30512b651be896724d2d68e26ecd37b54ac72e0702c8fad9dade0361186ded68d34913c4618edca3a712296d19551fbb1fe21efed5700719d9aadcc848752d948d1d62c230c0a959336e90ef6fd4412b9fb1153bb671d9d83c6f7c858763672b804a8d67f536eeed5db5bc036fa62aae03f5262424d60066b3883ce9589d0c54f911f43b2286cf7e980f70c8dbcd523cbd32c332b5ef4ca9fc3a8a6f9b6b31d55afa25dd5e6daeb1d3f4b35d03534be4a258ef667fe8a71eca34df5abb47224d5e97b5d4156fcbb0e46d75c4a2b7d5e95a7cdddbaad6b2bb165bc7b6ea056328f23562b59ea11658df2ed3773196ad1119927ea6f7bf5b9d09a773ff486b01f559ad2fa4863025b3e816dda44a956ef4b2b8f83494bf8a9bddaeca459c47c51b09a7f099c06fab4ad18727e77449ebfa113ea298e91376976b9acfa13ff217a0ac458617424741026331cda59a7dd5f9b9c4238c050cfed6d72f7f04cd035124a9f597344fa20e05cce8547541f2ab0e42fc98a778d5ab966727e93cb58b3cbceae01dc1c5f8fc1c6a9e6ef9261ebde27716dca2935e9c87297efbc7f7471bf871b2d59c234b0b741af0daeb3cc0a59983d870339236ec6d94cefdb7a294f32e53d1157f5f0739390d192bd3409500038b30c84ec45615a308af1f3d7a24c9265805c91634bfb0a8e3d599a7e93c21556ac78aa3ab4efd7a5d4bb608f3382b7931ec77fceb55e77825b9046849fa887f3a605b8ace584b8574dc5f5daf4ac8eafcf2b57dd11bf58697177ddbeb2880fbae8a8d7f5dcb889147005ad8d7d0d21860000aa885", + "2af9b5ac9d6e1320277f5f93821256613280b5b48b5189", + "da", + "8e", + "08", + "a8", + "96", + "ff", + "4c", + "3b84a4e9d6e31f992d3c831e8010d3adf52d9368a7816effe8d0bbfc563f437fa7e212627972ae085f96d613cd46a102e00308e2fa5103841e96843188e45665873a380d96552560df1fb24e51db5afbd91f3a385c752e7c574e6543d355c7f3474a3a5094ae213d2745065d1efc3c999e734e90ca0dbd41c7b656440bcb352cbc6b49bc60623d2933bb7eb588c1e41556b0aaf5c179729e1d43909c8772b916fdf9d13142f43f4a88f4ce667a9a00fd0e99df699a1d2d2cf001e46466dd8e520c5a3faac7db109d465d470e4a1d4d16fbd8cc6135a475e8f539cbacaff64466f7183066eaea4573fea9f2ac3edb6d476499fe2b3b675f673c2305b7b7013fbdcc15577bfe7b745fe635299dd73735886d85ca545274789ff2552749efd05b475466be808ca0e2ab8eebf40b45299fc2c862dd05c97b8b8046ff416ae5c2ffa7aa0fe3f169bad3e495d01e8917f4fedb262f8ed52f56c75baf6500180c8d1ad4f73f4281cced60c73e3eba216d23d9bfae212dca79623b7affc2767c4a859fa6e97bb28aee692e3aade71c947e5447102f085fa57cb6dd6992c1cb5d3fd25a44736bfa30994db19ed0ef8a5c3ffaffbaae9ed393bc0000" + ], + "rawHeaders": [ + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "Access-Control-Allow-Credentials", + "true", + "Cache-Control", + "max-age=60, public, must-revalidate", + "Content-Type", + "text/html; charset=utf-8", + "Accept-Ranges", + "bytes", + "Access-Control-Allow-Origin", + "*", + "Content-Encoding", + "gzip", + "X-Cloud-Trace-Context", + "2fcd0af1e452b0835a6185cd28571e9e", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "1617us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Vary", + "Accept-Encoding", + "Date", + "Wed, 22 Aug 2018 13:11:05 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1270", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wlgl65-v6:9863,wamg7:9838,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1270,wamg7:9838,wlgl65-v6:9863", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1270,wamg7:9838,/bns/wa/borg/wa/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/14,wlgl65-v6:9863", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Response-Body-Transformations", + "chunked", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close", + "Transfer-Encoding", + "chunked" + ] + }, + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/json/bookend.json?__amp_source_origin=https%3A%2F%2Fampbyexample.com", + "body": "", + "status": 200, + "response": { + "bookendVersion": "v1.0", + "shareProviders": [ + "email", + "twitter", + "tumblr", + { + "provider": "facebook", + "app_id": "254325784911610" + } + ], + "components": [ + { + "type": "heading", + "text": "Introduction" + }, + { + "type": "small", + "title": " AMP Story Hello World", + "url": "/stories/introduction/amp_story_hello_world/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "Features" + }, + { + "type": "small", + "title": "Animations", + "url": "/stories/features/animations/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "small", + "title": "Layouts", + "url": "/stories/features/layouts/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "small", + "title": "Media", + "url": "/stories/features/media/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "Monetization" + }, + { + "type": "small", + "title": "DoubleClick", + "url": "/stories/monetization/doubleclick/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "small", + "title": "Publisher Served", + "url": "/stories/monetization/publisher_served/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "Visual Effects" + }, + { + "type": "small", + "title": "Ken Burns", + "url": "/stories/visual_effects/ken_burns/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "User Consent" + }, + { + "type": "small", + "title": "Story User Consent", + "url": "/stories/user_consent/story_user_consent/", + "image": "/favicons/android-chrome-256x256.png" + } + ] + }, + "rawHeaders": [ + "X-Access-Control-Allow-Origin", + "https://ampbyexample-com.cdn.ampproject.org", + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "X-Amp-Access-Control-Allow-Source-Origin", + "https://ampbyexample.com", + "Cache-Control", + "max-age=60, public, must-revalidate", + "Content-Type", + "application/json", + "Accept-Ranges", + "bytes", + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Access-Control-Allow-Credentials", + "true", + "Access-Control-Expose-Headers", + "AMP-Access-Control-Allow-Source-Origin", + "X-Cloud-Trace-Context", + "fc0a52d84fd7ee758dad7536e3e1737e", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "1540us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Date", + "Wed, 22 Aug 2018 13:11:06 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/262", + "Content-Length", + "1907", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wafu79-v6:9850,wamg7:9838,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/262,wamg7:9838,wafu79-v6:9850", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/262,wamg7:9838,/bns/wa/borg/wa/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/14,wafu79-v6:9850", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/bookendsameorgin4.json b/amp-story/linter/tests/network/bookendsameorgin4.json new file mode 100644 index 0000000..08424ad --- /dev/null +++ b/amp-story/linter/tests/network/bookendsameorgin4.json @@ -0,0 +1,219 @@ +[ + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/stories/introduction/amp_story_hello_world/preview/embed/", + "body": "", + "status": 200, + "response": "\n\n \n \n \n \n \n Stories in AMP - Hello World\n \n \n \n\n \n \n \n \n \n AMP Story Hello World (Preview) - AMP by Example\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n

Hello World

\n

This is an AMP Story.

\n
\n
\n\n \n\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n

\n Best walk ever!\n

\n
\n
\n\n \n\n \n \n \n \n \n \n \n \n \n \n\n \n\n
\n\n \n \n\n", + "rawHeaders": [ + "Access-Control-Allow-Origin", + "*", + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "Access-Control-Allow-Credentials", + "true", + "Cache-Control", + "max-age=60, public, must-revalidate", + "Content-Type", + "text/html; charset=utf-8", + "Accept-Ranges", + "bytes", + "X-Cloud-Trace-Context", + "7e270433e252ad5d8ae24eabaa7cd878", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "4417us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Date", + "Wed, 29 Aug 2018 14:22:11 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1651", + "Content-Length", + "48275", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wsbbm23-v6:9867,wsgo15:9839,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1651,wsgo15:9839,wsbbm23-v6:9867", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/2604,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1651,wsgo15:9839,/bns/ws/borg/ws/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/19,wsbbm23-v6:9867", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:cloud-layer2-gfe-apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close" + ] + }, + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/json/bookend.json?__amp_source_origin=https%3A%2F%2Fampbyexample.com", + "body": "", + "status": 200, + "response": { + "bookendVersion": "v1.0", + "shareProviders": [ + "email", + "twitter", + "tumblr", + { + "provider": "facebook", + "app_id": "254325784911610" + } + ], + "components": [ + { + "type": "heading", + "text": "Introduction" + }, + { + "type": "small", + "title": " AMP Story Hello World", + "url": "/stories/introduction/amp_story_hello_world/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "Features" + }, + { + "type": "small", + "title": "Animations", + "url": "/stories/features/animations/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "small", + "title": "Layouts", + "url": "/stories/features/layouts/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "small", + "title": "Media", + "url": "/stories/features/media/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "Monetization" + }, + { + "type": "small", + "title": "DoubleClick", + "url": "/stories/monetization/doubleclick/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "small", + "title": "Publisher Served", + "url": "/stories/monetization/publisher_served/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "Visual Effects" + }, + { + "type": "small", + "title": "Ken Burns", + "url": "/stories/visual_effects/ken_burns/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "User Consent" + }, + { + "type": "small", + "title": "Story User Consent", + "url": "/stories/user_consent/story_user_consent/", + "image": "/favicons/android-chrome-256x256.png" + } + ] + }, + "rawHeaders": [ + "Accept-Ranges", + "bytes", + "Access-Control-Allow-Origin", + "https://ampbyexample.com", + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Access-Control-Expose-Headers", + "AMP-Access-Control-Allow-Source-Origin", + "Amp-Access-Control-Allow-Source-Origin", + "https://ampbyexample.com", + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "Access-Control-Allow-Credentials", + "true", + "Cache-Control", + "max-age=60, public, must-revalidate", + "Content-Type", + "application/json", + "X-Cloud-Trace-Context", + "36745065fedfd67ee384ac12d9cb7a43", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "2612us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Date", + "Wed, 29 Aug 2018 14:22:11 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1817", + "Content-Length", + "1907", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wslu24-v6:9857,wajv10:9813,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1817,wajv10:9813,wslu24-v6:9857", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/2604,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1817,wajv10:9813,/bns/wa/borg/wa/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/7,wslu24-v6:9857", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:cloud-layer2-gfe-apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/bookendsameorigin1.json b/amp-story/linter/tests/network/bookendsameorigin1.json new file mode 100644 index 0000000..6639fda --- /dev/null +++ b/amp-story/linter/tests/network/bookendsameorigin1.json @@ -0,0 +1,292 @@ +[ + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/stories/introduction/amp_story_hello_world/preview/embed/", + "body": "", + "status": 200, + "response": [ + "1f", + "8b", + "08", + "00", + "00", + "00", + "00", + "00", + "02", + "ff", + "d5", + "7d5d97db36b2e0bb7f054739d97127229ba43e5a2db9fb26763edc67ed4c2671eecc38c7c78722218936257248aa5bb2aeced9877ddcb7fb76cfbeec5f9b5fb255f8200110544b6dcf24d776bb49a0502854150a05a0003ef9439486e53623d6a25c26d78f9ee02feb1ffff5ffae1f59d6930509227c607f9e2c491958e122c80b525e75d6e5cc1e7558f69322cce3acb48262bb0aad220faf3a8bb2cc8af1f97918ad9c60996579fa8e84a593e6f3f35bd7795774ae9f9cb3522614e1ba28d3a54d12b2242ba80c30d890926f3b47603fafa06dcf79585db77144d2a3eba2d0b6eb78a6bacab84cc8f5cf404e4c0a2b5e595fbffcd1b2ade7244952eb2f699e444fce19cca39acbab6049ae3ab731b9cbd2bcec5861ba2a29717771542eae22721b87c4a62fdd65bc8a97eba55d844142aebc2ebc967190887721a2245ebdb772925c75c26095ae62c8ed588b9cccae3ae705a3ee3c5e95791aadc3324e57d8b2b7948b6f1748ebdb3ba4f5bc9278b94d8885ad9fa67142f22c094a723d4da3edcebe23d3f7716907405780a8c63693489097d6a8b08a9264c563af4b56d199e5169667add27c1924d6342d17137b997e7870d1e281251f546aff9568e97bb29de520b2c2aa8bef6679badcddc6453c8d93b8dc8e17711491d5be4ce544fa98903de0c2767f1a44c5a7c1937e12349f0007f428d4b6eb27ab9477add3d40fd49de87ac5d30a3d497dadab3eafea7e74a40d095641b22de3b038da8e5425da6c89641b107e9ea6f384d8611243a5761cd941164bb68265d7641c6bfce2150829010342723433d0efdf93fce846184bb735e87e2686619a47208ee399284a3cb8ce98eaebf10da6e087cd3f35fa38066c65c36f3dfe312768e4cf60404088e9d6fa76033813528d09b2cc23c250537654627eb588615c29acc04ae25b62650ca595ceac7241acfff159ef7262ae9e6515b43ec77a41827c652dd23bab4cad3027d09fac6dbacead599c17658dc1e958e7d0079efcc1b6ad9fc3055906c80c6b19e4efd799354b73eb7baa775f5ab62dc88f4bb204ce65579d15e56c45fbc97ce93451fe4eb8d2240c0cc95c6eac5025403ddd12d61e274c97e7f1727e5ea4210cda4eb69a7790bb5c49d13503a5ccb204c66b3a2a27d197ef0a6829aad78eaa58e72b5ac3a6ec8c2d5a0754515482e9743910a24288a7d08828ccd7cbe98bb8284536528defdfb28e0080bfeeb8e7571745801b00e485202b4b8b98327e6c795522e282845de53976be8a23419c91019f090fe433932752550798a8fe00aa1b399f67efe9ef7dd73a9172ff23283fc5733234c3ac825a83de3cc2c7daaeb0bef7ea2e2e4b925bcf823cb2a20034afee6fcc5c940c621c0284a486c57a099d75db31030357649dfd0ada8273821668da23d25c2e5090693025ab0f2d25a859fb241640c5fb3bb3022a710fb704add8c64122cf0b1a3c624af2a78cacaceff3205be82a82268ae4e5f6aa339b8ec1c0bc8d651df107fd9e3fb818f52f3d6fe8b9d4e4ebe5d2f92710661b62ecb7355e7019e3b01dfaa1ec6d41b7ce9363909dd0f5b9de9db7d5f83b51de16ead024bcd506ee23c4c88536ced6d3242e16247a5bc60a0edff546b63bb2bdfe2b6f38f6fbe3dec8b9ec5fbc3e886d9946f12c3e15593df95d82833f2330f089b9af4870f8b02ac1e2b84bec325d870b3b0ea90f1a7f20c5556770b1195c541866c12de616e73abc4de1444f3e02efd0dd0cdd23f052b813f05ef89b0bff08bc14ee14bcc3cdc5f018bc0877025ecfeb6fe0e708cc1cf214dcbebb819f637033c85370f7819afe517433c853700ffc0dfc1c839b419e827b042d1d1dc5130669189d18e83285c93bc129384c46333b0cb260aa0c115b521c5310e690e5bab0a7416ed309b884619a04e17bbbcc835591ac4374568fc0a78f544d9fa26613630d73bde9d0724e070bce2bdf1f6de0a7c9ab300d8ad2e6d906063d803560e7616619a689e2627d36a37f0ccde69304fbb0b1561abb0d5611d9d825d212ac7149714eca66e338d8344fef60626f1f309a87b9d7f3373d830ef3079b663715f7304e6fb8f10c5648e0a4d94d9cc522cdcb705d5a0c794b6907fed3e558c8ac7e05327d7694809ae56e34bfa5ae7d5994a82b9a956845066566f1dc88894b8c41381be6c99b4d025d9a5b673677a796248a83abce6379b1796cf57c37db9c59a00e96c8599078be28c7567f54678945380e92c51b92d839520b33c5b3c38646a10354c2ddf4ef1bedfe55a4fb27913eecbb9bcbfb06908f257d301cfd9348f7dccb7b06", + "ede368bf18b4d13e1c5efc1368bf18e0b87d79cfe07a14ed7dafdf46fb456f5865e1446055b265632b81a402ac3b39a261bd931ae679231f061777f41bb50cf7a2f2202e3f7dc3fc3e34cceb7f8a865d48fd416b98e7fafd8f97d969e6eba23fda60bdbf55cb4e90d9890d1b62c3dcdfac61a788ec34fbe1f52f871bdffdedb4f104999dd8b2410f5ba619105a5e2c73ccc085289c39fadf7188eb1cace1d1aab033802365b8c09508a86845425c81cad3a200eae7f14ade6866346948d97e54161774fd242c8a7f9b05cb38d95eddac90f03409cae03f5e222cc9a17d1deea8a1ff5f2c08299b7bcf6cfb46c428388be45db18be2224b82ed789aa4e1fb49164451bc9a8fdd0975a3c79ff57abd3d0504af69896bdd5df6f6f7755a921d07babc1c4d906836f918c76500be162ff69e6cefd23ce2c50a92001fd21c3ce8b9485a4f8b72d7a82e894b920709075aad975392f31728cb88b783b2ac12c992ee6adab7411ea37bced3c52bafa12441c26bc0588e9a8a3287760b3222afbf1704d3952a9dfc583488ce942a3eb82ee3c31d53da0bd7ddcb8d94f3fa555e9804456149e8046a70e005e6fe60d4821959104fd7a528850e6fcd275e7e15dc6e27e6da51ff387c4ee66493892a5df7f2d21f72a8e93a4988907db15d4ed3a416beeb5ef42ab83829dfc6825ff4356633ac1aef683815f0e8a3d7882e5bda1801db510abb29cc65e779ba5e45e3cf66512458003adbc88e66221b1463111471b16b5351907d0ab2d7ebe6bd043a0e350bf6740bbcaa2512e0dfbd9e6de1429b5c138b8098dc2d409fed220b424cbacb838c1685792dd00b6a05ac2a4b9c8b924d29b58359225c637dfc475c92668bb7e7c5edfc4b989c4c4478118d2eea3e81648b85bc743c9c72d3b6b0675c0b7d9a6eae3aaee55abd3efceb588061555c894db0bbbb3be7ae47b76ac1e6b95847e75ac4e32c60e4109bac4fb2a05c58d155e7a53f7006830bcbeb3b172fbc9e33f24696ef5c0e3d0b669023cb4de82ffccfae9f2800fbff85283f722e9fbbb776dff13f74ac599c8019fbdcef7df7dd77eccdced7094ce2c82d59a551d439c74de3dbf9f51fcfcc2cc495dfff362cecf59c2165e0f391e3f67b2fbc4be7", + "62", + "e4", + "2b", + "6c", + "84", + "bf", + "f8", + "50", + "73", + "d3", + "92", + "79", + "48", + "8b", + "31", + "16", + "22", + "ae", + "073090a96f94a75994dead764be8af6c388636641b0388134c61f40193b3fb60c7b8d031f6b0abb6c35d5756f47e986b0ca323f98e8ffb80f973036a1d5a1237ef9fb3d96c32858187e4f560361dbaa3fee07e74e36006834f3534c62becd9361b21f9a2c1b8f365a71e2da990fc9c2c279591ebcd2e7ba69a7e05138bab43d11bb5b20aef3ffed77f76f6155bac260a1bf75d8b8af7be91f714a8852d0a8d93146c12c60f39976d68c60130e79618a4c7b217e92d3440e0f12434b3342d5ba55391c1074d5c9f1a3b17036423e72cb865d9f8424e98a6d0c79734ad518fc42b74ed76a8fa14ff2148b6c105e94992de59493c4e705d325cc449b45b0639386a764e3551c6c2fcc3190c8a193e2c489eeeda744c81b251e6b46160e7bb07115a7a6e9883cf5c56015bd37403036398e66c516b9a93e0fd384c302aeb50963c8282106a15f61ce4bce5f82a6b0d945dd3389ee51cf8b311fe791824e163e8acb70bcbb67a14d5d971582cc464a7763ac550217b16033254a8899e701f4f77b497727a069a822805c0ef937d05e8bc1228067c2cd39cc81082e7584390dbf31c2a84cefa986963379f4f83c76e17ff3ac3c15997aeb667410e206732c7f5e26e44e67a61cb558b2b6a35e11ad9d62db4568ba668f64c3364fff83fffbb23f5402affafe8fccc7a5c0f0603df718728d5dd71bac1e530048dd8371441484c6ddcef82e16db45e7fc1cd011802d9eb6874d3bbb85c540de4f2e2e2699a100a0cd372eca73054cff963e564cef0ef44566ccff17c2ae6fb8910c80e10b1cad625edc64cc838da4ed8630f07ff492d7f8fbed76ae2a1faa98469da47915bbf82d6e1fc2b7ad36dcffa3209a624a98610677000cd7896c23c7697ae4bacbdd99c6bfabf5ed9359bba3592d10e83e0839dc400a993b5b4b2f62cd8838d0ab62eea77ce6b2fdb58308ec791c5e70b13d5ec4c94c9c4a4bd4d8c3feac09da531f4e0dc46b7ae2c583cae34908ed848aa108f0982c9eea419faebf8c5447d6bc0c01475891667b65e5197691caea771684fc98798e48f9d3ef62abfeb9d4d4e2fd1ac8b3aafcb342220f4fc2ec823893c43a6591598c2b428444ba6508be3948d418d2bab45136db0b52159a449840b17072a3fa59c4ad7819262b9a3b66c0749c7d0ee13a93eae8846b0b1d089b48e8f67ec29ac7c0841abb47c2c17b48b0578c56734bdb65867ccbcb5d1fa7148aa669c84c6e8ad37587d98ee43202a73799dcdfe8deb42e360a227988e8a04bb3295a8964f4ae85946e3a94fb33a136e147d18d64478eb584cbb2662b09c2464568efb83cf15cf995b6041255594b8b299da6b13ea688bf880228d63221331b22973f91659332e1d21f1164093dc39e72923dd8934ce1a0eaf1809fc95863214e0c9858b37b5166519a4042bbaa0569d58d112b5f743f8016a4edeecd401bcc5e0cb2594460a17db5819e3e2a76d00c3c9699892194e5c54cfdee0bd34d59d4d7107d0153ea4d06c7f82ce8f5bf782b6650d66cbc3c57b5d13a8479472af2a5897e9a46ddd94f977125bc30509dfc314b6e9302abc07f46f7692ab26f9330f60ec442c79010b8461c067eee8498e1ceffb30212df154a01d24f17c355e42", + "5f4bc8445931a0ee16f6080e83d157ca34b6ad55aa53e91b7aae915fc78d18cdfa5a8608cdbfa4426c392da6bd9a79d33ae4181b73c8cc349b7074273433eec85a38fe66f761fac72d5cd569f8ba513dd3b6f4ded8470d3173aba13793e62a5a63ade94013e9138978139ab8b85aab33f2da92fc5fba28791f7f782506f4f793aab01819daa3dd8ff2121f2977f181b1b557754ed14f3cff703f51696cfa03f5dca947a7782d2c32bb17ddb7d4b74d604878bc39bbd7bd323bcf2a8e639dd0f12740f169e8e16e022dc596b9dbfa225bfa9e0647ac0d8b756edc1ec485cd621144e91d5d7387f1ca02a15bf28a8e7766aae64b6ae370c9a488230209675d139404f0e517f2e0d2d31737aa32e0b2de4acb2ff0c696def585557de65fad758cdab02aeb990d024445cdc5f92a479fda5619ed0bf60082b597d0c7e630ecb5cf7eb1d541b7ada094c1d969cf82bf83a31eaef30204cb871666e4ea956a5d4b54a4067ee8cb966d9c94d7cc67096e58d1c3ccfc91fdd278cbdccd6649675015b5d940704b309126807cefd4d5ab8a0ecb84be29bc7be07591de03ce042df59a268339283304dcf360a3b86a5da9099604c0f6b5355c476c22ca603428a53a816c1db3976768400bb67562c6d456ba6577ab7b34f8717b92b5653b91905ddb28c47bd8fd96b4160a5bdc959e9be8da36d3cc957345347551acb5cd8835ebaab8c010360dc911726a4282f1b91f4898c78340ca7661b52380bbbff7b74ded216233e19e126d06305e2d481e97741b608d870c60808b673cc47da76ff39d3a70e60463a9223b60e7c84418949899b4cde55a8a59aac192767ef8c2772334a91563b53b27a97842f0a0270daea123aea13827846d9d5f27f1ee9e75fa2350c81bc566e3642c7978ab46b84bd2b033a9d2f8b023a7e17b3d1e6158d118ff9b68aff228a6cc29aaa24a2a7d61e48aa4f63da4d35b29f608bb1f8544da2d3b7178ffb8cac4962b9d8ff04dafe67669df6d6e97dea38c1faf3e06323985d6ef4d62950b8551b2798e88e8ae22ae0bd28c2986ecb1f09f7dc3fc82a01fd4558c9868e3f82bd84865e7dfec371806440ccd4861b862bf2d67be2eef8d7c190c06fbaa004e72c008ced7300874a554be326a639c1a788bd5e60435dda34197fd73fcb31a15767986a859ff81629ce49a383d58a40685e12fb2f10e1311bea437dc72e858c5c2762938890ec254d3715a39195d4c711868b06167621d9b76d27126277375f8136c271efe15659c18f4035d6912590e9b9368439b5b57af001f5357300bfb51602c2e7385d56bb3a4d4ae3077db0aca255a24eb0f065dfcf17afdaed3eb4bd2e5e1dbf7846c572c6d86435759e93a0f8900b11c0ce17508b4280219533abbadb0ecbd1262807fdb3167b8d7b1a60e8dc3cd4c55517b1d874ae9145cfaeed48f6426e1754cabd201118177151a195001555db2dbccc3459335584043565a2e6a4d1fbac320f00cc8cd41d66d84aadd2dc6a857ba414ec0242f831226b2929278fd5ed7bb64f12f3d49458ca1f27aa69305b8eb56b6378147fc8b6cdff79b61dd1aacb35ec5956af607a3264091116aa0a1e6451ad57321164b5eab6d9a2b4ce7098e1c4b0f04d525a04bc4e5d6c17d478706e277f52c2a2e87bbdb304e51a89dbe7201fd90e42884490b57e48ac4269e746ec00c5847f0abc25048ab4e002861f6c613034662404bf883a43695251e46d30bb9f7af333c6f532960b791231ad7ccd10e34189052d69a1a0c030018a84aeeb311fc758d4bb4c1281c36ca3911c15338e8b0dc8b62349b129957d4be8171598355c98913c5b47541bea5a7b9afb9dd71e88118a8285d6327c1aceec7a3d0ac996c94f148c7314442fbd7e4be7a8c768ee28ce2d9acdb4c72f87c9f97bb185c78032299a7a2a8842a2e2561daa9a9a472cc482e2df4abeae99797fa40e1cc67d5a248bf2f110ee968f5", + "f08635479b6f7a9ea7c1b1f32f4a5265ea92b83e99341a490a8bc8d95a0d5ac339de1864a4a4863b44470da512a3a6eb83b242105bc403a7bc582765c18aa287d5e6a348abf8862dce4b85d946d4e88b60699e5ed764d82f85ce348581f23d296d3a1619fde2f012ffd6cbe2175a289d6bb1e991200b4ca3430359b530fdfdf9177fb09e821da1a7c1acffb05edebcb25ec4308d2df08d9fd498c3bc643da507eb60a25180c6d1dfaccc17e788832d70c2a404f5d1ba1d3830a36ba093f0ac603000fb75ae96fbe21cef03636acf8eef8d0b603ddef71837023bd9d2321d5a70366407d1bb75c1ce40d45124a6dc3dbdcab38e4f658b25dd005794ba2ce4bdcb17d4c06e74c56a8e1210bc5f783b69391d57ee183e6778412790f5f4ad0b8f6066bacb20d691b01c418a0705fbb8bcb8e0abd0f1079c93f24d373a65e3ad7727b8543d4bd2bb2a16042cb6c2b765ba4ae901aa6ef524c7a36248ec6145575828c5c717efe36ccca2cd8b7d20d6e403b14dc2763ff8bc1e983b9de6bfd2633c7ab0085d356f770c5a73ac08ca93683fed1a4ea271c74319cba7747b6e1fa620ddf7d3a88b77579dc8aa68b6329c87c3be6d9cb34a1120eebe00fd4e245d198102166ba07e9d49a91783cf15fd76ebb013ba76003cd6b7bea10b12da8701db8e33d576fc01d08bb87123ce76f02d584771daa517491b4fe9300016d780ca96a749f1e64cd98cac146f8fd1ea5c90e2c81e92703b67217539749fb35da59dfcee5d76d6accb628dd3ac4486655d1e645c0515b7747b4914d8b51b56a0eac8722dbb4607e1b93cac88aa1755f7195820d608bef14d0a52bee9f230aaf57419c31b2f4c6f3067392cc51860c5b2f60a1c6ef3a61fd80c15dcc615d816b9bad66c4e80219f216e6634a5531f5bd168aa8be250a91264cc13d468999c1435b5da08c5d18df559eb29057c05bc07d34792086a6a8e81459cdc566ba83092d19043de02a737c05337439ffeba40ed4ec89cac22d960567666c3fba1b00a42a3e98544132d90bf3eccad9e3ea51b77e096cd813185f9945b5bc7ac34bb52460c0bdaeb815b5a3493a91dba04d9dcf58d1cd2bca28bfab8eacc74b50510a4a2028ab3271269078207b149547422fcde4e673310e3d8c67812a5785d27778a42c490a8f4b5c1d696bf2d02705f97c13998bdce92348844a35abb253527d57e50042e7a9c14dd2559adb5b1995f655aa5a27b4bd76df7d08edbc0ac0afb5f99c57bd31527ecb5980ec56de8d13db085bfd337e6173d29491c1559f495447eb0c5590c768d730c903adce9c704f78e64606dce01c5e80aae385551158c22ab8074c7001bd898e9b356e310dc38318e4ef03a09f2e6417f36be9a4ea0834b55e8b61b664e240fa1cfe95b5b8e8f8dc69d07d63177529418a6023aba5db333441dd2b0a966319abc77d0958c675b398727ed1d765e7d673ac24e8f16da74b907ff635b4e75e2de91c636db5336303d2a4039dfdf692321d70719a6a7c13421fa0a84cff30bce7726d3fa9d8bb3f2c5da1776403d72988c6307d0ecace61b3047af4a24491267455c18af00a084d0f149a769a2ec33a10ad14ea9cf76b43910ebb28edc81cdbddaa123c64e193f78a20d262d517368d2de116db259431b4e510d5084e0722535007b9700d0366b8388035396209fc51bb1a550bdeb71cd5667a211ae16ddd1d731fdea04ed2d3ba825287917a11acf53b8f6cf62fd14dcdea9de416feb3cbf4f15aacef4a5cc9eaf65f6a4ccfe48cbec4b994386b61e1fcda3e6de615bb3623cdeb58dd31c0e3c661d0492442e8b34d501586a5513f5c21bf5d054688c2bc5312c4b5789c78694dc6d9ca15e4edde681c465e2769de5a6ca113a2f25d508b66a35cdade9a557cd3f19cb4b4f2ec113734f45cd93a79e461e4f4f3ca4d05328e4591b33a66da3d68911b35f51cbadd9b2f495922239f7b57a44c6d4", + "d7691639898f54fb2ad52273d3866f6ba85fa75dc0f604f55cf7cb9e5c9627e63db5269e3ced6974f3f4a48754f714aa79d6c68c69dba87562c4dcafa8ad78dd574a56bcee6bf554bceeeb3457bcee23d57d95ea8ad76df8b686fa75da2b242b55ff6c59a9185e5be8e4cad74015cc02b8c6ac72db", + "f6", + "9b", + "c0", + "42", + "02", + "ab", + "be", + "06", + "6a", + "c25c7385997ab904b3f6cb9ce620cf1490bcf6ddf52ca974e6d611b6f05656afc2f664799d54d98e6c5a27d6f62243eb936ddc9d3ee4ca69358ead56977e081f61bc3afe82b2212b3da5104fcd3d0d3f4f9f7a3a993c23f1b4f81396bc6d62d7a9e2901b03828991065f0b21c146f86a35223df7f566889ca9df6888c84a7c63280d34c6544ba339027a6344a3374940f7aa46f9bc493da5329e9af7b406f1f4694f6f0ecf487a2a153c79dbc4ae3784436e0c0826461afa75132ab9f4d56a2ab9f4f5665472e9371a52c9a5af5152c9c5544ba339955c8c68f42671e8304d14170ddebbf81f036bf3856a00c599c3648f9f3c1b393dfcf3394bf5c529ffa133843f173cb9c793fd014fe8f3845e4f293ee0c97d4f293ee4c90397275c8804b5f6114f1eaab55ff2e40b51bbe70ae2d5ea3dd1a84bb57ecf972e2f381c8a562c6d95d59316d632c02677ef816fb29d671838cf7314e6f33403ff798e41043c4791024f330882e71864c17314718866192422b20c4211598a5c0e5fa9b28c8e140c033c5e301cbe29189e61100ccf5104c3d30c82e13906c1f01c45303ccd20189e63100ccf5104239a65108cc832084664dd279861bf124c323f52300cf078c170f8a660788641303c47110c4f330886e71804c37314c1f0348360788e41303c47118c6896413022cb201891a50ac6c190cd87c579de67051f8ef9de7efc4951ab9af811a8292f91c9eba51a2fcdaed21d8b09be122a1ec539db2916b7585661bb750e433931a6f25ae9eae1bd41eab8484a9605ffe46533629da6eb01eb2c518e57a799345920c4bd94263a48d59161520315240a447c6df5a383e905be6a15a7895164e938ab74196bbdea233898e3c5c3461ed29c261759b28c94a7ed31e2752684228a2188410208aa088096a5fc3794acd95d97a3dca6a504b30d052576cff338b2735c4f6cb29c62151ca7386b861bb06aaca5a56bce722e70c61af950b356a34a652f455c71972fb21bb43e0bc2f7bad24b69a2a0581495d92ef274cda7c515c5af528ce8a834aa9ca6f6d3d2baf2cb893a56210d913e25e51d21ab26520ea06115a93a5abaa62e90d5d8031ac4b053718059e4e1922d68582974ad59908aa6fa740d5d920313aa490a0281a2ff75f15afd9b3c1745f54e509756345d676f155f23d8db2c2f58a922d01829f0e88cacd148dc34616af252eb403237e54e52a111fd84592b5c0b3a78d8c7f22c7a4f85fa568fa7ae7c1cd1e568e9965003ad5ba36557ab89a7bdc3dc38571b47615e1b24360d049168b2c54d71fcb728ed1d28edeba53d5eda13a5fd03a57b7a699f97f645e9de81d27dbd748f97ee89d278eeed50d35dfca363b9c43f13e919374b5914d0ae1117545f7fdbbc6b03376b3624aa33e8ebde29d30c24c217ffd85ea7bbab16edd8ea04a4d46b747417d5dd89b5be0f5e7d9b31bcf9f5fdbaf0d6abde800b1ffad55b5f6cd9a8212a34ea43c42f728f16cfd8f214dc95a91f4d6530b9594e2c86d42fa6b22ca3599aefe4286fa6f23ca789806ea449cfa6c234bd5994f6307167228807ad0289aaa65427ccc152c47998102d87ce507821997b75410b7fe83dae024c6516bf9ed1aa406b40952f1564055b43ca0c90aae6b0b84f5edae6a6e145f6781cab79738cd8c8ae8e63e393bea11c26713646d7fa31e476a59fb37aca50ef33ba6cbeb0296c5aa712ad716862c43e9f51231af8d574e92844d5344847443737d9e4e82844eaa4c750c4e1af4caf94bc2f5a160b6980ac7e2a5a3d846cb8284b0e25a9bfb4d1b5d937", + "438a6d81c7c59f6274f6cb20fc99be7e0760dd9fc93c25d62f37dd9f5250afb4fba7cd764e56dd5fa6eb55b9ee3e0b5618449524ddefe23cb07e0e5645f79b3c8d23f6f89c24b7042763d60f644dba5fe7719074a5e841e918bf3790b4c5de087d616126cb34c5bbb792bb605b5f42276521878012c01e839b1bed6934af16da5085acd15d97acde73a96314a52395eba9f2390c7e7bad2196a72a1284a174288d1fa6fc4c8cfe003227a5bc3f46af9976a1d355974c2b5785372e18c08f39cbf75fb81646e579b4d72a87dffb67dd3acff6f4b3f155f6a05914cf502ebc6e230e4a512841d9c2ef36a2a31440b124bee8750d315393666ccba2df35c651192fe75d0cbaa6e82af30dc3ce62d835445d35ae94dd63eba15d4031d032c032423ba418442d26aa11dae40e31b0b72bc55f639c6b7d62a78ad2aa843b2d57a6602fa52625adede262ceb02a2413e3dd9d91b8bc4d8bfd32c4f14cead827be5062bed34bbbfde6e0e160712776e33c45e3262d6083c62a230c9ed44e57110600b65dcf3591c86856ac9e815630eaf53740b9502d35915f2f64ba0909b28d37472be9cdeb73d46cfdb61c3557bd05c919d4d72f0b41456416ac1359e5f0fa8e30c84c1b948da807bdd0987e41da667a2fdf5fa1990dfd8894bad9aedcd592ad93847d89c970710fbbb95491dfa4614f0cbb96777777fc3a976eb363cbfd4dfa0ed56f3b243ee05e2e65affbe8d29437e2e413de795f8d5cc3e1e0a2f7319844d01b4d4f9719081267deab7091e6bfb2107faaf1faad75eaa5fedca4f5f172bcf66bf02fe93df89f5df63db7472cb7fb593475dd7e7426cbbef9059d63b1547614bf5050df718eea27bc1074686dfc060ed8c2643b4f57f8e988cf2dfcaf4b9fdcaedda7bfcf2627c0d6f4d3cf41a8038c1809e403fe12f8919cf52b47dd6f5ceb261cc9f6db849b9f4631cd7d559046f463c75081e4b2098763a0e8c0a932546eb46c7e00457c5c2f27f855247b1914f20db05a2e3fa0a278df97b38bd9453b4251e4b86b8b943e43bfd9466f7d6b7c444677246dcffac2baa05ea4541373f1f07f7ba055d63f93bf8830a41767993a6c51cbb53a0500e6ebfdb6161d7f17b499f1c881ac3883b1ccb599937f4de961bd37b5f5906ff2fbbdd899eb2fd43811e5b3264cf14cfc894811ea450d01268396a25a0c5f1b98052eb8d98c98a0f97cc5d0618dcc13530243b5bf4ab770bed1a7ad7a091842008c44f23ce900eed66395cd4f45182615b2f30b98e802eea4d9b3eb49e9965d1c5c4f179124c2bead6ed3138c8d14e4bac95834e0b4eb037b4dad95d0e007e0e2e51c3fd2760ed342523ac5edfc8caede488744ad550a0ccd48500a9bead537425f64f5b6aa725caa19a87a0fadf557c06ab2957be2e9399002ac14f91b98297e13bc967860f1e7fecee26a3da561120cddc4a855853988b8bd871f8ad07bc8fad469d428b1a4f52880fa7ed02e35f965607f6fd8cb360df6c7f43b05744f23009dc9d96d5a34b14de88f9d8b4bbf21759eda2863b32fcad27b658d899cba3e2e53f2ef5ad273ad3bdb964f505167faf7b3d0a51257d9a9f13336eb28ba2fc92a49bb406f10a6dd17eb308e028b6592ee8b784ad8acdd0280b4fb0d7917fcfb9a56cc129ec625ee2e054bebdf09278e653c4bd7794c7220eaae3e3e2dcf36bea8a51664f602d421a16bee867b98f007fc52bafa281bdddb207f6ce0fdd93e708229ba41313da9a74fe7a7787c6d96ea2342446457aa9eea1cf02dab7908e2c4173c7e341643577585b9e680e1597e7df9ebacba25fc8f7f9cf05873bc5db4fece50dbe706181c9d42d387fab319bcace5f885458282e019cf7b89a7f3f9aa092db71bd372162d480f5c559d722791ce48025f5afd9247454a7527b5ed29cd6c7e8fc9b07dd5721db391a6aa113af220492a22f48b64b51632f155c7e907aeb84b9d3dea7b0d", + "adc21a08ce1c559fae4a03f631850768132dd9fac58a2389aa6daf722d309b954a9715ab9555f7143497334fa8ae71d8f0d89216bd1ad27878fa889edd8ed40a5abefa7de1e084a7d7bcb0f95e7cf5353eb2d338d4ee8cf6872762161758cb02c37b9b46cc1616eb2996325c717eb0373dbcab9ad05a3229d2a96f7ae211ef656efb2c09dfec3a9a25f75564978bf572aaed3caa33347988e23d4ef227b4ee596d82c88319bd31f274720d223cce1a886f68b0f588da1fa24f781afdaf8f2f2f3f3f330e1ebd62d2f685526f04b59de9b39407e8a6daca43f6fa04e432ceaaa623b5bc95b896eed4b810fd30629ab1088a5a0fd9e4459c8e953e9f83cf92316f33e1d44aa07847a6052b9cb519beda8d8179c37ef7c7e73ff8afb74ffbd3bf6cd6e107370e9effe486dfa4b72f7a512fda0e7a2fb783db7019debe7cf7f5ddcb67971fa26518df3c8fb2d7cf7f4a7ffcf966fbc3f3a7fd9bf869fafa2fc92a78fee7cb9b77376ef87c0e30afb3d77f8d9e4d7b7348fb7afef2d9d7db1fe8cfcdfcf53229a6dfb8f18dffc3bbbfe1cff6e6cb6ffe9cce6f9e7d3dfff1f9d345f4fd7cfe1af25fbdfaf6eee69bd72ffff4aceffde9e7af7b2fdefd7973f3cdb71f5ebcfbb607bfb7d367aefbe2dd2ffd9b6ffebcfee155f2f2e52ba8e7d5a2f821767d12dfdcfe3877ff27e2bcf96673f7b7bffe94de7c0ff4bd7701e7d3f4e5bb9f7cf8b979f93c8d6fbe7f9d4dbfbfbbbc590e6ea7cb5fe2171ffa3f3c7b77771bf65eaf7e9c5f5db5af8f6997f4cbcb63765f9da4615adfb4b96ab10fcf297b2c67fa2a365d77c071e258d8cc086abc8aa1f5dbde0f5ecb6f603ae5767ee53bbdeae7c342e503e807afd96ffd5039eb9d6de3f7c8f8b9765ea6b95976efedfbbc886a307cfc7bca1dfeca5148cb1c3970d43dfbd2c9c9fb3ebea05e27cc85a27eaebde5be7e7190a26ffa5e9ef21956f3278d94af0dca8c3be1634d477cf8ec887de18ff9de55e3bb5127019ff63dad23e09adf95d23eda7ddcc79e0e8a032c8c233687f56f9f514363fc3a31946adb60fe986de96ea05611b4d5d196c12b69cd669ec083620d4c9beea636195b524577988a0786f2d5d5a474ebc04023cb688d4c30512b651be896724d2d68e26ecd37b54ac72e0702c8fad9dade0361186ded68d34913c4618edca3a712296d19551fbb1fe21efed5700719d9aadcc848752d948d1d62c230c0a959336e90ef6fd4412b9fb1153bb671d9d83c6f7c858763672b804a8d67f536eeed5db5bc036fa62aae03f5262424d60066b3883ce9589d0c54f911f43b2286cf7e980f70c8dbcd523cbd32c332b5ef4ca9fc3a8a6f9b6b31d55afa25dd5e6daeb1d3f4b35d03534be4a258ef667fe8a71eca34df5abb47224d5e97b5d4156fcbb0e46d75c4a2b7d5e95a7cdddbaad6b2bb165bc7b6ea056328f23562b59ea11658df2ed3773196ad1119927ea6f7bf5b9d09a773ff486b01f559ad2fa4863025b3e816dda44a956ef4b2b8f83494bf8a9bddaeca459c47c51b09a7f099c06fab4ad18727e77449ebfa113ea298e91376976b9acfa13ff217a0ac458617424741026331cda59a7dd5f9b9c4238c050cfed6d72f7f04cd035124a9f597344fa20e05cce8547541f2ab0e42fc98a778d5ab966727e93cb58b3cbceae01dc1c5f8fc1c6a9e6ef9261ebde27716dca2935e9c87297efbc7f7471bf871b2d59c234b0b741af0daeb3cc0a59983d870339236ec6d94cefdb7a294f32e53d1157f5f0739390d192bd3409500038b30c84ec45615a308af1f3d7a24c9265805c91634bfb0a8e3d599a7e93c21556ac78aa3ab4efd7a5d4bb608f3382b7931ec77fceb55e77825b9046849fa887f3a605b8ace584b8574dc5f5daf4ac8eafcf2b57dd11bf58697177ddbeb2880fbae8a8d7f5dcb889147005ad8d7d0d21860000aa8852af9b5ac9d6e1320277f5f93821256613280", + "b5b48b51", + "89", + "da", + "8e", + "08", + "a8", + "96", + "ff", + "4c", + "3b", + "84", + "a4", + "e9", + "d6", + "e3", + "1f", + "99", + "2d", + "3c831e8010d3adf52d9368a7816effe8d0bbfc563f437fa7e212627972ae085f96d613cd46a102e00308e2fa5103841e96843188e45665873a380d96552560df1fb24e51db5afbd91f3a385c752e7c574e6543d355c7f3474a3a5094ae213d2745065d1efc3c999e734e90ca0dbd41c7b656440bcb352cbc6b49bc60623d2933bb7eb588c1e41556b0aaf5c179729e1d43909c8772b916fdf9d13142f43f4a88f4ce667a9a00fd0e99df699a1d2d2cf001e46466dd8e520c5a3faac7db109d465d470e4a1d4d16fbd8cc6135a475e8f539cbacaff64466f7183066eaea4573fea9f2ac3edb6d476499fe2b3b675f673c2305b7b7013fbdcc15577bfe7b745fe635299dd73735886d85ca545274789ff2552749efd05b475466be808ca0e2ab8eebf40b45299fc2c862dd05c97b8b8046ff416ae5c2ffa7aa0fe3f169bad3e495d01e8917f4fedb262f8ed52f56c75baf6500180c8d1ad4f73f4281cced60c73e3eba216d23d9bfae212dca79623b7affc2767c4a859fa6e97bb28aee692e3aade71c947e5447102f085fa57cb6dd6992c1cb5d3fd25a44736bfa30994db19ed0ef8a5c3ffaffbaae9ed393bc0000" + ], + "rawHeaders": [ + "Content-Type", + "text/html; charset=utf-8", + "Accept-Ranges", + "bytes", + "Access-Control-Allow-Origin", + "*", + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "Access-Control-Allow-Credentials", + "true", + "Cache-Control", + "max-age=60, public, must-revalidate", + "Content-Encoding", + "gzip", + "X-Cloud-Trace-Context", + "359c54828123c22e5da917479aa6b3b1", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "1151us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Vary", + "Accept-Encoding", + "Date", + "Wed, 22 Aug 2018 12:53:42 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1325", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wlij9-v6:9827,wogb66:9802,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1325,wogb66:9802,wlij9-v6:9827", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1325,wogb66:9802,/bns/wo/borg/wo/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/9,wlij9-v6:9827", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Response-Body-Transformations", + "chunked", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close", + "Transfer-Encoding", + "chunked" + ] + }, + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/json/bookend.json?__amp_source_origin=https%3A%2F%2Fampbyexample.com", + "body": "", + "status": 200, + "response": { + "bookendVersion": "v1.0", + "shareProviders": [ + "email", + "twitter", + "tumblr", + { + "provider": "facebook", + "app_id": "254325784911610" + } + ], + "components": [ + { + "type": "heading", + "text": "Introduction" + }, + { + "type": "small", + "title": " AMP Story Hello World", + "url": "/stories/introduction/amp_story_hello_world/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "Features" + }, + { + "type": "small", + "title": "Animations", + "url": "/stories/features/animations/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "small", + "title": "Layouts", + "url": "/stories/features/layouts/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "small", + "title": "Media", + "url": "/stories/features/media/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "Monetization" + }, + { + "type": "small", + "title": "DoubleClick", + "url": "/stories/monetization/doubleclick/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "small", + "title": "Publisher Served", + "url": "/stories/monetization/publisher_served/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "Visual Effects" + }, + { + "type": "small", + "title": "Ken Burns", + "url": "/stories/visual_effects/ken_burns/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "User Consent" + }, + { + "type": "small", + "title": "Story User Consent", + "url": "/stories/user_consent/story_user_consent/", + "image": "/favicons/android-chrome-256x256.png" + } + ] + }, + "rawHeaders": [ + "Amp-Access-Control-Allow-Source-Origin", + "https://ampbyexample.com", + "Access-Control-Allow-Origin", + "https://ampbyexample.com", + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "Access-Control-Allow-Credentials", + "true", + "Access-Control-Expose-Headers", + "AMP-Access-Control-Allow-Source-Origin", + "Cache-Control", + "max-age=60, public, must-revalidate", + "Content-Type", + "application/json", + "Accept-Ranges", + "bytes", + "X-Cloud-Trace-Context", + "e299b29c0bebfa48130d16b7a99c6f88", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "1185us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Date", + "Wed, 22 Aug 2018 12:53:42 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2118", + "Content-Length", + "1907", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wkc132-v6:9825,wsmn9:9835,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2118,wsmn9:9835,wkc132-v6:9825", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2118,wsmn9:9835,/bns/ws/borg/ws/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/23,wkc132-v6:9825", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/bookendsameorigin2.json b/amp-story/linter/tests/network/bookendsameorigin2.json new file mode 100644 index 0000000..3143e6f --- /dev/null +++ b/amp-story/linter/tests/network/bookendsameorigin2.json @@ -0,0 +1,285 @@ +[ + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/stories/introduction/amp_story_hello_world/preview/embed/", + "body": "", + "status": 200, + "response": [ + "1f", + "8b", + "08", + "00", + "00", + "00", + "00", + "00", + "02", + "ff", + "d5", + "7d", + "5d", + "97", + "db36b2e0bb7f054739d97127229ba43e5a2db9fb26763edc67ed4c2671eecc38c7c78722218936257248aa5bb2aeced9877ddcb7fb76cfbeec5f9b5fb255f8200110544b6dcf24d776bb49a0502854150a05a0003ef9439486e53623d6a25c26d78f9ee02feb1ffff5ffae1f59d6930509227c607f9e2c491958e122c80b525e75d6e5cc1e7558f69322cce3acb48262bb0aad220faf3a8bb2cc8af1f97918ad9c60996579fa8e84a593e6f3f35bd7795774ae9f9cb3522614e1ba28d3a54d12b2242ba80c30d890926f3b47603fafa06dcf79585db77144d2a3eba2d0b6eb78a6bacab84cc8f5cf404e4c0a2b5e595fbffcd1b2ade7244952eb2f699e444fce19cca39acbab6049ae3ab731b9cbd2bcec5861ba2a29717771542eae22721b87c4a62fdd65bc8a97eba55d844142aebc2ebc967190887721a2245ebdb772925c75c26095ae62c8ed588b9cccae3ae705a3ee3c5e95791aadc3324e57d8b2b7948b6f1748ebdb3ba4f5bc9278b94d8885ad9fa67142f22c094a723d4da3edcebe23d3f7716907405780a8c63693489097d6a8b08a9264c563af4b56d199e5169667add27c1924d6342d17137b997e7870d1e281251f546aff9568e97bb29de520b2c2aa8bef6679badcddc6453c8d93b8dc8e17711491d5be4ce544fa98903de0c2767f1a44c5a7c1937e12349f0007f428d4b6eb27ab9477add3d40fd49de87ac5d30a3d497dadab3eafea7e74a40d095641b22de3b038da8e5425da6c89641b107e9ea6f384d8611243a5761cd941164bb68265d7641c6bfce2150829010342723433d0efdf93fce846184bb735e87e2686619a47208ee399284a3cb8ce98eaebf10da6e087cd3f35fa38066c65c36f3dfe312768e4cf60404088e9d6fa76033813528d09b2cc23c250537654627eb588615c29acc04ae25b62650ca595ceac7241acfff159ef7262ae9e6515b43ec77a41827c652dd23bab4cad3027d09fac6dbacead599c17658dc1e958e7d0079efcc1b6ad9fc3055906c80c6b19e4efd799354b73eb7baa775f5ab62dc88f4bb204ce65579d15e56c45fbc97ce93451fe4eb8d2240c0cc95c6eac5025403ddd12d61e274c97e7f1727e5ea4210cda4eb69a7790bb5c49d13503a5ccb204c66b3a2a27d197ef0a6829aad78eaa58e72b5ac3a6ec8c2d5a0754515482e9743910a24288a7d08828ccd7cbe98bb8284536528defdfb28e0080bfeeb8e7571745801b00e485202b4b8b98327e6c795522e282845de53976be8a23419c91019f090fe433932752550798a8fe00aa1b399f67efe9ef7dd73a9172ff23283fc5733234c3ac825a83de3cc2c7daaeb0bef7ea2e2e4b925bcf823cb2a20034afee6fcc5c940c621c0284a486c57a099d75db31030357649dfd0ada8273821668da23d25c2e5090693025ab0f2d25a859fb241640c5fb3bb3022a710fb704add8c64122cf0b1a3c624af2a78cacaceff3205be82a82268ae4e5f6aa339b8ec1c0bc8d651df107fd9e3fb818f52f3d6fe8b9d4e4ebe5d2f92710661b62ecb7355e7019e3b01dfaa1ec6d41b7ce9363909dd0f5b9de9db7d5f83b51de16ead024bcd506ee23c4c88536ced6d3242e16247a5bc60a0edff546b63bb2bdfe2b6f38f6fbe3dec8b9ec5fbc3e886d9946f12c3e15593df95d82833f2330f089b9af4870f8b02ac1e2b84bec325d870b3b0ea90f1a7f20c5556770b1195c541866c12de616e73abc4de1444f3e02efd0dd0cdd23f052b813f05ef89b0bff08bc14ee14bcc3cdc5f018bc0877025ecfeb6fe0e708cc1cf214dcbebb819f637033c85370f7819afe517433c853700ffc0dfc1c839b419e827b042d1d1dc5130669189d18e83285c93bc129384c46333b0cb260aa0c115b521c5310e690e5bab0a7416ed309b884619a04e17bbbcc835591ac4374568fc0a78f544d9fa26613630d73bde9d0724e070bce2bdf1f6de0a7c9ab300d8ad2e6d906063d803560e7616619a689e2627d36a37f0ccde69304fbb0b1561abb0d5611d9d825d212ac7149714eca66e338d8344fef60626f1f309a87b9d7f3373d830ef3079b663715f7304e6fb8f10c5648e0a4d94d9cc522cdcb705d5a0c794b6907fed3e558c8ac7e05327d7694809ae56e34bfa5ae7d5994a82b9a956845066566f1dc88894b8c41381be6c99b4d025d9a5b673677a796248a83abce6379b1796cf57c37db9c59a00e96c8599078be28c7567f54678945380e92c51b92d839520b33c5b3", + "c38646a10354c2ddf4ef1bedfe55a4fb27913eecbb9bcbfb06908f257d301cfd9348f7dccb7b06ede368bf18b4d13e1c5efc1368bf18e0b87d79cfe07a14ed7dafdf46fb456f5865e1446055b265632b81a402ac3b39a261bd931ae679231f061777f41bb50cf7a2f2202e3f7dc3fc3e34cceb7f8a865d48fd416b98e7fafd8f97d969e6eba23fda60bdbf55cb4e90d9890d1b62c3dcdfac61a788ec34fbe1f52f871bdffdedb4f104999dd8b2410f5ba619105a5e2c73ccc085289c39fadf7188eb1cace1d1aab033802365b8c09508a86845425c81cad3a200eae7f14ade6866346948d97e54161774fd242c8a7f9b05cb38d95eddac90f03409cae03f5e222cc9a17d1deea8a1ff5f2c08299b7bcf6cfb46c428388be45db18be2224b82ed789aa4e1fb49164451bc9a8fdd0975a3c79ff57abd3d0504af69896bdd5df6f6f7755a921d07babc1c4d906836f918c76500be162ff69e6cefd23ce2c50a92001fd21c3ce8b9485a4f8b72d7a82e894b920709075aad975392f31728cb88b783b2ac12c992ee6adab7411ea37bced3c52bafa12441c26bc0588e9a8a3287760b3222afbf1704d3952a9dfc583488ce942a3eb82ee3c31d53da0bd7ddcb8d94f3fa555e9804456149e8046a70e005e6fe60d4821959104fd7a528850e6fcd275e7e15dc6e27e6da51ff387c4ee66493892a5df7f2d21f72a8e93a4988907db15d4ed3a416beeb5ef42ab83829dfc6825ff4356633ac1aef683815f0e8a3d7882e5bda1801db510abb29cc65e779ba5e45e3cf66512458003adbc88e66221b1463111471b16b5351907d0ab2d7ebe6bd043a0e350bf6740bbcaa2512e0dfbd9e6de1429b5c138b8098dc2d409fed220b424cbacb838c1685792dd00b6a05ac2a4b9c8b924d29b58359225c637dfc475c92668bb7e7c5edfc4b989c4c4478118d2eea3e81648b85bc743c9c72d3b6b0675c0b7d9a6eae3aaee55abd3efceb588061555c894db0bbbb3be7ae47b76ac1e6b95847e75ac4e32c60e4109bac4fb2a05c58d155e7a53f7006830bcbeb3b172fbc9e33f24696ef5c0e3d0b669023cb4de82ffccfae9f2800fbff85283f722e9fbbb776dff13f74ac599c8019fbdcef7df7dd77eccdced7094ce2c82d59a551d439c74de3dbf9f51fcfcc2cc495dfff362cecf59c2165e0f391e3f67b2fbc4be762e42b", + "6c", + "84", + "bf", + "f8", + "50", + "73", + "d3", + "92", + "79", + "488b311622ae073090a96f94a75994dead764be8af6c388636641b0388134c61f40193b3fb60c7b8d031f6b0abb6c35d5756f47e986b0ca323f98e8ffb80f973036a1d5a1237ef9fb3d96c32858187e4f560361dbaa3fee07e74e36006834f3534c62becd9361b21f9a2c1b8f365a71e2da990fc9c2c279591ebcd2e7ba69a7e05138bab43d11bb5b20aef3ffed77f76f6155bac260a1bf75d8b8af7be91f714a8852d0a8d93146c12c60f39976d68c60130e79618a4c7b217e92d3440e0f12434b3342d5ba55391c1074d5c9f1a3b17036423e72cb865d9f8424e98a6d0c79734ad518fc42b74ed76a8fa14ff2148b6c105e94992de59493c4e705d325cc449b45b0639386a764e3551c6c2fcc3190c8a193e2c489eeeda744c81b251e6b46160e7bb07115a7a6e9883cf5c56015bd37403036398e66c516b9a93e0fd384c302aeb50963c8282106a15f61ce4bce5f82a6b0d945dd3389ee51cf8b311fe791824e163e8acb70bcbb67a14d5d971582cc464a7763ac550217b16033254a8899e701f4f77b497727a069a822805c0ef937d05e8bc1228067c2cd39cc81082e7584390dbf31c2a84cefa986963379f4f83c76e17ff3ac3c15997aeb667410e206732c7f5e26e44e67a61cb558b2b6a35e11ad9d62db4568ba668f64c3364fff83fffbb23f5402affafe8fccc7a5c0f0603df718728d5dd71bac1e530048dd8371441484c6ddcef82e16db45e7fc1cd011802d9eb6874d3bbb85c540de4f2e2e2699a100a0cd372eca73054cff963e564cef0ef44566ccff17c2ae6fb8910c80e10b1cad625edc64cc838da4ed8630f07ff492d7f8fbed76ae2a1faa98469da47915bbf82d6e1fc2b7ad36dcffa3209a624a98610677000cd7896c23c7697ae4bacbdd99c6bfabf5ed9359bba3592d10e83e0839dc400a993b5b4b2f62cd8838d0ab62eea77ce6b2fdb58308ec791c5e70b13d5ec4c94c9c4a4bd4d8c3feac09da531f4e0dc46b7ae2c583cae34908ed848aa108f0982c9eea419faebf8c5447d6bc0c01475891667b65e5197691caea771684fc98798e48f9d3ef62abfeb9d4d4e2fd1ac8b3aafcb342220f4fc2ec823893c43a6591598c2b428444ba6508be3948d418d2bab45136db0b52159a449840b17072a3fa59c4ad7819262b9a3b66c0749c7d0ee13a93eae8846b0b1d089b48e8f67ec29ac7c0841abb47c2c17b48b0578c56734bdb65867ccbcb5d1fa7148aa669c84c6e8ad37587d98ee43202a73799dcdfe8deb42e360a227988e8a04bb3295a8964f4ae85946e3a94fb33a136e147d18d64478eb584cbb2662b09c2464568efb83cf15cf995b6041255594b8b299da6b13ea688bf880228d63221331b22973f91659332e1d21f1164093dc39e72923dd8934ce1a0eaf1809fc95863214e0c9858b37b5166519a4042bbaa0569d58d112b5f743f8016a4edeecd401bcc5e0cb2594460a17db5819e3e2a76d00c3c9699892194e5c54cfdee0bd34d59d4d7107d0153ea4d06c7f82ce8f5bf782b6650d66cbc3c57b5d13a8479472af2a5897e9a46ddd94f977125bc30509dfc314b6e9302abc07f46f7692ab26f9330f60ec442c79010b8461c067eee8498e1ceffb30212df154a01d24f17c355e425f4bc8445931a0ee16f6080e83d157ca34b6ad55aa53e91b7aae915fc78d18cdfa5a8608cdbfa4426c392da6bd9a79d33ae4181b73c8cc349b7074273433eec85a38fe66f761fac72d5cd569f8ba513dd3b6f4ded8470d3173aba13793e62a5a63ade94013e9138978139ab8b85aab33f2da92fc5fba2879", + "1f7f782506f4f793aab01819daa3dd8ff2121f2977f181b1b557754ed14f3cff703f51696cfa03f5dca947a7782d2c32bb17ddb7d4b74d604878bc39bbd7bd323bcf2a8e639dd0f12740f169e8e16e022dc596b9dbfa225bfa9e0647ac0d8b756edc1ec485cd621144e91d5d7387f1ca02a15bf28a8e7766aae64b6ae370c9a488230209675d139404f0e517f2e0d2d31737aa32e0b2de4acb2ff0c696def585557de65fad758cdab02aeb990d024445cdc5f92a479fda5619ed0bf60082b597d0c7e630ecb5cf7eb1d541b7ada094c1d969cf82bf83a31eaef30204cb871666e4ea956a5d4b54a4067ee8cb966d9c94d7cc67096e58d1c3ccfc91fdd278cbdccd6649675015b5d940704b309126807cefd4d5ab8a0ecb84be29bc7be07591de03ce042df59a268339283304dcf360a3b86a5da9099604c0f6b5355c476c22ca603428a53a816c1db3976768400bb67562c6d456ba6577ab7b34f8717b92b5653b91905ddb28c47bd8fd96b4160a5bdc959e9be8da36d3cc957345347551acb5cd8835ebaab8c010360dc911726a4282f1b91f4898c78340ca7661b52380bbbff7b74ded216233e19e126d06305e2d481e97741b608d870c60808b673cc47da76ff39d3a70e60463a9223b60e7c84418949899b4cde55a8a59aac192767ef8c2772334a91563b53b27a97842f0a0270daea123aea13827846d9d5f27f1ee9e75fa2350c81bc566e3642c7978ab46b84bd2b033a9d2f8b023a7e17b3d1e6158d118ff9b68aff228a6cc29aaa24a2a7d61e48aa4f63da4d35b29f608bb1f8544da2d3b7178ffb8cac4962b9d8ff04dafe67669df6d6e97dea38c1faf3e06323985d6ef4d62950b8551b2798e88e8ae22ae0bd28c2986ecb1f09f7dc3fc82a01fd4558c9868e3f82bd84865e7dfec371806440ccd4861b862bf2d67be2eef8d7c190c06fbaa004e72c008ced7300874a554be326a639c1a788bd5e60435dda34197fd73fcb31a15767986a859ff81629ce49a383d58a40685e12fb2f10e1311bea437dc72e858c5c2762938890ec254d3715a39195d4c711868b06167621d9b76d27126277375f8136c271efe15659c18f4035d6912590e9b9368439b5b57af001f5357300bfb51602c2e7385d56bb3a4d4ae3077db0aca255a24eb0f065dfcf17afdaed3eb4bd2e5e1dbf7846c572c6d86435759e93a0f8900b11c0ce17508b4280219533abbadb0ecbd1262807fdb3167b8d7b1a60e8dc3cd4c55517b1d874ae9145cfaeed48f6426e1754cabd201118177151a195001555db2dbccc3459335584043565a2e6a4d1fbac320f00cc8cd41d66d84aadd2dc6a857ba414ec0242f831226b2929278fd5ed7bb64f12f3d49458ca1f27aa69305b8eb56b6378147fc8b6cdff79b61dd1aacb35ec5956af607a3264091116aa0a1e6451ad57321164b5eab6d9a2b4ce7098e1c4b0f04d525a04bc4e5d6c17d478706e277f52c2a2e87bbdb304e51a89dbe7201fd90e42884490b57e48ac4269e746ec00c5847f0abc25048ab4e002861f6c613034662404bf883a43695251e46d30bb9f7af333c6f532960b791231ad7ccd10e34189052d69a1a0c030018a84aeeb311fc758d4bb4c1281c36ca3911c15338e8b0dc8b62349b129957d4be8171598355c98913c5b47541bea5a7b9afb9dd71e88118a8285d6327c1aceec7a3d0ac996c94f148c7314442fbd7e4be7a8c768ee28ce2d9acdb4c72f87c9f97bb185c78032299a7a2a8842a2e2561daa9a9a472cc482e2df4abeae99797fa40e1cc67d5a248bf2f110ee968f5f08635479b6f7a9ea7c1b1f32f4a5265ea92b83e99341a490a8bc8d95a0d5ac339de1864a4a4863b44470da512a3a6eb83b242105bc403a7bc582765c18aa287d5e6a348abf8862dce4b85d946d4e88b60699e5ed764d82f85ce348581f23d296d3a1619fde2f012ffd6cbe2175a289d6bb1e991200b4ca3", + "430359b530fdfdf9177fb09e821da1a7c1acffb05edebcb25ec4308d2df08d9fd498c3bc643da507eb60a25180c6d1dfaccc17e788832d70c2a404f5d1ba1d3830a36ba093f0ac603000fb75ae96fbe21cef03636acf8eef8d0b603ddef71837023bd9d2321d5a70366407d1bb75c1ce40d45124a6dc3dbdcab38e4f658b25dd005794ba2ce4bdcb17d4c06e74c56a8e1210bc5f783b69391d57ee183e6778412790f5f4ad0b8f6066bacb20d691b01c418a0705fbb8bcb8e0abd0f1079c93f24d373a65e3ad7727b8543d4bd2bb2a16042cb6c2b765ba4ae901aa6ef524c7a36248ec6145575828c5c717efe36ccca2cd8b7d20d6e403b14dc2763ff8bc1e983b9de6bfd2633c7ab0085d356f770c5a73ac08ca93683fed1a4ea271c74319cba7747b6e1fa620ddf7d3a88b77579dc8aa68b6329c87c3be6d9cb34a1120eebe00fd4e245d198102166ba07e9d49a91783cf15fd76ebb013ba76003cd6b7bea10b12da8701db8e33d576fc01d08bb87123ce76f02d584771daa517491b4fe9300016d780ca96a749f1e64cd98cac146f8fd1ea5c90e2c81e92703b67217539749fb35da59dfcee5d76d6accb628dd3ac4486655d1e645c0515b7747b4914d8b51b56a0eac8722dbb4607e1b93cac88aa1755f7195820d608bef14d0a52bee9f230aaf57419c31b2f4c6f3067392cc51860c5b2f60a1c6ef3a61fd80c15dcc615d816b9bad66c4e80219f216e6634a5531f5bd168aa8be250a91264cc13d468999c1435b5da08c5d18df559eb29057c05bc07d34792086a6a8e81459cdc566ba83092d19043de02a737c05337439ffeba40ed4ec89cac22d960567666c3fba1b00a42a3e98544132d90bf3eccad9e3ea51b77e096cd813185f9945b5bc7ac34bb52460c0bdaeb815b5a3493a91dba04d9dcf58d1cd2bca28bfab8eacc74b50510a4a2028ab3271269078207b149547422fcde4e673310e3d8c67812a5785d27778a42c490a8f4b5c1d696bf2d02705f97c13998bdce92348844a35abb253527d57e50042e7a9c14dd2559adb5b1995f655aa5a27b4bd76df7d08edbc0ac0afb5f99c57bd31527ecb5980ec56de8d13db085bfd337e6173d29491c1559f495447eb0c5590c768d730c903adce9c704f78e64606dce01c5e80aae385551158c22ab8074c7001bd898e9b356e310dc38318e4ef03a09f2e6417f36be9a4ea0834b55e8b61b664e240fa1cfe95b5b8e8f8dc69d07d63177529418a6023aba5db333441dd2b0a966319abc77d0958c675b398727ed1d765e7d673ac24e8f16da74b907ff635b4e75e2de91c636db5336303d2a4039dfdf692321d70719a6a7c13421fa0a84cff30bce7726d3fa9d8bb3f2c5da1776403d72988c6307d0ecace61b3047af4a24491267455c18af00a084d0f149a769a2ec33a10ad14ea9cf76b43910ebb28edc81cdbddaa123c64e193f78a20d262d517368d2de116db259431b4e510d5084e0722535007b9700d0366b8388035396209fc51bb1a550bdeb71cd5667a211ae16ddd1d731fdea04ed2d3ba825287917a11acf53b8f6cf62fd14dcdea9de416feb3cbf4f15aacef4a5cc9eaf65f6a4ccfe48cbec4b994386b61e1fcda3e6de615bb3623cdeb58dd31c0e3c661d0492442e8b34d501586a5513f5c21bf5d054688c2bc5312c4b5789c78694dc6d9ca15e4edde681c465e2769de5a6ca113a2f25d508b66a35cdade9a557cd3f19cb4b4f2ec113734f45cd93a79e461e4f4f3ca4d05328e4591b33a66da3d68911b35f51cbadd9b2f495922239f7b57a44c6d4d7691639898f54fb2ad52273d3866f6ba85fa75dc0f604f55cf7cb9e5c9627e63db5269e3ced6974f3f4a48754f714aa79d6c68c69dba87562c4dcafa8ad78dd574a56bcee6bf554bceeeb3457bcee23d57d95ea8ad76df8b686fa75da2b242b55ff6c59a9185e5be8e4cad74015cc02b8c6ac72dbf69bc0", + "42", + "02", + "ab", + "be", + "06", + "6a", + "c2", + "5c", + "73", + "85", + "99", + "7a", + "b9", + "04", + "b3", + "f6", + "cb", + "9c", + "e6", + "20cf1490bcf6ddf52ca974e6d611b6f05656afc2f664799d54d98e6c5a27d6f62243eb936ddc9d3ee4ca69358ead56977e081f61bc3afe82b2212b3da5104fcd3d0d3f4f9f7a3a993c23f1b4f81396bc6d62d7a9e2901b03828991065f0b21c146f86a35223df7f566889ca9df6888c84a7c63280d34c6544ba339027a6344a3374940f7aa46f9bc493da5329e9af7b406f1f4694f6f0ecf487a2a153c79dbc4ae3784436e0c0826461afa75132ab9f4d56a2ab9f4f5665472e9371a52c9a5af5152c9c5544ba339955c8c68f42671e8304d14170ddebbf81f036bf3856a00c599c3648f9f3c1b393dfcf3394bf5c529ffa133843f173cb9c793fd014fe8f3845e4f293ee0c97d4f293ee4c90397275c8804b5f6114f1eaab55ff2e40b51bbe70ae2d5ea3dd1a84bb57ecf972e2f381c8a562c6d95d59316d632c02677ef816fb29d671838cf7314e6f33403ff798e41043c4791024f330882e71864c17314718866192422b20c4211598a5c0e5fa9b28c8e140c033c5e301cbe29189e61100ccf5104c3d30c82e13906c1f01c45303ccd20189e63100ccf5104239a65108cc832084664dd279861bf124c323f52300cf078c170f8a660788641303c47110c4f330886e71804c37314c1f0348360788e41303c47118c6896413022cb201891a50ac6c190cd87c579de67051f8ef9de7efc4951ab9af811a8292f91c9eba51a2fcdaed21d8b09be122a1ec539db2916b7585661bb750e433931a6f25ae9eae1bd41eab8484a9605ffe46533629da6eb01eb2c518e57a799345920c4bd94263a48d59161520315240a447c6df5a383e905be6a15a7895164e938ab74196bbdea233898e3c5c3461ed29c261759b28c94a7ed31e2752684228a2188410208aa088096a5fc3794acd95d97a3dca6a504b30d052576cff338b2735c4f6cb29c62151ca7386b861bb06aaca5a56bce722e70c61af950b356a34a652f455c71972fb21bb43e0bc2f7bad24b69a2a0581495d92ef274cda7c515c5af528ce8a834aa9ca6f6d3d2baf2cb893a56210d913e25e51d21ab26520ea06115a93a5abaa62e90d5d8031ac4b053718059e4e1922d68582974ad59908aa6fa740d5d920313aa490a0281a2ff75f15afd9b3c1745f54e509756345d676f155f23d8db2c2f58a922d01829f0e88cacd148dc34616af252eb403237e54e52a111fd84592b5c0b3a78d8c7f22c7a4f85fa568fa7ae7c1cd1e568e9965003ad5ba36557ab89a7bdc3dc38571b47615e1b24360d049168b2c54d71fcb728ed1d28edeba53d5eda13a5fd03a57b7a699f97f645e9de81d27dbd748f97ee89d278eeed50d35dfca363b9c43f13e919374b5914d0ae1117545f7fdbbc6b03376b3624aa33e8ebde29d30c24c217ffd85ea7bbab16edd8ea04a4d46b747417d5dd89b5be0f5e7d9b31bcf9f5fdbaf0d6abde800b1ffad55b5f6cd9a8212a34ea43c42f728f16cfd8f214dc95a91f4d6530b9594e2c86d42fa6b22ca3599aefe4286fa6f23ca789806ea449cfa6c234bd5994f6307167228807ad0289aaa65427ccc152c47998102d87ce507821997b75410b7fe83dae024c6516bf9ed1aa406b40952f1564055b43ca0c90aae6b0b8", + "4f5edae6a6e145f6781cab79738cd8c8ae8e63e393bea11c26713646d7fa31e476a59fb37aca50ef33ba6cbeb0296c5aa712ad716862c43e9f51231af8d574e92844d5344847443737d9e4e82844eaa4c750c4e1af4caf94bc2f5a160b6980ac7e2a5a3d846cb8284b0e25a9bfb4d1b5d937438a6d81c7c59f6274f6cb20fc99be7e0760dd9fc93c25d62f37dd9f5250afb4fba7cd764e56dd5fa6eb55b9ee3e0b5618449524ddefe23cb07e0e5645f79b3c8d23f6f89c24b7042763d60f644dba5fe7719074a5e841e918bf3790b4c5de087d616126cb34c5bbb792bb605b5f42276521878012c01e839b1bed6934af16da5085acd15d97acde73a96314a52395eba9f2390c7e7bad2196a72a1284a174288d1fa6fc4c8cfe003227a5bc3f46af9976a1d355974c2b5785372e18c08f39cbf75fb81646e579b4d72a87dffb67dd3acff6f4b3f155f6a05914cf502ebc6e230e4a512841d9c2ef36a2a31440b124bee8750d315393666ccba2df35c651192fe75d0cbaa6e82af30dc3ce62d835445d35ae94dd63eba15d4031d032c032423ba418442d26aa11dae40e31b0b72bc55f639c6b7d62a78ad2aa843b2d57a6602fa52625adede262ceb02a2413e3dd9d91b8bc4d8bfd32c4f14cead827be5062bed34bbbfde6e0e160712776e33c45e3262d6083c62a230c9ed44e57110600b65dcf3591c86856ac9e815630eaf53740b9502d35915f2f64ba0909b28d37472be9cdeb73d46cfdb61c3557bd05c919d4d72f0b41456416ac1359e5f0fa8e30c84c1b948da807bdd0987e41da667a2fdf5fa1990dfd8894bad9aedcd592ad93847d89c970710fbbb95491dfa4614f0cbb96777777fc3a976eb363cbfd4dfa0ed56f3b243ee05e2e65affbe8d29437e2e413de795f8d5cc3e1e0a2f7319844d01b4d4f9719081267deab7091e6bfb2107faaf1faad75eaa5fedca4f5f172bcf66bf02fe93df89f5df63db7472cb7fb593475dd7e7426cbbef9059d63b1547614bf5050df718eea27bc1074686dfc060ed8c2643b4f57f8e988cf2dfcaf4b9fdcaedda7bfcf2627c0d6f4d3cf41a8038c1809e403fe12f8919cf52b47dd6f5ceb261cc9f6db849b9f4631cd7d559046f463c75081e4b2098763a0e8c0a932546eb46c7e00457c5c2f27f855247b1914f20db05a2e3fa0a278df97b38bd9453b4251e4b86b8b943e43bfd9466f7d6b7c444677246dcffac2baa05ea4541373f1f07f7ba055d63f93bf8830a41767993a6c51cbb53a0500e6ebfdb6161d7f17b499f1c881ac3883b1ccb599937f4de961bd37b5f5906ff2fbbdd899eb2fd43811e5b3264cf14cfc894811ea450d01268396a25a0c5f1b98052eb8d98c98a0f97cc5d0618dcc13530243b5bf4ab770bed1a7ad7a091842008c44f23ce900eed66395cd4f45182615b2f30b98e802eea4d9b3eb49e9965d1c5c4f179124c2bead6ed3138c8d14e4bac95834e0b4eb037b4dad95d0e007e0e2e51c3fd2760ed342523ac5edfc8caede488744ad550a0ccd48500a9bead537425f64f5b6aa725caa19a87a0fadf557c06ab2957be2e9399002ac14f91b98297e13bc967860f1e7fecee26a3da561120cddc4a855853988b8bd871f8ad07bc8fad469d428b1a4f52880fa7ed02e35f965607f6fd8cb360df6c7f43b05744f23009dc9d96d5a34b14de88f9d8b4bbf21759eda2863b32fcad27b658d899cba3e2e53f2ef5ad273ad3bdb964f505167faf7b3d0a51257d9a9f13336eb28ba2fc92a49bb406f10a6dd17eb308e028b6592ee8b784ad8acdd0280b4fb0d7917fcfb9a56cc129ec625ee2e054bebdf09278e653c4bd7794c7220eaae3e3e2dcf36bea8a51664f602d421a16bee867b98f007fc52bafa281bdddb207f6ce0fdd93e708229ba41313da9a74fe7a7787c6d96ea2342446457aa9eea1cf02dab7908e2c4173c7e341643577585b9e680e1597e7df9ebacba", + "25fc8f7f9cf05873bc5db4fece50dbe706181c9d42d387fab319bcace5f885458282e019cf7b89a7f3f9aa092db71bd372162d480f5c559d722791ce48025f5afd9247454a7527b5ed29cd6c7e8fc9b07dd5721db391a6aa113af220492a22f48b64b51632f155c7e907aeb84b9d3dea7b0dadc21a08ce1c559fae4a03f631850768132dd9fac58a2389aa6daf722d309b954a9715ab9555f7143497334fa8ae71d8f0d89216bd1ad27878fa889edd8ed40a5abefa7de1e084a7d7bcb0f95e7cf5353eb2d338d4ee8cf6872762161758cb02c37b9b46cc1616eb2996325c717eb0373dbcab9ad05a3229d2a96f7ae211ef656efb2c09dfec3a9a25f75564978bf572aaed3caa33347988e23d4ef227b4ee596d82c88319bd31f274720d223cce1a886f68b0f588da1fa24f781afdaf8f2f2f3f3f330e1ebd62d2f685526f04b59de9b39407e8a6daca43f6fa04e432ceaaa623b5bc95b896eed4b810fd30629ab1088a5a0fd9e4459c8e953e9f83cf92316f33e1d44aa07847a6052b9cb519beda8d8179c37ef7c7e73ff8afb74ffbd3bf6cd6e107370e9effe486dfa4b72f7a512fda0e7a2fb783db7019debe7cf7f5ddcb67971fa26518df3c8fb2d7cf7f4a7ffcf966fbc3f3a7fd9bf869fafa2fc92a78fee7cb9b77376ef87c0e30afb3d77f8d9e4d7b7348fb7afef2d9d7db1fe8cfcdfcf53229a6dfb8f18dffc3bbbfe1cff6e6cb6ffe9cce6f9e7d3dfff1f9d345f4fd7cfe1af25fbdfaf6eee69bd72ffff4aceffde9e7af7b2fdefd7973f3cdb71f5ebcfbb607bfb7d367aefbe2dd2ffd9b6ffebcfee155f2f2e52ba8e7d5a2f821767d12dfdcfe3877ff27e2bcf96673f7b7bffe94de7c0ff4bd7701e7d3f4e5bb9f7cf8b979f93c8d6fbe7f9d4dbfbfbbbc590e6ea7cb5fe2171ffa3f3c7b77771bf65eaf7e9c5f5db5af8f6997f4cbcb63765f9da4615adfb4b96ab10fcf297b2c67fa2a365d77c071e258d8cc086abc8aa1f5dbde0f5ecb6f603ae5767ee53bbdeae7c342e503e807afd96ffd5039eb9d6de3f7c8f8b9765ea6b95976efedfbbc886a307cfc7bca1dfeca5148cb1c3970d43dfbd2c9c9fb3ebea05e27cc85a27eaebde5be7e7190a26ffa5e9ef21956f3278d94af0dca8c3be1634d477cf8ec887de18ff9de55e3bb5127019ff63dad23e09adf95d23eda7ddcc79e0e8a032c8c233687f56f9f514363fc3a31946adb60fe986de96ea05611b4d5d196c12b69cd669ec083620d4c9beea636195b524577988a0786f2d5d5a474ebc04023cb688d4c30512b651be896724d2d68e26ecd37b54ac72e0702c8fad9dade0361186ded68d34913c4618edca3a712296d19551fbb1fe21efed5700719d9aadcc848752d948d1d62c230c0a959336e90ef6fd4412b9fb1153bb671d9d83c6f7c858763672b804a8d67f536eeed5db5bc036fa62aae03f5262424d60066b3883ce9589d0c54f911f43b2286cf7e980f70c8dbcd523cbd32c332b5ef4ca9fc3a8a6f9b6b31d55afa25dd5e6daeb1d3f4b35d03534be4a258ef667fe8a71eca34df5abb47224d5e97b5d4156fcbb0e46d75c4a2b7d5e95a7cdddbaad6b2bb165bc7b6ea056328f23562b59ea11658df2ed3773196ad1119927ea6f7bf5b9d09a773ff486b01f559ad2fa4863025b3e816dda44a956ef4b2b8f83494bf8a9bddaeca459c47c51b09a7f099c06fab4ad18727e77449ebfa113ea298e91376976b9acfa13ff217a0ac458617424741026331cda59a7dd5f9b9c4238c050cfed6d72f7f04cd035124a9f597344fa20e05cce8547541f2ab0e42fc98a778d5ab966727e93cb58b3cbceae01dc1c5f8fc1c6a9e6ef9261ebde27716dca2935e9c87297efbc7f7471bf871b2d59c234b0b741af0daeb3cc0a59983d870339236ec6d94cefdb7a294f32e53d1157f5f0739390d192bd3409500038b30c84ec45615a308af1f3d7a24c9265805c91634", + "bfb0a8e3d599a7e93c21556ac78aa3ab4efd7a5d4bb608f3382b7931ec77fceb55e77825b9046849fa887f3a605b8ace584b8574dc5f5daf4ac8eafcf2b57dd11bf58697177ddbeb2880fbae8a8d7f5dcb889147005ad8d7d0d21860000aa8852af9b5ac9d6e1320277f5f93821256613280b5b48b5189da8e", + "08", + "a8", + "96", + "ff", + "4c", + "3b", + "84", + "a4e9d6e31f992d3c831e8010d3adf52d9368a7816effe8d0bbfc563f437fa7e212627972ae085f96d613cd46a102e00308e2fa5103841e96843188e45665873a380d96552560df1fb24e51db5afbd91f3a385c752e7c574e6543d355c7f3474a3a5094ae213d2745065d1efc3c999e734e90ca0dbd41c7b656440bcb352cbc6b49bc60623d2933bb7eb588c1e41556b0aaf5c179729e1d43909c8772b916fdf9d13142f43f4a88f4ce667a9a00fd0e99df699a1d2d2cf001e46466dd8e520c5a3faac7db109d465d470e4a1d4d16fbd8cc6135a475e8f539cbacaff64466f7183066eaea4573fea9f2ac3edb6d476499fe2b3b675f673c2305b7b7013fbdcc15577bfe7b745fe635299dd73735886d85ca545274789ff2552749efd05b475466be808ca0e2ab8eebf40b45299fc2c862dd05c97b8b8046ff416ae5c2ffa7aa0fe3f169bad3e495d01e8917f4fedb262f8ed52f56c75baf6500180c8d1ad4f73f4281cced60c73e3eba216d23d9bfae212dca79623b7affc2767c4a859fa6e97bb28aee692e3aade71c947e5447102f085fa57cb6dd6992c1cb5d3fd25a44736bfa30994db19ed0ef8a5c3ffaffbaae9ed393bc0000" + ], + "rawHeaders": [ + "Cache-Control", + "max-age=60, public, must-revalidate", + "Content-Type", + "text/html; charset=utf-8", + "Accept-Ranges", + "bytes", + "Access-Control-Allow-Origin", + "*", + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "Access-Control-Allow-Credentials", + "true", + "Content-Encoding", + "gzip", + "X-Cloud-Trace-Context", + "5a0746581756c174f27ea7dcc23b1feb", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "1525us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Vary", + "Accept-Encoding", + "Date", + "Wed, 22 Aug 2018 12:56:04 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/382", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wsbgb5-v6:9854,wakm3:9829,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/382,wakm3:9829,wsbgb5-v6:9854", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/382,wakm3:9829,/bns/wa/borg/wa/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/5,wsbgb5-v6:9854", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Response-Body-Transformations", + "chunked", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close", + "Transfer-Encoding", + "chunked" + ] + }, + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/json/bookend.json?__amp_source_origin=https%3A%2F%2Fampbyexample.com", + "body": "", + "status": 200, + "response": { + "bookendVersion": "v1.0", + "shareProviders": [ + "email", + "twitter", + "tumblr", + { + "provider": "facebook", + "app_id": "254325784911610" + } + ], + "components": [ + { + "type": "heading", + "text": "Introduction" + }, + { + "type": "small", + "title": " AMP Story Hello World", + "url": "/stories/introduction/amp_story_hello_world/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "Features" + }, + { + "type": "small", + "title": "Animations", + "url": "/stories/features/animations/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "small", + "title": "Layouts", + "url": "/stories/features/layouts/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "small", + "title": "Media", + "url": "/stories/features/media/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "Monetization" + }, + { + "type": "small", + "title": "DoubleClick", + "url": "/stories/monetization/doubleclick/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "small", + "title": "Publisher Served", + "url": "/stories/monetization/publisher_served/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "Visual Effects" + }, + { + "type": "small", + "title": "Ken Burns", + "url": "/stories/visual_effects/ken_burns/", + "image": "/favicons/android-chrome-256x256.png" + }, + { + "type": "heading", + "text": "User Consent" + }, + { + "type": "small", + "title": "Story User Consent", + "url": "/stories/user_consent/story_user_consent/", + "image": "/favicons/android-chrome-256x256.png" + } + ] + }, + "rawHeaders": [ + "Access-Control-Allow-Origin", + "https://ampbyexample.com", + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "Cache-Control", + "max-age=60, public, must-revalidate", + "Accept-Ranges", + "bytes", + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Access-Control-Allow-Credentials", + "true", + "Access-Control-Expose-Headers", + "AMP-Access-Control-Allow-Source-Origin", + "Amp-Access-Control-Allow-Source-Origin", + "https://ampbyexample.com", + "Content-Type", + "text/plain; charset=utf-8", + "X-Cloud-Trace-Context", + "657201950fbe886cb91716cb4d33b15c", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "1190us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Date", + "Wed, 22 Aug 2018 12:56:05 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/237", + "Content-Length", + "1907", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wswa26-v6:9844,wsgt11:9848,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/237,wsgt11:9848,wswa26-v6:9844", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/237,wsgt11:9848,/bns/ws/borg/ws/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/25,wswa26-v6:9844", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/bookendsameorigin3.json b/amp-story/linter/tests/network/bookendsameorigin3.json new file mode 100644 index 0000000..f83d2f3 --- /dev/null +++ b/amp-story/linter/tests/network/bookendsameorigin3.json @@ -0,0 +1,211 @@ +[ + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/stories/introduction/amp_story_hello_world/preview/embed/", + "body": "", + "status": 200, + "response": [ + "1f", + "8b", + "08", + "00", + "00", + "00", + "00", + "00", + "02", + "ff", + "d5", + "7d5d97db36b2e0bb7f054739d97127229ba43e5a2db9fb26763edc67ed4c2671eecc38c7c78722218936257248aa5bb2aeced9877ddcb7fb76cfbeec5f9b5fb255f8200110544b6dcf24d776bb49a0502854150a05a0003ef9439486e53623d6a25c26d78f9ee02feb1ffff5ffae1f59d6930509227c607f9e2c491958e122c80b525e75d6e5cc1e7558f69322cce3acb48262bb0aad220faf3a8bb2cc8af1f97918ad9c60996579fa8e84a593e6f3f35bd7795774ae9f9cb3522614e1ba28d3a54d12b2242ba80c30d890926f3b47603fafa06dcf79585db77144d2a3eba2d0b6eb78a6bacab84cc8f5cf404e4c0a2b5e595fbffcd1b2ade7244952eb2f699e444fce19cca39acbab6049ae3ab731b9cbd2bcec5861ba2a29717771542eae22721b87c4a62fdd65bc8a97eba55d844142aebc2ebc967190887721a2245ebdb772925c75c26095ae62c8ed588b9cccae3ae705a3ee3c5e95791aadc3324e57d8b2b7948b6f1748ebdb3ba4f5bc9278b94d8885ad9fa67142f22c094a723d4da3edcebe23d3f7716907405780a8c63693489097d6a8b08a9264c563af4b56d199e5169667add27c1924d6342d17137b997e7870d1e281251f546aff9568e97bb29de520b2c2aa8bef6679badcddc6453c8d93b8dc8e17711491d5be4ce544fa98903de0c2767f1a44c5a7c1937e12349f0007f428d4b6eb27ab9477add3d40fd49de87ac5d30a3d497dadab3eafea7e74a40d095641b22de3b038da8e5425da6c89641b107e9ea6f384d8611243a5761cd941164bb68265d7641c6bfce2150829010342723433d0efdf93fce846184bb735e87e2686619a47208ee399284a3cb8ce98eaebf10da6e087cd3f35fa38066c65c36f3dfe312768e4cf60404088e9d6fa76033813528d09b2cc23c250537654627eb588615c29acc04ae25b62650ca595ceac7241acfff159ef7262ae9e6515b43ec77a41827c652dd23bab4cad3027d09fac6dbacead599c17658dc1e958e7d0079efcc1b6ad9fc3055906c80c6b19e4efd799354b73eb7baa775f5ab62dc88f4bb204ce65579d15e56c45fbc97ce93451fe4eb8d2240c0cc95c6eac5025403ddd12d61e274c97e7f1727e5ea4210cda4eb69a7790bb5c49d13503a5ccb204c66b3a2a27d197ef0a6829aad78eaa58e72b5ac3a6ec8c2d5a0754515482e9743910a24288a7d08828ccd7cbe98bb8284536528defdfb28e0080bfeeb8e7571745801b00e485202b4b8b98327e6c795522e282845de53976be8a23419c91019f090fe433932752550798a8fe00aa1b399f67efe9ef7dd73a9172ff23283fc5733234c3ac825a83de3cc2c7daaeb0bef7ea2e2e4b925bcf823cb2a20034afee6fcc5c940c621c0284a486c57a099d75db31030357649dfd0ada8273821668da23d25c2e5090693025ab0f2d25a859fb241640c5fb3bb3022a710fb704add8c64122cf0b1a3c624af2a78cacaceff3205be82a82268ae4e5f6aa339b8ec1c0bc8d651df107fd9e3fb818f52f3d6fe8b9d4e4ebe5d2f92710661b62ecb7355e7019e3b01dfaa1ec6d41b7ce9363909dd0f5b9de9db7d5f83b51de16ead024bcd506ee23c4c88536ced6d3242e16247a5bc60a0edff546b63bb2bdfe2b6f38f6fbe3dec8b9ec5fbc3e886d9946f12c3e15593df95d82833f2330f089b9af4870f8b02ac1e2b84bec325d870b3b0ea90f1a7f20c5556770b1195c541866c12de616e73abc4de1444f3e02efd0dd0cdd23f052b813f05ef89b0bff08bc14ee14bcc3cdc5f018bc0877025ecfeb6fe0e708cc1cf214dcbebb819f637033c85370f7819afe517433c853700ffc0dfc1c839b419e827b042d1d1dc5130669189d18e83285c93bc129384c46333b0cb260aa0c115b521c5310e690e5bab0a7416ed309b884619a04e17bbbcc835591ac4374568fc0a78f544d9fa26613630d73bde9d0724e070bce2bdf1f6de0a7c9ab300d8ad2e6d906063d803560e7616619a689e2627d36a37f0ccde69304fbb0b1561abb0d5611d9d825d212ac7149714eca66e338d8344fef60626f1f309a87b9d7f3373d830ef3079b663715f7304e6fb8f10c5648e0a4d94d9cc522cdcb705d5a0c794b6907fed3e558c8ac7e05327d7694809ae56e34bfa5ae7d5994a82b9a956845066566f1dc88894b8c41381be6c99b4d025d9a5b673677a796248a83abce6379b1796cf57c37db9c59a00e96c8599078be28c7567f54678945380e92c51b92d839520b33c5b3c38646a10354c2ddf4ef1bedfe55a4fb27913eecbb9bcbfb06908f257d301cfd9348f7dccb7b06", + "ede368bf18b4d13e1c5efc1368bf18e0b87d79cfe07a14ed7dafdf46fb456f5865e1446055b265632b81a402ac3b39a261bd931ae679231f061777f41bb50cf7a2f2202e3f7dc3fc3e34cceb7f8a865d48fd416b98e7fafd8f97d969e6eba23fda60bdbf55cb4e90d9890d1b62c3dcdfac61a788ec34fbe1f52f871bdffdedb4f104999dd8b2410f5ba619105a5e2c73ccc085289c39fadf7188eb1cace1d1aab033802365b8c09508a86845425c81cad3a200eae7f14ade6866346948d97e54161774fd242c8a7f9b05cb38d95eddac90f03409cae03f5e222cc9a17d1deea8a1ff5f2c08299b7bcf6cfb46c428388be45db18be2224b82ed789aa4e1fb49164451bc9a8fdd0975a3c79ff57abd3d0504af69896bdd5df6f6f7755a921d07babc1c4d906836f918c76500be162ff69e6cefd23ce2c50a92001fd21c3ce8b9485a4f8b72d7a82e894b920709075aad975392f31728cb88b783b2ac12c992ee6adab7411ea37bced3c52bafa12441c26bc0588e9a8a3287760b3222afbf1704d3952a9dfc583488ce942a3eb82ee3c31d53da0bd7ddcb8d94f3fa555e9804456149e8046a70e005e6fe60d4821959104fd7a528850e6fcd275e7e15dc6e27e6da51ff387c4ee66493892a5df7f2d21f72a8e93a4988907db15d4ed3a416beeb5ef42ab83829dfc6825ff4356633ac1aef683815f0e8a3d7882e5bda1801db510abb29cc65e779ba5e45e3cf66512458003adbc88e66221b1463111471b16b5351907d0ab2d7ebe6bd043a0e350bf6740bbcaa2512e0dfbd9e6de1429b5c138b8098dc2d409fed220b424cbacb838c1685792dd00b6a05ac2a4b9c8b924d29b58359225c637dfc475c92668bb7e7c5edfc4b989c4c4478118d2eea3e81648b85bc743c9c72d3b6b0675c0b7d9a6eae3aaee55abd3efceb588061555c894db0bbbb3be7ae47b76ac1e6b95847e75ac4e32c60e4109bac4fb2a05c58d155e7a53f7006830bcbeb3b172fbc9e33f24696ef5c0e3d0b669023cb4de82ffccfae9f2800fbff85283f722e9fbbb776dff13f74ac599c8019fbdcef7df7dd77eccdced7094ce2c82d59a551d439c74de3dbf9f51fcfcc2cc495dfff362cecf59c2165e0f391e3f67b2fbc4be7", + "62", + "e4", + "2b", + "6c", + "84", + "bf", + "f8", + "50", + "73", + "d3", + "92", + "79", + "48", + "8b", + "31", + "16", + "22", + "ae", + "073090a96f94a75994dead764be8af6c388636641b0388134c61f40193b3fb60c7b8d031f6b0abb6c35d5756f47e986b0ca323f98e8ffb80f973036a1d5a1237ef9fb3d96c32858187e4f560361dbaa3fee07e74e36006834f3534c62becd9361b21f9a2c1b8f365a71e2da990fc9c2c279591ebcd2e7ba69a7e05138bab43d11bb5b20aef3ffed77f76f6155bac260a1bf75d8b8af7be91f714a8852d0a8d93146c12c60f39976d68c60130e79618a4c7b217e92d3440e0f12434b3342d5ba55391c1074d5c9f1a3b17036423e72cb865d9f8424e98a6d0c79734ad518fc42b74ed76a8fa14ff2148b6c105e94992de59493c4e705d325cc449b45b0639386a764e3551c6c2fcc3190c8a193e2c489eeeda744c81b251e6b46160e7bb07115a7a6e9883cf5c56015bd37403036398e66c516b9a93e0fd384c302aeb50963c8282106a15f61ce4bce5f82a6b0d945dd3389ee51cf8b311fe791824e163e8acb70bcbb67a14d5d971582cc464a7763ac550217b16033254a8899e701f4f77b497727a069a822805c0ef937d05e8bc1228067c2cd39cc81082e7584390dbf31c2a84cefa986963379f4f83c76e17ff3ac3c15997aeb667410e206732c7f5e26e44e67a61cb558b2b6a35e11ad9d62db4568ba668f64c3364fff83fffbb23f5402affafe8fccc7a5c0f0603df718728d5dd71bac1e530048dd8371441484c6ddcef82e16db45e7fc1cd011802d9eb6874d3bbb85c540de4f2e2e2699a100a0cd372eca73054cff963e564cef0ef44566ccff17c2ae6fb8910c80e10b1cad625edc64cc838da4ed8630f07ff492d7f8fbed76ae2a1faa98469da47915bbf82d6e1fc2b7ad36dcffa3209a624a98610677000cd7896c23c7697ae4bacbdd99c6bfabf5ed9359bba3592d10e83e0839dc400a993b5b4b2f62cd8838d0ab62eea77ce6b2fdb58308ec791c5e70b13d5ec4c94c9c4a4bd4d8c3feac09da531f4e0dc46b7ae2c583cae34908ed848aa108f0982c9eea419faebf8c5447d6bc0c01475891667b65e5197691caea771684fc98798e48f9d3ef62abfeb9d4d4e2fd1ac8b3aafcb342220f4fc2ec823893c43a6591598c2b428444ba6508be3948d418d2bab45136db0b52159a449840b17072a3fa59c4ad7819262b9a3b66c0749c7d0ee13a93eae8846b0b1d089b48e8f67ec29ac7c0841abb47c2c17b48b0578c56734bdb65867ccbcb5d1fa7148aa669c84c6e8ad37587d98ee43202a73799dcdfe8deb42e360a227988e8a04bb3295a8964f4ae85946e3a94fb33a136e147d18d64478eb584cbb2662b09c2464568efb83cf15cf995b6041255594b8b299da6b13ea688bf880228d63221331b22973f91659332e1d21f1164093dc39e72923dd8934ce1a0eaf1809fc95863214e0c9858b37b5166519a4042bbaa0569d58d112b5f743f8016a4edeecd401bcc5e0cb2594460a17db5819e3e2a76d00c3c9699892194e5c54cfdee0bd34d59d4d7107d0153ea4d06c7f82ce8f5bf782b6650d66cbc3c57b5d13a8479472af2a5897e9a46ddd94f977125bc30509dfc314b6e9302abc07f46f7692ab26f9330f60ec442c79010b8461c067eee8498e1ceffb30212df154a01d24f17c355e42", + "5f4bc8445931a0ee16f6080e83d157ca34b6ad55aa53e91b7aae915fc78d18cdfa5a8608cdbfa4426c392da6bd9a79d33ae4181b73c8cc349b7074273433eec85a38fe66f761fac72d5cd569f8ba513dd3b6f4ded8470d3173aba13793e62a5a63ade94013e9138978139ab8b85aab33f2da92fc5fba28791f7f782506f4f793aab01819daa3dd8ff2121f2977f181b1b557754ed14f3cff703f51696cfa03f5dca947a7782d2c32bb17ddb7d4b74d604878bc39bbd7bd323bcf2a8e639dd0f12740f169e8e16e022dc596b9dbfa225bfa9e0647ac0d8b756edc1ec485cd621144e91d5d7387f1ca02a15bf28a8e7766aae64b6ae370c9a488230209675d139404f0e517f2e0d2d31737aa32e0b2de4acb2ff0c696def585557de65fad758cdab02aeb990d024445cdc5f92a479fda5619ed0bf60082b597d0c7e630ecb5cf7eb1d541b7ada094c1d969cf82bf83a31eaef30204cb871666e4ea956a5d4b54a4067ee8cb966d9c94d7cc67096e58d1c3ccfc91fdd278cbdccd6649675015b5d940704b309126807cefd4d5ab8a0ecb84be29bc7be07591de03ce042df59a268339283304dcf360a3b86a5da9099604c0f6b5355c476c22ca603428a53a816c1db3976768400bb67562c6d456ba6577ab7b34f8717b92b5653b91905ddb28c47bd8fd96b4160a5bdc959e9be8da36d3cc957345347551acb5cd8835ebaab8c010360dc911726a4282f1b91f4898c78340ca7661b52380bbbff7b74ded216233e19e126d06305e2d481e97741b608d870c60808b673cc47da76ff39d3a70e60463a9223b60e7c84418949899b4cde55a8a59aac192767ef8c2772334a91563b53b27a97842f0a0270daea123aea13827846d9d5f27f1ee9e75fa2350c81bc566e3642c7978ab46b84bd2b033a9d2f8b023a7e17b3d1e6158d118ff9b68aff228a6cc29aaa24a2a7d61e48aa4f63da4d35b29f608bb1f8544da2d3b7178ffb8cac4962b9d8ff04dafe67669df6d6e97dea38c1faf3e06323985d6ef4d62950b8551b2798e88e8ae22ae0bd28c2986ecb1f09f7dc3fc82a01fd4558c9868e3f82bd84865e7dfec371806440ccd4861b862bf2d67be2eef8d7c190c06fbaa004e72c008ced7300874a554be326a639c1a788bd5e60435dda34197fd73fcb31a15767986a859ff81629ce49a383d58a40685e12fb2f10e1311bea437dc72e858c5c2762938890ec254d3715a39195d4c711868b06167621d9b76d27126277375f8136c271efe15659c18f4035d6912590e9b9368439b5b57af001f5357300bfb51602c2e7385d56bb3a4d4ae3077db0aca255a24eb0f065dfcf17afdaed3eb4bd2e5e1dbf7846c572c6d86435759e93a0f8900b11c0ce17508b4280219533abbadb0ecbd1262807fdb3167b8d7b1a60e8dc3cd4c55517b1d874ae9145cfaeed48f6426e1754cabd201118177151a195001555db2dbccc3459335584043565a2e6a4d1fbac320f00cc8cd41d66d84aadd2dc6a857ba414ec0242f831226b2929278fd5ed7bb64f12f3d49458ca1f27aa69305b8eb56b6378147fc8b6cdff79b61dd1aacb35ec5956af607a3264091116aa0a1e6451ad57321164b5eab6d9a2b4ce7098e1c4b0f04d525a04bc4e5d6c17d478706e277f52c2a2e87bbdb304e51a89dbe7201fd90e42884490b57e48ac4269e746ec00c5847f0abc25048ab4e002861f6c613034662404bf883a43695251e46d30bb9f7af333c6f532960b791231ad7ccd10e34189052d69a1a0c030018a84aeeb311fc758d4bb4c1281c36ca3911c15338e8b0dc8b62349b129957d4be8171598355c98913c5b47541bea5a7b9afb9dd71e88118a8285d6327c1aceec7a3d0ac996c94f148c7314442fbd7e4be7a8c768ee28ce2d9acdb4c72f87c9f97bb185c78032299a7a2a8842a2e2561daa9a9a472cc482e2df4abeae99797fa40e1cc67d5a248bf2f110ee968f5", + "f08635479b6f7a9ea7c1b1f32f4a5265ea92b83e99341a490a8bc8d95a0d5ac339de1864a4a4863b44470da512a3a6eb83b242105bc403a7bc582765c18aa287d5e6a348abf8862dce4b85d946d4e88b60699e5ed764d82f85ce348581f23d296d3a1619fde2f012ffd6cbe2175a289d6bb1e991200b4ca3430359b530fdfdf9177fb09e821da1a7c1acffb05edebcb25ec4308d2df08d9fd498c3bc643da507eb60a25180c6d1dfaccc17e788832d70c2a404f5d1ba1d3830a36ba093f0ac603000fb75ae96fbe21cef03636acf8eef8d0b603ddef71837023bd9d2321d5a70366407d1bb75c1ce40d45124a6dc3dbdcab38e4f658b25dd005794ba2ce4bdcb17d4c06e74c56a8e1210bc5f783b69391d57ee183e6778412790f5f4ad0b8f6066bacb20d691b01c418a0705fbb8bcb8e0abd0f1079c93f24d373a65e3ad7727b8543d4bd2bb2a16042cb6c2b765ba4ae901aa6ef524c7a36248ec6145575828c5c717efe36ccca2cd8b7d20d6e403b14dc2763ff8bc1e983b9de6bfd2633c7ab0085d356f770c5a73ac08ca93683fed1a4ea271c74319cba7747b6e1fa620ddf7d3a88b77579dc8aa68b6329c87c3be6d9cb34a1120eebe00fd4e245d198102166ba07e9d49a91783cf15fd76ebb013ba76003cd6b7bea10b12da8701db8e33d576fc01d08bb87123ce76f02d584771daa517491b4fe9300016d780ca96a749f1e64cd98cac146f8fd1ea5c90e2c81e92703b67217539749fb35da59dfcee5d76d6accb628dd3ac4486655d1e645c0515b7747b4914d8b51b56a0eac8722dbb4607e1b93cac88aa1755f7195820d608bef14d0a52bee9f230aaf57419c31b2f4c6f3067392cc51860c5b2f60a1c6ef3a61fd80c15dcc615d816b9bad66c4e80219f216e6634a5531f5bd168aa8be250a91264cc13d468999c1435b5da08c5d18df559eb29057c05bc07d34792086a6a8e81459cdc566ba83092d19043de02a737c05337439ffeba40ed4ec89cac22d960567666c3fba1b00a42a3e98544132d90bf3eccad9e3ea51b77e096cd813185f9945b5bc7ac34bb52460c0bdaeb815b5a3493a91dba04d9dcf58d1cd2bca28bfab8eacc74b50510a4a2028ab3271269078207b149547422fcde4e673310e3d8c67812a5785d27778a42c490a8f4b5c1d696bf2d02705f97c13998bdce92348844a35abb253527d57e50042e7a9c14dd2559adb5b1995f655aa5a27b4bd76df7d08edbc0ac0afb5f99c57bd31527ecb5980ec56de8d13db085bfd337e6173d29491c1559f495447eb0c5590c768d730c903adce9c704f78e64606dce01c5e80aae385551158c22ab8074c7001bd898e9b356e310dc38318e4ef03a09f2e6417f36be9a4ea0834b55e8b61b664e240fa1cfe95b5b8e8f8dc69d07d63177529418a6023aba5db333441dd2b0a966319abc77d0958c675b398727ed1d765e7d673ac24e8f16da74b907ff635b4e75e2de91c636db5336303d2a4039dfdf692321d70719a6a7c13421fa0a84cff30bce7726d3fa9d8bb3f2c5da1776403d72988c6307d0ecace61b3047af4a24491267455c18af00a084d0f149a769a2ec33a10ad14ea9cf76b43910ebb28edc81cdbddaa123c64e193f78a20d262d517368d2de116db259431b4e510d5084e0722535007b9700d0366b8388035396209fc51bb1a550bdeb71cd5667a211ae16ddd1d731fdea04ed2d3ba825287917a11acf53b8f6cf62fd14dcdea9de416feb3cbf4f15aacef4a5cc9eaf65f6a4ccfe48cbec4b994386b61e1fcda3e6de615bb3623cdeb58dd31c0e3c661d0492442e8b34d501586a5513f5c21bf5d054688c2bc5312c4b5789c78694dc6d9ca15e4edde681c465e2769de5a6ca113a2f25d508b66a35cdade9a557cd3f19cb4b4f2ec113734f45cd93a79e461e4f4f3ca4d05328e4591b33a66da3d68911b35f51cbadd9b2f495922239f7b57a44c6d4", + "d7691639898f54fb2ad52273d3866f6ba85fa75dc0f604f55cf7cb9e5c9627e63db5269e3ced6974f3f4a48754f714aa79d6c68c69dba87562c4dcafa8ad78dd574a56bcee6bf554bceeeb3457bcee23d57d95ea8ad76df8b686fa75da2b242b55ff6c59a9185e5be8e4cad74015cc02b8c6ac72db", + "f6", + "9b", + "c0", + "42", + "02", + "ab", + "be", + "06", + "6a", + "c25c7385997ab904b3f6cb9ce620cf1490bcf6ddf52ca974e6d611b6f05656afc2f664799d54d98e6c5a27d6f62243eb936ddc9d3ee4ca69358ead56977e081f61bc3afe82b2212b3da5104fcd3d0d3f4f9f7a3a993c23f1b4f81396bc6d62d7a9e2901b03828991065f0b21c146f86a35223df7f566889ca9df6888c84a7c63280d34c6544ba339027a6344a3374940f7aa46f9bc493da5329e9af7b406f1f4694f6f0ecf487a2a153c79dbc4ae3784436e0c0826461afa75132ab9f4d56a2ab9f4f5665472e9371a52c9a5af5152c9c5544ba339955c8c68f42671e8304d14170ddebbf81f036bf3856a00c599c3648f9f3c1b393dfcf3394bf5c529ffa133843f173cb9c793fd014fe8f3845e4f293ee0c97d4f293ee4c90397275c8804b5f6114f1eaab55ff2e40b51bbe70ae2d5ea3dd1a84bb57ecf972e2f381c8a562c6d95d59316d632c02677ef816fb29d671838cf7314e6f33403ff798e41043c4791024f330882e71864c17314718866192422b20c4211598a5c0e5fa9b28c8e140c033c5e301cbe29189e61100ccf5104c3d30c82e13906c1f01c45303ccd20189e63100ccf5104239a65108cc832084664dd279861bf124c323f52300cf078c170f8a660788641303c47110c4f330886e71804c37314c1f0348360788e41303c47118c6896413022cb201891a50ac6c190cd87c579de67051f8ef9de7efc4951ab9af811a8292f91c9eba51a2fcdaed21d8b09be122a1ec539db2916b7585661bb750e433931a6f25ae9eae1bd41eab8484a9605ffe46533629da6eb01eb2c518e57a799345920c4bd94263a48d59161520315240a447c6df5a383e905be6a15a7895164e938ab74196bbdea233898e3c5c3461ed29c261759b28c94a7ed31e2752684228a2188410208aa088096a5fc3794acd95d97a3dca6a504b30d052576cff338b2735c4f6cb29c62151ca7386b861bb06aaca5a56bce722e70c61af950b356a34a652f455c71972fb21bb43e0bc2f7bad24b69a2a0581495d92ef274cda7c515c5af528ce8a834aa9ca6f6d3d2baf2cb893a56210d913e25e51d21ab26520ea06115a93a5abaa62e90d5d8031ac4b053718059e4e1922d68582974ad59908aa6fa740d5d920313aa490a0281a2ff75f15afd9b3c1745f54e509756345d676f155f23d8db2c2f58a922d01829f0e88cacd148dc34616af252eb403237e54e52a111fd84592b5c0b3a78d8c7f22c7a4f85fa568fa7ae7c1cd1e568e9965003ad5ba36557ab89a7bdc3dc38571b47615e1b24360d049168b2c54d71fcb728ed1d28edeba53d5eda13a5fd03a57b7a699f97f645e9de81d27dbd748f97ee89d278eeed50d35dfca363b9c43f13e919374b5914d0ae1117545f7fdbbc6b03376b3624aa33e8ebde29d30c24c217ffd85ea7bbab16edd8ea04a4d46b747417d5dd89b5be0f5e7d9b31bcf9f5fdbaf0d6abde800b1ffad55b5f6cd9a8212a34ea43c42f728f16cfd8f214dc95a91f4d6530b9594e2c86d42fa6b22ca3599aefe4286fa6f23ca789806ea449cfa6c234bd5994f6307167228807ad0289aaa65427ccc152c47998102d87ce507821997b75410b7fe83dae024c6516bf9ed1aa406b40952f1564055b43ca0c90aae6b0b84f5edae6a6e145f6781cab79738cd8c8ae8e63e393bea11c26713646d7fa31e476a59fb37aca50ef33ba6cbeb0296c5aa712ad716862c43e9f51231af8d574e92844d5344847443737d9e4e82844eaa4c750c4e1af4caf94bc2f5a160b6980ac7e2a5a3d846cb8284b0e25a9bfb4d1b5d937", + "438a6d81c7c59f6274f6cb20fc99be7e0760dd9fc93c25d62f37dd9f5250afb4fba7cd764e56dd5fa6eb55b9ee3e0b5618449524ddefe23cb07e0e5645f79b3c8d23f6f89c24b7042763d60f644dba5fe7719074a5e841e918bf3790b4c5de087d616126cb34c5bbb792bb605b5f42276521878012c01e839b1bed6934af16da5085acd15d97acde73a96314a52395eba9f2390c7e7bad2196a72a1284a174288d1fa6fc4c8cfe003227a5bc3f46af9976a1d355974c2b5785372e18c08f39cbf75fb81646e579b4d72a87dffb67dd3acff6f4b3f155f6a05914cf502ebc6e230e4a512841d9c2ef36a2a31440b124bee8750d315393666ccba2df35c651192fe75d0cbaa6e82af30dc3ce62d835445d35ae94dd63eba15d4031d032c032423ba418442d26aa11dae40e31b0b72bc55f639c6b7d62a78ad2aa843b2d57a6602fa52625adede262ceb02a2413e3dd9d91b8bc4d8bfd32c4f14cead827be5062bed34bbbfde6e0e160712776e33c45e3262d6083c62a230c9ed44e57110600b65dcf3591c86856ac9e815630eaf53740b9502d35915f2f64ba0909b28d37472be9cdeb73d46cfdb61c3557bd05c919d4d72f0b41456416ac1359e5f0fa8e30c84c1b948da807bdd0987e41da667a2fdf5fa1990dfd8894bad9aedcd592ad93847d89c970710fbbb95491dfa4614f0cbb96777777fc3a976eb363cbfd4dfa0ed56f3b243ee05e2e65affbe8d29437e2e413de795f8d5cc3e1e0a2f7319844d01b4d4f9719081267deab7091e6bfb2107faaf1faad75eaa5fedca4f5f172bcf66bf02fe93df89f5df63db7472cb7fb593475dd7e7426cbbef9059d63b1547614bf5050df718eea27bc1074686dfc060ed8c2643b4f57f8e988cf2dfcaf4b9fdcaedda7bfcf2627c0d6f4d3cf41a8038c1809e403fe12f8919cf52b47dd6f5ceb261cc9f6db849b9f4631cd7d559046f463c75081e4b2098763a0e8c0a932546eb46c7e00457c5c2f27f855247b1914f20db05a2e3fa0a278df97b38bd9453b4251e4b86b8b943e43bfd9466f7d6b7c444677246dcffac2baa05ea4541373f1f07f7ba055d63f93bf8830a41767993a6c51cbb53a0500e6ebfdb6161d7f17b499f1c881ac3883b1ccb599937f4de961bd37b5f5906ff2fbbdd899eb2fd43811e5b3264cf14cfc894811ea450d01268396a25a0c5f1b98052eb8d98c98a0f97cc5d0618dcc13530243b5bf4ab770bed1a7ad7a091842008c44f23ce900eed66395cd4f45182615b2f30b98e802eea4d9b3eb49e9965d1c5c4f179124c2bead6ed3138c8d14e4bac95834e0b4eb037b4dad95d0e007e0e2e51c3fd2760ed342523ac5edfc8caede488744ad550a0ccd48500a9bead537425f64f5b6aa725caa19a87a0fadf557c06ab2957be2e9399002ac14f91b98297e13bc967860f1e7fecee26a3da561120cddc4a855853988b8bd871f8ad07bc8fad469d428b1a4f52880fa7ed02e35f965607f6fd8cb360df6c7f43b05744f23009dc9d96d5a34b14de88f9d8b4bbf21759eda2863b32fcad27b658d899cba3e2e53f2ef5ad273ad3bdb964f505167faf7b3d0a51257d9a9f13336eb28ba2fc92a49bb406f10a6dd17eb308e028b6592ee8b784ad8acdd0280b4fb0d7917fcfb9a56cc129ec625ee2e054bebdf09278e653c4bd7794c7220eaae3e3e2dcf36bea8a51664f602d421a16bee867b98f007fc52bafa281bdddb207f6ce0fdd93e708229ba41313da9a74fe7a7787c6d96ea2342446457aa9eea1cf02dab7908e2c4173c7e341643577585b9e680e1597e7df9ebacba25fc8f7f9cf05873bc5db4fece50dbe706181c9d42d387fab319bcace5f885458282e019cf7b89a7f3f9aa092db71bd372162d480f5c559d722791ce48025f5afd9247454a7527b5ed29cd6c7e8fc9b07dd5721db391a6aa113af220492a22f48b64b51632f155c7e907aeb84b9d3dea7b0d", + "adc21a08ce1c559fae4a03f631850768132dd9fac58a2389aa6daf722d309b954a9715ab9555f7143497334fa8ae71d8f0d89216bd1ad27878fa889edd8ed40a5abefa7de1e084a7d7bcb0f95e7cf5353eb2d338d4ee8cf6872762161758cb02c37b9b46cc1616eb2996325c717eb0373dbcab9ad05a3229d2a96f7ae211ef656efb2c09dfec3a9a25f75564978bf572aaed3caa33347988e23d4ef227b4ee596d82c88319bd31f274720d223cce1a886f68b0f588da1fa24f781afdaf8f2f2f3f3f330e1ebd62d2f685526f04b59de9b39407e8a6daca43f6fa04e432ceaaa623b5bc95b896eed4b810fd30629ab1088a5a0fd9e4459c8e953e9f83cf92316f33e1d44aa07847a6052b9cb519beda8d8179c37ef7c7e73ff8afb74ffbd3bf6cd6e107370e9effe486dfa4b72f7a512fda0e7a2fb783db7019debe7cf7f5ddcb67971fa26518df3c8fb2d7cf7f4a7ffcf966fbc3f3a7fd9bf869fafa2fc92a78fee7cb9b77376ef87c0e30afb3d77f8d9e4d7b7348fb7afef2d9d7db1fe8cfcdfcf53229a6dfb8f18dffc3bbbfe1cff6e6cb6ffe9cce6f9e7d3dfff1f9d345f4fd7cfe1af25fbdfaf6eee69bd72ffff4aceffde9e7af7b2fdefd7973f3cdb71f5ebcfbb607bfb7d367aefbe2dd2ffd9b6ffebcfee155f2f2e52ba8e7d5a2f821767d12dfdcfe3877ff27e2bcf96673f7b7bffe94de7c0ff4bd7701e7d3f4e5bb9f7cf8b979f93c8d6fbe7f9d4dbfbfbbbc590e6ea7cb5fe2171ffa3f3c7b77771bf65eaf7e9c5f5db5af8f6997f4cbcb63765f9da4615adfb4b96ab10fcf297b2c67fa2a365d77c071e258d8cc086abc8aa1f5dbde0f5ecb6f603ae5767ee53bbdeae7c342e503e807afd96ffd5039eb9d6de3f7c8f8b9765ea6b95976efedfbbc886a307cfc7bca1dfeca5148cb1c3970d43dfbd2c9c9fb3ebea05e27cc85a27eaebde5be7e7190a26ffa5e9ef21956f3278d94af0dca8c3be1634d477cf8ec887de18ff9de55e3bb5127019ff63dad23e09adf95d23eda7ddcc79e0e8a032c8c233687f56f9f514363fc3a31946adb60fe986de96ea05611b4d5d196c12b69cd669ec083620d4c9beea636195b524577988a0786f2d5d5a474ebc04023cb688d4c30512b651be896724d2d68e26ecd37b54ac72e0702c8fad9dade0361186ded68d34913c4618edca3a712296d19551fbb1fe21efed5700719d9aadcc848752d948d1d62c230c0a959336e90ef6fd4412b9fb1153bb671d9d83c6f7c858763672b804a8d67f536eeed5db5bc036fa62aae03f5262424d60066b3883ce9589d0c54f911f43b2286cf7e980f70c8dbcd523cbd32c332b5ef4ca9fc3a8a6f9b6b31d55afa25dd5e6daeb1d3f4b35d03534be4a258ef667fe8a71eca34df5abb47224d5e97b5d4156fcbb0e46d75c4a2b7d5e95a7cdddbaad6b2bb165bc7b6ea056328f23562b59ea11658df2ed3773196ad1119927ea6f7bf5b9d09a773ff486b01f559ad2fa4863025b3e816dda44a956ef4b2b8f83494bf8a9bddaeca459c47c51b09a7f099c06fab4ad18727e77449ebfa113ea298e91376976b9acfa13ff217a0ac458617424741026331cda59a7dd5f9b9c4238c050cfed6d72f7f04cd035124a9f597344fa20e05cce8547541f2ab0e42fc98a778d5ab966727e93cb58b3cbceae01dc1c5f8fc1c6a9e6ef9261ebde27716dca2935e9c87297efbc7f7471bf871b2d59c234b0b741af0daeb3cc0a59983d870339236ec6d94cefdb7a294f32e53d1157f5f0739390d192bd3409500038b30c84ec45615a308af1f3d7a24c9265805c91634bfb0a8e3d599a7e93c21556ac78aa3ab4efd7a5d4bb608f3382b7931ec77fceb55e77825b9046849fa887f3a605b8ace584b8574dc5f5daf4ac8eafcf2b57dd11bf58697177ddbeb2880fbae8a8d7f5dcb889147005ad8d7d0d21860000aa8852af9b5ac9d6e1320277f5f93821256613280", + "b5b48b51", + "89", + "da", + "8e", + "08", + "a8", + "96", + "ff", + "4c", + "3b", + "84", + "a4", + "e9", + "d6", + "e3", + "1f", + "99", + "2d", + "3c831e8010d3adf52d9368a7816effe8d0bbfc563f437fa7e212627972ae085f96d613cd46a102e00308e2fa5103841e96843188e45665873a380d96552560df1fb24e51db5afbd91f3a385c752e7c574e6543d355c7f3474a3a5094ae213d2745065d1efc3c999e734e90ca0dbd41c7b656440bcb352cbc6b49bc60623d2933bb7eb588c1e41556b0aaf5c179729e1d43909c8772b916fdf9d13142f43f4a88f4ce667a9a00fd0e99df699a1d2d2cf001e46466dd8e520c5a3faac7db109d465d470e4a1d4d16fbd8cc6135a475e8f539cbacaff64466f7183066eaea4573fea9f2ac3edb6d476499fe2b3b675f673c2305b7b7013fbdcc15577bfe7b745fe635299dd73735886d85ca545274789ff2552749efd05b475466be808ca0e2ab8eebf40b45299fc2c862dd05c97b8b8046ff416ae5c2ffa7aa0fe3f169bad3e495d01e8917f4fedb262f8ed52f56c75baf6500180c8d1ad4f73f4281cced60c73e3eba216d23d9bfae212dca79623b7affc2767c4a859fa6e97bb28aee692e3aade71c947e5447102f085fa57cb6dd6992c1cb5d3fd25a44736bfa30994db19ed0ef8a5c3ffaffbaae9ed393bc0000" + ], + "rawHeaders": [ + "Content-Type", + "text/html; charset=utf-8", + "Accept-Ranges", + "bytes", + "Access-Control-Allow-Origin", + "*", + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "Access-Control-Allow-Credentials", + "true", + "Cache-Control", + "max-age=60, public, must-revalidate", + "Content-Encoding", + "gzip", + "X-Cloud-Trace-Context", + "359c54828123c22e5da917479aa6b3b1", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "1151us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Vary", + "Accept-Encoding", + "Date", + "Wed, 22 Aug 2018 12:53:42 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1325", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wlij9-v6:9827,wogb66:9802,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1325,wogb66:9802,wlij9-v6:9827", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1325,wogb66:9802,/bns/wo/borg/wo/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/9,wlij9-v6:9827", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Response-Body-Transformations", + "chunked", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close", + "Transfer-Encoding", + "chunked" + ] + }, + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/json/bookend.json?__amp_source_origin=https%3A%2F%2Fampbyexample.com", + "body": "", + "status": 200, + "response": "not JSON", + "rawHeaders": [ + "Amp-Access-Control-Allow-Source-Origin", + "https://ampbyexample.com", + "Access-Control-Allow-Origin", + "https://ampbyexample.com", + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "Access-Control-Allow-Credentials", + "true", + "Access-Control-Expose-Headers", + "AMP-Access-Control-Allow-Source-Origin", + "Cache-Control", + "max-age=60, public, must-revalidate", + "Content-Type", + "application/json", + "Accept-Ranges", + "bytes", + "X-Cloud-Trace-Context", + "e299b29c0bebfa48130d16b7a99c6f88", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "1185us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Date", + "Wed, 22 Aug 2018 12:53:42 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2118", + "Content-Length", + "1907", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wkc132-v6:9825,wsmn9:9835,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2118,wsmn9:9835,wkc132-v6:9825", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2118,wsmn9:9835,/bns/ws/borg/ws/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/23,wkc132-v6:9825", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/getimagesize.json b/amp-story/linter/tests/network/getimagesize.json new file mode 100644 index 0000000..5a12138 --- /dev/null +++ b/amp-story/linter/tests/network/getimagesize.json @@ -0,0 +1,41 @@ +[ + { + "scope": "https://s.gravatar.com:443", + "method": "GET", + "path": "/avatar/3928085cafc1e496fb3d990a9959f233?s=150", + "body": "", + "status": 200, + "response": "ffd8ffe000104a46494600010101006000600000fffe003b43524541544f523a2067642d6a7065672076312e3020287573696e6720494a47204a50454720763632292c207175616c697479203d2039300affdb0043000302020302020303030304030304050805050404050a070706080c0a0c0c0b0a0b0b0d0e12100d0e110e0b0b1016101113141515150c0f171816141812141514ffdb00430103040405040509050509140d0b0d1414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414ffc00011080096009603012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030101010101010101010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c03010002110311003f00f0e5b7ca161b3db3522c7b461b6f3c74a45ba8231959e37033c236efcb150c9751b49d5db3c6561738fc857a2f43c25ab23d69ade3d22ede7823b945899bca91432b9c703078eb5c06b1f0434468e130a7d8ef6388472f97cc729030c4af6c9e7231838aecb54d421b89ec2d53cc653309645f29812a9f3771fde0a3f1ab33df24c598c372f8f451fd4d649277b9d0a4e3f09e196da5eb5f0a75fcd84df6db09cfef2d1880ee3fd907", + "rawHeaders": [ + "Server", + "nginx", + "Date", + "Tue, 21 Aug 2018 14:02:07 GMT", + "Content-Type", + "image/jpeg", + "Content-Length", + "8654", + "Connection", + "close", + "Last-Modified", + "Mon, 06 Aug 2012 22:41:59 GMT", + "Link", + "; rel=\"canonical\"", + "Content-Disposition", + "inline; filename=\"3928085cafc1e496fb3d990a9959f233.jpeg\"", + "Access-Control-Allow-Origin", + "*", + "X-nc", + "HIT lhr 1", + "Accept-Ranges", + "bytes", + "Expires", + "Tue, 21 Aug 2018 14:07:07 GMT", + "Cache-Control", + "max-age=300", + "Source-Age", + "247" + ], + "responseIsBinary": true + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/getinlinemetadata.json b/amp-story/linter/tests/network/getinlinemetadata.json new file mode 100644 index 0000000..659bde5 --- /dev/null +++ b/amp-story/linter/tests/network/getinlinemetadata.json @@ -0,0 +1,56 @@ +[ + { + "scope": "https://ithinkihaveacat.github.io:443", + "method": "GET", + "path": "/hello-world-amp-story/", + "body": "", + "status": 200, + "response": [ + "1f8b0800000000000003bd17c96ee336f49eafe030289000a665d9e399d8b19c2e9702452f6d6f451150d293c49822059296c713e4dffb28d9b2ec719ba5414f221fdfbe6bf121d589db56400a57cae5c5c27f082f2b22b9ca230a8a2e2f085914c0537fc063098e93a4e0c6828be8da65ec86ee9e6c6244e508b75b95106b928816ce55761e0449aa86c8b532fa011237d4260fead1f0c1d2e52268a9ceb148d6d6e992818412140a430e0c21664b5fc03de8b059383c2bcb092761f93348a907e41750e4c7b551f6c322681f5a2429d48a1890114db8d24a245c525218c80ee2852b104914bc069e7037cc11b08e87420785e7cd36dac89475ea0434e8f33ee69569e5ec30d73a97c02b6187892e83c4dabb8c97426ea31f2cafe69f4723daea64dd56822d001ced8747f112225a0bd854da384a12e4da78702352574429d42201d65c06a550a25c97cca265108503bc3ac1e5fedec5d64bf299c1622d24984a7207cb58a7db47b68178251ce3c8883ba1d57c672c378edc58621d54f62a1c804aafc9c89290286d4a2e49ac5d71cb4afdf5cda4f68d946fa27afa7e6fe90ab699411f5b72207fcc8c2e1f6b61452ca470db7921d214d493d37d607394f084bcbcddefc3c8be0f1ffd2e6cde8107d6a9cfb6e542e95dc1be2efdb04ee134af76307b0a3abe1e44079decd3fc6fbb520b26e4b23170402e3165c8e30e4848cc93556ef45aa52cd1529b39d914c2c1ed0ee169f72dc21e8daf7dd6d6f99c505fe9f4f6f8d18aaf30271303e5c9c306445eb839c1ce702aa21790d8883407744c0af2e0879e06a3ef7a17429ce1ca66580073d27483abc9750bf3cebf1a8feacd8084a3bab8beed11e98a273e9a6474803e75a7f04444871d9ec77e4ea38fc3695f27f69c5267c4ecbf972b502cf623e04f9e3851c35fe4b2efb19e229def58ba366df690706a6fcf2038810d3667d95a252d1e700be7107dcf9eff4388cee16742ca066f8e296036dca49dfcd6a27d2a5ff8e37e802f7cc9ec52ba9b483b32cc6495728965b003347330a2a71392ee9eab752c050e1f13d15f056e04e8a2df1d6ab541fc6f7098d4b96647631be79ce135c7fa69a65c7b0c26b3f1cde8669af02c09e1e3ec53164fd2d96cc467b3e92c1b4f2677360aa7a38ebfc6966d981f738663133812b0aea4e6e9702356a28454f06633f0b7cadf02145a6a65039cd6651c400010fcc4155a003598fb3612f7f8c6d57d138fe14395079fc69fab2fec593cbaef0f072fb38ae74044eaa736b68c0ee30827476e4cf22d18e2a06cba5c4471bfc0e8f608902415356990b9011ed1121baa04d6601e21fae52d5cfe86e1dfde611a84474c02e4d2532338a7476748706cc9bf19d855d22b8cf4f9fc8d8927967816a2cc1b19fd4a39d9075f18f797459ce22abcd56b5c9e0cd80ae9b03350d22e52743c998e711d6cba6f44c31b5ccc96ada350cdffc5d538765ee1e4ff9e497f145cadfc92fceea9d483b63dab6d5528a9f935f91bd329ff4bab0c0000" + ], + "rawHeaders": [ + "Server", + "GitHub.com", + "Content-Type", + "text/html; charset=utf-8", + "Last-Modified", + "Thu, 16 Aug 2018 11:45:05 GMT", + "ETag", + "W/\"5b7563c1-cab\"", + "Access-Control-Allow-Origin", + "*", + "Expires", + "Tue, 21 Aug 2018 14:08:01 GMT", + "Cache-Control", + "max-age=600", + "Content-Encoding", + "gzip", + "X-GitHub-Request-Id", + "C168:76CB:1625BB:1F7825:5B7C1A68", + "Content-Length", + "1087", + "Accept-Ranges", + "bytes", + "Date", + "Tue, 21 Aug 2018 14:02:05 GMT", + "Via", + "1.1 varnish", + "Age", + "0", + "Connection", + "close", + "X-Served-By", + "cache-lhr6339-LHR", + "X-Cache", + "MISS", + "X-Cache-Hits", + "0", + "X-Timer", + "S1534860125.445752,VS0,VE81", + "Vary", + "Accept-Encoding", + "X-Fastly-Request-ID", + "835aaf7403124075a9240261fc4dda7449ac02b6" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/getschemametadata.json b/amp-story/linter/tests/network/getschemametadata.json new file mode 100644 index 0000000..bbaa671 --- /dev/null +++ b/amp-story/linter/tests/network/getschemametadata.json @@ -0,0 +1,142 @@ +[ + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/stories/introduction/amp_story_hello_world/preview/embed/", + "body": "", + "status": 200, + "response": [ + "1f", + "8b", + "08", + "00", + "00", + "00", + "00", + "00", + "02ffd57d5d97db36b2e0bb7f054739d97127229ba43e5a2db9fb26763edc67ed4c2671eecc38c7c78722218936257248aa5bb2aeced9877ddcb7fb76cfbeec5f9b5fb255f8200110544b6dcf24d776bb49a0502854150a05a0003ef9439486e53623d6a25c26d78f9ee02feb1ffff5ffae1f59d6930509227c607f9e2c491958e122c80b525e75d6e5cc1e7558f69322cce3acb48262bb0aad220faf3a8bb2cc8af1f97918ad9c60996579fa8e84a593e6f3f35bd7795774ae9f9cb3522614e1ba28d3a54d12b2242ba80c30d890926f3b47603fafa06dcf79585db77144d2a3eba2d0b6eb78a6bacab84cc8f5cf404e4c0a2b5e595fbffcd1b2ade7244952eb2f699e444fce19cca39acbab6049ae3ab731b9cbd2bcec5861ba2a29717771542eae22721b87c4a62fdd65bc8a97eba55d844142aebc2ebc967190887721a2245ebdb772925c75c26095ae62c8ed588b9cccae3ae705a3ee3c5e95791aadc3324e57d8b2b7948b6f1748ebdb3ba4f5bc9278b94d8885ad9fa67142f22c094a723d4da3edcebe23d3f7716907405780a8c63693489097d6a8b08a9264c563af4b56d199e5169667add27c1924d6342d17137b997e7870d1e281251f546aff9568e97bb29de520b2c2aa8bef6679badcddc6453c8d93b8dc8e17711491d5be4ce544fa98903de0c2767f1a44c5a7c1937e12349f0007f428d4b6eb27ab9477add3d40fd49de87ac5d30a3d497dadab3eafea7e74a40d095641b22de3b038da8e5425da6c89641b107e9ea6f384d8611243a5761cd941164bb68265d7641c6bfce2150829010342723433d0efdf93fce846184bb735e87e2686619a47208ee399284a3cb8ce98eaebf10da6e087cd3f35fa38066c65c36f3dfe312768e4cf60404088e9d6fa76033813528d09b2cc23c250537654627eb588615c29acc04ae25b62650ca595ceac7241acfff159ef7262ae9e6515b43ec77a41827c652dd23bab4cad3027d09fac6dbacead599c17658dc1e958e7d0079efcc1b6ad9fc3055906c80c6b19e4efd799354b73eb7baa775f5ab62dc88f4bb204ce65579d15e56c45fbc97ce93451fe4eb8d2240c0cc95c6eac5025403ddd12d61e274c97e7f1727e5ea4210cda4eb69a7790bb5c49d13503a5ccb204c66b3a2a27d197ef0a6829aad78eaa58e72b5ac3a6ec8c2d5a0754515482e9743910a24288a7d08828ccd7cbe98bb8284536528defdfb28e0080bfeeb8e7571745801b00e485202b4b8b98327e6c795522e282845de53976be8a23419c91019f090fe433932752550798a8fe00aa1b399f67efe9ef7dd73a9172ff23283fc5733234c3ac825a83de3cc2c7daaeb0bef7ea2e2e4b925bcf823cb2a20034afee6fcc5c940c621c0284a486c57a099d75db31030357649dfd0ada8273821668da23d25c2e5090693025ab0f2d25a859fb241640c5fb3bb3022a710fb704add8c64122cf0b1a3c624af2a78cacaceff3205be82a82268ae4e5f6aa339b8ec1c0bc8d651df107fd9e3fb818f52f3d6fe8b9d4e4ebe5d2f92710661b62ecb7355e7019e3b01dfaa1ec6d41b7ce9363909dd0f5b9de9db7d5f83b51de16ead024bcd506ee23c4c88536ced6d3242e16247a5bc60a0edff546b63bb2bdfe2b6f38f6fbe3dec8b9ec5fbc3e886d9946f12c3e15593df95d82833f2330f089b9af4870f8b02ac1e2b84bec325d870b3b0ea90f1a7f20c5556770b1195c541866c12de616e73abc4de1444f3e02efd0dd0cdd23f052b813f05ef89b0bff08bc14ee14bcc3cdc5f018bc0877025ecfeb6fe0e708cc1cf214dcbebb819f637033c85370f7819afe517433c853700ffc0dfc1c839b419e827b042d1d1dc5130669189d18e83285c93bc129384c46333b0cb260aa0c115b521c5310e690e5bab0a7416ed309b884619a04e17bbbcc835591ac4374568fc0a78f544d9fa26613630d73bde9d0724e070bce2bdf1f6de0a7c9ab300d8ad2e6d906063d803560e7616619a689e2627d36a37f0ccde69304fbb0b1561abb0d5611d9d825d212ac7149714eca66e338d8344fef60626f1f309a87b9d7f3373d830ef3079b663715f7304e6fb8f10c5648e0a4d94d9cc522cdcb705d5a0c794b6907fed3e558c8ac7e05327d7694809ae56e34bfa5ae7d5994a82b9a956845066566f1dc88894b8c41381be6c99b4d025d9a5b673677a796248a83abce6379b1796cf57c37db9c59a00e96c8599078be28c7567f54678945380e92c51b92d839520b33c5b3c38646a10354c2ddf4ef1bedfe55a4fb27913eecbb9bcbfb06908f257d301cfd9348f7dccb7b06ede368bf18b4d13e1c5efc1368bf18e0b87d79cfe07a14ed7dafdf46fb456f5865e1446055b265632b81a402ac", + "3b39a261bd931ae679231f061777f41bb50cf7a2f2202e3f7dc3fc3e34cceb7f8a865d48fd416b98e7fafd8f97d969e6eba23fda60bdbf55cb4e90d9890d1b62c3dcdfac61a788ec34fbe1f52f871bdffdedb4f104999dd8b2410f5ba619105a5e2c73ccc085289c39fadf7188eb1cace1d1aab033802365b8c09508a86845425c81cad3a200eae7f14ade6866346948d97e54161774fd242c8a7f9b05cb38d95eddac90f03409cae03f5e222cc9a17d1deea8a1ff5f2c08299b7bcf6cfb46c428388be45db18be2224b82ed789aa4e1fb49164451bc9a8fdd0975a3c79ff57abd3d0504af69896bdd5df6f6f7755a921d07babc1c4d906836f918c76500be162ff69e6cefd23ce2c50a92001fd21c3ce8b9485a4f8b72d7a82e894b920709075aad975392f31728cb88b783b2ac12c992ee6adab7411ea37bced3c52bafa12441c26bc0588e9a8a3287760b3222afbf1704d3952a9dfc583488ce942a3eb82ee3c31d53da0bd7ddcb8d94f3fa555e9804456149e8046a70e005e6fe60d4821959104fd7a528850e6fcd275e7e15dc6e27e6da51ff387c4ee66493892a5df7f2d21f72a8e93a4988907db15d4ed3a416beeb5ef42ab83829dfc6825ff4356633ac1aef683815f0e8a3d7882e5bda1801db510abb29cc65e779ba5e45e3cf66512458003adbc88e66221b1463111471b16b5351907d0ab2d7ebe6bd043a0e350bf6740bbcaa2512e0dfbd9e6de1429b5c138b8098dc2d409fed220b424cbacb838c1685792dd00b6a05ac2a4b9c8b924d29b58359225c637dfc475c92668bb7e7c5edfc4b989c4c4478118d2eea3e81648b85bc743c9c72d3b6b0675c0b7d9a6eae3aaee55abd3efceb588061555c894db0bbbb3be7ae47b76ac1e6b95847e75ac4e32c60e4109bac4fb2a05c58d155e7a53f7006830bcbeb3b172fbc9e33f24696ef5c0e3d0b669023cb4de82ffccfae9f2800fbff85283f722e9fbbb776dff13f74ac599c8019fbdcef7df7dd77eccdced7094ce2c82d59a551d439c74de3dbf9f51fcfcc2cc495dfff362cecf59c2165e0f391e3f67b2f", + "bc", + "4b", + "e7", + "62", + "e4", + "2b", + "6c", + "84", + "bf", + "f8", + "50", + "73", + "d3", + "92", + "79", + "48", + "8b", + "31", + "16", + "22", + "ae073090a96f94a75994dead764be8af6c388636641b0388134c61f40193b3fb60c7b8d031f6b0abb6c35d5756f47e986b0ca323f98e8ffb80f973036a1d5a1237ef9fb3d96c32858187e4f560361dbaa3fee07e74e36006834f3534c62becd9361b21f9a2c1b8f365a71e2da990fc9c2c279591ebcd2e7ba69a7e05138bab43d11bb5b20aef3ffed77f76f6155bac260a1bf75d8b8af7be91f714a8852d0a8d93146c12c60f39976d68c60130e79618a4c7b217e92d3440e0f12434b3342d5ba55391c1074d5c9f1a3b17036423e72cb865d9f8424e98a6d0c79734ad518fc42b74ed76a8fa14ff2148b6c105e94992de59493c4e705d325cc449b45b0639386a764e3551c6c2fcc3190c8a193e2c489eeeda744c81b251e6b46160e7bb07115a7a6e9883cf5c56015bd37403036398e66c516b9a93e0fd384c302aeb50963c8282106a15f61ce4bce5f82a6b0d945dd3389ee51cf8b311fe791824e163e8acb70bcbb67a14d5d971582cc464a7763ac550217b16033254a8899e701f4f77b497727a069a822805c0ef937d05e8bc1228067c2cd39cc81082e7584390dbf31c2a84cefa986963379f4f83c76e17ff3ac3c15997aeb667410e206732c7f5e26e44e67a61cb558b2b6a35e11ad9d62db4568ba668f64c3364fff83fffbb23f5402affafe8fccc7a5c0f0603df718728d5dd71bac1e530048dd8371441484c6ddcef82e16db45e7fc1cd011802d9eb6874d3bbb85c540de4f2e2e2699a100a0cd372eca73054cff963e564cef0ef44566ccff17c2ae6fb8910c80e10b1cad625edc64cc838da4ed8630f07ff492d7f8fbed76ae2a1faa98469da47915bbf82d6e1fc2b7ad36dcffa3209a624a98610677000cd7896c23c7697ae4bacbdd99c6bfabf5ed9359bba3592d10e83e0839dc400a993b5b4b2f62cd8838d0ab62eea77ce6b2fdb58308ec791c5e70b13d5ec4c94c9c4a4bd4d8c3feac09da531f4e0dc46b7ae2c583cae34908ed848aa108f0982c9eea419faebf8c5447d6bc0c01475891667b65e5197691caea771684fc98798e48f9d3ef62abfeb9d4d4e2fd1ac8b3aafcb342220f4fc2ec823893c43a6591598c2b428444ba6508be3948d418d2bab45136db0b52159a449840b17072a3fa59c4ad7819262b9a3b66c0749c7d0ee13a93eae8846b0b1d089b48e8f67ec29ac7c0841abb47c2c17b48b0578c56734bdb65867ccbcb5d1fa7148aa669c84c6e8ad37587d98ee43202a73799dcdfe8deb42e360a227988e8a04bb3295a8964f4ae85946e3a94fb33a136e147d18d64478eb584cbb2662b09c2464568efb83cf15cf995b6041255594b8b299da6b13ea688bf880228d63221331b22973f91659332e1d21f1164093dc39e72923dd8934ce1a0eaf1809fc95863214e0c9858b37b5166519a4042bbaa0569d58d112b5f743f8016a4edeecd401bcc5e0cb2594460a17db5819e3e2a76d00c3c9699892194e5c54cfdee0bd34d59d4d7107d0153ea4d06c7f82ce8f5bf782b6650d66cbc3c57b5d13a8479472af2a5897e9a46ddd94f977125bc30509dfc314b6e9302abc07f46f7692ab26f9330f60ec442c79010b8461c0", + "67eee8498e1ceffb30212df154a01d24f17c355e425f4bc8445931a0ee16f6080e83d157ca34b6ad55aa53e91b7aae915fc78d18cdfa5a8608cdbfa4426c392da6bd9a79d33ae4181b73c8cc349b7074273433eec85a38fe66f761fac72d5cd569f8ba513dd3b6f4ded8470d3173aba13793e62a5a63ade94013e9138978139ab8b85aab33f2da92fc5fba28791f7f782506f4f793aab01819daa3dd8ff2121f2977f181b1b557754ed14f3cff703f51696cfa03f5dca947a7782d2c32bb17ddb7d4b74d604878bc39bbd7bd323bcf2a8e639dd0f12740f169e8e16e022dc596b9dbfa225bfa9e0647ac0d8b756edc1ec485cd621144e91d5d7387f1ca02a15bf28a8e7766aae64b6ae370c9a488230209675d139404f0e517f2e0d2d31737aa32e0b2de4acb2ff0c696def585557de65fad758cdab02aeb990d024445cdc5f92a479fda5619ed0bf60082b597d0c7e630ecb5cf7eb1d541b7ada094c1d969cf82bf83a31eaef30204cb871666e4ea956a5d4b54a4067ee8cb966d9c94d7cc67096e58d1c3ccfc91fdd278cbdccd6649675015b5d940704b309126807cefd4d5ab8a0ecb84be29bc7be07591de03ce042df59a268339283304dcf360a3b86a5da9099604c0f6b5355c476c22ca603428a53a816c1db3976768400bb67562c6d456ba6577ab7b34f8717b92b5653b91905ddb28c47bd8fd96b4160a5bdc959e9be8da36d3cc957345347551acb5cd8835ebaab8c010360dc911726a4282f1b91f4898c78340ca7661b52380bbbff7b74ded216233e19e126d06305e2d481e97741b608d870c60808b673cc47da76ff39d3a70e60463a9223b60e7c84418949899b4cde55a8a59aac192767ef8c2772334a91563b53b27a97842f0a0270daea123aea13827846d9d5f27f1ee9e75fa2350c81bc566e3642c7978ab46b84bd2b033a9d2f8b023a7e17b3d1e6158d118ff9b68aff228a6cc29aaa24a2a7d61e48aa4f63da4d35b29f608bb1f8544da2d3b7178ffb8cac4962b9d8ff04dafe67669df6d6e97dea38c1faf3e06323985d6ef4d62950b8551b2798e88e8ae22ae0bd28c2986ecb1f09f7dc3fc82a01fd4558c9868e3f82bd84865e7dfec371806440ccd4861b862bf2d67be2eef8d7c190c06fbaa004e72c008ced7300874a554be326a639c1a788bd5e60435dda34197fd73fcb31a15767986a859ff81629ce49a383d58a40685e12fb2f10e1311bea437dc72e858c5c2762938890ec254d3715a39195d4c711868b06167621d9b76d27126277375f8136c271efe15659c18f4035d6912590e9b9368439b5b57af001f5357300bfb51602c2e7385d56bb3a4d4ae3077db0aca255a24eb0f065dfcf17afdaed3eb4bd2e5e1dbf7846c572c6d86435759e93a0f8900b11c0ce17508b4280219533abbadb0ecbd1262807fdb3167b8d7b1a60e8dc3cd4c55517b1d874ae9145cfaeed48f6426e1754cabd201118177151a195001555db2dbccc3459335584043565a2e6a4d1fbac320f00cc8cd41d66d84aadd2dc6a857ba414ec0242f831226b2929278fd5ed7bb64f12f3d49458ca1f27aa69305b8eb56b6378147fc8b6cdff79b61dd1aacb35ec5956af607a3264091116aa0a1e6451ad57321164b5eab6d9a2b4ce7098e1c4b0f04d525a04bc4e5d6c17d478706e277f52c2a2e87bbdb304e51a89dbe7201fd90e42884490b57e48ac4269e746ec00c5847f0abc25048ab4e002861f6c613034662404bf883a43695251e46d30bb9f7af333c6f532960b791231ad7ccd10e34189052d69a1a0c030018a84aeeb311fc758d4bb4c1281c36ca3911c15338e8b0dc8b62349b129957d4be8171598355c98913c5b47541bea5a7b9afb9dd71e88118a8285d6327c1aceec7a3d0ac996c94f148c7314442fbd7e4be7a8c768ee28ce2d9acdb4c72f87c9f97bb185c78032299a7a2a8842a2e2561daa9a9a472cc482e2d", + "f4abeae99797fa40e1cc67d5a248bf2f110ee968f5f08635479b6f7a9ea7c1b1f32f4a5265ea92b83e99341a490a8bc8d95a0d5ac339de1864a4a4863b44470da512a3a6eb83b242105bc403a7bc582765c18aa287d5e6a348abf8862dce4b85d946d4e88b60699e5ed764d82f85ce348581f23d296d3a1619fde2f012ffd6cbe2175a289d6bb1e991200b4ca3430359b530fdfdf9177fb09e821da1a7c1acffb05edebcb25ec4308d2df08d9fd498c3bc643da507eb60a25180c6d1dfaccc17e788832d70c2a404f5d1ba1d3830a36ba093f0ac603000fb75ae96fbe21cef03636acf8eef8d0b603ddef71837023bd9d2321d5a70366407d1bb75c1ce40d45124a6dc3dbdcab38e4f658b25dd005794ba2ce4bdcb17d4c06e74c56a8e1210bc5f783b69391d57ee183e6778412790f5f4ad0b8f6066bacb20d691b01c418a0705fbb8bcb8e0abd0f1079c93f24d373a65e3ad7727b8543d4bd2bb2a16042cb6c2b765ba4ae901aa6ef524c7a36248ec6145575828c5c717efe36ccca2cd8b7d20d6e403b14dc2763ff8bc1e983b9de6bfd2633c7ab0085d356f770c5a73ac08ca93683fed1a4ea271c74319cba7747b6e1fa620ddf7d3a88b77579dc8aa68b6329c87c3be6d9cb34a1120eebe00fd4e245d198102166ba07e9d49a91783cf15fd76ebb013ba76003cd6b7bea10b12da8701db8e33d576fc01d08bb87123ce76f02d584771daa517491b4fe9300016d780ca96a749f1e64cd98cac146f8fd1ea5c90e2c81e92703b67217539749fb35da59dfcee5d76d6accb628dd3ac4486655d1e645c0515b7747b4914d8b51b56a0eac8722dbb4607e1b93cac88aa1755f7195820d608bef14d0a52bee9f230aaf57419c31b2f4c6f3067392cc51860c5b2f60a1c6ef3a61fd80c15dcc615d816b9bad66c4e80219f216e6634a5531f5bd168aa8be250a91264cc13d468999c1435b5da08c5d18df559eb29057c05bc07d34792086a6a8e81459cdc566ba83092d19043de02a737c05337439ffeba40ed4ec89cac22d960567666c3fba1b00a42a3e98544132d90bf3eccad9e3ea51b77e096cd813185f9945b5bc7ac34bb52460c0bdaeb815b5a3493a91dba04d9dcf58d1cd2bca28bfab8eacc74b50510a4a2028ab3271269078207b149547422fcde4e673310e3d8c67812a5785d27778a42c490a8f4b5c1d696bf2d02705f97c13998bdce92348844a35abb253527d57e50042e7a9c14dd2559adb5b1995f655aa5a27b4bd76df7d08edbc0ac0afb5f99c57bd31527ecb5980ec56de8d13db085bfd337e6173d29491c1559f495447eb0c5590c768d730c903adce9c704f78e64606dce01c5e80aae385551158c22ab8074c7001bd898e9b356e310dc38318e4ef03a09f2e6417f36be9a4ea0834b55e8b61b664e240fa1cfe95b5b8e8f8dc69d07d63177529418a6023aba5db333441dd2b0a966319abc77d0958c675b398727ed1d765e7d673ac24e8f16da74b907ff635b4e75e2de91c636db5336303d2a4039dfdf692321d70719a6a7c13421fa0a84cff30bce7726d3fa9d8bb3f2c5da1776403d72988c6307d0ecace61b3047af4a24491267455c18af00a084d0f149a769a2ec33a10ad14ea9cf76b43910ebb28edc81cdbddaa123c64e193f78a20d262d517368d2de116db259431b4e510d5084e0722535007b9700d0366b8388035396209fc51bb1a550bdeb71cd5667a211ae16ddd1d731fdea04ed2d3ba825287917a11acf53b8f6cf62fd14dcdea9de416feb3cbf4f15aacef4a5cc9eaf65f6a4ccfe48cbec4b994386b61e1fcda3e6de615bb3623cdeb58dd31c0e3c661d0492442e8b34d501586a5513f5c21bf5d054688c2bc5312c4b5789c78694dc6d9ca15e4edde681c465e2769de5a6ca113a2f25d508b66a35cdade9a557cd3f19cb4b4f2ec113734f45cd93a79e461e4f4f3ca4d05328e4591b33a66da3", + "d68911b35f51cbadd9b2f495922239f7b57a44c6d4d7691639898f54fb2ad52273d3866f6ba85fa75dc0f604f55cf7cb9e5c9627e63db5269e3ced6974f3f4a48754f714aa79d6c68c69dba87562c4dcafa8ad78dd574a56bcee6bf554bceeeb3457bcee23d57d95ea8ad76df8b686fa75da2b242b55ff6c59a9185e5be8e4cad74015cc02b8c6", + "ac", + "72", + "db", + "f6", + "9b", + "c0", + "42", + "02", + "ab", + "be", + "066ac25c7385997ab904b3f6cb9ce620cf1490bcf6ddf52ca974e6d611b6f05656afc2f664799d54d98e6c5a27d6f62243eb936ddc9d3ee4ca69358ead56977e081f61bc3afe82b2212b3da5104fcd3d0d3f4f9f7a3a993c23f1b4f81396bc6d62d7a9e2901b03828991065f0b21c146f86a35223df7f566889ca9df6888c84a7c63280d34c6544ba339027a6344a3374940f7aa46f9bc493da5329e9af7b406f1f4694f6f0ecf487a2a153c79dbc4ae3784436e0c0826461afa75132ab9f4d56a2ab9f4f5665472e9371a52c9a5af5152c9c5544ba339955c8c68f42671e8304d14170ddebbf81f036bf3856a00c599c3648f9f3c1b393dfcf3394bf5c529ffa133843f173cb9c793fd014fe8f3845e4f293ee0c97d4f293ee4c90397275c8804b5f6114f1eaab55ff2e40b51bbe70ae2d5ea3dd1a84bb57ecf972e2f381c8a562c6d95d59316d632c02677ef816fb29d671838cf7314e6f33403ff798e41043c4791024f330882e71864c17314718866192422b20c4211598a5c0e5fa9b28c8e140c033c5e301cbe29189e61100ccf5104c3d30c82e13906c1f01c45303ccd20189e63100ccf5104239a65108cc832084664dd279861bf124c323f52300cf078c170f8a660788641303c47110c4f330886e71804c37314c1f0348360788e41303c47118c6896413022cb201891a50ac6c190cd87c579de67051f8ef9de7efc4951ab9af811a8292f91c9eba51a2fcdaed21d8b09be122a1ec539db2916b7585661bb750e433931a6f25ae9eae1bd41eab8484a9605ffe46533629da6eb01eb2c518e57a799345920c4bd94263a48d59161520315240a447c6df5a383e905be6a15a7895164e938ab74196bbdea233898e3c5c3461ed29c261759b28c94a7ed31e2752684228a2188410208aa088096a5fc3794acd95d97a3dca6a504b30d052576cff338b2735c4f6cb29c62151ca7386b861bb06aaca5a56bce722e70c61af950b356a34a652f455c71972fb21bb43e0bc2f7bad24b69a2a0581495d92ef274cda7c515c5af528ce8a834aa9ca6f6d3d2baf2cb893a56210d913e25e51d21ab26520ea06115a93a5abaa62e90d5d8031ac4b053718059e4e1922d68582974ad59908aa6fa740d5d920313aa490a0281a2ff75f15afd9b3c1745f54e509756345d676f155f23d8db2c2f58a922d01829f0e88cacd148dc34616af252eb403237e54e52a111fd84592b5c0b3a78d8c7f22c7a4f85fa568fa7ae7c1cd1e568e9965003ad5ba36557ab89a7bdc3dc38571b47615e1b24360d049168b2c54d71fcb728ed1d28edeba53d5eda13a5fd03a57b7a699f97f645e9de81d27dbd748f97ee89d278eeed50d35dfca363b9c43f13e919374b5914d0ae1117545f7fdbbc6b03376b3624aa33e8ebde29d30c24c217ffd85ea7bbab16edd8ea04a4d46b747417d5dd89b5be0f5e7d9b31bcf9f5fdbaf0d6abde800b1ffad55b5f6cd9a8212a34ea43c42f728f16cfd8f214dc95a91f4d6530b9594e2c86d42fa6b22ca3599aefe4286fa6f23ca789806ea449cfa6c234bd5994f6307167228807ad0289aaa65427ccc152c47998102d87ce507821997b75410b7fe83dae024c6516bf9ed1aa406b40952f1564055b43ca0c90aae6b0b84f5edae6a6e145f6781cab79738cd8c8ae8e63e393bea11c26713646d7fa31e476a59fb37aca50ef33ba6cbeb0296c5aa712ad716862c43e9f51231af8d574e92844d5344847443737d9e4e82844eaa4c750c4e1af4caf94bc2f5a160b6980ac7e2a5a3d846c", + "b8284b0e25a9bfb4d1b5d937438a6d81c7c59f6274f6cb20fc99be7e0760dd9fc93c25d62f37dd9f5250afb4fba7cd764e56dd5fa6eb55b9ee3e0b5618449524ddefe23cb07e0e5645f79b3c8d23f6f89c24b7042763d60f644dba5fe7719074a5e841e918bf3790b4c5de087d616126cb34c5bbb792bb605b5f42276521878012c01e839b1bed6934af16da5085acd15d97acde73a96314a52395eba9f2390c7e7bad2196a72a1284a174288d1fa6fc4c8cfe003227a5bc3f46af9976a1d355974c2b5785372e18c08f39cbf75fb81646e579b4d72a87dffb67dd3acff6f4b3f155f6a05914cf502ebc6e230e4a512841d9c2ef36a2a31440b124bee8750d315393666ccba2df35c651192fe75d0cbaa6e82af30dc3ce62d835445d35ae94dd63eba15d4031d032c032423ba418442d26aa11dae40e31b0b72bc55f639c6b7d62a78ad2aa843b2d57a6602fa52625adede262ceb02a2413e3dd9d91b8bc4d8bfd32c4f14cead827be5062bed34bbbfde6e0e160712776e33c45e3262d6083c62a230c9ed44e57110600b65dcf3591c86856ac9e815630eaf53740b9502d35915f2f64ba0909b28d37472be9cdeb73d46cfdb61c3557bd05c919d4d72f0b41456416ac1359e5f0fa8e30c84c1b948da807bdd0987e41da667a2fdf5fa1990dfd8894bad9aedcd592ad93847d89c970710fbbb95491dfa4614f0cbb96777777fc3a976eb363cbfd4dfa0ed56f3b243ee05e2e65affbe8d29437e2e413de795f8d5cc3e1e0a2f7319844d01b4d4f9719081267deab7091e6bfb2107faaf1faad75eaa5fedca4f5f172bcf66bf02fe93df89f5df63db7472cb7fb593475dd7e7426cbbef9059d63b1547614bf5050df718eea27bc1074686dfc060ed8c2643b4f57f8e988cf2dfcaf4b9fdcaedda7bfcf2627c0d6f4d3cf41a8038c1809e403fe12f8919cf52b47dd6f5ceb261cc9f6db849b9f4631cd7d559046f463c75081e4b2098763a0e8c0a932546eb46c7e00457c5c2f27f855247b1914f20db05a2e3fa0a278df97b38bd9453b4251e4b86b8b943e43bfd9466f7d6b7c444677246dcffac2baa05ea4541373f1f07f7ba055d63f93bf8830a41767993a6c51cbb53a0500e6ebfdb6161d7f17b499f1c881ac3883b1ccb599937f4de961bd37b5f5906ff2fbbdd899eb2fd43811e5b3264cf14cfc894811ea450d01268396a25a0c5f1b98052eb8d98c98a0f97cc5d0618dcc13530243b5bf4ab770bed1a7ad7a091842008c44f23ce900eed66395cd4f45182615b2f30b98e802eea4d9b3eb49e9965d1c5c4f179124c2bead6ed3138c8d14e4bac95834e0b4eb037b4dad95d0e007e0e2e51c3fd2760ed342523ac5edfc8caede488744ad550a0ccd48500a9bead537425f64f5b6aa725caa19a87a0fadf557c06ab2957be2e9399002ac14f91b98297e13bc967860f1e7fecee26a3da561120cddc4a855853988b8bd871f8ad07bc8fad469d428b1a4f52880fa7ed02e35f965607f6fd8cb360df6c7f43b05744f23009dc9d96d5a34b14de88f9d8b4bbf21759eda2863b32fcad27b658d899cba3e2e53f2ef5ad273ad3bdb964f505167faf7b3d0a51257d9a9f13336eb28ba2fc92a49bb406f10a6dd17eb308e028b6592ee8b784ad8acdd0280b4fb0d7917fcfb9a56cc129ec625ee2e054bebdf09278e653c4bd7794c7220eaae3e3e2dcf36bea8a51664f602d421a16bee867b98f007fc52bafa281bdddb207f6ce0fdd93e708229ba41313da9a74fe7a7787c6d96ea2342446457aa9eea1cf02dab7908e2c4173c7e341643577585b9e680e1597e7df9ebacba25fc8f7f9cf05873bc5db4fece50dbe706181c9d42d387fab319bcace5f885458282e019cf7b89a7f3f9aa092db71bd372162d480f5c559d722791ce48025f5afd9247454a7527b5ed29cd6c7e8fc9b07dd5721db391a6aa113af220492a22f48b64b51632f1", + "55c7e907aeb84b9d3dea7b0dadc21a08ce1c559fae4a03f631850768132dd9fac58a2389aa6daf722d309b954a9715ab9555f7143497334fa8ae71d8f0d89216bd1ad27878fa889edd8ed40a5abefa7de1e084a7d7bcb0f95e7cf5353eb2d338d4ee8cf6872762161758cb02c37b9b46cc1616eb2996325c717eb0373dbcab9ad05a3229d2a96f7ae211ef656efb2c09dfec3a9a25f75564978bf572aaed3caa33347988e23d4ef227b4ee596d82c88319bd31f274720d223cce1a886f68b0f588da1fa24f781afdaf8f2f2f3f3f330e1ebd62d2f685526f04b59de9b39407e8a6daca43f6fa04e432ceaaa623b5bc95b896eed4b810fd30629ab1088a5a0fd9e4459c8e953e9f83cf92316f33e1d44aa07847a6052b9cb519beda8d8179c37ef7c7e73ff8afb74ffbd3bf6cd6e107370e9effe486dfa4b72f7a512fda0e7a2fb783db7019debe7cf7f5ddcb67971fa26518df3c8fb2d7cf7f4a7ffcf966fbc3f3a7fd9bf869fafa2fc92a78fee7cb9b77376ef87c0e30afb3d77f8d9e4d7b7348fb7afef2d9d7db1fe8cfcdfcf53229a6dfb8f18dffc3bbbfe1cff6e6cb6ffe9cce6f9e7d3dfff1f9d345f4fd7cfe1af25fbdfaf6eee69bd72ffff4aceffde9e7af7b2fdefd7973f3cdb71f5ebcfbb607bfb7d367aefbe2dd2ffd9b6ffebcfee155f2f2e52ba8e7d5a2f821767d12dfdcfe3877ff27e2bcf96673f7b7bffe94de7c0ff4bd7701e7d3f4e5bb9f7cf8b979f93c8d6fbe7f9d4dbfbfbbbc590e6ea7cb5fe2171ffa3f3c7b77771bf65eaf7e9c5f5db5af8f6997f4cbcb63765f9da4615adfb4b96ab10fcf297b2c67fa2a365d77c071e258d8cc086abc8aa1f5dbde0f5ecb6f603ae5767ee53bbdeae7c342e503e807afd96ffd5039eb9d6de3f7c8f8b9765ea6b95976efedfbbc886a307cfc7bca1dfeca5148cb1c3970d43dfbd2c9c9fb3ebea05e27cc85a27eaebde5be7e7190a26ffa5e9ef21956f3278d94af0dca8c3be1634d477cf8ec887de18ff9de55e3bb5127019ff63dad23e09adf95d23eda7ddcc79e0e8a032c8c233687f56f9f514363fc3a31946adb60fe986de96ea05611b4d5d196c12b69cd669ec083620d4c9beea636195b524577988a0786f2d5d5a474ebc04023cb688d4c30512b651be896724d2d68e26ecd37b54ac72e0702c8fad9dade0361186ded68d34913c4618edca3a712296d19551fbb1fe21efed5700719d9aadcc848752d948d1d62c230c0a959336e90ef6fd4412b9fb1153bb671d9d83c6f7c858763672b804a8d67f536eeed5db5bc036fa62aae03f5262424d60066b3883ce9589d0c54f911f43b2286cf7e980f70c8dbcd523cbd32c332b5ef4ca9fc3a8a6f9b6b31d55afa25dd5e6daeb1d3f4b35d03534be4a258ef667fe8a71eca34df5abb47224d5e97b5d4156fcbb0e46d75c4a2b7d5e95a7cdddbaad6b2bb165bc7b6ea056328f23562b59ea11658df2ed3773196ad1119927ea6f7bf5b9d09a773ff486b01f559ad2fa4863025b3e816dda44a956ef4b2b8f83494bf8a9bddaeca459c47c51b09a7f099c06fab4ad18727e77449ebfa113ea298e91376976b9acfa13ff217a0ac458617424741026331cda59a7dd5f9b9c4238c050cfed6d72f7f04cd035124a9f597344fa20e05cce8547541f2ab0e42fc98a778d5ab966727e93cb58b3cbceae01dc1c5f8fc1c6a9e6ef9261ebde27716dca2935e9c87297efbc7f7471bf871b2d59c234b0b741af0daeb3cc0a59983d870339236ec6d94cefdb7a294f32e53d1157f5f0739390d192bd3409500038b30c84ec45615a308af1f3d7a24c9265805c91634bfb0a8e3d599a7e93c21556ac78aa3ab4efd7a5d4bb608f3382b7931ec77fceb55e77825b9046849fa887f3a605b8ace584b8574dc5f5daf4ac8eafcf2b57dd11bf58697177ddbeb2880fbae8a8d7f5dcb889147005ad8d7d0d21860000aa8852af9b5ac9d6e", + "1320277f5f93821256613280b5", + "b4", + "8b", + "51", + "89", + "da", + "8e", + "08", + "a8", + "96", + "ff", + "4c", + "3b", + "84", + "a4", + "e9", + "d6", + "e3", + "1f", + "992d3c831e8010d3adf52d9368a7816effe8d0bbfc563f437fa7e212627972ae085f96d613cd46a102e00308e2fa5103841e96843188e45665873a380d96552560df1fb24e51db5afbd91f3a385c752e7c574e6543d355c7f3474a3a5094ae213d2745065d1efc3c999e734e90ca0dbd41c7b656440bcb352cbc6b49bc60623d2933bb7eb588c1e41556b0aaf5c179729e1d43909c8772b916fdf9d13142f43f4a88f4ce667a9a00fd0e99df699a1d2d2cf001e46466dd8e520c5a3faac7db109d465d470e4a1d4d16fbd8cc6135a475e8f539cbacaff64466f7183066eaea4573fea9f2ac3edb6d476499fe2b3b675f673c2305b7b7013fbdcc15577bfe7b745fe635299dd73735886d85ca545274789ff2552749efd05b475466be808ca0e2ab8eebf40b45299fc2c862dd05c97b8b8046ff416ae5c2ffa7aa0fe3f169bad3e495d01e8917f4fedb262f8ed52f56c75baf6500180c8d1ad4f73f4281cced60c73e3eba216d23d9bfae212dca79623b7affc2767c4a859fa6e97bb28aee692e3aade71c947e5447102f085fa57cb6dd6992c1cb5d3fd25a44736bfa30994db19ed0ef8a5c3ffaffbaae9ed393bc0000" + ], + "rawHeaders": [ + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "Access-Control-Allow-Credentials", + "true", + "Cache-Control", + "max-age=60, public, must-revalidate", + "Content-Type", + "text/html; charset=utf-8", + "Accept-Ranges", + "bytes", + "Access-Control-Allow-Origin", + "*", + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Content-Encoding", + "gzip", + "X-Cloud-Trace-Context", + "02e7cfbcc97e0cdf6a07ae4c2ce2d6ae", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "1516us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Vary", + "Accept-Encoding", + "Date", + "Tue, 21 Aug 2018 14:02:03 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1900", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wmey11-v6:9836,wsgp22:9847,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1900,wsgp22:9847,wmey11-v6:9836", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1900,wsgp22:9847,/bns/ws/borg/ws/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/0,wmey11-v6:9836", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Response-Body-Transformations", + "chunked", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close", + "Transfer-Encoding", + "chunked" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/testcanonical1.json b/amp-story/linter/tests/network/testcanonical1.json new file mode 100644 index 0000000..c11d8ba --- /dev/null +++ b/amp-story/linter/tests/network/testcanonical1.json @@ -0,0 +1,58 @@ +[ + { + "scope": "https://regular-biology.glitch.me:443", + "method": "GET", + "path": "/", + "body": "", + "status": 200, + "response": "\n\n \n \n \n Hello, AMPs\n \n \n \n \n \n \n \n

Hello, AMP!

\n \n\n", + "rawHeaders": [ + "Date", + "Wed, 22 Aug 2018 12:17:40 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Content-Length", + "1504", + "Connection", + "close", + "X-Powered-By", + "Express", + "vary", + "Origin", + "last-modified", + "Wed, 22 Aug 2018 12:17:28 GMT", + "cache-control", + "max-age=0", + "etag", + "W/\"5e0-165619179da\"" + ] + }, + { + "scope": "https://regular-biology.glitch.me:443", + "method": "GET", + "path": "/", + "body": "", + "status": 200, + "response": "\n\n \n \n \n Hello, AMPs\n \n \n \n \n \n \n \n

Hello, AMP!

\n \n\n", + "rawHeaders": [ + "Date", + "Wed, 22 Aug 2018 12:17:40 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Content-Length", + "1504", + "Connection", + "close", + "X-Powered-By", + "Express", + "vary", + "Origin", + "last-modified", + "Wed, 22 Aug 2018 12:17:28 GMT", + "cache-control", + "max-age=0", + "etag", + "W/\"5e0-165619179da\"" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/testcanonical2.json b/amp-story/linter/tests/network/testcanonical2.json new file mode 100644 index 0000000..f6d368e --- /dev/null +++ b/amp-story/linter/tests/network/testcanonical2.json @@ -0,0 +1,30 @@ +[ + { + "scope": "https://regular-biology.glitch.me:443", + "method": "GET", + "path": "/", + "body": "", + "status": 200, + "response": "\n\n \n \n \n Hello, AMPs\n \n \n \n \n \n \n \n

Hello, AMP!

\n \n\n", + "rawHeaders": [ + "Date", + "Wed, 22 Aug 2018 12:16:53 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Content-Length", + "1521", + "Connection", + "close", + "X-Powered-By", + "Express", + "vary", + "Origin", + "last-modified", + "Wed, 22 Aug 2018 12:14:36 GMT", + "cache-control", + "max-age=0", + "etag", + "W/\"5f1-165618edb5b\"" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/testcanonical3.json b/amp-story/linter/tests/network/testcanonical3.json new file mode 100644 index 0000000..c8f2618 --- /dev/null +++ b/amp-story/linter/tests/network/testcanonical3.json @@ -0,0 +1,58 @@ +[ + { + "scope": "https://regular-biology.glitch.me:443", + "method": "GET", + "path": "/", + "body": "", + "status": 200, + "response": "\n\n \n \n \n Hello, AMPs\n \n \n \n \n \n \n \n

Hello, AMP!

\n \n\n", + "rawHeaders": [ + "Date", + "Wed, 22 Aug 2018 12:17:40 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Content-Length", + "1504", + "Connection", + "close", + "X-Powered-By", + "Express", + "vary", + "Origin", + "last-modified", + "Wed, 22 Aug 2018 12:17:28 GMT", + "cache-control", + "max-age=0", + "etag", + "W/\"5e0-165619179da\"" + ] + }, + { + "scope": "https://regular-biology.glitch.me:443", + "method": "GET", + "path": "/", + "body": "", + "status": 200, + "response": "\n\n \n \n \n Hello, AMPs\n \n \n \n \n \n \n \n

Hello, AMP!

\n \n\n", + "rawHeaders": [ + "Date", + "Wed, 22 Aug 2018 12:17:40 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Content-Length", + "1504", + "Connection", + "close", + "X-Powered-By", + "Express", + "vary", + "Origin", + "last-modified", + "Wed, 22 Aug 2018 12:17:28 GMT", + "cache-control", + "max-age=0", + "etag", + "W/\"5e0-165619179da\"" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/testvalidity1.json b/amp-story/linter/tests/network/testvalidity1.json new file mode 100644 index 0000000..ed459f9 --- /dev/null +++ b/amp-story/linter/tests/network/testvalidity1.json @@ -0,0 +1,70 @@ +[ + { + "scope": "https://www.ampproject.org:443", + "method": "GET", + "path": "/", + "body": "", + "status": 200, + "response": [ + "1f8b0800000000000203ed7d5d8fe34892d87bff8a3c8dfba61b2baa484a945455ddb5db33b3bb37f6ce4eefccecceadcf870625a5247651a286a4aaba462e600f3660c0af86cf38e36cc00fc6d907dfc301367067f86dffc0eddbdeebc2581886fd1f1c915fcc24939454a5aeae5af7f4b45a22332323232223232323239ffdde279f7ffcd5cf5f7e9fccf3457cf6e819fe437ef36fff0389c3e5ec798b2e5bf8908693b347843c5bd03c24e3799866347fde5ae75367d82a5e2cc3057ddeba88e8e52a49f3161927cb9c2ea1e06534c9e7cf27f4221a5387fd682fa265b4582f9c6c1cc6f4b9d7869f7914c6f2b7067595262b9ae657cf5bc9ec6442b3711aadf228596af0bf9a53f2623ca6314dc39c4ec867c9288a297919ce68469ebcf8ece553f2324d5ed3714ea28c844b021097244bd6e99812de721e5d5092cfc39c2cc273a815e58486d91599262959ad477194cd699a913c21e394422364c1da70a669449793f84a22439225c00c9713320f012280899370028d6479b8cca11cbda0e9d52500a31df29b5ffcab7abc05c675948816504aa3c13ccf57d9c9d1d1e5e565275cac56bc7627496747d0741e8d8fa2c5ec284e668993cc1c56bbf37a3543f66accfb1da4ef672f5b67a68402791cfa0648192d0062e624abdc89f4feaed3d849e92a0ec7144b38177e45ca67493203f4b228a70eb4184da37158a2da272f7ff2839fb83f4a12e727d1b7feeae75f4f47c9373f1fb9dd9f2c973ffbe96723f78b4f2e6683cffdb53f6e91a3720388a468641c4788453471c255a435c05f87cb30be02fe661c47ce3f925fad10c86a150bc48ee2c9775e67c99295dac05f425adf63a0dee4ad13c2e407c4271bcfe92244b169b54521048525bea6a315ca9c780e4492f56ae44e96c40e61516085926af10a354b1c2de1756beb40105574113d79a8a2293bb308a3e5f79779945f7d3e459c814c9c3725c2bf2c088f6fa2c936d2b3a2d7a215d50b2bf8cfd359b88cbee5e2abdaa8671abc4435a2c1da511ec20ca68dacd043a3784d3bd9c54cc16570d8fc0090bc41603c9fd368364751edbbc673d58f4f51a77d3e62988a02d70619b8cab49140afaa3ab9bd438d8a55c1511df25d85b9d69baefb48a28a7f9f1d71f13e7b843f4032627ab66d684845f7ec8897c79a30aace494ae3e7ad6c0eb3f1780d03608cfa699ed2e9f3968e3bf4ead534bcc0d79dd572f6dd8be7dd5609c6385c264bd024b1acdf247b1cf5a2f202c46b4ab35cb52d1f74944232341f282dea8841764947a0f556ce385c85a3589ff0ae6856c692d7cc93f578eef0ce66d1b7347bde02d2bf81bfb6ce63b9ec085e62d7770718f86fe06f03c0c0df0f607ff006fe3600ec0ff60338842e0f9bba3c945d56104dd64e81d259474c32ab28eb8c93c5d138cbbe3b0d17517cf5fc8b6494e4c9890752dd85bf3d171ae302975fc514d40dcd356c4dd88bf0cd78b2ec8c9224cff2345ce10f048f6d3ae125cd92053dea75061d175b341e77c074ecc0c39ac6c4fc070a7c3926593a2edac4364aa27ae18208b6ce8a315706305e6779b27060f42d98d0e1ac9c45133a0ad3d60ed08fb4f28edbf16ed05a381e27e98459163bb6a76adcb4456550ecdca2ac71c316d9141983f14f535c225c26e939dd9dbed6da37c404e6fcc5ce0d63e11bb68323107eecdc94287fc3d66634d9b925286b69854d513b742b4c937546e3ddfb252ad89b7cc606376105596b678fc2ce7a39a129da8c937607aa4f903639985134edccd26842f843a673569bf9d56a4e97d909cc38eb303e4dc0029bc6c9a573093ae76409fc8387977334e2b31558fbf008df9c820c4d9c11587be7aa103ed16a5d77629cc0db61bb8316b41387231ab7b5e14e3a29cdd7e9d219adf33c596e980a43dd7ce2f5566f4ed9cf4b66049c80e63c8d699e83d42216d17276d209fa50087be9704be1c4c307ac29d097cb0c65ef64bd8245cc38cce8f5f716741285608182990904a460e3a221fa04f42c5f709f906304f974730bbcfdd59bebeb5132b96a77d06ea7299944179d3c1c11009ae50523ced6318923127206b53b190dd3f11c8147cbd53adfe89d87a9a3dc2d3035a86807eb6b28f86e892afe1070dabdf356a05e99d47e1f3bdac980cdf1ee5d2d77729cc4497af241b7db3dddd6d61edcbb2552a614ca4ed2b406db9e0d5b2e41b2c671807f4e17613a8b406812109ac58917603958a99de7c9ca59afdaea3bf671338932585c5f31469f5e445904a61e2c814ee6d1644297f5e480061439068c1c5b9b18c5c9f85c6f837d8d29743d47833287aa07c0c773fd80215405ba1d834972b9bc310e8588000e3d1d07036c0316c2d23e101652506d50eb91f8de39bd9aa660fe67649c87a8bde9c67dbc513ac149d208e40b8dcdc724701f9f16da82790cfff089f7f4ba17ec55c37d7a1dd86a34944760bb570094ae771aa99d799839195ba4e72727e114668276071db06b58e5c184b64e539862e51b4359ef564ac077627a416359620ac63760d6e1ff8a956b7e19e5b52f71125ca534cbecafaf9275be1e51c5ee68c97407", + "e7fa281c9fcf60b25f4e78e913585e3f319625d92a85899839049eeac5b92a7241f593012a2d7451b799266790bf59030a6d40ab3d4fdb93b83d99b493b8bd8edbd368b64ee9866ba613f774154e2638b7ba05049810de207c7c3c82ce4157e0496126bc9182cf0a0b8de7c28cc574245f079db4f842a8d5ce80ff68854653d9162ccc56274377ef396aa3d7ef63fd6ba0d086a3085d296aa1445ecfbdf6dc6fcfbbed79af3d0f2a786a33ad2446c70fe882b8bc6667ee691343e096cc130fcd136d12e8077bf5c7d2443728cd2b3d3619cd7dad4caf3cd5dbf0da070d1db85f9e867b65e0402c40a8ab23ed5aeaec834077ab21733defe965cab36fd7dfaf411d9837b41a39a114166f3c381ec31849b208fd8027b0b6668e516e9b4d282c299983901b67ba157e7232a2a0f5e8766b5c96dc1483fb0441c0da7896861374723fc913923203957ce07687c7d3297e994cbad329e8046e5c385de88a70039d7cf82198ced31cc684b493e1a5ea4538ca92789dd353061346be8e7807669aed4863a98d5408521d94c1ec4e03bdf44676088783640b70a5027d8eedefd9865167132e41e93292b89d20239e9a65f790a7b06a3d8a3582a6aca5ee61bc3bb5ce04a2c874aad424b317091b131601c469953f2bb743dc4e37935810583b2d37d5fadf3a1150f3cd89270b1e4a0cfd2631f41bc55061c266e22644bafd099da9c6153a4ff596650f1dcfd224ce20ae444eb42fbb5020c2a4a5ca4746fb55887685599474c2344d2e0b5b8817059283dd03e3f3a92c2e160b5a0f19e30dad6396dd8328c18b4f5efce013fce27d74fc834f9e9e26b87c06bbd2d5a5463c64c2a268556e9413a0104ddb6b89996c454994a486302190e428d0c00118991a0d4f958dc1c8df5886716ca04a3027857d3c098993933baf89ea5ea381e213a7021fd84083348f49a913d244200082b8c4d5ecda34016b8d3ef1862ed0ffa951bb4e2ccc2aa42c25850527693f381e8c87be41859ea2c207d363fca3cc2bf61a95c76979a633dd298ea78aa047e924cac3381a6bad9f9dc421dae5f3289e6cccb5aca09286a98e9b2b31e5436b0baaca0815c5d93a79d5d4b63062711fe43cca1df99a293000577acee4b3fa188cec34af3ea630b4604a848582b0dcd9a2e1225ad0841bc6f310966f27687877857e06814867a3f089db667f3a9e900281e6244ae998095c9ca7d71d3547d5d8d94ad4c2759e68462d185f6c2e90063bf1715a2cc075b2c5a6283dc4c2fadbc5447b7bec07e6db78a6bdc53d39f3f59b587fdd63465e071d7f1b13dbb2497002349ed15c4d2e9a7e3697bfd24ef1b08b8213a8311cfee4368bee320ea2a941b9a5015b51686bee0c2496fe74652cb90b8dfef327b8cad0b46b2728ad84f5b26e51d0bbbed69cd7ba46e7ea4c133243aafcfe53d43cc43b46893b2d8c17b45d68985107e495b868c708cc190799877c95acd62bb2da18b6ae6b6a889e60b95601d6e76add3a8de99bd3d7eb2c8fa6578ee4e3183e687a0a7a63b67400f945261e9521851b8b3b536b3d5ace61899897ab75c671021dab58546c9d6c2c93af16a324ce8e58795c2d3f25cb04c3556898138e92319f4ca31895c288699c252cde9fe0eaefe9a95a4c566c860a6a622a2c1cc61b2411ef18274846e3a9249132ea5069306d2c07131a45a259b68cd841b2fb38009f6e2cdc42141c360261e6582f968479eeabfc915a06ddd704950161d6a6e757856025d7dd27d21e25ac68317e4e98583245b82b0385cc0d704286c1c7662ba1fdbb8a364c423569bddec5e9d8ef795b6903b3b1d238aed18f9e6b234041faa05bd2c10153ff3d1dc87e34e08b5e9c071968a9eb8b9e074163cf0ba9e8fa36a930073d73b597772f843b8ea1360dc7d4a9a8dbd3ea62060d567d3e1454a8ce85a70d9b3c6c9fa3aa2fff31ba15a593509b301bd731bc78671abda1938d342c6405f65498fd76050daa5c330dc3188cb81ed7aba78553a9680f26e302c36578512c3dd53e44079170e05df1248cf3e2470eaac550af35003765adcb76e5c0dcc92f410caa8bc3eb66042ae0d8b860d650b5e6c6a23a4a0e1bbb374d98765588443c7158544e59a7b72ae1432a1ecaa2d111e611e38b5a61c3d2a9775af16e32c92c3ed07968db5fb3ee7a32e6a375b3ad2fca49bdad983044f46d85eb0611d15990e529cdc773a3f8a6f0e1ea8f3b4c9feaee0966f319a06be6739d855c236ab52abb62da866da147352dd9dfe6c1e8787ca01106d9686c8775afe695e02be706f784ab7b08a40351ea5f5f53e2dc9a550be73aa705ab62eb89a86af685ad060de676c2311263535af9574b5856d99642d6057909de3c5c8cd66010a79baa91d2341855bd9ac17884731641f7ac65e18e845fa719f4719544ac29634f4df737577726c410340451ec1c6d341923867c8b0265afa2bbe39c55766139ccdcd92e10bc1cce3365d1900e978e5f58eb656ccfa4e75998c3b66183d6d271b5a3963db4ea86b8d84ddbb0a27cd16f289f1a58f580748230be3af402a3c7395b2d367473431b8dd6aca3aedc4114c34ba39de6e0ab01cbb95cf89395a1c5bf96d6aaf52c0d243a6e6343655163d56e266d81dbe028dd8a8e2e03151f636129fb81d5b5bcdbe66c8defe286d02c5bbd1b8e64bf83266ae11ee80c71e9a459a3aa456788aac7e90e3bc73dd307ddacbc51cc863b8d27163d52dab697fa67d0c18540d7dd1550c5b70cdc19e29f7daa57c7a1571e8760c7eec802b08668ba0c63e8a28655a1e519cdf82a51585f4762b9b8177881b9de48ddd677347e85e7125e45cb574b7af96a14430d3ef9ecd2a6a24d95c63b8e4ab92f50bb6af843e102b269f96ec65c774270c7613cc6c21773e210ff18a3628afdf42bd3badca14f560162b6eb9e502af2dc10e6e475bae6d654d736df9a3b6c5573c52857d1ff4d72aced52ec11716359449ace667dec17cb1ee6caf188c7dd9abbaf01aa8115cc2c2a3e8262916fe37a611d8ac0ad9a558269c9d97640aec54e8461ef0bc39e779d8550540ad9e7644606cdc4d95eaf5eb317c63607c8606fd94fd9de90557f15d30336aa6bafdde0161613f727589580c3b540d199ebce2a4d1689e93a957122d8ef9a6557ad4562c61d30bb5df95959535c1cdbf2475ade5edc7103552da19e9eaa0180415c6a19cd3ccfa6c6a8f5eb6a312307c4cb6261e8c02b8b6bb9bbde600df07d06e8a6667d96cda6aa43d2f38de83621b5be105a8193762c4f3107c3118499cf1dfea6920d1abaa8812b85cdec161e3a642ab10a4c8b183509777d6d606ddd69b5fb009c6294d7c5679f82b8e7787caa46a2a145cbf2bfecf9677babdce32f16a26336b528cbe5d4b2e964db2ad6b79ef8166aa1aabdfda29a64171aa44027ab19097d5d5fbb3e7ef4fae64df2a015f6928798164b1036326a16238230417532b0f0af5ebb4f92b18cc86c77f264bc6106395bebc3e4dac1e3069371ba5e8ce4cc6a898a5138490bc12fd525b010324699cf6c1b73115caa1247edd293b014dd6dbad12b7ed0d26ebb192ec8773e2c11fe152c4a83ae5a40d25889f93f71ddd1e8434394830a39b162b1c35e81f121e729da37450b8667f7d4b025f68b7ee46091bec4889f627b3c2a7a57eed47695878e6fd6d89d220edaabeb0c294e633ace85c1a4428133be075f848b6a5ed372a13fa26f56803a9dfcb18a206e37164a723c0d0dd2a7b6f5b7ad2e766a940f456ea7ed50bc3ada58ccf513b73308f406e77ddd876bd58915534439e398d0aad7348ea355166536cfb93e20c481a1daa33a3a722266cd30d3fb0609147d34d9a10b5322b9ac6806137bac765d5d2b40d3f9c036cb84100e3bdd3ac743cfefe0cc4a", + "9ca0d72985bf5969db20bfdb382704adf0f8b3f544f1a1fbb7b8596376d394d3b26b48ed5fda2bb04d546908b9f580b11c8c6bb517e0598c8071b862e146dfd22628751178228cc8c2c07613ee4d917c85a3daeed91262c0d62a6a15ecca7df3a15d9a84afa3bdb58b323ea21c525c85d90cad98a3dee6c816f3bdd2d3e515a2e716464175cc6a3103281bc53ad0e9dbaa0989afac42034be16d9a54abefd6e18704b6a26050d9a608b8870c3595f211480a55b75a0c43735b08bb103e3218b0f35465f01651577e49b92fb2bd4ed917c4c3942a676a36da69b6d3c24eb62fabd86ad87e34671bafdcebe6233dc0a79a02f58342ecaf3503369d24ae3e852062d73b9d34923348d009ba3b4d22dc7b0de5079e32bc8d09a11433aacf0f8d74d8cd1c39352331eba2241ccf1b488767f91df371325f0871d864f4740b66f56613df8be7330d9ba9f780a34cd998862968f07c6e9b90d969c07dc08a08a224cc99149caa4849a985f69672438ff1683eca0e2bd0cc1945334bb08b3af3a32f4c5dd72a26bd9e2126438d69f2841edb00227c1b4878bd30be201ae7367cd8828eb66bdf544f553893b598cb828e37c8ac4059aa8285adb3dc92f13d638f86ad4f8b066062e22dc07cbe060647cb29662fa24570a493470bb422a7eb250fc11daf47d1d819d16f239a025d8edbc4edb81e7e0e7dfc0c2c2ea6ca9c592125530c7564b83d96430d4d2f6813cfc24d6eded6babd84ece0ceb116e21a3ba13332035cb5739d5d505ec7fdc0f2d62b9ffad44f779af02dd0bb9327d015fcbfa111bd50d7ef0c87beebd90ab90a92eb36bee7fc01840ab2636a9d13c0510ca6807bb679310b2365716774da1c8fc29cb1048d6a5b2c8ade9841ab513d2fba1d1f28702b4e8cb670a2a609bd48bf130cfabd4370615425ebc8d4a9bc583d1746bb72a1e242d69b3128346e180bb0c61bf841f7561c186f1b0b758d186cea767a7ddf1f1e820be32a59c732da2628b830aee7c2f82063813766d06a52cf0b58650741f7768361b28515756de8658e61c0f4badd43306252a5ecc4321c26f58c986c65843abaa7f656e49769c109cba8a04d5ac93dee0d86b7e204ddc289a0e3fb7eafb78513bdc160d03f04272ca4a52a28bbe004ade7043d0c27786b06a9a60dfaa973dcedf9bd5b7162ba8513bedff17bdd81d75ca8dff13cdf3b3e042fa655e2aa9d384d3d4deb79313d887af2abea69d63428fa83c0bd9dd534db3a57dbdbd0cb0c3b9edf1d1c8411b32a6567a7f29c99e2c3ac9e0f33930f82be3a08a3fbf3a689f856849d6f9d829b5fc3bc700882ceab249a0b6af40b82ceeb093a3f8860f72b948fde1ae5a35b523e3804dda32a252339f369921cd5133e2a49b24811a1c330bafdba4951dc4e5fbfdeaa247a5bacf9831891afab447a6db15d5ed7d3f4f5414c79de0c2cde3796b86378e474ddbe33089c09aceaaf1cc77303977b1a0781f0314001b6fd6e2d2bfd1f4d6f6d3e102c73c2ca2c320edb0b02f8edc9eab0101488c043751e2e9098584aeba8d4beaec705cb485cfca1eff47d55db3d16a8f47d19c63ef42526d5b23a22756f1bf080320a0fe846101ccbea3d4f32071e4a4c0a9a584a1ba8d4bdaec705cb485cbaded0718bcabec044eea975b92bca5ad21012fbcb261cfc821ec703c7ef0f557525acf050d2e378a0e8512d6dd0a3ee75032e9abc76832e88d84056ef7a7d25aff2fc6617bddcb5a50daad4bdaec705cb485c06bd82a65d252492352c1396b59c8e82fd5d53fb8126a703f8ed17d5a574743d356282822fd5d2a69cd6bc6ec24593112063afabd450570dde5e375087500a5caaa50d5cea5e37e0a28fdfe39e03ab3459dd57acf17b3d25afbd425e2ba54d79ad795d8f8b6ff0c803f9f58aea92473da55fa148c1a34a69934735af9b7029781480523c2e2a4b4ddf974a2d50dab55252c7a2e665130e9a8e7761c8f51539bde39e1cbf7dc51bb75bc849a5b4292735af1be63e282371711d6f5854f6ba1293a1c4c49578544aea58d4bc6cc001ca281dd287d9a15bd4f6d454d3957a44d901d5b28626a979db848757e8d59215e1ed618f788df6c80e78b89e6603b84ed7576ae8580eddae5f18016e6104940b9b4680fd6d3d22c7c5b80d7a80565fd455534c5f8e14a53dcc72c630b1bca96d5a93495fce075253a8a3419a386a854c51acbca86d52d7dd6a0eea972631bfa0b55ec81c849517b56d167367cf757a92389e9a2b247d7baad95239bd61ebabdaa6bd627ec099ce3759db95d255cc97462983b1d517dbf9da2dec2faf6cc315269c5ec81853d517f51dd564a92bedac81ece7b02a4b5a2153962a2f6adb1c14eb8981732cab2965762c5bf514754be58c5584ed557d773d9daf5e2067c7429d079e8db746c9127b2defeadbe7ba3cc6bc3e0e6622bcdd890215cdc52223763b75a1da26c557bead6d5b7dd69766e736d411d5ae7608e17163357e924286103ce601235db3d2dc6b6bbf565a1e3733c7148f1c2ca274fb32b8af00f41d99e8c9110d89980c99a99e94d22f6e8c045fcc1c35e339f9d93123d97d35c98f1e9e671e1fb75655a9206def2ae7083e08c7f0cb3bdd9692ca37d2d134356ccbfcf4047779db2c04f22911b119bd8087bed7a3590f08a76405c86980e4ac527ad1706ce9e74f60fdfd58cb3d87c13d1a963f2f42f46dd0973024362a426a0ff022ecae1963ed84d996c6f73c98b1bbccfa6e4566ebf9df2879e5740c9dfe3686b1249ab7e159111db69d7dcef1be8d69c0afcb34b407cf36e6102b65b311da58e699e22d54629577ccc4e70e584eaf269cccb34c78ea0da3e4badee3e2078b6ceb7631ae0d351f3f1ce78cc22cca4e2aef64a00da87279624574c5881b6ece886266a66c93a2bb22bb2b1265cf94adf5c9516e96af95cf39be6451874f8d74624b19649941590f447c779599411d336b24956916268b3c52b91a4ea812826ae73ef40a3569798c221574b5323c88b124554ce099b41449207962362dffd8e32d4342cb69ce9bc20bda4a29aa6d374da8a1a94e4a6cb95dc4a841e63d75510c3fd46abc2de512ec55136a880a13e0906e3c70ddce5e89e0480763938123e5b4e262f8305150d9e5aa599e795e37760b0d0f4eb794a99e6f2a4df60718f8e5d15ecd59599fa3da7a5498e7ff8c96456a7523f75c033879bade9666dccc1ba9e5bc6ec8a06dca760547951fd0884b7ddc04911f96b7f0c0232295a8943d36784be24d175b611323b57d1757b9dafd45e262ddebed772599c3cc1cdeb65c4596c3bbbb6780b7673e2f03c00353066374fa3795c6a1584dc54afe29f9b0ae633221642d484cd16653f83659d1d33b79eca2853d4ed4d612b15d8fdd460de4deb03caa03b77e546befb6ca5943f346460829bbbe92ddb2f6d3d51da0b953cac7417f7800eab03948575faeae767820d275716bd2a6ce24f0d4b9331f3da9c569dc5deee9f1444ed3a2196322beaedcdaa41dd8d2f3877b45b2e9de04ff6cbd962459e7ccdde0960fa473887acbbb27a2e5751acfa5d7a54653736ac7af3ded8af42d61bb8049262e8e4d74fa6a0d5590942f6dba66ee0dfd18c4c69ef80053d75c9ac725b2f56841976b8b656e4bb4d668a0db9375de24fd4e6137fbddee2223661c7d9be0ff1d9f872fe8bd611275329ed3f1399d7c47f5cddaa86ba9fa47fc66690600faddfa63cb18a9da03063db141a64337a63c735946a9fe804ef0cfa976934d291995dd7355b2f2ecadda1252f1439646792cea408b805fe5ee9aa6eb717a7a42489e0d4726cc6239746b5bf1db756fbae58b5c2a07f04b17bb54b317f1c39bd5f61955582b960414d216b0a5946c5e2ca930a16e7d83bc8b99f4dc542e5d", + "d2d346812a4de2b8e962177b1b9d550a36607ab5d1d72055c3654b6d89a9a0c350eafebe5bdf3b504540ad09b65dcc0e756573d46f7ad1ee76b002a9f6369825e4397f861541b05d1176cba37dd533395ed3325b6de56b96095a44d5235fc7958381a7c53176b35b07ccaa7e8443cf9ef1531e571b3674cf935bae726ca04173dd70f3a6507ea32efeb1e4dcc0f92da83d8fcaae4ca8876ef3a8d4d18457ac218ab0b76a32a1ee988fc62bf2d1a8241b751941d5c26b603d8f68a8ed8a1ab654b00a7ee1cc6f4adce55405d1d2809dee6addd174f6d502ad71c2e6f9b9aef9ad7c1b7b26738326b6559ced6e3f33c5c175d3d581326f82df39d6948677dce9f76bd4865b6494b86ebe7770a34c3e57832d7f5a5512370f09dfc869bcb650c2d601d741ed339cf17d0526e6a4dfba4e2c39ca304bbf3d535a193ccc4817e158dd4538f0f14f537e1ecc53559384cd96cf4cbf7890fbd644c35b361f77f2beda138afa3263e06963d2fb020fd25177845a76206de5f8dea314c59e4a1fe26a799fe45cd7373bad011139ddd40ea626dd2ecb8a6aa4d115f00641333c671ec6d362729657b634c2abfa1f75f8c25352a165dd6d3bfc0e1c7542e1b1051aba98ac6e545bc9b6e5294b91e520087d6fd69acc7197da3c9b5cb3096a5ec95adeec696ee64e93b1f90dc9d87cb5b26da48a71bd1b77616fad64a6ba3a91d79a345df8b5d325c42e776e542552dcc70402b68f374c533f8d526f8eaaf6ae23ced392b2f00c2de690b60dadca168fe109b60c096fcb9028e5b76b2cabed2f98a9e1b86ce21527c982f22cb0b81b52211a7f3da769b28f8e10176115959b2f2bd97d1bd484192d73c0ab7c816d71757ad90d2d5d075d33ae2370abd8e6e12b406009336ea209bd5f2a28cc1d3329ae0c54618da82c936eddc666359548eff1533d89fb2e37dcc8715441ad2834705d3da2adda0d1e5c94b52d2f5673d0df9bd23dc27500362aa36b7d523a6d8e1ab856a20a60a431038852e5627df358e62cad01c9fb51539d4519b12857d79271ccc364303a25f51b768a86d4b622130957c8842c821c9649731d5f3997d5c5cf166aa959f7b10944f3555737ded8854786c964abccf74b4d377c505354f64bcbbad41b5a6c8b1dd2adfa430c377fba4d88755ab9bace34f17378ea4f6327b557e9b028a57ef27bc9947ea8eae8b2a15bd29b2670131acc8a0ef39fe9688ce8924ea33c03f5bea9539bbda094994f86049440a86f0ede9eb9cb3d742531ab85a85de759d65eb66c6735504e96f99ca7cf7ce23f554f8542d24fc7d6d41725ad669099cab07ee1afdc2641534352aa774c4758da5880764a6461b91c8d43f15b5ae609692b896e79ad25bdcc78b2d44dad501465c8aa04e6b4c87867291d6eca56a42c44dfac680acbb431ddba30b5de9845971333c76af94249bf1457a9cf2645e3fa774dfd54325996c6cf164062566c9a967781008c9cb5772a67cca9cd456db3ac799bcb4e786d7635348e1fab194d5c58b16b7f2ad7c8952e901650873b43e55d17b7fd3dae7352f61e374dcb7d5d88b3f5784cb3ccc9c07e8b68569ae59c61592687460849b36fc1da4245b193929539701bb57b199c19fe226cfd86a29dcb7095c8e807182ecab1564f1459314ae9a45ad30bb6d6cc6938c92c35dd6d351d7d8da70f7f7b69d3a8927676938b4cc492d54c87ba61543ffe1b71292260d4756f6ac36d4bd791505549294c0a19bc5fdc8cca97da220e5f16c42958256f966587bc685f2b297390e3b2465b18a8bc9f9552a3b4c3b200e69674eafa662dfb1a53bdbe6eb3e9394995f5aa172b9b4d2c0123b79c0cd4ebec03335faa9ae779256d126bbcd6d152418017bb123565d4829995f2767376a007d858a4e9cb62ab045bd6bb5a5071ad32b1169737f396036f2a8b5fbeac364474a7d571200274ccb2a5558a7de9a8894c9d75ccb33b727afb65fbbc66595ae6d28e16a76e6a728733a3c15ed7eb687e13dd496e5f996e8a2b7c6a57d5c2967aacae670c5c7b80fa1f4a9fe53e4b6addc1cd5dde5b5367064feb97d8e2a8c063fd9af6e16ef89a2b2559db6f34a7f94ac83e0768b3bcbb75e1a3986d5912564dfd6df264b4a959f3257754cf6e7cefde1dddb602fbcf6eedf91a8dab0631efbe2383ecca83afef9643587731b35c2bb656c34949c956dba14e99344fd746d42bbf5adabc5da6715a15642918d53867783bcd19fbcc719a0e22f0df23429e1db11b3ace1ee177f6956dfc8e9228a6e90a597e364a26571be7928ece015c11ddecb00d629cfec83023594e57d913af0d8bb6a7c4c5b8672eda8425087616c9b737ae9addb0e68d6a5d7f4ff6b4c8045454df4cd364b1a9069ae5c9c662d0002cecf76100658781931c04cc016048c17bb64cf84d3a67fb891f9bae4b72259e65e547e6cfa2e923d5f6a347cf8e304ef8ecd1336c8f8ce330cb9eb77060b5f8d840b4c265185fe5d138233c1c719624b398aaa72d124d9eb7d44f6716425d1c67cf782ba256b85ac5d198e173f43a4b96a2d0867d12d2ba08d3ac75a27ec39370cc121bc3c3d64f5f38fdc1b0dbed7b03c76b8922d76d593707437946cbf5417d8fcf5f821eb888e8a5f10a5e02020057f0a5d5d65fa5f49b3518d8f87e256babf7d78ff47ff9275056d013bf1b2443121b619d93e71f8aef1f12fcf2fc4366e47f48c0724ad6f9f30f9789b0a33e64e058d4a9e08b16ce2782e55a2464aaf679eba845725cfbe4cf5baf60be902ce036ab60414a339ab724343d5a8bf390c1970f00e88779b83a11d876f264065cff10c48797100d60227c019039ba44c3ec1d5ba118c86311a2470d112322a875f68cc5bd9252dc6b01f3c50888a4314b6f5f44eb108d4c2a804f0351ae66840cb5ce3e02a1797604ef4b35de36256da89529ba0765fd1d29fbf53ccc499491179fbdfc6ea59dadf495718f161c6f46e63b27f73e641725c346c2775b649ed2298c48bc296079845b3ca8428e4c5a839eb87503210e862369fc40031f89af87038eba6b4233f46383ca598ea3554cb1a54fd833f2523dab6db296c9352f9e1d31e1b6bc68c6dc2fd19de1efcc1324fc1f24974874f275929edb313de8884a04930928eff783ea6d0caacb79e2ac33587c837c1e55487e08f1b7b4b36297b6e2dd1dd0a4688bbc540fdf52abe184ed9b6566b32f8aa76fa95d9839170b9a8ea9d6eaf7e5b3b7d65727a7e3b98326301a3e668fc957f08ebc94efee40e31c4e297c8ce7e3beccd713585bbfd70807d50878f410d6628cb44726a50f21a6067843051c76e81bed9406fd6107bbd1923eccb70fef77359967308f23da488d2fc577fb3cbe2b5ce1e7120a46fcaa80ac74abf4a0d2bfb7b1e6f9241967ef973cbb327602d402aefe700d4d67e4f7c9576be46d1867b793170616bed2149d9147305256c9922ef3ac33cf17c0c42fe4ab1b3543e435f3b2bd799eafb29323b4bf4757f40dfc13d30e348aa394ffca0edb903898c1daf86a4e6150bc4c93d7749cb7ce7e06944ceee9d850647f3f400e25c91fab07071d31dc930f75f230162d7d5f7b44a634049adf571dfc5592c4ef95f08db5cb45184793101431a60d5b71c5d249d2199f7d7f26dfbe5dddc91bfbe88a080dfa963535fa70f979166164bc540f0edbf2e5e52592956d4714fdfc127f1eb6a1f16459e29f36aaa5fac0b68b817de0596a16e5f3f58891b7408439a97218a06cc862fb5ff11ff75495cc29f9110be179af4f765e05307a0917ea8719f931bdbcdde424008ee264867e53f8e720f040029688e6f72f6e3f7fa649385984e8defa827f3bec50cad02d3da659876fe7b131351d1d71b70b8ca822e00230f8b1fa713fc7d497ebd52a49df", + "0fa8037aac7ef0e227ef1d55077554655c488fa6e137b84205021fc29b6340959b4dda5cfcb97874f0b6a493d6899617497c4171ba17ed4a1f2d8bef43afed32010d7b457069112eafc8a7458dc3a325bd72ce02563179f42d0b399088c997e433ede5c171103fe8a4f0640b04be946f0a3f769bfc8c2e27499a316abd04ab6d7920475f0d4ea334b9445f6205a58fc48b7be4fe935d98a0ae4ac0aa3c9ad1fc95782a3af0897c27a781db7a06d5b9f3510a2c7166e84ae2f9d1579329a82a7c4a7ea89e1e785e86e6d759d9ce56363dbcbbdd142cdee9fa4d5d2b3fa1d9b90c1ee1a13fe371924e60889049946154bb93d12cc3f4828826cd64a00f0ff8932d3e9bf7956ee6b7d293691cce1c0a7afe59061ae0ecfbcb198ec36747ecd7b3a3795fd5d5f04a7274aeeb11259597fc2884a19bb1d019905fee6383fd22eb302cc25462f1ebbff8fb7ffeebbffdf55ffffa3ffdfdbffcf57f56c8846755829a30d16f6cc0a4998449e1f3977f9dc47b409b96319c2a0ca7206abffc8b30caf600174d4ae0a28904f729e81910d828dc075c5e06974b70510e0bf77099ec01ed755882f63a94d07efb6ffee36ffffcbffcafbffcf77b803b4f4ae0ce1309eefffeeb3fffdfffedaffecf9ffed73dc0adf257a33233e0d9475f48a0a85dd6b3f52fff721f86a4eb12c8742de1fdea17bffa67bffa935ffdc9dffdf7bffb9bbffbdb3d60e665347325335ffdf27fa4e7bffc0bba07b46fe7afc6cb124078f6f18f25ccfff9377ff5db3ffd17f5108d9fda0fa851a806111a27550ae82056105fe04488bfb550b9b3671899084a5d0625f25f2c89a3084ed4b4813aa6d1aac6a52dc30ba7fcde2c81f1f60e1423619cebea46114891260f478463c2d3b04a0269a4796455575031aba829ed65791d1292da30221603579d04f4fe44596ee9726d519e4fb375669dc69fadad5be311519ce1eb0984d42256eb20aceb0bd92d260a50d0161daca15ae3288eea5e99a89483a7c84ed15347f5e0f76cb926b28aec115ad584cfb3232bdbace59199bbf04d0ba922bbc454d5367663c931e37ec8ce813f6f4380b64408913d43840e2159dbc287c8bef1436f09292de880ec175cf4d6a854093c2237883c3ae480bcc118312361c86ea1306f6368d4c6cc90b3bb1b0cf50135e4ec0ec5bf2eda869cdd4ee0df8682d7c26cc896389b1bb6a3c26e4863dc4d5d13d54e6f5bfbee616889c8110cb7b907d655331d39ae64e730971bb26b4bac00d916f652dbaca04fe10469c4a33e1a8614a75e4671b83cc761d5181f73608ceac3662c98d504d2bc3b61bf513cd3bd1c0a4d32ba2da0e53063a31adf42760c70b953fe9fb148967bc0d49b8db7da4012cb70db21b4e42deba73aacb6c5a0bc6db5a987a6d4a0b82d58e5c0285662586ad06a886a393046bb04bbd420b935fce5c0a86e8f8aa941b42e4ee69dcc482ac6a30890b9f7738fc4996c0d4cb9a95daec7a990864095dbc117712ba43170e5864da83816d21cc872e041b14f7c8b65783444bcbc93d1213742d57eedc374009b3110a43108e26d78261aa225c8cee11287700bec184a410e154b71789c1be22cc80d022d0e8e606d1006394c14c65b44d88cd020fb8468dc9dcb6887d00cb26b6cc68dbd49cda11a64c7588d434f3df6108e7a93d616d471b859a66e73b6148f876948c40628cf3aa2528b30eb5c9b46f9c57f2db2a0f93c993c6fcdb4603c7529a0251f8988341425bf59534c60b20c17147eb444681f260ed30bf3d761f62a8bc052110df3a23cd34e8bc09a700d3fc512c2385df0a8881ce4804c0818c1c8c2195428a0d88a7e1f1df33e3ae67d74ccfbe898fb101d630640eb7128e162b406159bde22e8d9c0467c155f446e309ac257f69fa96130d31fc6e1e8cf40f72e129939ac3429b22566d6b98cf2b93695609f719d924623dcc08065c462a18f298cccb184f460da77ccb8c5742f57cbce7aa5141d4eab1f1750c1f640a81df2255d113f38f2fb9d47e5ced700e7171fb054be0a7a15721334bc4d06166d18d2b15e69340e4d32314ae05239e3f115faacbc3f0160f5ca88f0850098ddaac306a49bf6b5a68ac8ead85261538fe47c59047ea5099f73778cf72af2a9da83bdd00eac00ac2675959091316061aad18ceb2f76b5b67ac2d3603ef7fd9e7a94a563d33e5d24d827e679104d88279dd552357524dab25296e2957804fe3a5db7ef0c02074cdaf0ca713c37705b67e5c284d508e592be9e6105582f08009827e1069e5b0b77b40f5c7fe83b7d5f81758f6bc18ef7020be806c1b184dbf3eac930d9076ed71b3a6e01d53f0c71fde381e3f7870a6e03d3e85ed8065d60da40c2ed7afd5ab8d37de00e7a0511bade8124cc0f0600cc2fe0fa8761990f04e875d588e83688d86c3fa6f51cbfd793707def404cf3030f24c02be0fa87c1378081765c40750f34d05c10b1bea28277dc3b0cb6aee30d0ba85ef730da66d007add02dc07a07d20a259deb1d68440c5da7ebab11711cec410465a7fd9ee390c6d92c5b8471dcda263c3de8565f60528bc67c3f0efb5289d44bf8ebfd6451a9a57a4517ed03b1e73a3dd96bef780f2c25f90f4079d08afe36c2ef45a66e3185798721938b3039c4c161207a03e758826c18a57bf51b28e90552af366894791d3789e39c6d7194b114fdc62981928188ffe1824cb3438d775503523322bd9edf359eb3c4eecff1de58e3b148179cd26c05466474418db7607e66e87ad32d50cceacc3e5e2162af5837d0f82483c0bd6c5b1dc6dbaa7fcf7b15bc6130faeecd6170083d80d02a7762b71ee8cc304de806369a37db6957b6e8d0e67ea9383b48676e51cffd922c8cc3345967c5316c51553ed63b2998def2413d12b60e36d3cc082eb758d27e3c3ea857163ecc1823005bdab193ca124b66f2afd90cb4c562e8716d97613e9e7ff7e2b9fff5eb1f7cb4fcf8b54f2f5b3a6cdb39f472f35547646d51ec1661f747f0c3ecb8510b357149cb02e8f639966aa3023a5c75b55cfeef23bcb67195a2f77b4c3316013e4e2908210869b824326cf5ead16d1099804c802a2a16f7e5ff5eac676bc0c36f13dff586fb1cb9b5ede06e3d317a338931c213c20928aa2873e0ff6572e98417611433a73850509cd778174293bd6d797931997c05fdc673283fc63331b2dffcecc0672fdfae9cfcc3757c45baeec31193551a5d84e32b07b7eb401da6ce789e447805c81285042ca6649a5f8629d8d1e918af8c1963d0e4efaaecbce4c4607bce480cc2894122a6677ef38b3fcb88a407d1e9710732e5771f8e4cb19b1e1cb1118d91100eba999d7c4e1d60a6235dab3c0ae9775290be420a108d0204294080028885f2e00205ee4074bce387233a281f5cf5c8ab8f8c781627a517f00e633292e49c2e2719535c0b9a87408bf077559cd0d88a0a5b07a8726204f2b4c917822e44d285e9b0cf045dee42c8fa0f47c8301691a631deafc5040d2f6545e182ffc3cbec775588be54bde682247a4de0ff175f7f791722e2dd8988f035a75cded9e3318a6853331a6375f6439a33352dee8bc7826c28e5d10a161f69b220c93a2545fd9367472b0344c89c0d4501bcfd544994dc0fbe45eeb72fd723dc1e1c996715eaf7b4ad5e1afd3e49ebae5ce9b64d6311ee9d7db48e62f498304a4dd76802914b3a6a933c99510c75e9c03adcd3eaac0cb87cc1ce8e35f0e82034d6612d97ace81246e33a6526579447ec065b12460bd6564216e139656d426364c4affe46b31e84bec312398a6823429768f267ac2c5f2da2a04fb11e0b5c622cc5eb7e73cc7780e6dc18dd3619d20324751a66791b1a0861844cd7312b3d07f176563445aeb0b5e7384d6028c11ccfd6a558640200d8", + "4e34b65644391a1222e4831df044ed53231ad534139a8cfd08df1176fcdf58d19812314ab5e8049b3705e323d430d62f419543198fe9b0208a32f6ec5c8833422950f8af9713d02e202c13c2245e3f96054281ebf557ac1e9d1c7db38ec6e7fc7089487ac5aec59362a5f5638bbf483a8ab4bd7694d0aecd4d247b65388bba7a7e901dbc455a8336bf51101cd26ff4de6bf4de6b549af71ebdf7fdfcffe3fb79f4de83f3de83b38364bcf7e1bcf7e11c5cadbcf7c4bcf7c4ec282aeffd290fde9ff2e8d17df1a7bc335f8ab94cdfe64f91797b8b33038f2aa1d2329b218f6e9e7b3cbba2f07b5ce07aaf7093e8d494f56086bdac3950248ad4a6b014ef4b71d70d1132f591307a348cdbadbce2013141bff2a23924664b44490423f095f0b684cb31ed6417b37237cab1255b4f744ba2941d5f15b781c825fa07d06930215f166830d1fdfe720644e5277cd181503794318ebf75f6351d11bcb7bcf039c9a3ba139c4972e109d37d5facb59c20336064e035e54b20127aa6da64165de01a166d5b80080a2a49f2799b2c1230682922866f79660ccc8343d41902eea1e267133a7b9d51bc0f9277ecd708de60f016040ffd3411102dcaafde89e0fda0689fb1ed0b9aad63cc03b15ddc8a847e42de54663d320ef170ca18f40e99c3ea384fc80a6f6e5832051da5444e7a58ef1235555e1c6fbf10a7b1a112885e1b3dae5006c56a01ab0a5c5970cf0ac8f46285ca0d7e9dd32ba20d6190e24934c6e43fd93ef26751b4653d5b887be51c49f1aa447c54c72fa0cb31d80d49ca1dcd743a6547a2954e5eb113c15146d0d589640a97e78c06211092aef4ea808d581ec03419a2d9974c893a8b9db5c9ca648cf444b76bbcc67c92c43c97639659002ccd0e589a29655810af137cc4f406572df310d01f51bad4940ba0c9ec0804e4b9ee77484cd9108307617c05920f6d87a20d2cf3f1675f92159f97004771705ce927ae93a42fdb1e6cab115b1ffdc6482806934519d8d4803ccde31e078f2a61983ded8c4ff3c0b70ff9d1ec5581b411bb583efc531fed9addb047c7c69c29b4d9d0bb557f183ebea1b376eb8819456be9081a6215feeed651afeb557beab983e3ddbbda103dcb307f1546e968396291ab08d91afcbabd7e11403bf06e0e8343087a66006dc39c53eec256deeda013b3f5788c0b32b14a5526e80bd018a8a612224a4875b7eb713edd2635d2e55cd2f802f7d1e2f56299b5b604e14af4d473edd4a46563a5e7baef6463a5b836048b9131cc1f3405dd7a19ae12fb05ce9761368751002b9355c2d2673dbae162b76e4d6a5f17afce7ef38b3fff74ca165338af903c3c4793138c48dc3a8d1614598e43b44da29c4c129a2d7ff38b3fcb61fa66bba86810cc70838441780d1f304944d90226bf362c6da1fa8a262b98ee2f2398f96126b9e01bb138fdc0c433e513134cf819a5cc7860ae56dc0aa69ddffce2df9536c99b17a942e64d2a41ef5bd6a570bde9a80b90773cb057e7daa8e5f943d75e60bb35593fba514c5e81fd9494c2e21b2dc93a8faec5ef5b279d117cd6882718137c3d70b7a28926040c0d2e336013e2267d3899444c658164a2d48dd6194e5f99b6c80101465f2bbb1a0d0d2a302e43a889db3958038d3a9eb319d089d881f67b216cdda051d88e5dffa0b256c3e1772079399898995df2d8ab3b163a1ea2f115b60cfaa830c1099ab6d3248e9236b960dbd16c5dced72a04ef7b88a6b05461b12022cc24596ae63633c113be78cfd3908b7118cb9536d8f6f7420efd61a3180e82c36b3cc6652e78d585f3ad056f8b67724f9343cfad709f6c8e52c192d571470368eedf778b423fe8f5dea4b8d9f8da271fe64d85961923772ab5776b6cbc7339fc5db336ee4028b99d72b742f9ae8d91772da70fdf1ad9e6b3b6ed93eeb8775876dfc498ac916d77aaf4861a3fd45b9ed680605a2e8b07a5cc17c189aeda33e1a4eff6e55976416b76a9dfa3ad7ec6ae22aa41c66dc8f2cc96f706dbb9c7f6a845683277e2c3e0526eb170af486673735aeee1f3bc74e520e7e28a4233f31c4b3c277df4c2a2e4bbd9ea294f31a77e3ab3d081390930910e3b9e414c540e57ab18775ea081a3d7592283c0378268ad8b30cd5a27ea373cc1bc776bd06727a4f5d3174e7f30ec76fbdec0f124afaea56fb495033b67b4527f399e27e9c71c25fd0dbc83f6012c43b7a5bb585b306a58f839befe4005c8b7c9077ab8b95123a5dfac69c6d064f9ecccb7956eb1a7ace0c7614e67497ac53001c9e4f866adb6a5ec0bc6195992e3ad15bb86bfeae7f523fddf6b9956903143cb2a28f98603ff66dcbe8832b141c845fa1df31bcf937c8a5b023f43bc62eada997ec1dfeec544d5d12f57745c65a72134f6141fd737910a1baa5589281a244d157ec4d25414505fa2150936cb8c7e162d4f886badf433cca38b958c55c4f5234bb72af4f7de39fd4b3db2751caaf8ee43e293bf8551ff60932779180b1e7c054be4ebfd59e73f10d6050f8a75c15db0ae7bdf58c7fa849d91a3cdbda74cd311e578de01bb7af78d5db88a8c966b583f3c049e55b0bd33c605f77c9c050f649c0577c3aefe431867c1431a6777c4b8c14351900f7538d6a850f2fbe46e07ea1fb0ab3b6a160de25e8f07b066b360dac8a386f2351af30eb8e0bf6b2ebc7d1bf2edf3c9bf9301d3bd67ac7a5bf6e3dbe0d73bb01e39d37af77b7c050f627cddcd84143c80f1153c9cf175374ceb3f10a5f83087e13bb6188b1300f7c0dbdf741ce12d1af9e566dfa2e7ff803cf2ee098feed7bec02179e9df1d33fd07c5cce0013233b83b6676ef2733dfd9dec1cdd87827eb3f3b037bf79381ef7637e1665cbcbb55a19d95c183188bc1831a8b776a8af61fce580c1ede58bc53560e1e965a7dd843f67ead2bdfe57ec4c157953bb9012a5cbb1f7b1356bef8f7832ff7649fe2009cf3ef705075ef25f3dee9cec58d38f8ce2cd577b98bf10eecd4bb1a837739b1050f660c060f6d0cde251bfb0f4a953ee4a1fa2eacd3ca498ee21c87e514c73449729a9e3d3a701a1dc2e1b2b377664e1d792ae928bf8cf04c204b740968f1fb146a4e4b4a688cf0a262ebac7a8ecdda9000deb94cd209268ecb5893bbb5a5eaecdc9a7e77c15773fae2b397e2ae90dd1a14d59b9adb7e4bcaad7964622612b5b72c373568c94aa3651e1fd1e5d12a89a3311eb115d580d222b9f9963ea8d3855226f919239643328e1d91201538724e5379608e3f73f8c3ceebecbb177e4b253a582693285bc12fa4662da8331b12bce9194d6cc0f63eb7f4e9979f7f8cc794d2ab1fa6c97a553a8344d7f0fb8f5a212857d202d6e3e70c3fc773f679c53ebfc5cfc939fb646528ff8cd967869fd3887da6f839679f112b13b1b711831fb332f105fbe44fd6ac3cfb5cb0274b067399e0e78a7d5fb1e7297b92310819c32463f0d7e7ad3fdeaa75809692ac286f98af110f8789efad83d05900b3d1d798ef5669b258e59f4e7fba3c5f2697cb1f24e90f69c258c334fdda9ce578e99f7e2a143ab6e0ac92959ef0ab49e9ca14655a6f45754ddd6a4f8be1ac068b3894c98980a92ff3a26e9c64d491298593255e9ab33a11103b40ca4504ca8ba4494c8bccc379388a9613fae679", + "0b6fb63ee28f556b5af297af2966cd0485919c479427d1c4db7230a9eb8425ca009eb1122ad906cbfe9888649a4c9da55a56d70ef9e88a8849515c8da4d76e3378e1784c573cfb46e57618a95c74c5a3b27da2d211a8b6ce18dca9441d550fc36d278852e19d892f841562faaba314d8aacc9e32f1793fca276b8b9cdff55cf15a679fff23932f552da98d24fc394a2657f82f4e7567ff0f53fd4eac237c0100" + ], + "rawHeaders": [ + "Server", + "nginx", + "Content-Type", + "text/html; charset=utf-8", + "x-guploader-uploadid", + "AEnB2UqZNFyI8MD7o7n8cECnTlxKqvg_1bjHzkrU-Db5sLVIuBATx3WJgA3ikQte4injMqfyZLz_JtmzFC_gnu1p23ySRUeVhstBzT2FYzalDJniz1C4pNg", + "expires", + "Thu, 16 Aug 2018 16:07:49 GMT", + "cache-control", + "max-age=3600", + "last-modified", + "Tue, 14 Aug 2018 18:23:14 GMT", + "etag", + "\"167e29db2320d83400e66205cd610bb9\"", + "x-goog-generation", + "1534270994357502", + "x-goog-metageneration", + "1", + "x-goog-stored-content-encoding", + "gzip", + "x-goog-stored-content-length", + "15623", + "content-encoding", + "gzip", + "x-goog-hash", + "crc32c=OMM30w==, md5=Fn4p2yMg2DQA5mIFzWELuQ==", + "x-goog-storage-class", + "MULTI_REGIONAL", + "strict-transport-security", + "max-age=31556926", + "Content-Length", + "15623", + "Accept-Ranges", + "bytes", + "Date", + "Wed, 22 Aug 2018 12:06:49 GMT", + "Via", + "1.1 varnish", + "Connection", + "close", + "X-Served-By", + "cache-lhr6332-LHR", + "X-Cache", + "HIT", + "X-Cache-Hits", + "1", + "X-Timer", + "S1534939610.926944,VS0,VE0", + "Vary", + "Accept-Encoding" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/testvalidity2.json b/amp-story/linter/tests/network/testvalidity2.json new file mode 100644 index 0000000..13a7bd7 --- /dev/null +++ b/amp-story/linter/tests/network/testvalidity2.json @@ -0,0 +1,30 @@ +[ + { + "scope": "https://precious-sturgeon.glitch.me:443", + "method": "GET", + "path": "/", + "body": "", + "status": 200, + "response": "\n\n \n Hello!\n \n \n \n \n \n \n \n \n \n \n \n

Hi there!

\n \n

\n I'm your cool new webpage. Made with Glitch!\n

\n\n \n
\n \n \n\n", + "rawHeaders": [ + "Date", + "Wed, 22 Aug 2018 12:11:38 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Content-Length", + "875", + "Connection", + "close", + "X-Powered-By", + "Express", + "vary", + "Origin", + "last-modified", + "Thu, 26 Jul 2018 18:02:04 GMT", + "cache-control", + "max-age=0", + "etag", + "W/\"36b-164d7c1423e\"" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/testvideosize1.json b/amp-story/linter/tests/network/testvideosize1.json new file mode 100644 index 0000000..3b7e74a --- /dev/null +++ b/amp-story/linter/tests/network/testvideosize1.json @@ -0,0 +1,110 @@ +[ + { + "scope": "https://regular-biology.glitch.me:443", + "method": "GET", + "path": "/", + "body": "", + "status": 200, + "response": "\n\n \n \n \n \n Hello, AMPs\n \n \n \n \n \n \n \n\n \n\n", + "rawHeaders": [ + "Date", + "Wed, 22 Aug 2018 12:41:55 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Content-Length", + "1950", + "Connection", + "close", + "X-Powered-By", + "Express", + "vary", + "Origin", + "last-modified", + "Wed, 22 Aug 2018 12:40:18 GMT", + "cache-control", + "max-age=0", + "etag", + "W/\"79e-16561a65fe7\"" + ] + }, + { + "scope": "https://commondatastorage.googleapis.com:443", + "method": "HEAD", + "path": "/gtv-videos-bucket/sample/BigBuckBunny.mp4", + "body": "", + "status": 200, + "response": "", + "rawHeaders": [ + "X-GUploader-Customer", + "cloud-storage", + "X-GUploader-UploadID", + "AEnB2UpSo60E-S7rywEkCTCA84OothZ6I7ppgsqykU0ySzf3ZmhvcluTnsJPD0GSlvjDxOx5d8dvRFKaQGQkqumCor5BttQpMw", + "Expires", + "Wed, 22 Aug 2018 13:41:55 GMT", + "Date", + "Wed, 22 Aug 2018 12:41:55 GMT", + "Cache-Control", + "public, max-age=3600", + "x-google-storage-location", + "US", + "Last-Modified", + "Thu, 05 Dec 2013 18:43:53 GMT", + "ETag", + "\"cab08b36195edb1a1231d2d09fa450e0\"", + "x-goog-generation", + "1386269033518000", + "x-goog-metageneration", + "2", + "x-goog-stored-content-encoding", + "identity", + "x-goog-stored-content-length", + "158008374", + "Content-Type", + "video/mp4", + "x-goog-hash", + "crc32c=x4GOmQ==", + "x-goog-hash", + "md5=yrCLNhle2xoSMdLQn6RQ4A==", + "x-goog-storage-class", + "STANDARD", + "Accept-Ranges", + "bytes", + "Content-Length", + "158008374", + "Access-Control-Allow-Origin", + "*", + "Access-Control-Expose-Headers", + "origin, range", + "X-GUploader-Request-Result", + "success", + "X-GUploader-Upload-Result", + "success", + "X-Google-GFE-Cloud-Project-Number", + "643793975636", + "X-Google-GFE-Backend-Request-Info", + "eid=E1p9W6TPC8Xp4ATuhpLoDQ", + "Server", + "UploadServer", + "X-Google-Netmon-Label", + "/bns/xf/borg/xf/bns/blobstore2/bitpusher/0:caf3", + "X-Google-Backends", + "/bns/xf/borg/xf/bns/cloud-storage/prod-cloud-storage-frontend.frontend/16,/bns/xf/borg/xf/bns/blobstore2/bitpusher/0.scotty,aclhrj16:443", + "X-Google-GFE-Request-Trace", + "aclhrj16:443,/bns/xf/borg/xf/bns/blobstore2/bitpusher/0.scotty,aclhrj16:443", + "X-Google-DOS-Service-Trace", + "main:apps-upload-cloud-storage-unified", + "X-Google-Service", + "bitpusher-cloud-storage", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend", + "X-Google-Shellfish-Status", + "CA0gBEBJ", + "Alt-Svc", + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"", + "X-Google-GFE-Service-Trace", + "bitpusher-cloud-storage", + "Connection", + "close" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/testvideosize2.json b/amp-story/linter/tests/network/testvideosize2.json new file mode 100644 index 0000000..da5215b --- /dev/null +++ b/amp-story/linter/tests/network/testvideosize2.json @@ -0,0 +1,84 @@ +[ + { + "scope": "https://regular-biology.glitch.me:443", + "method": "GET", + "path": "/", + "body": "", + "status": 200, + "response": "\n\n \n \n \n \n Hello, AMPs\n \n \n \n \n \n \n \n\n \n\n", + "rawHeaders": [ + "Date", + "Wed, 22 Aug 2018 12:45:39 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Content-Length", + "1908", + "Connection", + "close", + "X-Powered-By", + "Express", + "vary", + "Origin", + "last-modified", + "Wed, 22 Aug 2018 12:45:17 GMT", + "cache-control", + "max-age=0", + "etag", + "W/\"774-16561aaefff\"" + ] + }, + { + "scope": "https://ampbyexample.com:443", + "method": "HEAD", + "path": "/video/tokyo.mp4", + "body": "", + "status": 200, + "response": "", + "rawHeaders": [ + "Date", + "Wed, 22 Aug 2018 12:45:39 GMT", + "Expires", + "Thu, 23 Aug 2018 12:45:39 GMT", + "Cache-Control", + "public, max-age=86400", + "ETag", + "\"CDPdBQ\"", + "X-Cloud-Trace-Context", + "7323e72d6578e577b29dc785dbbceaee", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "Content-Type", + "video/mp4", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2462", + "Content-Length", + "3709456", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wmdk78-v6:9852,woft126:9873,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2462,woft126:9873,wmdk78-v6:9852", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2462,woft126:9873,/bns/wo/borg/wo/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/20,wmdk78-v6:9852", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/testvideosize3.json b/amp-story/linter/tests/network/testvideosize3.json new file mode 100644 index 0000000..494bf5a --- /dev/null +++ b/amp-story/linter/tests/network/testvideosize3.json @@ -0,0 +1,200 @@ +[ + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/stories/features/media/preview/embed/", + "body": "", + "status": 200, + "response": [ + "1f", + "8b", + "08000000000002ffd57ddb92db38b2e0bbbf82a38ede76758b2c92a22e25b9ea4cdb7d71c5b17b3c6dcf991977383a28929268532287a4aa24eb28621ff671dff66d635ff6d7e64b3613171200415dca3ed3bdb6cb45028944223391480009f0c91fc23428b759642cca6572f3e809fe32fef9bfffefcd23c378b288fc101fe89f27cba8f48d60e1e745545e77d6e5cc1c7568f69322c8e3ac34fc62bb0a8c220fae3b8bb2cc8af1e56510ae2c7f996579fa3e0a4a2bcde79777b6f5bee8dc3cb9a4a57428827551a64b334aa265b482ca00830929f9b6539173bc96cbaa94e958da3acbb84ca29b975be335423db9a4ef8fead6aefc6574dd09235a2a4e571d23485725a1e9c7a8348ad2cfcb2834eee37261d4449eda247f1dc669e7d4a61068d3b69c07b16f3edb067e79726514fce1b5a5e93c89ccbbfc2e8eeecd78e9cfa3d3ab6e967d301d7771189dce6102dd5697a010485896e665ad8d46ad17f771582eaec3e82e0e2293bc7497f12a5eae976611f84974ed74e1b58cfd84bf737d49e2d507238f92eb4ee0afd2550cb91d639147b3ebce252a561c1597b3c82fd7393c2ca330f62f2b552bb7494434709ac6499467895f4637d334dceeccfb68fa212e4d1f68f05187c726d554505d6354800e4759f1d8e946abf0c2b00bc3315669bef413639a968b89b94c3f3eb868f1c0920f2ab5ff236fe987683bcb4150855117dfcdf274b9bb8b8b781a2771b91d2fe2308c56fb321513c96312ed0117b6fbf3202a3e0f9ef4b3a0f90c38a05fa0b6dd3c59a5ac839ca77ea0da91aa572cad5093e4d7baeacbaaee47a7dada959f6ccb38284eb7b7bcc4091641b05b411243a5661c9a7e160be305cdaec938d584c52b105202c622cad1a4dca7f987283fb911dad20f36a77e10a47948c6c15399c84b3cb8ce98e8ebe90d26e06db5b1111f6da7f1f8551ea125bf304ce3db97af8ce9d6f87e032892a8f2048e7b016f167161c03fdf48e2bbc8c8284a239d19e52232fedb17bdab09a98d3c1905416f117f03acb951ac331c478c74956c0145b19e826fc50b130b6fa07706e8effc38f1a1fb19f10a897dfee6e50bab635c82fa3ff983691aaf8345b4f4910fc6d2cf3fac336396e6c68f44e5be314c9337252ea325302dbbeeac0853ab761c6349a789e177c8902691ccf5a8c8e30a04f54eb7116d9b15a4cbcb7839bf2cd20086652b5bcd3bc858a69a5821a86296253022636b2f93f09bf705b41a956a4714abf34752c3a6ec8c0d520754515432e9741910a24288a739b8d641be5e4e5fc445c9b3916a7cff9eaa3f00feb2631e465d14016e01901582ac2c2d622284b1e15489880b12769587d2f9631c72e2b40cf882fb185fa8be46551560216a03687ee0792c6b4f7eefbbc69914bb9f4071c327aa468be25247f3b755f6ef8aeac4dfa6eb524ff20b9af7bba297799e1a6a49c756687df7081f6b334cedd51b983195516e3cf3f3d0087de8b2b58da2e6b6a410e3002084fe5bac9760e0b61d3d303458ecec7f8456e08cb6053a805e088d130b14d1d49f46ab8f2d25c8b0f010ab29a3f91d5b4e99d0875bcf566c633f29058c0d7e51fdf85316ad8c1f733f5ba8da81663dcacbed7567361d8351fe3516d5c3ed7b3db73f1c79578e33706c3242aae5d2f9f9726cc3839daf4603be741cb4433f949b2de8d679720ab296fecbd4ebb20dfbef50475b28c54effabe2ce9c203e26ac71b69e2671b188c25fcb58c2e1dacec8b447a6e3bd710663d71bf746d695377c7b10db320de3597c2eb27ae6bf84316c16814fc027fe3cc1621e87008b2e496496e93a589871409cf2f863545c77fac34d7f586198f977980bc3a3026f1238de614fc03bb03703fb04bc04ee0cbc437733744fc04be0cec13bd80c07a7e045b833f03a8eb7819f133033c87370bbf6067e4ec14d21cfc1ed0135de497453c87370f7dd0dfc9c829b429e837b042d1d9dc4130aa9198428e8329dc6f0eb3e9ac2ec3c33033f432b23f4d36d549c521026d5e5ba30a77e6e92150901c334f1830f6699fbab225907e8c79f804f1d909a6e44cd26ca1a3a2b2143ca25192418af5c77b4819f26af82d42f4a93656b18f400d680d986a97690269213f5c58cfcd1349bcd9fccc3c65a6aecd65f85d1c62c91167f8deba9f3a86c368e814df3f4be8872f380d13cccbd9ebbe96974983d9824bba9b887713a838da3b1421c27c96ee22c16305206ebd2a0c85b4a5bf09f2ac74264f51b90e9b39304d42c77abf82b75edcba2445d51ac442b3228338be75a4c4c6214c2da505f5d6f12c85ae53ae3bb09c45fb8ee3c1657dac746cfb5b3cd8501ea60f09c4514cf17e5d8f04675165f95642059bc891233476a61127d71d8d04874804ad81befd868f7af22dd3d8bf481676fae8e0d209f4a7a7f30fa2f22ddb1af8e0cdaa7d13eecb7d13e180cff0b681ff671dcbe3a32b89e44bbe7786db40f7b832a0bbdef5549d7", + "d18d04920ab0eed1090deb9dd530c719b930b8d8a3dfa86538b7c8fdb8fcfc0d733d6898e37d8e860d85fea034ccb15defd365769ef91a7aa30dd6fb5bb5ec0c999dd9b00136ccfecd1a768ec8ceb31f8e7735d8b8f66fa78d67c8eccc96f57bd832c58090f27c7963062e4461cdd1ff8e035cdfa00d0f578599015c54060b5c95808a5651800b4d795a1440fd3c5e89bbec94260529dda0cbe282ac9b0445f16f337f1927dbebdb15129e267ee9ffe74b848df21c6329a8a386fe7fb188a2b2b9194ff7b3780c8db548de17bb302eb2c4df8ea7491a7c98647e18c6abf9d89e10377afc45afd7db1340f09a96b80dd0a56fff58a765b463405757a309124d271fe3b8f4c1d762c53e44dbfb340f59b1224a800f690e1ef49c27ada745b96b5497c46594fb09035aad97d328672f5096126ffa655925464bb2cd6bdef9798cee394be7afac8632f2135603c61ad5549439b49b93113ade9e131ca096a9e4c7bc4164a654f1c1b6291feea9d20e6d7b2f3652ccf3aabc20f18bc210d071d4e0c073cc5e7fd4821959104fd7252f850e6fcd27567ee5df6d27fada51ff187c1ecda34dc6abb4edab2b77c0a0a6eb2489b8ec8bed729a26b5f06d7bd8abe0e2a4fc35e6fc22af319d61d57847832987471fbd4674d5d2c610d88e52d84d612e3bcfd3f52a1c7f310b43ce02d0d9467638e3d9a0180bbf888b5d9b8a82ec5390bd5a37eb25d071885930a75be0552d111fffeed56c0317dac49a6848c8e47e01fa6c16991f60d27dee67a428cc6b815e502b605559e25c34da94423ba825c2b5d5c75fe1ca335db4bd2ceee6dfc0e464c2c3df48f45bf709241b34dea7e3e0949bb4853ee3bae8d37473ddb10ddbe879f0af6300865571cdf707efefefadfb1ed9bb069b67631d9d1bb643fd7a012307df867e92f9e5c208af3b2fddbed5ef0f0dc7b3862f9c9e357246866b5d0d1c0366", + "90", + "23", + "c3", + "4e", + "c8", + "2f", + "fc", + "cf", + "ac", + "9f", + "08", + "00", + "fd", + "ff", + "05", + "2f", + "3f", + "b2ae9edb77a667b91f3bc62c4ec08c7de9f67ef8e107fa66e6eb042671d15db44ac3b07389bbe877f39baf2ef42cc455e0ff6f58d8eb5903c2c0e723cbf67a2f9c2b6b38722536c25f7ca8b969883c24c5280b11d7031848d537ccd32c4cef57bb25f4573a1c431bb28d06c4f2a730fa80c9d97d34635ce8183bd855dbe16e2a2b7a1ce606c33ca37cc7c67dc0fca506b50a2d889bf5cfd96c3699c2c013e5f560361dd823af7f1cddd89fc1e0530d8df10a7bb6494748b66830ee7cd3a9474b2224378f9693cac8f566573d5d4dbf8089c5d5a1f09d5c5985f79ffffd7f75f6155b8c260a13374d8b8af7ae96f704a8852d128d93146c12065459576d68c63e30e72ed2488f662fd23b6800c7e3086866695ab64aa722830d9ab83e35b6867d6423e32cb865d97828264c53e8e34b92d6a847e015ba763b547d82ff1024ddd882f42449ef8d241e27b82e192ce224dc2dfd1c1c3533279a2862a1fee10c06c50c1f16519eeeda744c823251e6a46160e7bb07111a6a6e9083cf5c56116cd37403036390e674516b9a47fe8771906098daa12c71040521d42aec58c879c37265d66a28bb21814dcb39f067c3fdf3c04f82c7d059ef168669f408aa8bd3b01888c94ccd748ab153e62c0664a8501335e1184f77a497327afa8a824805c0ef137d05e8bc0228c6c22cd33c122138cfb1063f37e73954089df531d5c66e3e9ffa8fed2efeb506fd8b2e596dcffc1c402e448eabc5ed309aab850d5b2e2ea9d58469645bb7505acd9ba2d833c590fdf37ffe8f8ed00389fcff48b73f1fd78341dfb5ec014a75779a6e30390c4023f60d45e012931bf7bb60781bad375f3373008640f43a1add1483efab06327931f1344d0801866939f65318aae7ecb1723267f877222ab663392e11f3712238b20344acb27549ba3115328eb613fad8c3c17f52cbdf21efb59a38a87e32618af611e4c62fa07538ff0adf75dbb3be49fc6994544388d53f80663c4b611ebb4bd725d6de6cce0df95fadec864edd1ac9688741f0fe4e6080d0c95a5a597b16f4c144055b17f53be3b5936d0c18c7e3d060f385896c7626d26462d2de26ca1f79e0ced2187a706ea25b571634405918484774249588c704ce647bd28c85b6dc6222bf3560608aba448b335baf88cb340ed6d33830a7d1c738ca1f5b1ef62ab7eb5c4cce2fd1ac8b38afcb348c40e8f9bd9f8702799a4cbd2a5085695188964cae16a7291b851a57568b249a606b83689126212e5c1ca8fc9c72325d074af2e58edab21d241d63ddcfa4fab4220ac1da4267d23a3e9db1e7b0f22104add2f2b158d02c16e0155f90f4da625d50f3d646eba721a99a71161aadb7de60f561ba0f81c8cc657536fb37ae0b8dfd899aa03b3be3efca54a05a3c3aa266698da73acdea4c9851746158e3b1a9633eed9af0c1729244b372ecf5bf943c67668139954451e2ca662aaf4da8932de2038a34cecd4cf8c826cde55b644db97482c45b007572679c278cb427c238ab39cda325f01712ca508027172cded55a946590e2afc8825a7584474954de0fe107a879f46e270fe02d065f2c213592bbd8daca28173f6f03284e46c3349ae1c445f6ec35de4b53dde914b70f5de1630acd7627e8fcd8752f685bd6a0b63c587c503581784429f3aafc", + "75994edad64da97f27b0355844c10798c2361d4689f780fedd4e70d5047fe6018c9df0252f6001370cf8cc1c3dc191637d1f26a4251e8934fd249eafc64be86b493491560c88bb853d82c160f495348d6d6b95ec54ba9a9eabe5d7692346b3be962142f12f89105b8ecf29af7adeb40e39dac61c3233cd269cdc09f58c3bb11686bfd97da8fe310b57751ab66e54cfb40db5377aa8217a6e35f466d25c456bac351d6822798a42d684262ea6d6f28cbcb624ff872c4a1ee30fab4483fe38a9128b91a13dd2fd082ff19170171f285b7b55e7e4fdc4710ff71399c6a63f50cf9d7a648ad7c222bd7bd1fd95f8b6090c098f371747dd2bbdf32ce338d5091d7f06149f871ee62690527499bbad2fd2a5efa97fc2da305fe7c6ed415cd82c167e98de93357718af0c10ba21aee83817ba6abe21360e974c8a388c20e1a2ab831200bef95a1c5c7aeae24655065cd63b61f905dee8d2bbbab0aacefcabb58e511b56693db34100afa8b9385fe5a853db2aa37dc11e40b0f612fad81c86bdf6d92fb6daefb6151432183bcd99ff0f70d483755e8060d9d0428d5cbd52ad6a898c54c30f75d9b28d93e29af92cc10d2b72ba9b3dd25f0a6fa9bbd92c69f5aba2261d08ee224c240920df7b79f5aaa2c3d0a16f0aef08bc2ad223e054d042af693298815243c03c0f3a8acbd69598604100745f5bc175c226a208468252aa23d9c6297b799a06b4605b277a4c6da55b76b7ba27839fb627595bb63309d9b58d42ac871db7a4b550e8e2aef0dc44d7b699a6af9c29a2ae8b62ad6d46ac5957c5058ab069484e905313128ccf71206e1e0f0249db85d58e00eefe1e6f9bdc43f866c291126d06305e2da23c2ec936c01a0f19c00017cf5888fb4edde63b77e0cc238ca50a4d9f9e23e361507c66d236976b2966c8064bd8f9610bdf8dd0a4568cd5ee9ca0e24984e73949700d197135c5192174ebfc26897747d6e94f40216e14eb8d93b6e4e1ad1aee2e09c3cea44a63c38e9886eff57884614563fc6fa2bc8aa39834a7a88a4aa9e48592cb93daf790ce6f25df23ec7e121261b7eccce1fdd32ae35bae643ec236bd9adba59edddc2e3da28c9fae3e1a321985c6ef4d62950b8551b2798e88c8ae22ae0b928c2986ecd1f09f7dc3fc82a01fd455b49848e3d82bd84869e75fef376806440ccd4861b8a2bf0d6bbe2e8f46bef4fbfd7d550027396004e76b1804ba422a5b1935314e0dbcc56a738298ee51bf4bff59ee458d0abb3c45d4acff403146724d9c1a2c5283c2f0179a78b30b0f5f521b6e5864aca261bb043c0a0fc254d3715279341a4e711868b061a7631d9d769271268fe6f2f0c7d91e39f89797b162d00f74a5a3d0b0e89c4419daecba7a09f894bafc59e085beb6b8c8155aaf499352b3c2dc6d2b28966891acdbef77f1c7e9795dabe709d265e1db4742b62b9636c3a1abac749d071107312c0ce1b522685108322674765b61e97b25441fffb663ce70af634d1c1a8b9999aaa2f63a0e955229b872eda91b8a4cc2fba956a5052202ef2ad032a002aaba64b799878b266bb0809aacb45cd49a3eb007beef6890eb83acdb0895bb5b8c51af64833c0293bcf44b98c80a4ae278bdae7345e35f7a828a6843e5d54c2bf371d7ad6c6f028bf8e7d9aeeb36c3ba15586bbd8a2bd5f4faa326409145c44043cd8b34ace7423496bc56db349798ce122c31961e08aa4b409788cbad85fb8e1609c4efaa59445c1673b7619c22503b75e502fa6194a310262d5c112be29b78c2b9013d601dc12f0b4322ad3a012085d96b4f0c6889012d610f82da549678104e8762efa77766540ad86de4f0c6357394030d1aa484b5ba06c3000006aa92fb6c047f6ded12ad3f0a068d725618e1291c74588ea218cda691c82b62dfc0b8ac03bcafc40a63d23a3fdf92d3dc37ccee58e4400c5494aeb1936056f7d35128d64c34ca78a4e31422a1fdebe858", + "3d5a3b477086f16cd66d26596cbecfca0dfb43a71f09e6a9282aa1f24b49a8762a2a291d33124b73fdaa7afad5953a5058f359b528e27902e1908e560fef9db394f9a6e3380a1c3dff222555a62e89eb9349a391a0b0889caed5a0359ce3c5405a4a6ab84374d450323172ba3a284b04d1453c70ca8b755216b4287a586d3e8ab08aafd9e2bc9298ad458dbe089666e9754d9afd52e84c5318283f44a549c622ad5f1c5ce1df7a597ca884d2d9069d1e71b2c0345a24905509d3df5f7efd07e329d811721accf84fe3e5ed1be3450cd3d802dfd8498d39cc4bd65372b00e261a05681cf94dcb7c7d8938e802274c4a501f8dbbbe0533ba063a01cf0a0603b05f9772b9af2ff1c62faaf6f4f8deb800d6e305987123b0932e2d93a1056743a61fbe5f17f40c441d45a2cbdd93bb4debf854ba58d2f57145a94b43debb6c410dec4697afe64801c1fb85b31396d371e58ee2b306433281aca76f5d780433d35dfab18a84e670521c28e8e1f2e282ad42c71f714eca36ddc8948db5de9ee052f52c49efab5810b0d812df96e92a2507a8bad593188f8a21b187155d62a1101f5f7c88b3318d362ff63e5f93f7f93609ddfd60f37a60ee749aff428ef1a8c12264d5bcdd3168cd3142281f85fb695773128d391ed2583e25db73fb2005e97e98865dbcd8ea4c5685b395e63c1cf66ded9c558800b1f705e87722e8ca0814b05803f5eb4c481df6bf94f4dbaec34ec8da01f058ddfa862e18913e0cd8768ca9a6e5f6815ec48d1b71a6856fe4eef12eb91f5b7b4a8702d0b80654b63c4d8a7717d26664a5787b8c566782e447f69084bb390da9cba1fb5cec2aed649711d3b3665d1a6b9c6625322cebb220e32aa8b8a5db0ba2c0aeddb0025547166bd9353a08cb65614544bd88bacfc002d146b08defa888ca775d1646b59e2e63786385c90dfb3487a66803ac68d65e82c36ddef4239da182dbb802db2256d79acd08d0e453c4cd8ca674ea632b0a4d75511c2a6582b4799c1a25939122a7561ba138bad13e6b3c25806f80f760faa224849a9a6360112777d51a2a8c6424e490b5c0eaf5f1d4cdc025bf86a8dd49348f56a168302b3bb361fd905b05aed1e442a28912c85f1fe6964f9f928d3b70cbe6c098427fcaadad63569a5d29238605edd5c02d259a49d70e558274eefa4e0c695e91457d5c75a6bada0208529101f9d91381b403c183d824223a1e7e6fa6b31988716c623c8954bcae93394501624864fada606bcbdf1601b8afcbe01ccc5c6749ea87bc51addd9298936a3f2804173d4e8aee325aad95b1995d565aa5a27b4bd66df7d08e3b5faf0afb5fa8c57bd7e527ec95980ec96de8913db085bb5337e6173d21891f15597852223bd8622dfabbc63906481decd463827b4b30b026e38064743957acaaa80c46905540aa63800d6cccf469ab71086e9c184727789df879f3a03f1d5f7527d0c1a52a54db0d33a7280fa0cfa95b5b968b8dc69d07da3177429418a6023ab25db3d3441d92b0a9663192bcb7d0958c675b318725ed2d7a5e7da73bc24e8e169a64b907ffa35b4e75e2de12c636d39136301d224031dfdd292321d30711a6a7c034213c09c265f905e33b9569fdcec459f962ed0b3ba01e394cc6b103287656f10da8a3572546491267455c68af00208490f149a56922ed33a10a914ea9ce76943910edb296d881f5bdda2223c64e1a3f58a209262d917348d2dee26d3269431b4e510d5004e0722535007d1700d0362b83880553163f9fc51bbea550bdab71cd4667a2102e17dd91d731f90c07e92d3ba8c52f5917211acf5298f6cf62f514dcdeaade416feb3cd7230a5567ba4266cf55327b42a63752323d217340d1d6e3a37ed4dc5b746b968fc7bbb6719ac181c7ac824012cfa591a62a004dad6a225e78a31e920a8db185388665694bf1d89092db8d33d4cba9dd3c90b84cecaeb5dc54395ce785a41ac156", + "aea6b935bd74aaf9276579e988255862eec8a859f2d451c863e98983143a12852c6ba3c7b46dd43ad162762b6a99355b96ae549227e7ae520fcf98ba2acd3c2771916a57a69a676edaf06d35f5abb473d81ea79ee97ed913cbb2c4bc27d7c492", + "a7", + "3d", + "85", + "6e", + "96", + "9e", + "f4", + "90", + "ea", + "9e", + "44", + "35", + "cb", + "da", + "e8", + "31", + "6d", + "1b", + "b5", + "4e", + "b498bd8ada8ad79e54b2e2b5a7d453f1da5369ae78ed21d59e4c75c5eb367c5b4dfd2aed159295ac7fa6a85414afc97572e52aa012660e5c6396b96dba4d602e8195a780ea30d75ca1a65e2c41adfd322739c8330924af7d77354b289dd975842dbc95d52bb73d595e2755b6239bd689b5bdc8d0fa641b7ba70eb9625a8d63abd4a51ec24718a78ebf206cc84a472ac4527347c1cfd2a78e4a26cb481c25fe84266f9bd855aa18e4468360a2a5c1554248b011ae5c0d4fcf5db5193c67ea361ac2b312571b4a038dd1d5d2680e87de68d1a84de2d0bdaa512e6b524faa8ca5e63da5412c7dda539bc332929e4c054bde36b1ab0d61901b0d82899606af6e4225174faea6928ba736a3928bd7684825174fa1a4928bae9646732ab968d1a84d62d0419a482e1abc77f13f0ad6e60bd500923387c90e3b7936b27af8e74b9aeaf253fe036b007f862cb9c792dd3e4bf05842af2715efb364cf918a0f5872df6609439e20d73e62c903b9f62b963ce4b53b36275eaedee18dba92eb775ce1f282c3a168c5d294593d69612d056c72f7087c93ed2c43c3799623319fa569f8cf72342260399214589a46102c47230b96238983374b23119ea5110acf92e472f84a956578a26028e0e98261f04dc1b00c8d60588e241896a6110ccbd10886e5488261691ac1b01c8d60588e2418de2c8d60789646303ceb9860065e2598647ea26028e0e98261f04dc1b00c8d60588e241896a6110ccbd10886e5488261691ac1b01c8d60588e2418de2c8d60789646303c4b168c85219b0f8bf33c66051f8ef9683ffeaca8654dfc04d48497c8e4f5528e97a657e98ef9045f0a150fe39cee14f35b2cabb0dd3a87a29c685359ad64f5f068903a2e9246cb827d03b419b14ed2d580759a28c6ab934c92cc11e25e4a131da4aac830a9810a123922b6b6fac9c1f41c5fb58ad3c4c8b3549c55ba88b55ef5e11cccf1e2612d0f494e938b345944cad2f618f13ae342e1c51044230104950440ca12fe6b4ad6ecaecb116e93529cd99a8202bbe7791c9a39ae2736594eb0728e139c35c3355815d692d2356719171863b57ca859ab5025b39720aeb8cb16d9355a9ff9c10755e985345e902f8a8a6ce779aae693e292e257295a74441a554e53fb496955f9c544152b97064f9f46e57d14ad9a4819808295a7aa68c99a3a475663f74910c34ec6016691854bb6a0a1a5d0b5a6412a8aea933574410e54a83a29700492fed7c56bf56ff29c17553b415d5ad27495bd557c0d676fb33c67a58c406124c7a332b24623705387a9c94ba50389dc143b498586f7136aad702de8e0611fc331c83d15f25b3d9edae271449ba1255b420db4768d965eadc69ff61675e36c651c8579ad9f98241044a0c9e437c5b1dfbcb473a0b4ab967658698797760f94eea9a55d56dae5a57b074a7b6ae91e2bdde3a5f1dcdba1a6dbf847c572857f26c2336e96d228a05d232ea8befeb679d7066ed66ca2b0ce20af7bab4c3390085bfca37b9df6ae5ab4a3ab139052afd1915d547bc7d7fa3e3af56dc6f0e6d6f7ebc25baf7a032e7cf4aa378f6fd9c8212a24ea83c72f328f16cfd8b214dc95a9", + "1f756530b9598e2f86d42fbab234a3599aede4486fbaf22ca789806ca409cfbac224bd5994f4307e67228807ad4214564da94e9883a588f32089941c3243618544eed5050dfc21f7b872309959ec7a46a302ad0165be5490156c0d293240a89ac1e23e7969ea9b8617d9e371ace6cd317c23bb3a8e8d4fea867290c4d9185debc790db157e2eea2943bdcf68d3f9c2a630499d52b4c6a18911fd7c468da8ef56d3a5931055d3201511d9dca493a39310c9931e4d118bbd52bd92f2be6e592c2401b2eaa968f910b2e6a22c3194a4fed246d7a4df0c29b6051e177f8ad1d92ffde03579fd01c0baafa3791a197fb9edfe9c827aa5dd3f6db6f368d5fdcb74bd2ad7dd67fe0a83a892a4fb439cfbc66b7f5574bfcbd338a48fcfa3e42ec2c998f153b48ebadfe6b19f7485e841e118bfd317b4c5dc707da16126cb34c5bbb7927b7f5b5f42276421878012c01e839b1bee4934af12da5085ac915d97acde73a96314852395eba9f4390c767bad2696a72ae2078170288d1da6fc828ffe00328f4a717f8c5c336d43a7ab2e9996ae0a6f5c30809f6b16efbfb00d8cca7348af950ebf7b17dd3acf74d4b3f15576bf5914cf502e9c6e230e4a52284ed9c2ed36a2a32440be24bee87535315393666ccbc2eb6ae3a8b497f32efa5d5d7495fe86616b31e86aa2ae1a57caeeb1f5d02ea01868e96319ae1d420ca21213d5086db20718d8db15e2af31ceb53eb153456955c29d962b5db097549394d67671316358159289f1eed6885fdea6c47e69e2782675ec135b28d1dfe9a5dc7e73f07030bf13bb719ea2719316b041619516064f6aa7ab100300dbaee79a0864342b96cf404b18d5fa1ba04ca8869cc8ae17d2dd8404d9da9ba3a5f4e6f53972b67a5b8e9c2bdf8264f5ebeb97b9a0c268e6af1351e5f0fa8ec0cf741b948da807b51078aa79519a54efc5fb2b14b3a11e919237dba5bb5ab27592d02f31692eeea137974af29b34ec8966d7f2fefe9e5de7d26d766cb1bf09dfa1fa6d87c407dccb25ed759f5c9af0869f7cc23befab916b30e80f7b9f828907bd91f47499812071e6bd0a1669fe0b0df1271aafde5a275feacf4c9a8797e3b55f837f45eec1ffe2ca73ec5e64d8dd2fc2a96d7be18528fbe617744ec552d951fc42417dc739aa1ff742d0a135f11b38600b93ed3c5de1a723be34f0bf2e79b2bba6477e5f4cce80ade9279f839007183e128807fc05f01339eb568ebadbb8d68d3b92edb709373f8da29bfbca208de8c78ea602c165e30e475fd281736528dd68d9fc000affb85e1ee15791cca55f8837c02ab9ec808ae47d5fcd86b3613b425ee4b46b8ba43e43bed9466e7d6b7c444675244dc7f8da18122f52a889ba78f8bfd9572af32ec42f220cc8c559ba0e5bd472ad4e0180f9fab0ad45c7de396d7a3c62202bce600c7d6dfae45f527258ef5d6d3dc49bfc7e2f76e6e66b394e44faac09553c1d7fc2a808d4a29a00937e4b512586af0dcc00175c6f4674d06cbea2e9b05ae6f12981a6da5f845b38dfa9d356b5040c21001685e23ce900eed66395cd4f45682615a2f30b98c802eea4d9b3eb49e9965e1c5c4f1791a4887e5bdd2427181b29c8759db168c029d707f69a5a2ba0c10fc0c5cb397ea4ed12a68551691577f30bb27a231c1235562930348bfc92db54a7be117a98d5dbaad271a966a0ea115aebaf80d5644bf7c49373200558a9e8ef60a6d84df04ae281c59fe39dc5567a4ac32468ba8956ab0a7d10717b0f3f14a1f790f5a9f3a8916249eb5100f5fda05d6af24bc3fedea0976d1aec8fc9770ac89e860f3a93d3dbb448629bd01f5bc32bb7217596da2863d22fca927b65b5898c3a0f9729d9772dc9b9d69d698a27a88833fdfb59e89289abecd4f8199d7514dd97d12a49bb40af1fa4dd17eb200e7d836646dd17f134a2b3760300d2ee77d17bff3fd6a4629af0342e7177c95f1aff1131e268", + "c6b3749dc7510e44ddd7c7a7c5d9c6d7b5d4fccc5c803a2464cd5d730f13fe805f4a561f45a37be7e78f35bcbfd8fb963f4537282627f5d4e9fc148fafcd5275440823d195aaa73a077ccb6a1e8238f1058f1f8df9d0555d61ae386078965f5dfebaa86e09ffeaab098b35c7db45ebef0cb57d6e80c291293479a83f9bc1ca1a965b18915f4478c6f328f1643e5f35a1e5766352ce2005c981abaa53ee04d22949e04bcb5ff2a848a9eea4361da999cdef3169b6af5aae63d6d254354245ee274945847a91acd2422abeea387ddfe677a9d34775afa155587dce9993ea5355a94f3fa6f0006d22255bbf58712251b5ed95ae05a6b352e1b262b9b2ea9e82e672e619d5350e1b9e5ad22057436a0f4f9fd0b3db911a7ecb57bf87164e787acd0b9b8fe2abaff1119dc6817267b43b381333bfc05a1418dedb34a2b6b0584fb194e68af383bde9e15d5587d61049114e7d93138f782f73db6749d866d7c92c395691592ed6cba9b2f328cfd0c4218af538c19f50ba67b509220e66e4c6c8f3c9d588f0346bc0bfa141d7236a7f883ce169f4bf3dbebafaf2423b78f48a49db174a9d11d476a1ce521ea09b722b0fd9eb33908b38ab9a4ed4f256e25aba53e342f4c38849c6c22f6a3da493177e3a56f87c0e3e0bc6bccd84132b81e21de916ac70d6a6f96a3706e60dbceeabe73fb96fb74fbde95f37ebe0a31dfbcf7fb683efd2bb17bdb0176efbbd97dbfe5db00cee5ebefff6fee5b3ab8fe132886f9f87d9dbe73fa7af5edf6e7f7afed4bb8d9fa66fff9aacfce77fbeba7d7f6b07cfe700f3367bfbb7f0d9b43787b46fe72f9f7dbbfd89fcdccedf2e9362fa9d1ddfba3fbdff3bfe6c6fbff9eecfe9fcf6d9b7f357cf9f2ec21fe7f3b790ffe6cdf7f7b7dfbd7df9a7679ef3a7d7dff65ebcfff3e6f6bbef3fbe78ff7d0f7e6fa7cf6cfbc5fbbf78b7dffd79fdd39be4e5cb3750cf9b45f1536cbb517c7bf76a6eff3be2bcfd6e73fff7bffd9cdefe08f47db001e7d3f4e5fb9f5df8b97df93c8d6f7f7c9b4d7fbcbfba5df6efa6cbbfc42f3e7a3f3d7b7f7f17f4deae5ecdafafdbd7c7944bfac5e531d393276998e6e936570dfae139698fe5425dc526eb0e384e9c0a9b6941b55731b47edbfbc16bf90d4ce7dcce2f7da757fe7c58207d00fde035fbad1f2aa7bdb36dfc1e693fd7ceca3437cb8edebecf8ac806c3c5bfe7dce12f1d8534f4910327ddb32f9c9c3cf6f105f93a612614f973ed2df7f5f383149eee7b79d26758f59f3492be362832ee8c8f359df0e1b313f6853fe57b578def469d057cdef7b44e806b7e574af968f7691f7b3a280eb03016df1c56bf7d460c8df6ebc450aa6d83f953b6a5bbbe5c85df56475b06aba4359b7a020f8a35d06dbaebdaa46d4915dda12bee6bca57579392ad030d8d34a335324147ad90ada15bc8d5b5a089bb355fd72a15bb180820ea676b7b0f8461b4b5a34d277510873972444f0552da32aa3e761ce208ff6ab8838c6c556e64a4bc164ac70e3e61e8e3d4ac1937c8f637eaa0952fe88a1dddb86c6c9e37bec2c3b0d31540a9c68b7a1bf7eebe5ade81375d1537be7c131212ab013369449e70ac4e04aafc08f21d11cd673ff40738c4ed66219e5e9a61e9da7721557e13c677cdb5986a2dfd8a6caf36d7d849fac5ae81a9257291af77d33f641375f788bf8a4bb2c657740dfbabae21ac4133d03dfb4d3e1551a6f996788cc6c21190094d31c836d9a4cae29e8731c208439cf0d4a5a4e93a021ca9f3840a9b25c989241034cc09ebf2a2bc0d26d92a934b5e9bbd7f441e9e5c9265ad9b47f888a2264fc8e31b92cfa02b9c4f2a820cbcdc39f4131857492ed1d2ebceeb128f231630901bdfbe7c055af412a5df21201999702ea2fcba8379aff2142f6c55f2cc249da7669107d71dbce9b7185f5e429dd32ddb8a2317f5cefc3b74b58bcb20c52ff8b8ee68033f56b69a336469", + "81433f5e5e9dfbb8c02262cbe2a0582fad6c019a525cf66cfbd2b36da95cf18fb59f47c74af5945209b0a308fcec60418f15bc79f4e891c0517fe527db12200de2fa74e6693a4fa22ab563c4e175a77ebda9e55104799c95ac18eef5b0ef475de2a5e002a021680dfee940ef2e3a632515d2718773bd2a21abf3976fcd616fd41b5c0d3dd3e94880fbae", + "8c", + "8d", + "7d", + "df", + "4a", + "8b", + "91", + "c5", + "e0", + "19", + "a8", + "fb", + "d8", + "d7", + "35", + "30", + "00", + "05", + "d4", + "42", + "95", + "ec62d44eb7099047ff58470521acc2a4016b6917a512751411bca426e915353e17a0a6a890d3adf13dd5b24ea3f4fed1a177f1ad7e86ce45a4c3a5f0e45292f58ddab9c4ee452d05113bfd704f25cb275a9bc0af76bceee0fc53d41056de90b472bdc251a35858717939744127e1e7dfc802cdb5638bad2755e07da1d71d1a026b968b380f451062b2af3b80464ca503c675a7272703b5e91a92f3a8c8a00783f3d5b9a17c011a6546a96d3c95018440a993809117da41ee6664cde09f4502e3e79c52bb988712bae1ddf8d1e9c224971e7f9238090612d08f43bfc8dd34cd3ea7f060a41693a9a53b6098313a83b4e55742e2af613aff3540d7ce7a9fcd8fa981c83af64998c3c300a943adcf5a669edc7da96da4c0982930f3b2e2e66fa47aa4ee7fa5f2916bb53f49f90806ae37a8833ac5e94b7aa3d15449b2b13fb21dcf76ad7561e14dbba00e569acf2f9dc125715e2ebfffeef6b5f9fae757a6ed5c0d4d7bd04800a9f71a822594fe46822575ff2b053b9f6d61e4ff24c95214062ed6e333627e03a2fbeb22cd32f07d9fa5ebb99f6b8cc7c0d35bfec151cbaf088c12f07924c6cf6f9c21335afdbf5468c4cf33ef7232df23e3efa749b0894fee69fc6b4accc1cce2825a5252e0921957f4ab733f516d369376e52d2bd2b6cf967693d8dfa8b36a28f9742d50289da6e98768151e19d2d06bbf64a0e4bb3e9ca79c9fab944df83bcdfa59394282902e92f4e492ceed9e908f9adc3cfa7f48dc70bdb0bf0000" + ], + "rawHeaders": [ + "Access-Control-Allow-Origin", + "*", + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "Access-Control-Allow-Credentials", + "true", + "Cache-Control", + "max-age=60, public, must-revalidate", + "Content-Type", + "text/html; charset=utf-8", + "Accept-Ranges", + "bytes", + "Content-Encoding", + "gzip", + "X-Cloud-Trace-Context", + "b541e02387dc88c505c059b7c6390b39", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "1666us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Vary", + "Accept-Encoding", + "Date", + "Tue, 21 Aug 2018 15:00:50 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2727", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wmey11-v6:9836,wlej65:9851,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2727,wlej65:9851,wmey11-v6:9836", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2727,wlej65:9851,/bns/wl/borg/wl/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/8,wmey11-v6:9836", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Response-Body-Transformations", + "chunked", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close", + "Transfer-Encoding", + "chunked" + ] + }, + { + "scope": "https://ampbyexample.com:443", + "method": "HEAD", + "path": "/video/story_video_dog.mp4", + "body": "", + "status": 200, + "response": "", + "rawHeaders": [ + "Date", + "Tue, 21 Aug 2018 15:00:51 GMT", + "Expires", + "Wed, 22 Aug 2018 15:00:51 GMT", + "Cache-Control", + "public, max-age=86400", + "ETag", + "\"CDPdBQ\"", + "X-Cloud-Trace-Context", + "2e27702dfaf9a36787e7003c652819a9;o=1", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "Content-Type", + "video/mp4", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1440", + "Content-Length", + "1752831", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wohg6-v6:9870,wami10:9883,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1440,wami10:9883,wohg6-v6:9870", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1440,wami10:9883,/bns/wa/borg/wa/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/3,wohg6-v6:9870", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close" + ] + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/thumbnails1.json b/amp-story/linter/tests/network/thumbnails1.json new file mode 100644 index 0000000..b06a293 --- /dev/null +++ b/amp-story/linter/tests/network/thumbnails1.json @@ -0,0 +1,388 @@ +[ + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/stories/introduction/amp_story_hello_world/preview/embed/", + "body": "", + "status": 200, + "response": [ + "1f", + "8b", + "08", + "00", + "00", + "00", + "00", + "00", + "02", + "ff", + "d5", + "7d", + "5d", + "97", + "db", + "36", + "b2", + "e0", + "bb", + "7f", + "05", + "4739d97127229ba43e5a2db9fb26763edc67ed4c2671eecc38c7c78722218936257248aa5bb2aeced9877ddcb7fb76cfbeec5f9b5fb255f8200110544b6dcf24d776bb49a0502854150a05a0003ef9439486e53623d6a25c26d78f9ee02feb1ffff5ffae1f59d6930509227c607f9e2c491958e122c80b525e75d6e5cc1e7558f69322cce3acb48262bb0aad220faf3a8bb2cc8af1f97918ad9c60996579fa8e84a593e6f3f35bd7795774ae9f9cb3522614e1ba28d3a54d12b2242ba80c30d890926f3b47603fafa06dcf79585db77144d2a3eba2d0b6eb78a6bacab84cc8f5cf404e4c0a2b5e595fbffcd1b2ade7244952eb2f699e444fce19cca39acbab6049ae3ab731b9cbd2bcec5861ba2a29717771542eae22721b87c4a62fdd65bc8a97eba55d844142aebc2ebc967190887721a2245ebdb772925c75c26095ae62c8ed588b9cccae3ae705a3ee3c5e95791aadc3324e57d8b2b7948b6f1748ebdb3ba4f5bc9278b94d8885ad9fa67142f22c094a723d4da3edcebe23d3f7716907405780a8c63693489097d6a8b08a9264c563af4b56d199e5169667add27c1924d6342d17137b997e7870d1e281251f546aff9568e97bb29de520b2c2aa8bef6679badcddc6453c8d93b8dc8e17711491d5be4ce544fa98903de0c2767f1a44c5a7c1937e12349f0007f428d4b6eb27ab9477add3d40fd49de87ac5d30a3d497dadab3eafea7e74a40d095641b22de3b038da8e5425da6c89641b107e9ea6f384d8611243a5761cd941164bb68265d7641c6bfce2150829010342723433d0efdf93fce846184bb735e87e2686619a47208ee399284a3cb8ce98eaebf10da6e087cd3f35fa38066c65c36f3dfe312768e4cf60404088e9d6fa76033813528d09b2cc23c250537654627eb588615c29acc04ae25b62650ca595ceac7241acfff159ef7262ae9e6515b43ec77a41827c652dd23bab4cad3027d09fac6dbacead599c17658dc1e958e7d0079efcc1b6ad9fc3055906c80c6b19e4efd799354b73eb7baa775f5ab62dc88f4bb204ce65579d15e56c45fbc97ce93451fe4eb8d2240c0cc95c6eac5025403ddd12d61e274c97e7f1727e5ea4210cda4eb69a7790bb5c49d13503a5ccb204c66b3a2a27d197ef0a6829aad78eaa58e72b5ac3a6ec8c2d5a0754515482e9743910a24288a7d08828ccd7cbe98bb8284536528defdfb28e0080bfeeb8e7571745801b00e485202b4b8b98327e6c795522e282845de53976be8a23419c91019f090fe433932752550798a8fe00aa1b399f67efe9ef7dd73a9172ff23283fc5733234c3ac825a83de3cc2c7daaeb0bef7ea2e2e4b925bcf823cb2a20034afee6fcc5c940c621c0284a486c57a099d75db31030357649dfd0ada8273821668da23d25c2e5090693025ab0f2d25a859fb241640c5fb3bb3022a710fb704add8c64122cf0b1a3c624af2a78cacaceff3205be82a82268ae4e5f6aa339b8ec1c0bc8d651df107fd9e3fb818f52f3d6fe8b9d4e4ebe5d2f92710661b62ecb7355e7019e3b01dfaa1ec6d41b7ce9363909dd0f5b9de9db7d5f83b51de16ead024bcd506ee23c4c88536ced6d3242e16247a5bc60a0edff546b63bb2bdfe2b6f38f6fbe3dec8b9ec5fbc3e886d9946f12c3e15593df95d82833f2330f089b9af4870f8b02ac1e2b84bec325d870b3b0ea90f1a7f20c5556770b1195c541866c12de616e73abc4de1444f3e02efd0dd0cdd23f052b813f05ef89b0bff08bc14ee14bcc3cdc5f018bc0877025ecfeb6fe0e708cc1cf214dcbebb819f637033c85370f7819afe517433c853700ffc0dfc1c839b419e827b042d1d1dc5130669189d18e83285c93bc129384c46333b0cb260aa0c115b521c5310e690e5bab0a7416ed309b884619a04e17bbbcc835591ac4374568fc0a78f544d9fa26613630d73bde9d0724e070bce2bdf1f6de0a7c9ab300d8ad2e6d906063d803560e7616619a689e2627d36a37f0ccde69304fbb0b1561abb0d5611d9d825d212ac7149714eca66e338d8344fef60626f1f309a87b9d7f3373d830ef3079b663715f7304e6fb8f10c5648e0a4d94d9cc522cdcb705d5a0c794b6907fed3e558c8ac7e05327d7694809ae56e34bfa5ae7d5994a82b9a", + "956845066566f1dc88894b8c41381be6c99b4d025d9a5b673677a796248a83abce6379b1796cf57c37db9c59a00e96c8599078be28c7567f54678945380e92c51b92d839520b33c5b3c38646a10354c2ddf4ef1bedfe55a4fb27913eecbb9bcbfb06908f257d301cfd9348f7dccb7b06ede368bf18b4d13e1c5efc1368bf18e0b87d79cfe07a14ed7dafdf46fb456f5865e1446055b265632b81a402ac3b39a261bd931ae679231f061777f41bb50cf7a2f2202e3f7dc3fc3e34cceb7f8a865d48fd416b98e7fafd8f97d969e6eba23fda60bdbf55cb4e90d9890d1b62c3dcdfac61a788ec34fbe1f52f871bdffdedb4f104999dd8b2410f5ba619105a5e2c73ccc085289c39fadf7188eb1cace1d1aab033802365b8c09508a86845425c81cad3a200eae7f14ade6866346948d97e54161774fd242c8a7f9b05cb38d95eddac90f03409cae03f5e222cc9a17d1deea8a1ff5f2c08299b7bcf6cfb46c428388be45db18be2224b82ed789aa4e1fb49164451bc9a8fdd0975a3c79ff57abd3d0504af69896bdd5df6f6f7755a921d07babc1c4d906836f918c76500be162ff69e6cefd23ce2c50a92001fd21c3ce8b9485a4f8b72d7a82e894b920709075aad975392f31728cb88b783b2ac12c992ee6adab7411ea37bced3c52bafa12441c26bc0588e9a8a3287760b3222afbf1704d3952a9dfc583488ce942a3eb82ee3c31d53da0bd7ddcb8d94f3fa555e9804456149e8046a70e005e6fe60d4821959104fd7a528850e6fcd275e7e15dc6e27e6da51ff387c4ee66493892a5df7f2d21f72a8e93a4988907db15d4ed3a416beeb5ef42ab83829dfc6825ff4356633ac1aef683815f0e8a3d7882e5bda1801db510abb29cc65e779ba5e45e3cf66512458003adbc88e66221b1463111471b16b5351907d0ab2d7ebe6bd043a0e350bf6740bbcaa2512e0dfbd9e6de1429b5c138b8098dc2d409fed220b424cbacb838c1685792dd00b6a05ac2a4b9c8b924d29b58359225c637dfc475c92668bb7e7c5edfc4b989c4c4478118d2eea3e81648b85bc743c9c72d3b6b0675c0b7d9a6eae3aaee55abd3efceb588061555c894db0bbbb3be7ae47b76ac1e6b95847e75ac4e32c60e4109bac4fb2a05c58d155e7a53f7006830bcbeb3b172fbc9e33f24696ef5c0e3d0b669023cb4de82ffccfae9f2800fbff85283f722e9fbbb776dff13f74ac599c8019fbdcef7df7dd77eccdced7094ce2c82d59a551d439c74de3dbf9f51fcfcc2cc495dfff362cecf59c2165e0f391e3f67b2fbc", + "4b", + "e7", + "62", + "e4", + "2b", + "6c", + "84", + "bf", + "f8", + "50", + "73", + "d39279488b311622ae073090a96f94a75994dead764be8af6c388636641b0388134c61f40193b3fb60c7b8d031f6b0abb6c35d5756f47e986b0ca323f98e8ffb80f973036a1d5a1237ef9fb3d96c32858187e4f560361dbaa3fee07e74e36006834f3534c62becd9361b21f9a2c1b8f365a71e2da990fc9c2c279591ebcd2e7ba69a7e05138bab43d11bb5b20aef3ffed77f76f6155bac260a1bf75d8b8af7be91f714a8852d0a8d93146c12c60f39976d68c60130e79618a4c7b217e92d3440e0f12434b3342d5ba55391c1074d5c9f1a3b17036423e72cb865d9f8424e98a6d0c79734ad518fc42b74ed76a8fa14ff2148b6c105e94992de59493c4e705d325cc449b45b0639386a764e3551c6c2fcc3190c8a193e2c489eeeda744c81b251e6b46160e7bb07115a7a6e9883cf5c56015bd37403036398e66c516b9a93e0fd384c302aeb50963c8282106a15f61ce4bce5f82a6b0d945dd3389ee51cf8b311fe791824e163e8acb70bcbb67a14d5d971582cc464a7763ac550217b16033254a8899e701f4f77b497727a069a822805c0ef937d05e8bc1228067c2cd39cc81082e7584390dbf31c2a84cefa986963379f4f83c76e17ff3ac3c15997aeb667410e206732c7f5e26e44e67a61cb558b2b6a35e11ad9d62db4568ba668f64c3364fff83fffbb23f5402affafe8fccc7a5c0f0603df718728d5dd71bac1e530048dd8371441484c6ddcef82e16db45e7fc1cd011802d9eb6874d3bbb85c540de4f2e2e2699a100a0cd372eca73054cff963e564cef0ef44566ccff17c2ae6fb8910c80e10b1cad625edc64cc838da4ed8630f07ff492d7f8fbed76ae2a1faa98469da47915bbf82d6e1fc2b7ad36dcffa3209a624a98610677000cd7896c23c7697ae4bacbdd99c6bfabf5ed9359bba3592d10e83e0839dc400a993b5b4b2f62cd8838d0ab62eea77ce6b2fdb58308ec791c5e70b13d5ec4c94c9c4a4bd4d8c3feac09da531f4e0dc46b7ae2c583cae34908ed848aa108f0982c9eea419faebf8c5447d6bc0c01475891667b65e5197691caea771684fc98798e48f9d3ef62abfeb9d4d4e2fd1ac8b3aafcb342220f4fc2ec823893c43a6591598c2b428444ba6508be3948d418d2bab45136db0b52159a449840b17072a3fa59c4ad7819262b9a3b66c0749c7d0ee13a93eae8846b0b1d089b48e8f67ec29ac7c0841abb47c2c17b48b0578c56734bdb65867ccbcb5d1fa7148aa669c84c6e8ad37587d98ee43202a73799dcdfe8deb42e360a227988e8a04bb3295a8964f4ae85946e3a94fb33a136e147d18d64478eb584cbb2662b09c2464568efb83cf15cf995b6041255594b8b299da6b13ea688bf880228d63221331b22973f91659332e1d21f1164093dc39e72923dd8934ce1a0eaf1809fc95863214e0c9858b37b5166519a4042bbaa0569d58d112b5f743f8016a4edeecd401bcc5e0cb2594460a17db5819e3e2a76d00c3c9699892194e5c54cfdee0bd34d59d4d7107d0153ea4d06c7f82ce8f5bf782b6650d66cbc3c57b5d13a8479472af2a5897e9a46ddd94f977125bc30509dfc314b6e9302abc07f46f7692ab26f9330f60ec442c79010b8461c067eee8498e1ceffb30212df154a01d24f17c355e425f4bc8445931a0ee16f6080e83d157ca34b6ad55aa53e91b7aae915fc78d18cdfa5a8608cdbfa4426c392da6bd9a79d33ae4181b73c8cc349b7074273433eec85a38fe66f761fac72d5cd569f8ba513dd3", + "b6f4ded8470d3173aba13793e62a5a63ade94013e9138978139ab8b85aab33f2da92fc5fba28791f7f782506f4f793aab01819daa3dd8ff2121f2977f181b1b557754ed14f3cff703f51696cfa03f5dca947a7782d2c32bb17ddb7d4b74d604878bc39bbd7bd323bcf2a8e639dd0f12740f169e8e16e022dc596b9dbfa225bfa9e0647ac0d8b756edc1ec485cd621144e91d5d7387f1ca02a15bf28a8e7766aae64b6ae370c9a488230209675d139404f0e517f2e0d2d31737aa32e0b2de4acb2ff0c696def585557de65fad758cdab02aeb990d024445cdc5f92a479fda5619ed0bf60082b597d0c7e630ecb5cf7eb1d541b7ada094c1d969cf82bf83a31eaef30204cb871666e4ea956a5d4b54a4067ee8cb966d9c94d7cc67096e58d1c3ccfc91fdd278cbdccd6649675015b5d940704b309126807cefd4d5ab8a0ecb84be29bc7be07591de03ce042df59a268339283304dcf360a3b86a5da9099604c0f6b5355c476c22ca603428a53a816c1db3976768400bb67562c6d456ba6577ab7b34f8717b92b5653b91905ddb28c47bd8fd96b4160a5bdc959e9be8da36d3cc957345347551acb5cd8835ebaab8c010360dc911726a4282f1b91f4898c78340ca7661b52380bbbff7b74ded216233e19e126d06305e2d481e97741b608d870c60808b673cc47da76ff39d3a70e60463a9223b60e7c84418949899b4cde55a8a59aac192767ef8c2772334a91563b53b27a97842f0a0270daea123aea13827846d9d5f27f1ee9e75fa2350c81bc566e3642c7978ab46b84bd2b033a9d2f8b023a7e17b3d1e6158d118ff9b68aff228a6cc29aaa24a2a7d61e48aa4f63da4d35b29f608bb1f8544da2d3b7178ffb8cac4962b9d8ff04dafe67669df6d6e97dea38c1faf3e06323985d6ef4d62950b8551b2798e88e8ae22ae0bd28c2986ecb1f09f7dc3fc82a01fd4558c9868e3f82bd84865e7dfec371806440ccd4861b862bf2d67be2eef8d7c190c06fbaa004e72c008ced7300874a554be326a639c1a788bd5e60435dda34197fd73fcb31a15767986a859ff81629ce49a383d58a40685e12fb2f10e1311bea437dc72e858c5c2762938890ec254d3715a39195d4c711868b06167621d9b76d27126277375f8136c271efe15659c18f4035d6912590e9b9368439b5b57af001f5357300bfb51602c2e7385d56bb3a4d4ae3077db0aca255a24eb0f065dfcf17afdaed3eb4bd2e5e1dbf7846c572c6d86435759e93a0f8900b11c0ce17508b4280219533abbadb0ecbd1262807fdb3167b8d7b1a60e8dc3cd4c55517b1d874ae9145cfaeed48f6426e1754cabd201118177151a195001555db2dbccc3459335584043565a2e6a4d1fbac320f00cc8cd41d66d84aadd2dc6a857ba414ec0242f831226b2929278fd5ed7bb64f12f3d49458ca1f27aa69305b8eb56b6378147fc8b6cdff79b61dd1aacb35ec5956af607a3264091116aa0a1e6451ad57321164b5eab6d9a2b4ce7098e1c4b0f04d525a04bc4e5d6c17d478706e277f52c2a2e87bbdb304e51a89dbe7201fd90e42884490b57e48ac4269e746ec00c5847f0abc25048ab4e002861f6c613034662404bf883a43695251e46d30bb9f7af333c6f532960b791231ad7ccd10e34189052d69a1a0c030018a84aeeb311fc758d4bb4c1281c36ca3911c15338e8b0dc8b62349b129957d4be8171598355c98913c5b47541bea5a7b9afb9dd71e88118a8285d6327c1aceec7a3d0ac996c94f148c7314442fbd7e4be7a8c768ee28ce2d9acdb4c72f87c9f97bb185c78032299a7a2a8842a2e2561daa9a9a472cc482e2df4abeae99797fa40e1cc67d5a248bf2f110ee968f5f08635479b6f7a9ea7c1b1f32f4a5265ea92b83e99341a490a8bc8d95a0d5ac339de1864a4a4863b44470da512a3a6eb83b242105bc403a7bc582765c18aa287d5e6a348abf8862dce4b85d946d4e88b60", + "699e5ed764d82f85ce348581f23d296d3a1619fde2f012ffd6cbe2175a289d6bb1e991200b4ca3430359b530fdfdf9177fb09e821da1a7c1acffb05edebcb25ec4308d2df08d9fd498c3bc643da507eb60a25180c6d1dfaccc17e788832d70c2a404f5d1ba1d3830a36ba093f0ac603000fb75ae96fbe21cef03636acf8eef8d0b603ddef71837023bd9d2321d5a70366407d1bb75c1ce40d45124a6dc3dbdcab38e4f658b25dd005794ba2ce4bdcb17d4c06e74c56a8e1210bc5f783b69391d57ee183e6778412790f5f4ad0b8f6066bacb20d691b01c418a0705fbb8bcb8e0abd0f1079c93f24d373a65e3ad7727b8543d4bd2bb2a16042cb6c2b765ba4ae901aa6ef524c7a36248ec6145575828c5c717efe36ccca2cd8b7d20d6e403b14dc2763ff8bc1e983b9de6bfd2633c7ab0085d356f770c5a73ac08ca93683fed1a4ea271c74319cba7747b6e1fa620ddf7d3a88b77579dc8aa68b6329c87c3be6d9cb34a1120eebe00fd4e245d198102166ba07e9d49a91783cf15fd76ebb013ba76003cd6b7bea10b12da8701db8e33d576fc01d08bb87123ce76f02d584771daa517491b4fe9300016d780ca96a749f1e64cd98cac146f8fd1ea5c90e2c81e92703b67217539749fb35da59dfcee5d76d6accb628dd3ac4486655d1e645c0515b7747b4914d8b51b56a0eac8722dbb4607e1b93cac88aa1755f7195820d608bef14d0a52bee9f230aaf57419c31b2f4c6f3067392cc51860c5b2f60a1c6ef3a61fd80c15dcc615d816b9bad66c4e80219f216e6634a5531f5bd168aa8be250a91264cc13d468999c1435b5da08c5d18df559eb29057c05bc07d34792086a6a8e81459cdc566ba83092d19043de02a737c05337439ffeba40ed4ec89cac22d960567666c3fba1b00a42a3e98544132d90bf3eccad9e3ea51b77e096cd813185f9945b5bc7ac34bb52460c0bdaeb815b5a3493a91dba04d9dcf58d1cd2bca28bfab8eacc74b50510a4a2028ab3271269078207b149547422fcde4e673310e3d8c67812a5785d27778a42c490a8f4b5c1d696bf2d02705f97c13998bdce92348844a35abb253527d57e50042e7a9c14dd2559adb5b1995f655aa5a27b4bd76df7d08edbc0ac0afb5f99c57bd31527ecb5980ec56de8d13db085bfd337e6173d29491c1559f495447eb0c5590c768d730c903adce9c704f78e64606dce01c5e80aae385551158c22ab8074c7001bd898e9b356e310dc38318e4ef03a09f2e6417f36be9a4ea0834b55e8b61b664e240fa1cfe95b5b8e8f8dc69d07d63177529418a6023aba5db333441dd2b0a966319abc77d0958c675b398727ed1d765e7d673ac24e8f16da74b907ff635b4e75e2de91c636db5336303d2a4039dfdf692321d70719a6a7c13421fa0a84cff30bce7726d3fa9d8bb3f2c5da1776403d72988c6307d0ecace61b3047af4a24491267455c18af00a084d0f149a769a2ec33a10ad14ea9cf76b43910ebb28edc81cdbddaa123c64e193f78a20d262d517368d2de116db259431b4e510d5084e0722535007b9700d0366b8388035396209fc51bb1a550bdeb71cd5667a211ae16ddd1d731fdea04ed2d3ba825287917a11acf53b8f6cf62fd14dcdea9de416feb3cbf4f15aacef4a5cc9eaf65f6a4ccfe48cbec4b994386b61e1fcda3e6de615bb3623cdeb58dd31c0e3c661d0492442e8b34d501586a5513f5c21bf5d054688c2bc5312c4b5789c78694dc6d9ca15e4edde681c465e2769de5a6ca113a2f25d508b66a35cdade9a557cd3f19cb4b4f2ec113734f45cd93a79e461e4f4f3ca4d05328e4591b33a66da3d68911b35f51cbadd9b2f495922239f7b57a44c6d4d7691639898f54fb2ad52273d3866f6ba85fa75dc0f604f55cf7cb9e5c9627e63db5269e3ced6974f3f4a48754f714aa79d6c68c69dba87562c4dcafa8ad78dd574a56bcee6bf554bceeeb3457bcee23d5", + "7d95ea8ad76df8b686fa75da2b242b55ff6c59a9185e5be8e4cad74015cc02b8c6ac", + "72", + "db", + "f6", + "9b", + "c0", + "42", + "02", + "ab", + "be", + "06", + "6a", + "c2", + "5c", + "73", + "85", + "99", + "7a", + "b9", + "04b3f6cb9ce620cf1490bcf6ddf52ca974e6d611b6f05656afc2f664799d54d98e6c5a27d6f62243eb936ddc9d3ee4ca69358ead56977e081f61bc3afe82b2212b3da5104fcd3d0d3f4f9f7a3a993c23f1b4f81396bc6d62d7a9e2901b03828991065f0b21c146f86a35223df7f566889ca9df6888c84a7c63280d34c6544ba339027a6344a3374940f7aa46f9bc493da5329e9af7b406f1f4694f6f0ecf487a2a153c79dbc4ae3784436e0c0826461afa75132ab9f4d56a2ab9f4f5665472e9371a52c9a5af5152c9c5544ba339955c8c68f42671e8304d14170ddebbf81f036bf3856a00c599c3648f9f3c1b393dfcf3394bf5c529ffa133843f173cb9c793fd014fe8f3845e4f293ee0c97d4f293ee4c90397275c8804b5f6114f1eaab55ff2e40b51bbe70ae2d5ea3dd1a84bb57ecf972e2f381c8a562c6d95d59316d632c02677ef816fb29d671838cf7314e6f33403ff798e41043c4791024f330882e71864c17314718866192422b20c4211598a5c0e5fa9b28c8e140c033c5e301cbe29189e61100ccf5104c3d30c82e13906c1f01c45303ccd20189e63100ccf5104239a65108cc832084664dd279861bf124c323f52300cf078c170f8a660788641303c47110c4f330886e71804c37314c1f0348360788e41303c47118c6896413022cb201891a50ac6c190cd87c579de67051f8ef9de7efc4951ab9af811a8292f91c9eba51a2fcdaed21d8b09be122a1ec539db2916b7585661bb750e433931a6f25ae9eae1bd41eab8484a9605ffe46533629da6eb01eb2c518e57a799345920c4bd94263a48d59161520315240a447c6df5a383e905be6a15a7895164e938ab74196bbdea233898e3c5c3461ed29c261759b28c94a7ed31e2752684228a2188410208aa088096a5fc3794acd95d97a3dca6a504b30d052576cff338b2735c4f6cb29c62151ca7386b861bb06aaca5a56bce722e70c61af950b356a34a652f455c71972fb21bb43e0bc2f7bad24b69a2a0581495d92ef274cda7c515c5af528ce8a834aa9ca6f6d3d2baf2cb893a56210d913e25e51d21ab26520ea06115a93a5abaa62e90d5d8031ac4b053718059e4e1922d68582974ad59908aa6fa740d5d920313aa490a0281a2ff75f15afd9b3c1745f54e509756345d676f155f23d8db2c2f58a922d01829f0e88cacd148dc34616af252eb403237e54e52a111fd84592b5c0b3a78d8c7f22c7a4f85fa568fa7ae7c1cd1e568e9965003ad5ba36557ab89a7bdc3dc38571b47615e1b24360d049168b2c54d71fcb728ed1d28edeba53d5eda13a5fd03a57b7a699f97f645e9de81d27dbd748f97ee89d278eeed50d35dfca363b9c43f13e919374b5914d0ae1117545f7fdbbc6b03376b3624aa33e8ebde29d30c24c217ffd85ea7bbab16edd8ea04a4d46b747417d5dd89b5be0f5e7d9b31bcf9f5fdbaf0d6abde800b1ffad55b5f6cd9a8212a34ea43c42f728f16cfd8f214dc95a91f4d6530b9594e2c86d42fa6b22ca3599aefe4286fa6f23ca789806ea449cfa6c234bd5994f6307167228807ad0289aaa65427ccc152c47998102d87ce507821997b75410b7fe83dae024c6516bf9ed1aa406b40952f1564055b43ca0c90aae6b0b84f5edae6a6e1", + "45f6781cab79738cd8c8ae8e63e393bea11c26713646d7fa31e476a59fb37aca50ef33ba6cbeb0296c5aa712ad716862c43e9f51231af8d574e92844d5344847443737d9e4e82844eaa4c750c4e1af4caf94bc2f5a160b6980ac7e2a5a3d846cb8284b0e25a9bfb4d1b5d937438a6d81c7c59f6274f6cb20fc99be7e0760dd9fc93c25d62f37dd9f5250afb4fba7cd764e56dd5fa6eb55b9ee3e0b5618449524ddefe23cb07e0e5645f79b3c8d23f6f89c24b7042763d60f644dba5fe7719074a5e841e918bf3790b4c5de087d616126cb34c5bbb792bb605b5f42276521878012c01e839b1bed6934af16da5085acd15d97acde73a96314a52395eba9f2390c7e7bad2196a72a1284a174288d1fa6fc4c8cfe003227a5bc3f46af9976a1d355974c2b5785372e18c08f39cbf75fb81646e579b4d72a87dffb67dd3acff6f4b3f155f6a05914cf502ebc6e230e4a512841d9c2ef36a2a31440b124bee8750d315393666ccba2df35c651192fe75d0cbaa6e82af30dc3ce62d835445d35ae94dd63eba15d4031d032c032423ba418442d26aa11dae40e31b0b72bc55f639c6b7d62a78ad2aa843b2d57a6602fa52625adede262ceb02a2413e3dd9d91b8bc4d8bfd32c4f14cead827be5062bed34bbbfde6e0e160712776e33c45e3262d6083c62a230c9ed44e57110600b65dcf3591c86856ac9e815630eaf53740b9502d35915f2f64ba0909b28d37472be9cdeb73d46cfdb61c3557bd05c919d4d72f0b41456416ac1359e5f0fa8e30c84c1b948da807bdd0987e41da667a2fdf5fa1990dfd8894bad9aedcd592ad93847d89c970710fbbb95491dfa4614f0cbb96777777fc3a976eb363cbfd4dfa0ed56f3b243ee05e2e65affbe8d29437e2e413de795f8d5cc3e1e0a2f7319844d01b4d4f9719081267deab7091e6bfb2107faaf1faad75eaa5fedca4f5f172bcf66bf02fe93df89f5df63db7472cb7fb593475dd7e7426cbbef9059d63b1547614bf5050df718eea27bc1074686dfc060ed8c2643b4f57f8e988cf2dfcaf4b9fdcaedda7bfcf2627c0d6f4d3cf41a8038c1809e403fe12f8919cf52b47dd6f5ceb261cc9f6db849b9f4631cd7d559046f463c75081e4b2098763a0e8c0a932546eb46c7e00457c5c2f27f855247b1914f20db05a2e3fa0a278df97b38bd9453b4251e4b86b8b943e43bfd9466f7d6b7c444677246dcffac2baa05ea4541373f1f07f7ba055d63f93bf8830a41767993a6c51cbb53a0500e6ebfdb6161d7f17b499f1c881ac3883b1ccb599937f4de961bd37b5f5906ff2fbbdd899eb2fd43811e5b3264cf14cfc894811ea450d01268396a25a0c5f1b98052eb8d98c98a0f97cc5d0618dcc13530243b5bf4ab770bed1a7ad7a091842008c44f23ce900eed66395cd4f45182615b2f30b98e802eea4d9b3eb49e9965d1c5c4f179124c2bead6ed3138c8d14e4bac95834e0b4eb037b4dad95d0e007e0e2e51c3fd2760ed342523ac5edfc8caede488744ad550a0ccd48500a9bead537425f64f5b6aa725caa19a87a0fadf557c06ab2957be2e9399002ac14f91b98297e13bc967860f1e7fecee26a3da561120cddc4a855853988b8bd871f8ad07bc8fad469d428b1a4f52880fa7ed02e35f965607f6fd8cb360df6c7f43b05744f23009dc9d96d5a34b14de88f9d8b4bbf21759eda2863b32fcad27b658d899cba3e2e53f2ef5ad273ad3bdb964f505167faf7b3d0a51257d9a9f13336eb28ba2fc92a49bb406f10a6dd17eb308e028b6592ee8b784ad8acdd0280b4fb0d7917fcfb9a56cc129ec625ee2e054bebdf09278e653c4bd7794c7220eaae3e3e2dcf36bea8a51664f602d421a16bee867b98f007fc52bafa281bdddb207f6ce0fdd93e708229ba41313da9a74fe7a7787c6d96ea2342446457aa9eea1cf02dab7908e2c4173c7e341643577585b9e680e1597e7df9ebacba25fc8f7f9cf0", + "5873bc5db4fece50dbe706181c9d42d387fab319bcace5f885458282e019cf7b89a7f3f9aa092db71bd372162d480f5c559d722791ce48025f5afd9247454a7527b5ed29cd6c7e8fc9b07dd5721db391a6aa113af220492a22f48b64b51632f155c7e907aeb84b9d3dea7b0dadc21a08ce1c559fae4a03f631850768132dd9fac58a2389aa6daf722d309b954a9715ab9555f7143497334fa8ae71d8f0d89216bd1ad27878fa889edd8ed40a5abefa7de1e084a7d7bcb0f95e7cf5353eb2d338d4ee8cf6872762161758cb02c37b9b46cc1616eb2996325c717eb0373dbcab9ad05a3229d2a96f7ae211ef656efb2c09dfec3a9a25f75564978bf572aaed3caa33347988e23d4ef227b4ee596d82c88319bd31f274720d223cce1a886f68b0f588da1fa24f781afdaf8f2f2f3f3f330e1ebd62d2f685526f04b59de9b39407e8a6daca43f6fa04e432ceaaa623b5bc95b896eed4b810fd30629ab1088a5a0fd9e4459c8e953e9f83cf92316f33e1d44aa07847a6052b9cb519beda8d8179c37ef7c7e73ff8afb74ffbd3bf6cd6e107370e9effe486dfa4b72f7a512fda0e7a2fb783db7019debe7cf7f5ddcb67971fa26518df3c8fb2d7cf7f4a7ffcf966fbc3f3a7fd9bf869fafa2fc92a78fee7cb9b77376ef87c0e30afb3d77f8d9e4d7b7348fb7afef2d9d7db1fe8cfcdfcf53229a6dfb8f18dffc3bbbfe1cff6e6cb6ffe9cce6f9e7d3dfff1f9d345f4fd7cfe1af25fbdfaf6eee69bd72ffff4aceffde9e7af7b2fdefd7973f3cdb71f5ebcfbb607bfb7d367aefbe2dd2ffd9b6ffebcfee155f2f2e52ba8e7d5a2f821767d12dfdcfe3877ff27e2bcf96673f7b7bffe94de7c0ff4bd7701e7d3f4e5bb9f7cf8b979f93c8d6fbe7f9d4dbfbfbbbc590e6ea7cb5fe2171ffa3f3c7b77771bf65eaf7e9c5f5db5af8f6997f4cbcb63765f9da4615adfb4b96ab10fcf297b2c67fa2a365d77c071e258d8cc086abc8aa1f5dbde0f5ecb6f603ae5767ee53bbdeae7c342e503e807afd96ffd5039eb9d6de3f7c8f8b9765ea6b95976efedfbbc886a307cfc7bca1dfeca5148cb1c3970d43dfbd2c9c9fb3ebea05e27cc85a27eaebde5be7e7190a26ffa5e9ef21956f3278d94af0dca8c3be1634d477cf8ec887de18ff9de55e3bb5127019ff63dad23e09adf95d23eda7ddcc79e0e8a032c8c233687f56f9f514363fc3a31946adb60fe986de96ea05611b4d5d196c12b69cd669ec083620d4c9beea636195b524577988a0786f2d5d5a474ebc04023cb688d4c30512b651be896724d2d68e26ecd37b54ac72e0702c8fad9dade0361186ded68d34913c4618edca3a712296d19551fbb1fe21efed5700719d9aadcc848752d948d1d62c230c0a959336e90ef6fd4412b9fb1153bb671d9d83c6f7c858763672b804a8d67f536eeed5db5bc036fa62aae03f5262424d60066b3883ce9589d0c54f911f43b2286cf7e980f70c8dbcd523cbd32c332b5ef4ca9fc3a8a6f9b6b31d55afa25dd5e6daeb1d3f4b35d03534be4a258ef667fe8a71eca34df5abb47224d5e97b5d4156fcbb0e46d75c4a2b7d5e95a7cdddbaad6b2bb165bc7b6ea056328f23562b59ea11658df2ed3773196ad1119927ea6f7bf5b9d09a773ff486b01f559ad2fa4863025b3e816dda44a956ef4b2b8f83494bf8a9bddaeca459c47c51b09a7f099c06fab4ad18727e77449ebfa113ea298e91376976b9acfa13ff217a0ac458617424741026331cda59a7dd5f9b9c4238c050cfed6d72f7f04cd035124a9f597344fa20e05cce8547541f2ab0e42fc98a778d5ab966727e93cb58b3cbceae01dc1c5f8fc1c6a9e6ef9261ebde27716dca2935e9c87297efbc7f7471bf871b2d59c234b0b741af0daeb3cc0a59983d870339236ec6d94cefdb7a294f32e53d1157f5f0739390d192bd3409500038b30c84ec45615a308af1f3d7a24c9265805c91634bfb0a8e3d599", + "a7e93c21556ac78aa3ab4efd7a5d4bb608f3382b7931ec77fceb55e77825b9046849fa887f3a605b8ace584b8574dc5f5daf4ac8eafcf2b57dd11bf58697177ddbeb2880fbae8a8d7f5dcb889147005ad8d7d0d21860000aa8852af9b5ac9d6e1320277f5f93821256613280b5b4", + "8b", + "51", + "89", + "da", + "8e", + "08", + "a8", + "96", + "ff4c3b84a4e9d6e31f992d3c831e8010d3adf52d9368a7816effe8d0bbfc563f437fa7e212627972ae085f96d613cd46a102e00308e2fa5103841e96843188e45665873a380d96552560df1fb24e51db5afbd91f3a385c752e7c574e6543d355c7f3474a3a5094ae213d2745065d1efc3c999e734e90ca0dbd41c7b656440bcb352cbc6b49bc60623d2933bb7eb588c1e41556b0aaf5c179729e1d43909c8772b916fdf9d13142f43f4a88f4ce667a9a00fd0e99df699a1d2d2cf001e46466dd8e520c5a3faac7db109d465d470e4a1d4d16fbd8cc6135a475e8f539cbacaff64466f7183066eaea4573fea9f2ac3edb6d476499fe2b3b675f673c2305b7b7013fbdcc15577bfe7b745fe635299dd73735886d85ca545274789ff2552749efd05b475466be808ca0e2ab8eebf40b45299fc2c862dd05c97b8b8046ff416ae5c2ffa7aa0fe3f169bad3e495d01e8917f4fedb262f8ed52f56c75baf6500180c8d1ad4f73f4281cced60c73e3eba216d23d9bfae212dca79623b7affc2767c4a859fa6e97bb28aee692e3aade71c947e5447102f085fa57cb6dd6992c1cb5d3fd25a44736bfa30994db19ed0ef8a5c3ffaffbaae9ed393bc0000" + ], + "rawHeaders": [ + "Access-Control-Allow-Headers", + "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token", + "Access-Control-Allow-Credentials", + "true", + "Cache-Control", + "max-age=60, public, must-revalidate", + "Content-Type", + "text/html; charset=utf-8", + "Accept-Ranges", + "bytes", + "Access-Control-Allow-Origin", + "*", + "Access-Control-Allow-Methods", + "POST, GET, OPTIONS", + "Content-Encoding", + "gzip", + "X-Cloud-Trace-Context", + "a7e2c3a652c5b3f633b79fc270566f9a", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "X-Google-AppEngine-Clone-Time", + "1223us", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Vary", + "Accept-Encoding", + "Date", + "Tue, 21 Aug 2018 14:02:09 GMT", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2256", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wqvv62-v6:9816,wsxa12:9896,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2256,wsxa12:9896,wqvv62-v6:9816", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2256,wsxa12:9896,/bns/ws/borg/ws/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/8,wqvv62-v6:9816", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Response-Body-Transformations", + "chunked", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close", + "Transfer-Encoding", + "chunked" + ] + }, + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/favicons/coast-228x228.png", + "body": "", + "status": 200, + "response": "89504e470d0a1a0a0000000d49484452000000e4000000e408060000008857888d00000002494441547801ec1a7ed200002a2749444154edc107609d65bdf8f1efef79dff79c9c9c244ddaa67ba4745346297b5c509657bd8a8a80e3820882a828a0829b8ba2208a820a88c8105982c2c58120a20857f6286577efa669da264dcec959effbfcfe41c07fc58e8c33d2e6f97c44bbe1bc49e93da11fb41baaa2d6a2d6126572e4376da26bc55aed5cb042524f2c209f5b47a1731d61214fb411a20d96a82d0ff9089b29f026090c120f30f5314c9d873f12bcb84790a823563d86f8a891c4a734121f594fd5d0066a9a9af0eb6bf07c1f0445fe816d50b64e70facdc7d99c5042aa8a2d14b0f990ecba75bae9c5055258dd416ac57c36bdb890d4536bb11d5d68551aa14a8862880dc0332082006a1522055550fe85162c1ae6b0993cb440618941794d1b44cb508dc0cfa19245221f096bf077899168aaa361e601d4ec3395daa9e3343e6c84c41beb31818f781e22c21b04a7a47c9c92d16ed9f51ba5b0ba9d0dcf3fa5a9b9ab25b5fc653a9f5b4bb8b1433020852a410c28a020528564aa40799d00a1e5354a0f28102944a08588cd891a28241049800046089785742e6fa3f36ff788fa0530799128813fd1a77ed799d4ed3d8bba599318327b0fe20d7578f11888e094868f533caa84992c1d0b96d1f6c413da7cfba39259b78c70b505b142c1071550109b0005846ecabf118a4ff8ff148894d729af914200128040b84859bfe465d6dff702a090b024c63650b7f72c461c7120c3deb63f55c31a1063708ac7c7e933558542a8b94d1db2ee81475971dddd6c7afa598406c48f0b790b05400d88e175ca3f09038bf03a0554c102a1e11f321e994d29328b9fa2e5574f62cd06fc9ae18c3df1ed3ae603ef969aa913f1ab1318cf03119cbef1717a45558932393a5e5e48eb834fe89a5bff4cd7b2a5185b0f6230f946b08044fc93b0e313c00219cb6b8c0ec586cacaab1e941557fe1e89fb8c38e600c61df71e86cc9e497c78032282d33b3e4e8fd842486afe62d6dcf3306b7fff8076bddc2c1255095630857a10ba59fe41d8f90950502828a2d55010d6dd3e97965f3f868905341ebd37238e398451471e863fa41611c1d93e1f679b0aa934cdbf7f80653fbe5dd38b5b853c503022b68ad72908839b0056210f421ccdc1badfce65dd3d4ff1caf09fd078f401347dfc0486ec3903e37b385be7e3fc1b1b8674bcba9845dfbf5ed7fdfe611119025915acf03ac5d906050a40c1275a096b6f7992e69b1f26181963ca973ea1e38e7fb7f8c96a4404e75ff938ffa0aa84a934ebfefa982efaf675a417ae11a15a245b0b6271fa216b118d11ae165efdfccfe5d5affc98b127bc4bc79ff23ea9df63868a3182f30f3e839d2ab9f5edacfad53d2cbde60e0aabd242c147a22ac082e014830091422490af66f52f1e92d5b7dccfd077ec21d33e7f2a43f6dc1513040c763e83952a999656965e790bab6eba8fa8cd4241403d40714a488182421863e3ef5fe5f1fbcfa166f7b13af9bc931979c4a1e2c502062b9f4146ad25b761130bbf7f2d2b6fb80729c421a780e09499022110faa49e6c91791fbd88f8c49fb0eb255fa0f1b003f0e201838dcf20a1aae437b4b3e29a5fe9c24b6e13916a241703146700b040c623b728c3b3c77f8deaddc6b0e715e753bffb74c4f3182c7c06817c678ae6bbef67c105d711aecf8b14aa402dce00142a12569199d7c6e3477c8a6147cf61e685675333790222c2cece6727a6d6d2faf7a779f19cef6b6e719b9037a082b3030815c2381bfef0127f7ff064461f7b28b3be7b2e416d0d3b339f9d90764b2f5b252f7cf13bb4ff7511e48ca006670714029b029a6f7d9c96df1ec38c8b3fa7e33ef46e8cef493776363e3b99289763c9cf7fc5c2afde80108782c1d90964159bf378e9cc1fc9f2ebee64f6cf2ea076ea24c4083b139f9d844691b63f3f5f5e38eb424dcf5b2f5288018ab3135190bc4ffa99161e39e454269d7b1c933f7db20635d5c24ec2672710a633bae0c22b65c58df7a21d9e60", + "rawHeaders": [ + "Access-Control-Allow-Origin", + "*", + "Date", + "Tue, 21 Aug 2018 14:02:09 GMT", + "Expires", + "Thu, 20 Sep 2018 14:02:09 GMT", + "Cache-Control", + "public, max-age=2592000", + "ETag", + "\"CDPdBQ\"", + "X-Cloud-Trace-Context", + "a7e2c3a652c5b3f633b79fc270566f9a", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "Content-Type", + "image/png", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Transfer-Encoding", + "chunked", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1365", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wacn65-v6:9879,wsxa12:9896,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1365,wsxa12:9896,wacn65-v6:9879", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/1365,wsxa12:9896,/bns/ws/borg/ws/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/8,wacn65-v6:9879", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close" + ], + "responseIsBinary": true + }, + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/img/story_dog2_portrait.jpg", + "body": "", + "status": 200, + "response": "ffd8ffe000104a46494600010100000100010000ffdb004300030202020202030202020303030304060404040404080606050609080a0a090809090a0c0f0c0a0b0e0b09090d110d0e0f101011100a0c12131210130f101010ffdb00430103030304030408040408100b090b1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010ffc000110803c002d003011100021101031101ffc4001d000001040301010000000000000000000005020304060001070809ffc40049100002010303020501060404050302020b01020300041105122131410613225161710714324281912352a1d11562b1c1082433e1f016437253f1253482a2b209176392183544d2ffc4001b01000301010101010000000000000000000001020304050607ffc4002c110101000202030002020300020301000300010211031204213113410551142261329115427106335281ffda000c03010002110311003f00f66360fd6beda47816a3bae579e6ae6d150e7b70dce07d2b79932b10e6b60003deb4951622bc6a1482a7357b468d227183da9a7451529c29247d296d5a6ceeec691e9a652471419c8d73fa5380a11024a91c54ec244002b004702a2ffd58c5ac881857367eab6c45a0606b0cfe3a314e89580eb586574d244b8d7238ac76b90e8cf5c54866ce72dce6a760ccb10e542d69d8ae21b756bc119e2ba30c98658ab3ab21855805ceeaf47873f6e7e49151b95cc8c4afd2bbf1c9c594f68e54fe95a4a8d1bdb9621b34ea4891027539c7b512968d956381c629a7449c8600d3d8d35eac91c51b041ce78cd56c10dc0aa040524f141569b21bbe284b6411eac500de3d5cf7a0ad29509e06050a8ded007d6851396c91c815655b3923d3d68491cfeb53037ca8e719a61a2dde82a52293922a498428c83d6811a2189c83c50af45163d3029d2d9d8db6a9a8a67564c63209a46507663d314aa8bc327229249e719f7aa3849407a91cd3da58ab8e30702a81b29ce454ed2d15ef8aa386d90a2e106493de82ead0460deaaa9475682e1b3ef44a75adac380a07cd328cc0c03de8a47113299f7a9a09cec3f4a41a6cf5342a46c292c41e98a0eb36a91e9a115a6caf2483f1deaa53699491f26986881d05082245c632280c079ddb7142ab5ea6624f348466cc9e052809039e6a8528274c919a13316dd5800e0d02fa6fcb7239514b62d24232f39a362536dee475a61a2a7079ebd3e2804b67d3ebfad054a0a719c67079a55366db5651b8734cdb072769141100618e071409e9b71950452691a2002323ad4a6b40943b5875ef424b00e727ad58294f200c6280d818ddea3cd01a0c02f1407642c36f06be6e4d3e8e9a693b1ab8834e734e52b0d3c6ad5a4a8b11ae21041c569b4e91842036dc67e6aa52ea7361519fdc52d8d12d006624f41ed4b6344bc7c616aa52627a48cd00f052003ef53683d1a12785e9516ad2e00c39e6b1e4fad31a2b68f9c64f358727c6f8d17858328ae5cdd12a6460fef58ae53ea9c54ec98571d38a4097e39c556f476a0cf18208f6ad31c9141351b11221aece3ceedcd9e0acdce8e32491d2bbf0cf6e5b805cd669193c735d78e4c6c4075dac73c9ad19650d32a15f48033d69c498c6091ed544c1b73b88e69e926dfbd1a04e09e314cb64b270453d8db413068945248c7d6a924b0620ae280d1553cf3e9a0ab7821ba7eb41b441cf4e283db401fad044b75a05a463d81a70b6c61b86ec1e3b550d944003247e94114738e9d6a0ad62aa163ce684edbce14e140141ec955c9cfb76a5b3d95fa533391b10c09fdaa6c51f0eac707148f65ff97b53d1347a114add2a34d182011d694a9695885e462ae0254e0e2a52c61f14f670903bf34e556da68f824531b361307d5c505912cbcd54a51a0bb792294a4c0efb781541bc6eebd7148e4622fa704d499c183c6cfeb414615cf1d283d1b650083424a0b8396fa7fdeaa50432e0fa79146d0d141dfa51b0d000f07b52d9d6caec195a4212b91ce3ad076925467915512c046738a954bb39b410", + "rawHeaders": [ + "Access-Control-Allow-Origin", + "*", + "Date", + "Tue, 21 Aug 2018 14:02:10 GMT", + "Expires", + "Wed, 22 Aug 2018 14:02:10 GMT", + "Cache-Control", + "public, max-age=86400", + "ETag", + "\"CDPdBQ\"", + "X-Cloud-Trace-Context", + "bea93652912faddd916e4418f25ff50c", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "Content-Type", + "image/jpeg", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Transfer-Encoding", + "chunked", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/251", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wscm12-v6:9814,wsqz14:9813,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/251,wsqz14:9813,wscm12-v6:9814", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/251,wsqz14:9813,/bns/ws/borg/ws/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/6,wscm12-v6:9814", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close" + ], + "responseIsBinary": true + }, + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/img/story_dog2_square.jpg", + "body": "", + "status": 200, + "response": "ffd8ffe000104a46494600010100000100010000ffdb004300030202020202030202020303030304060404040404080606050609080a0a090809090a0c0f0c0a0b0e0b09090d110d0e0f101011100a0c12131210130f101010ffdb00430103030304030408040408100b090b1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010ffc000110802d002d003011100021101031101ffc4001d000001050101010100000000000000000005010203040607000809ffc40046100002010303020502040405030303000b01020300041105122106311322415161077114328191234252a11562b1c1d10833e124437216f0f1348292a2530917254473b2ffc4001b01000301010101010000000000000000000001020304050607ffc4002b11010100020300020202020202020300000001021103122104311341055114223261a1e115810671b1ffda000c03010002110311003f00fb2d97f9876afb59e3c1b55a545719c62b59933a1b736b9181daba665a6362a496e46085e2af7b45c5049012a4fad5ed151a2f03028da52292a30ea73495a3cb019c8ef4b624d18dc7228dad22ae7d28fb0f046e71df39a366b7002cc01383ebf3595f5728cd9a856e2b9f3ba6b8c15840c573e6e8c5722c11c8ac6dd2e2da2f1cd636ed7224f0d0919153da99a610c70063da977a5a433400839038ad7ba6e2117768ad9dc993f35d3c79d73e58eeb37a95940158b2007b83eb5e8f167b73e7c7232d7510321507815db327259a40546704722ae5db3d184649007da9ef41134792091cd12a746be0f1ea69ed3a370338a653120da338a1461c6718aad968c619e4d31a331cf34159a2e70d8a09e3c9e7b5011e3cc40a0fb69e550170739a0a428079f7a1650e318039ab2af6760e3b509301f5a99360aad81fed468b4438cd1a1a2ae01fb76a4452a48cfb50210919ed42a449b971dffb53a12c4fc12de951425520e3348ca590f028b4e4d3c15777985495bb376af22ae7824d9bb71d853b96c9e0320291cd3089a3f3734b69234633f155b126cc236aee9383da8da6fa4520b70299cf1e51e7607b114d54d50173961cfa50529402307d0d153a3d14853ed4b63455383cf14a5d0d1acd9ed46d523c46e3b7d8668daabc5091e6a368a42a84f39e2a95b35d01f363b5045c11426dda265c6083eb9a04ba28450ddf2283b744f2eef20c62812ede2bcd2d968cdb93fa6298d1427634224d9cd85c1c6050afa7881dc1a05f080e461978a04f4c64072076a01a46724e72b40297c63ca79a0526d0707b64e295ba453d17924f714cedd948dd8f3722959b230772a4d3395e75daa07ef53a5c78161f94d1b459a795b39ed93488ab8c920706aa780f5dbc29fd4517d0f28e194af19cd30f27957bd2b361d98b7193debe723e8d1332edaa8941262b495162bcb113803b0ad2648b14e7b7da0e01ad2547557488838c73ed4e52d2430a9fcd9e7b1a466b42dbb0bcd2d82347b57919a60f880ce3de984a10673ef53684b1a61863f7a8b56bf6ee41cfb561c9f6d71a2f6d26ec1cf1587246f8d158b18e315cb9ba22d45ed58ed7132ae4734ad4971520c78d49c9ab3aa17299078e6b6c72677166f57b2322e71dabb78f9355c99c64ee74d9779f29e6bd0c3936e4b82a3d9bafe61c5746396d9dc55bc301891c55dbb676239632c32c739ed8a2121efdc7354563de1876073c50946c0026806151df3540c7538fb554a1e5420f6a252a698c1e4d34bcd80bc500c31b0208a0a9cb8078c50643dc0f5a1529a14649c6334f64f118346c8c3c1f4a2079c9f4c62a814a1f7e3de849eb84071501e2aecc79a13b7b6a80727247c50ad9bc93db8a01f9c0c03de968f6950ab3007b7bd234c1141f2d254a79c118c7346926e06dfb50a8460e304512ed2f284c66aa03000ddea5246418aa94e1a5377e61eb9a6a35970738a01817278a7295846efc28aa284009e09e296c8f5914263da8d035816e47b668b049b782975c9152a481067208ce31de82dec9b703de81a31813853d", + "rawHeaders": [ + "Access-Control-Allow-Origin", + "*", + "Date", + "Tue, 21 Aug 2018 14:02:10 GMT", + "Expires", + "Wed, 22 Aug 2018 14:02:10 GMT", + "Cache-Control", + "public, max-age=86400", + "ETag", + "\"CDPdBQ\"", + "X-Cloud-Trace-Context", + "bea93652912faddd916e4418f25ff50c", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "Content-Type", + "image/jpeg", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Transfer-Encoding", + "chunked", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2632", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wmgx66-v6:9822,wakl1:9813,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2632,wakl1:9813,wmgx66-v6:9822", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2632,wakl1:9813,/bns/wa/borg/wa/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/8,wmgx66-v6:9822", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close" + ], + "responseIsBinary": true + }, + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/img/story_dog2_landscape.jpg", + "body": "", + "status": 200, + "response": "ffd8ffe000104a46494600010100000100010000ffdb004300030202020202030202020303030304060404040404080606050609080a0a090809090a0c0f0c0a0b0e0b09090d110d0e0f101011100a0c12131210130f101010ffdb00430103030304030408040408100b090b1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010ffc0001108021d02d003011100021101031101ffc4001d000000070101010000000000000000000001020304050607000809ffc40047100002010303020502040404050400020b01020300041105122106311322415161077114324281235291a115b1c1d108336272e1162443f0820953f134922544546373a2b2ffc4001b01000301010101010000000000000000000001020304050607ffc4002b1101010002020300020300020202030100000102110321041231415105131422613291427115238133ffda000c03010002110311003f00f4d076ce73cfb57e99a7c76c68e43b8026968ce45c6d185078acee0d264552edfb9a9f457b1dc37448e715170132395b9dfc03d8545c1a41838ef9acfd4c7565c819cf14bd4e511dca8269c84289b9ef45807dcaca4668d2b6e0a09c5054bc79522b3b7a5ca7f0c8b9c9f30ae7ce34952113a918ac77b692ece15cfbd45c5a0c188fde91edcd273c50364de4e319a08491fcb9cd3d123ae1c73926b7e3659557f539581c715dfc6e2e4c90572dbf818cfcd76c73e46a631923f4fb9ada54c24c8a064532c89100e45544c14ae4e7d7fb533b40dc9c1a085231c77a13a170bde822453072dc8a22742e055100c67be78340176819f8a00307824d587648e295a1c8770ec2a43811fcddbe284932486dc2ac3b0e173ede9401f6e5013ebdf14014a7f28cd0052d9193e9eb4264108f514282a117393cd590582e054da03c6df9a47edb087078206682d6dc460e4d4994563da8053b8e7fb55000ef4287c7afa5400646307d7da8037e51459b160030ec68934914f271e940144670403fd6803787ea0d00464c2953de80e54ce335600e99efda804da325b1938a145146c1ef407162d9c8ed40195bdaa40c5f3838ed540565f434009553c5424578ca914013041a000827b5003b5501ee6ac0bb7d01a940157b8269dab2a114a81919a8b9077869fd29900c7c67fb500464cfed4f66ed84f3c7da8da6c718b39ff4a36340d8318209068d939d1719f6aa2a408f367906848c08c76c9f9a15004e38f7a0c254e00c0ca7f7a0a8cbc28271cd020197be283773b40c73405a73c66b9f4ed70627b11c7ad4d8605970bc9a4363a48f9efc52ab94ba4d80001fdea6e2a87315d103351eaaf63813e4739acee2d252a2703d697a1ee07c5dfc734a44ec01b922958365a26e0026958a94e1783c56376b85a319acc4398c30351976bd9dc52918c56571d36876926e1595e972c2aa78ce6a754c0ee3d3d68326c0939a345b26ed818c5524c2e4e4e6b6e3eaa328af6a31bb961cf7aefe3b34e2e48859ade404b127ed5d92c73e529bcac40c2d5c4106c9fb5683210023bf3551303b79ed4c0aea0fed426d0146ec050a26405272284e9c10b0cf1f6a2109b09f4aa4e80c0fc0f9a08475f29618e698267da9da976d2e3cbde90176f38191480cb08f31272280031eec62ac38e71b7d4d0018206c147d4ec5c363bd1a1ba07e460e28550718a13d836aeee7d6aa939c2fbd4e804ee238140d69c1083bd7fa507b194e4f3418e064641ed401b8fca3fad1b31c602f352b77ae3d2820f078a402096c0a20732f1c8a28b043b8738a1231f7f6fef40d00301efcd356856e4d05a0aef5ee33488247af706800d841ce050a01463e618c5002bb4645302138e029a491c70338abda9c339e4d4d0332863f6a400ddb39cd00523d684b9970b9f7a00bb7dbfbd301da41071da920042e3cc39a5142a71fb55c9004ab91c66a520cb7bfed4019772f38cd0704c1f4ef42a04646726801240e1684e84a69a2ed04671cd56c9c1171db9a0e0a63c1e71418c57ca41a362c176640f6a04836180c77a0076e7b8340", + "rawHeaders": [ + "Access-Control-Allow-Origin", + "*", + "Date", + "Tue, 21 Aug 2018 14:02:10 GMT", + "Expires", + "Wed, 22 Aug 2018 14:02:10 GMT", + "Cache-Control", + "public, max-age=86400", + "ETag", + "\"CDPdBQ\"", + "X-Cloud-Trace-Context", + "bea93652912faddd916e4418f25ff50c", + "X-Google-AppEngine-Module", + "default", + "X-Google-AppEngine-Version", + "1", + "X-Google-AppEngine-AppId", + "s~amp-by-example", + "X-Google-AppEngine-Frontend-Response-Code", + "1", + "X-Google-AppEngine-AppServer-Error-Code", + "1", + "Content-Type", + "image/jpeg", + "X-Google-GFE-Cloud-Project-Number", + "641018061714", + "Transfer-Encoding", + "chunked", + "Server", + "Google Frontend", + "X-Google-Netmon-Label", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2914", + "X-Google-Cookie-Filter-Tenant-Name", + "641018061714", + "X-Google-GFE-Request-Trace", + "wmdq192-v6:9849,wogf66:9835,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2914,wogf66:9835,wmdq192-v6:9849", + "X-Google-GSLB-Service", + "apphosting-frontend-l2", + "X-Google-Backends", + "/bns/ir/borg/ir/bns/apphosting/prod-appengine.appserver/102,/bns/ir/borg/ir/bns/apphosting/prod-appengine.frontend/2914,wogf66:9835,/bns/wo/borg/wo/bns/cloud-gfe-prod-dedicated/cloud-layer2-gfe/29,wmdq192-v6:9849", + "X-Google-DOS-Service-Trace", + "cloud-l7:apphosting-frontend-l2-zone-ir,main:apphosting", + "X-Google-Service", + "apphosting-frontend-l2,apphosting-dasher", + "X-Google-GFE-Response-Code-Details-Trace", + "response_code_set_by_backend,response_code_set_by_backend", + "X-Google-GFE-Service-Trace", + "apphosting-frontend-l2,shared-layer2-gfe-dasher,apphosting-dasher", + "Connection", + "close" + ], + "responseIsBinary": true + } +] \ No newline at end of file diff --git a/amp-story/linter/tests/network/thumbnails2.json b/amp-story/linter/tests/network/thumbnails2.json new file mode 100644 index 0000000..0c73769 --- /dev/null +++ b/amp-story/linter/tests/network/thumbnails2.json @@ -0,0 +1,117 @@ +[ + { + "scope": "https://regular-biology.glitch.me:443", + "method": "GET", + "path": "/", + "body": "", + "status": 200, + "response": "\n\n\n \n \n \n \n \n Stories in AMP - Hello World\n \n \n \n\n \n \n \n \n \n AMP Story Hello World (Preview) - AMP by Example\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n

Hello World

\n

This is an AMP Story.

\n
\n
\n\n \n\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n

\n Best walk ever!\n

\n
\n
\n\n \n\n \n \n \n \n \n \n \n \n \n \n\n \n\n \n \n\n
\n\n \n \n\n", + "rawHeaders": [ + "Date", + "Wed, 22 Aug 2018 23:30:32 GMT", + "Content-Type", + "text/html; charset=utf-8", + "Content-Length", + "48199", + "Connection", + "close", + "X-Powered-By", + "Express", + "vary", + "Origin", + "last-modified", + "Wed, 22 Aug 2018 13:17:44 GMT", + "cache-control", + "max-age=0", + "etag", + "W/\"bc47-16561c8a54d\"" + ] + }, + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/img/story_dog2_portrait.jpg", + "body": "", + "status": 200, + "response": "ffd8ffe000104a46494600010100000100010000ffdb004300030202020202030202020303030304060404040404080606050609080a0a090809090a0c0f0c0a0b0e0b09090d110d0e0f101011100a0c12131210130f101010ffdb00430103030304030408040408100b090b1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010ffc000110803c002d003011100021101031101ffc4001d000001040301010000000000000000000005020304060001070809ffc40049100002010303020501060404050302020b01020300041105122131410613225161710714324281912352a1d11562b1c1082433e1f016437253f1253482a2b209176392183544d2ffc4001b01000301010101010000000000000000000001020304050607ffc4002c110101000202030002020300020301000300010211031204213113410551142261329115427106335281ffda000c03010002110311003f00f66360fd6beda47816a3bae579e6ae6d150e7b70dce07d2b79932b10e6b60003deb4951622bc6a1482a7357b468d227183da9a7451529c29247d296d5a6ceeec691e9a652471419c8d73fa5380a11024a91c54ec244002b004702a2ffd58c5ac881857367eab6c45a0606b0cfe3a314e89580eb586574d244b8d7238ac76b90e8cf5c54866ce72dce6a760ccb10e542d69d8ae21b756bc119e2ba30c98658ab3ab21855805ceeaf47873f6e7e49151b95cc8c4afd2bbf1c9c594f68e54fe95a4a8d1bdb9621b34ea4891027539c7b512968d956381c629a7449c8600d3d8d35eac91c51b041ce78cd56c10dc0aa040524f141569b21bbe284b6411eac500de3d5cf7a0ad29509e06050a8ded007d6851396c91c815655b3923d3d68491cfeb53037ca8e719a61a2dde82a52293922a498428c83d6811a2189c83c50af45163d3029d2d9d8db6a9a8a67564c63209a46507663d314aa8bc327229249e719f7aa3849407a91cd3da58ab8e30702a81b29ce454ed2d15ef8aa386d90a2e106493de82ead0460deaaa9475682e1b3ef44a75adac380a07cd328cc0c03de8a47113299f7a9a09cec3f4a41a6cf5342a46c292c41e98a0eb36a91e9a115a6caf2483f1deaa53699491f26986881d05082245c632280c079ddb7142ab5ea6624f348466cc9e052809039e6a8528274c919a13316dd5800e0d02fa6fcb7239514b62d24232f39a362536dee475a61a2a7079ebd3e2804b67d3ebfad054a0a719c67079a55366db5651b8734cdb072769141100618e071409e9b71950452691a2002323ad4a6b40943b5875ef424b00e727ad58294f200c6280d818ddea3cd01a0c02f1407642c36f06be6e4d3e8e9a693b1ab8834e734e52b0d3c6ad5a4a8b11ae21041c569b4e91842036dc67e6aa52ea7361519fdc52d8d12d006624f41ed4b6344bc7c616aa52627a48cd00f052003ef53683d1a12785e9516ad2e00c39e6b1e4fad31a2b68f9c64f358727c6f8d1", + "rawHeaders": [ + "Access-Control-Allow-Origin", + "*", + "Date", + "Wed, 22 Aug 2018 23:30:33 GMT", + "Expires", + "Thu, 23 Aug 2018 23:30:33 GMT", + "Cache-Control", + "public, max-age=86400", + "ETag", + "\"CDPdBQ\"", + "X-Cloud-Trace-Context", + "120966936773076b789b6430c13f50cf;o=1", + "Content-Type", + "image/jpeg", + "Server", + "Google Frontend", + "Connection", + "close" + ], + "responseIsBinary": true + }, + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/img/story_dog2_square.jpg", + "body": "", + "status": 200, + "response": "ffd8ffe000104a46494600010100000100010000ffdb004300030202020202030202020303030304060404040404080606050609080a0a090809090a0c0f0c0a0b0e0b09090d110d0e0f101011100a0c12131210130f101010ffdb00430103030304030408040408100b090b1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010ffc000110802d002d003011100021101031101ffc4001d000001050101010100000000000000000005010203040607000809ffc40046100002010303020502040405030303000b01020300041105122106311322415161077114328191234252a11562b1c1d10833e124437216f0f1348292a2530917254473b2ffc4001b01000301010101010000000000000000000001020304050607ffc4002b11010100020300020202020202020300000001021103122104311341055114223261a1e115810671b1ffda000c03010002110311003f00fb2d97f9876afb59e3c1b55a545719c62b59933a1b736b9181daba665a6362a496e46085e2af7b45c5049012a4fad5ed151a2f03028da52292a30ea73495a3cb019c8ef4b624d18dc7228dad22ae7d28fb0f046e71df39a366b7002cc01383ebf3595f5728cd9a856e2b9f3ba6b8c15840c573e6e8c5722c11c8ac6dd2e2da2f1cd636ed7224f0d0919153da99a610c70063da977a5a433400839038ad7ba6e2117768ad9dc993f35d3c79d73e58eeb37a95940158b2007b83eb5e8f167b73e7c7232d7510321507815db327259a40546704722ae5db3d184649007da9ef41134792091cd12a746be0f1ea69ed3a370338a653120da338a1461c6718aad968c619e4d31a331cf34159a2e70d8a09e3c9e7b5011e3cc40a0fb69e550170739a0a428079f7a1650e318039ab2af6760e3b509301f5a99360aad81fed468b4438cd1a1a2ae01fb76a4452a48cfb50210919ed42a449b971dffb53a12c4fc12de951425520e3348ca590f028b4e4d3c15777985495bb376af22ae7824d9bb71d853b96c9e0320291cd3089a3f3734b69234633f155b126cc236aee9383da8da6fa4520b70299cf1e51e7607b114d54d50173961cfa50529402307d0d153a3d14853ed4b63455383cf14a5d0d1acd9ed46d523c46e3b7d8668daabc5091e6a368a42a84f39e2a95b35d01f363b5045c11426dda265c6083eb9a04ba28450ddf2283b744f2eef20c62812ede2bcd2d968cdb93fa6298d1427634224d9cd85c1c6050afa7881dc1a05f080e461978a04f4c64072076a01a46724e72b40297c63ca79a0526d0707b64e295ba453d17924f714cedd948dd8f3722959b230772a4d3395e75daa07ef53a5c78161f94d1b459a795b39ed93488ab8c920706aa780f5dbc29fd4517d0f28e194af19cd30f27957bd2b361d98b7193debe723e8d1332edaa8941262b495162bcb113803b0ad2648b14e7b7da0e01ad2547557488838c73ed4e52d2430a9fcd9e7b1a466b42dbb0bcd2d82347b579", + "rawHeaders": [ + "Access-Control-Allow-Origin", + "*", + "Date", + "Wed, 22 Aug 2018 23:30:33 GMT", + "Expires", + "Thu, 23 Aug 2018 23:30:33 GMT", + "Cache-Control", + "public, max-age=86400", + "ETag", + "\"CDPdBQ\"", + "X-Cloud-Trace-Context", + "4d0f7c7e20cf386106fbfb0a1df3386f", + "Content-Type", + "image/jpeg", + "Server", + "Google Frontend", + "Connection", + "close" + ], + "responseIsBinary": true + }, + { + "scope": "https://ampbyexample.com:443", + "method": "GET", + "path": "/img/story_dog2_landscape.jpg", + "body": "", + "status": 200, + "response": "ffd8ffe000104a46494600010100000100010000ffdb004300030202020202030202020303030304060404040404080606050609080a0a090809090a0c0f0c0a0b0e0b09090d110d0e0f101011100a0c12131210130f101010ffdb00430103030304030408040408100b090b1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010ffc0001108021d02d003011100021101031101ffc4001d000000070101010000000000000000000001020304050607000809ffc40047100002010303020502040404050400020b01020300041105122106311322415161077114324281235291a115b1c1d108336272e1162443f0820953f134922544546373a2b2ffc4001b01000301010101010000000000000000000001020304050607ffc4002b1101010002020300020300020202030100000102110321041231415105131422613291427115238133ffda000c03010002110311003f00f4d076ce73cfb57e99a7c76c68e43b8026968ce45c6d185078acee0d264552edfb9a9f457b1dc37448e715170132395b9dfc03d8545c1a41838ef9acfd4c7565c819cf14bd4e511dca8269c84289b9ef45807dcaca4668d2b6e0a09c5054bc79522b3b7a5ca7f0c8b9c9f30ae7ce34952113a918ac77b692ece15cfbd45c5a0c188fde91edcd273c50364de4e319a08491fcb9cd3d123ae1c73926b7e3659557f539581c715dfc6e2e4c90572dbf818cfcd76c73e46a631923f4fb9ada54c24c8a064532c89100e45544c14ae4e7d7fb533b40dc9c1a085231c77a13a170bde822453072dc8a22742e055100c67be78340176819f8a00307824d587648e295a1c8770ec2a43811fcddbe284932486dc2ac3b0e173ede9401f6e5013ebdf14014a7f28cd0052d9193e9eb4264108f514282a117393cd590582e054da03c6df9a47edb087078206682d6dc460e4d4994563da8053b8e7fb55000ef4287c7afa5400646307d7da8037e51459b160030ec68934914f271e940144670403fd6803787ea0d00464c2953de80e54ce335600e99efda804da325b1938a145146c1ef407162d9c8ed40195bdaa40c5f3838ed540565f434009553c5424578ca914013041a000827b5003b5501ee6ac0bb7d01a940157b8269dab2a114a81919a8b9077869fd29900c7c67fb500464cfed4f66ed84f3c7da8da6c718b39ff4a36340d8318209068d939d1719f6aa2a408f367906848c08c76c9f9a15004e38f7a0c254e00c0ca7f7a0a8cbc28271cd020197be283773b40c73405a73c66b9f4ed70627b11c7ad4d8605970bc9a4363a48f9efc52ab94ba4d80001fdea6e2a87315d103351eaaf63813e4739acee2d252a2703d697a1ee07c5dfc734a44ec01b922958365a26e0026958a94e1783c56376b85a319acc4398c30351976bd9dc52918c56571d36876926e1595e972c2aa78ce6a754c0ee3d3d68326c0939a345b26ed818c5524c2e4e4e6b6e3eaa328af6a31bb961cf7aefe3b", + "rawHeaders": [ + "Access-Control-Allow-Origin", + "*", + "Date", + "Wed, 22 Aug 2018 23:30:34 GMT", + "Expires", + "Thu, 23 Aug 2018 23:30:34 GMT", + "Cache-Control", + "public, max-age=86400", + "ETag", + "\"CDPdBQ\"", + "X-Cloud-Trace-Context", + "4d0f7c7e20cf386106fbfb0a1df3386f", + "Content-Type", + "image/jpeg", + "Server", + "Google Frontend", + "Connection", + "close" + ], + "responseIsBinary": true + } +] \ No newline at end of file diff --git a/amp-story/linter/tsconfig.json b/amp-story/linter/tsconfig.json new file mode 100644 index 0000000..fc38ca9 --- /dev/null +++ b/amp-story/linter/tsconfig.json @@ -0,0 +1,14 @@ +{ + // https://www.typescriptlang.org/docs/handbook/compiler-options.html + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "noImplicitAny": true, + "strictNullChecks": true, + "sourceMap": false, + "moduleResolution": "node" + }, + "exclude": [ + "node_modules" + ] +} diff --git a/amp-story/linter/tslint.json b/amp-story/linter/tslint.json new file mode 100644 index 0000000..657c111 --- /dev/null +++ b/amp-story/linter/tslint.json @@ -0,0 +1,13 @@ +// http://palantir.github.io/tslint/rules/ +{ + "extends": "tslint:recommended", + "rules": { + // "object-literal-sort-keys": false + "no-console": false, + "interface-name": false, + "no-reference": false, + "arrow-parens": false, + "trailing-comma": false, + "callable-types": false + } +} diff --git a/ampbench_handlers.js b/ampbench_handlers.js index dbe71fa..cd067cd 100644 --- a/ampbench_handlers.js +++ b/ampbench_handlers.js @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +// @ts-check 'use strict'; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -19,6 +20,7 @@ const benchlib = require('./ampbench_lib.js'); const sdlib = require('./ampbench_lib_sd.js'); +const linter = require('amp-story-linter'); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // app version @@ -408,6 +410,17 @@ function validate(route, user_agent, user_agent_name, req, res, on_validate_call const sniffer_contains_byte_order_mark_css = sniffer.containsByteOrderMark ? CHECK_WARN_CSS : CHECK_PASS_CSS; + const testContext = { + headers: { + "user-agent": user_agent + }, + url: url_to_validate, + $: http_response.$ + }; + + const testAmpStory = linter.testAmpStory(testContext); + const testThumbnails = linter.testThumbnails(testContext); + __ret = { user_agent: benchlib.get_global_user_agent(), user_agent_name: benchlib.get_global_user_agent_name(), @@ -474,6 +487,9 @@ function validate(route, user_agent, user_agent_name, req, res, on_validate_call check_robots_txt_return: check_robots_txt_return, check_google_amp_cache_status_css: check_google_amp_cache_status_css, check_google_amp_cache_return: check_google_amp_cache_return, + variant_is_amp_story: testAmpStory.then(res => res.status !== "FAIL"), + amp_story_thumbnails: testThumbnails, + amp_story_thumbnails_status: testThumbnails.then(res => get_check_status_css(res.status)), // check_redirects_return: check_redirects_return, http_redirect_status: get_check_status_css(http_redirect_status), http_redirect_route: http_redirect_route, @@ -482,7 +498,12 @@ function validate(route, user_agent, user_agent_name, req, res, on_validate_call amp_results: amp_val_warnings.amp_val_results_short }; - on_validate_callback(__ret); // DONE!!! + // The values of __ret can be promises. Use Promise.all() to resolve these in parallel. + const keys = Object.keys(__ret); + const kvPromises = keys.map(k => Promise.resolve(__ret[k]).then(v => [k, v])); + Promise.all(kvPromises) + .then(kvs => (kvs.reduce((a, kv) => (a[kv[0]] = kv[1], a), {}))) + .then(ret => on_validate_callback(ret)) // DONE!!! } // console.log(`### [DANGLING!][http_response.statusIsOK: ${http_response.statusIsOK()}]`); diff --git a/ampbench_lib.js b/ampbench_lib.js index 1261a40..44df24a 100644 --- a/ampbench_lib.js +++ b/ampbench_lib.js @@ -12,6 +12,7 @@ // limitations under the License. 'use strict'; +// @ts-check // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // imports @@ -73,6 +74,8 @@ class HttpResponse { this.is_https_cert_authorized = null; this.is_https_cert_certificate = null; this._is_https_cert_ssl_error = ''; + /** @type {CheerioStatic} */ + this._$ = null; if (url) { this._url = url; if (check_url_is_valid(this._url)) { @@ -149,6 +152,16 @@ class HttpResponse { get http_response_body() { return this._http_response_body; } + get $() { + if (!this._$) { + if (this.http_response_body) { + this._$ = cheerio.load(this.http_response_body); + } else { + this._$ = cheerio.load(""); + } + } + return this._$; + } set http_response_body(body) { if (body) { this._http_response_body = body; diff --git a/package-lock.json b/package-lock.json index 44f2c27..c9f1c2a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,14 +13,19 @@ "samsam": "1.3.0" } }, + "@types/node": { + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.9.4.tgz", + "integrity": "sha512-fCHV45gS+m3hH17zgkgADUSi2RR1Vht6wOZ0jyHP8rjiQra9f+mIcgwPQHllmDocYOstIEbKlxbFDYlgrTPYqw==" + }, "JSONStream": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", "dev": true, "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" + "jsonparse": "1.3.1", + "through": "2.3.8" } }, "abbrev": { @@ -33,7 +38,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "~2.1.18", + "mime-types": "2.1.19", "negotiator": "0.6.1" } }, @@ -49,7 +54,7 @@ "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", "dev": true, "requires": { - "acorn": "^5.0.0" + "acorn": "5.7.1" }, "dependencies": { "acorn": { @@ -66,9 +71,9 @@ "integrity": "sha512-krFKvw/d1F17AN3XZbybIUzEY4YEPNiGo05AfP3dBlfVKrMHETKpgjpuZkSF8qDNt9UkQcqj7am8yJLseklCMg==", "dev": true, "requires": { - "acorn": "^5.7.1", - "acorn-dynamic-import": "^3.0.0", - "xtend": "^4.0.1" + "acorn": "5.7.1", + "acorn-dynamic-import": "3.0.0", + "xtend": "4.0.1" }, "dependencies": { "acorn": { @@ -90,10 +95,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, "align-text": { @@ -101,9 +106,9 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" } }, "amdefine": { @@ -111,13 +116,69 @@ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" }, + "amp-story-linter": { + "version": "file:amp-story/linter", + "requires": { + "amphtml-validator": "1.0.23", + "cheerio": "1.0.0-rc.2", + "debug": "4.0.1", + "node-fetch": "2.2.0", + "probe-image-size": "4.0.0", + "throat": "4.1.0" + }, + "dependencies": { + "cheerio": { + "version": "1.0.0-rc.2", + "bundled": true, + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash": "4.17.4", + "parse5": "3.0.3" + } + }, + "debug": { + "version": "4.0.1", + "bundled": true, + "requires": { + "ms": "2.1.1" + } + }, + "entities": { + "version": "1.1.1", + "bundled": true + }, + "htmlparser2": { + "version": "3.9.2", + "bundled": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.3.0", + "domutils": "1.5.1", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true + }, + "node-fetch": { + "version": "2.2.0", + "bundled": true + } + } + }, "amp-toolbox-cache-url": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/amp-toolbox-cache-url/-/amp-toolbox-cache-url-0.1.0.tgz", "integrity": "sha512-fT7pXZDx15dAVgZB6jP1WHltR+SMOPpoaG/qhOuuUPH8lFTFivQ2+owyLYKAfwkui6Ia3lYqKeTH7UB0VQXZzg==", "requires": { - "mime-types": "^2.1.18", - "punycode": "^2.1.0" + "mime-types": "2.1.19", + "punycode": "2.1.1" } }, "amphtml-validator": { @@ -145,7 +206,7 @@ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "requires": { - "string-width": "^2.0.0" + "string-width": "2.1.1" } }, "ansi-regex": { @@ -158,14 +219,19 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + }, "anymatch": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" + "micromatch": "2.3.11", + "normalize-path": "2.1.1" } }, "arr-diff": { @@ -174,7 +240,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "^1.0.1" + "arr-flatten": "1.1.0" } }, "arr-flatten": { @@ -238,7 +304,7 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { - "safer-buffer": "~2.1.0" + "safer-buffer": "2.1.2" } }, "asn1.js": { @@ -247,9 +313,9 @@ "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", "dev": true, "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" }, "dependencies": { "inherits": { @@ -291,7 +357,7 @@ "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", "dev": true, "requires": { - "acorn": "^4.0.3" + "acorn": "4.0.13" } }, "async": { @@ -329,9 +395,9 @@ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" } }, "babel-core": { @@ -339,25 +405,25 @@ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" } }, "babel-generator": { @@ -365,14 +431,14 @@ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" } }, "babel-helpers": { @@ -380,8 +446,8 @@ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-loader": { @@ -390,9 +456,9 @@ "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==", "dev": true, "requires": { - "find-cache-dir": "^1.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1" + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" }, "dependencies": { "minimist": { @@ -417,7 +483,7 @@ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-preset-es2015": { @@ -426,30 +492,30 @@ "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.24.1", - "babel-plugin-transform-es2015-classes": "^6.24.1", - "babel-plugin-transform-es2015-computed-properties": "^6.24.1", - "babel-plugin-transform-es2015-destructuring": "^6.22.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", - "babel-plugin-transform-es2015-for-of": "^6.22.0", - "babel-plugin-transform-es2015-function-name": "^6.24.1", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-umd": "^6.24.1", - "babel-plugin-transform-es2015-object-super": "^6.24.1", - "babel-plugin-transform-es2015-parameters": "^6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", - "babel-plugin-transform-regenerator": "^6.24.1" + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0" }, "dependencies": { "ansi-regex": { @@ -470,9 +536,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" } }, "babel-helper-call-delegate": { @@ -481,10 +547,10 @@ "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "dev": true, "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-define-map": { @@ -493,10 +559,10 @@ "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" } }, "babel-helper-function-name": { @@ -505,11 +571,11 @@ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-get-function-arity": { @@ -518,8 +584,8 @@ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-hoist-variables": { @@ -528,8 +594,8 @@ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-optimise-call-expression": { @@ -538,8 +604,8 @@ "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-regex": { @@ -548,9 +614,9 @@ "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" } }, "babel-helper-replace-supers": { @@ -559,12 +625,12 @@ "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", "dev": true, "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-messages": { @@ -573,7 +639,7 @@ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-check-es2015-constants": { @@ -582,7 +648,7 @@ "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-arrow-functions": { @@ -591,7 +657,7 @@ "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-block-scoped-functions": { @@ -600,7 +666,7 @@ "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-block-scoping": { @@ -609,11 +675,11 @@ "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" } }, "babel-plugin-transform-es2015-classes": { @@ -622,15 +688,15 @@ "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "dev": true, "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-computed-properties": { @@ -639,8 +705,8 @@ "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-es2015-destructuring": { @@ -649,7 +715,7 @@ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-duplicate-keys": { @@ -658,8 +724,8 @@ "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-for-of": { @@ -668,7 +734,7 @@ "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-function-name": { @@ -677,9 +743,9 @@ "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-literals": { @@ -688,7 +754,7 @@ "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-modules-amd": { @@ -697,9 +763,9 @@ "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-es2015-modules-commonjs": { @@ -708,10 +774,10 @@ "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", "dev": true, "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-modules-systemjs": { @@ -720,9 +786,9 @@ "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", "dev": true, "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-es2015-modules-umd": { @@ -731,9 +797,9 @@ "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-plugin-transform-es2015-object-super": { @@ -742,8 +808,8 @@ "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", "dev": true, "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-parameters": { @@ -752,12 +818,12 @@ "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", "dev": true, "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-shorthand-properties": { @@ -766,8 +832,8 @@ "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-spread": { @@ -776,7 +842,7 @@ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-sticky-regex": { @@ -785,9 +851,9 @@ "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "dev": true, "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-template-literals": { @@ -796,7 +862,7 @@ "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-typeof-symbol": { @@ -805,7 +871,7 @@ "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-unicode-regex": { @@ -814,9 +880,9 @@ "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "dev": true, "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" } }, "babel-plugin-transform-regenerator": { @@ -825,7 +891,7 @@ "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", "dev": true, "requires": { - "regenerator-transform": "^0.10.0" + "regenerator-transform": "0.10.1" } }, "babel-plugin-transform-strict-mode": { @@ -834,8 +900,8 @@ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-runtime": { @@ -844,8 +910,8 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "core-js": "2.5.0", + "regenerator-runtime": "0.11.0" } }, "babel-template": { @@ -854,11 +920,11 @@ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" } }, "babel-traverse": { @@ -867,15 +933,15 @@ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.8", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" } }, "babel-types": { @@ -884,10 +950,10 @@ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" } }, "babylon": { @@ -902,11 +968,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "core-js": { @@ -948,7 +1014,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "invariant": { @@ -957,7 +1023,7 @@ "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "dev": true, "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.3.1" } }, "js-tokens": { @@ -984,7 +1050,7 @@ "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { - "js-tokens": "^3.0.0" + "js-tokens": "3.0.2" } }, "ms": { @@ -1017,9 +1083,9 @@ "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "dev": true, "requires": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.7" } }, "regexpu-core": { @@ -1028,9 +1094,9 @@ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" + "regenerate": "1.3.2", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" } }, "regjsgen": { @@ -1045,7 +1111,7 @@ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, "requires": { - "jsesc": "~0.5.0" + "jsesc": "0.5.0" } }, "strip-ansi": { @@ -1054,7 +1120,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -1076,13 +1142,13 @@ "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.0", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.16" }, "dependencies": { "ansi-regex": { @@ -1100,9 +1166,9 @@ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" } }, "babel-core": { @@ -1110,25 +1176,25 @@ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.0", - "debug": "^2.6.8", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.7", - "slash": "^1.0.0", - "source-map": "^0.5.6" + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.0", + "debug": "2.6.8", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.7", + "slash": "1.0.0", + "source-map": "0.5.7" } }, "babel-generator": { @@ -1136,14 +1202,14 @@ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.6", - "trim-right": "^1.0.1" + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" } }, "babel-helpers": { @@ -1151,8 +1217,8 @@ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-messages": { @@ -1160,7 +1226,7 @@ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-runtime": { @@ -1168,8 +1234,8 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "core-js": "2.5.0", + "regenerator-runtime": "0.11.0" } }, "babel-template": { @@ -1177,11 +1243,11 @@ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" } }, "babel-traverse": { @@ -1189,15 +1255,15 @@ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.8", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" } }, "babel-types": { @@ -1205,10 +1271,10 @@ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" } }, "babylon": { @@ -1226,7 +1292,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -1235,11 +1301,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "concat-map": { @@ -1270,7 +1336,7 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "requires": { - "repeating": "^2.0.0" + "repeating": "2.0.1" } }, "escape-string-regexp": { @@ -1293,7 +1359,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "home-or-tmp": { @@ -1301,8 +1367,8 @@ "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, "invariant": { @@ -1310,7 +1376,7 @@ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.3.1" } }, "is-finite": { @@ -1318,7 +1384,7 @@ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "js-tokens": { @@ -1346,7 +1412,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "requires": { - "js-tokens": "^3.0.0" + "js-tokens": "3.0.2" } }, "minimatch": { @@ -1354,7 +1420,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.8" } }, "minimist": { @@ -1410,7 +1476,7 @@ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "requires": { - "is-finite": "^1.0.0" + "is-finite": "1.0.2" } }, "slash": { @@ -1428,7 +1494,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.16.tgz", "integrity": "sha512-A6vlydY7H/ljr4L2UOhDSajQdZQ6dMD7cLH0pzwcmwLyc9u8PNI4WGtnfDDzX7uzGL6c/T+ORL97Zlh+S4iOrg==", "requires": { - "source-map": "^0.5.6" + "source-map": "0.5.7" } }, "strip-ansi": { @@ -1436,7 +1502,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -1461,8 +1527,8 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" } }, "babel-template": { @@ -1470,11 +1536,11 @@ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" } }, "babel-traverse": { @@ -1482,15 +1548,15 @@ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.4", + "lodash": "4.17.4" } }, "babel-types": { @@ -1498,10 +1564,10 @@ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" } }, "babelify": { @@ -1510,8 +1576,8 @@ "integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=", "dev": true, "requires": { - "babel-core": "^6.0.14", - "object-assign": "^4.0.0" + "babel-core": "6.26.0", + "object-assign": "4.1.1" }, "dependencies": { "ansi-regex": { @@ -1532,9 +1598,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" } }, "babel-core": { @@ -1543,25 +1609,25 @@ "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "dev": true, "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.0", - "debug": "^2.6.8", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.7", - "slash": "^1.0.0", - "source-map": "^0.5.6" + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.0", + "debug": "2.6.8", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.7", + "slash": "1.0.0", + "source-map": "0.5.7" } }, "babel-generator": { @@ -1570,14 +1636,14 @@ "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", "dev": true, "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.6", - "trim-right": "^1.0.1" + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" } }, "babel-helpers": { @@ -1586,8 +1652,8 @@ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-messages": { @@ -1596,7 +1662,7 @@ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-runtime": { @@ -1605,8 +1671,8 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "core-js": "2.5.0", + "regenerator-runtime": "0.11.0" } }, "babel-template": { @@ -1615,11 +1681,11 @@ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" } }, "babel-traverse": { @@ -1628,15 +1694,15 @@ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.8", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" } }, "babel-types": { @@ -1645,10 +1711,10 @@ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" } }, "babylon": { @@ -1669,7 +1735,7 @@ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -1679,11 +1745,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "concat-map": { @@ -1719,7 +1785,7 @@ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { - "repeating": "^2.0.0" + "repeating": "2.0.1" } }, "escape-string-regexp": { @@ -1746,7 +1812,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "invariant": { @@ -1755,7 +1821,7 @@ "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "dev": true, "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.3.1" } }, "is-finite": { @@ -1764,7 +1830,7 @@ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "js-tokens": { @@ -1797,7 +1863,7 @@ "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { - "js-tokens": "^3.0.0" + "js-tokens": "3.0.2" } }, "minimatch": { @@ -1806,7 +1872,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.8" } }, "ms": { @@ -1851,7 +1917,7 @@ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { - "is-finite": "^1.0.0" + "is-finite": "1.0.2" } }, "slash": { @@ -1872,7 +1938,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -1916,13 +1982,13 @@ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" }, "dependencies": { "component-emitter": { @@ -1935,7 +2001,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "is-accessor-descriptor": { @@ -1943,7 +2009,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -1951,7 +2017,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -1959,9 +2025,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "isobject": { @@ -2000,7 +2066,7 @@ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "optional": true, "requires": { - "tweetnacl": "^0.14.3" + "tweetnacl": "0.14.5" } }, "better-assert": { @@ -2047,15 +2113,15 @@ "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", "requires": { "bytes": "3.0.0", - "content-type": "~1.0.4", + "content-type": "1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", + "depd": "1.1.2", + "http-errors": "1.6.3", "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", + "on-finished": "2.3.0", "qs": "6.5.2", "raw-body": "2.3.3", - "type-is": "~1.6.16" + "type-is": "1.6.16" }, "dependencies": { "iconv-lite": { @@ -2063,23 +2129,28 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } } } }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, "boxen": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.4.1", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" }, "dependencies": { "ansi-styles": { @@ -2087,7 +2158,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.2" } }, "camelcase": { @@ -2100,9 +2171,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" } }, "supports-color": { @@ -2110,7 +2181,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -2120,7 +2191,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -2130,9 +2201,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" } }, "brorand": { @@ -2147,12 +2218,12 @@ "integrity": "sha512-Jo+RYsn8X8OhyP9tMXXg0ueR2fW696HUu1Hf3/DeiwNean1oGiPtdgGRNuUHBpPHzBH3x4n1kzAlgOgHSIq88g==", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "combine-source-map": "~0.8.0", - "defined": "^1.0.0", - "safe-buffer": "^5.1.1", - "through2": "^2.0.0", - "umd": "^3.0.0" + "JSONStream": "1.3.2", + "combine-source-map": "0.8.0", + "defined": "1.0.0", + "safe-buffer": "5.1.1", + "through2": "2.0.3", + "umd": "3.0.1" } }, "browser-resolve": { @@ -2178,53 +2249,53 @@ "integrity": "sha512-gKfOsNQv/toWz+60nSPfYzuwSEdzvV2WdxrVPUbPD/qui44rAkB3t3muNtmmGYHqrG56FGwX9SUEQmzNLAeS7g==", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^1.11.0", - "browserify-zlib": "~0.2.0", - "buffer": "^5.0.2", - "cached-path-relative": "^1.0.0", - "concat-stream": "~1.5.1", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.0", - "domain-browser": "~1.1.0", - "duplexer2": "~0.1.2", - "events": "~1.1.0", - "glob": "^7.1.0", - "has": "^1.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.0.0", - "labeled-stream-splicer": "^2.0.0", - "module-deps": "^4.0.8", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "~0.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum": "^1.0.0", - "shell-quote": "^1.6.1", - "stream-browserify": "^2.0.0", - "stream-http": "^2.0.0", - "string_decoder": "~1.0.0", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "~0.0.0", - "url": "~0.11.0", - "util": "~0.10.1", - "vm-browserify": "~0.0.1", - "xtend": "^4.0.0" + "JSONStream": "1.3.2", + "assert": "1.4.1", + "browser-pack": "6.0.3", + "browser-resolve": "1.11.2", + "browserify-zlib": "0.2.0", + "buffer": "5.0.8", + "cached-path-relative": "1.0.1", + "concat-stream": "1.5.2", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "defined": "1.0.0", + "deps-sort": "2.0.0", + "domain-browser": "1.1.7", + "duplexer2": "0.1.4", + "events": "1.1.1", + "glob": "7.1.2", + "has": "1.0.1", + "htmlescape": "1.1.1", + "https-browserify": "1.0.0", + "inherits": "2.0.3", + "insert-module-globals": "7.0.1", + "labeled-stream-splicer": "2.0.0", + "module-deps": "4.1.1", + "os-browserify": "0.3.0", + "parents": "1.0.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "read-only-stream": "2.0.0", + "readable-stream": "2.3.3", + "resolve": "1.5.0", + "shasum": "1.0.2", + "shell-quote": "1.6.1", + "stream-browserify": "2.0.1", + "stream-http": "2.8.0", + "string_decoder": "1.0.3", + "subarg": "1.0.0", + "syntax-error": "1.3.0", + "through2": "2.0.3", + "timers-browserify": "1.4.2", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4", + "xtend": "4.0.1" }, "dependencies": { "inherits": { @@ -2247,12 +2318,12 @@ "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", "dev": true, "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" }, "dependencies": { "inherits": { @@ -2269,9 +2340,9 @@ "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", "dev": true, "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" } }, "browserify-des": { @@ -2280,9 +2351,9 @@ "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", "dev": true, "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1" + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" }, "dependencies": { "inherits": { @@ -2299,8 +2370,8 @@ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" + "bn.js": "4.11.8", + "randombytes": "2.0.6" } }, "browserify-sign": { @@ -2309,13 +2380,13 @@ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "dev": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" }, "dependencies": { "inherits": { @@ -2332,7 +2403,7 @@ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, "requires": { - "pako": "~1.0.5" + "pako": "1.0.6" } }, "buffer": { @@ -2341,8 +2412,8 @@ "integrity": "sha512-xXvjQhVNz50v2nPeoOsNqWCLGfiv4ji/gXZM28jnVwdLJxH4mFyqgqCKfaK9zf1KUbG6zTkjLOy7ou+jSMarGA==", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "base64-js": "1.2.1", + "ieee754": "1.1.8" } }, "buffer-from": { @@ -2373,15 +2444,15 @@ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" }, "dependencies": { "component-emitter": { @@ -2430,8 +2501,8 @@ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "optional": true, "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" + "align-text": "0.1.4", + "lazy-cache": "1.0.4" } }, "chai": { @@ -2440,12 +2511,12 @@ "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", "dev": true, "requires": { - "assertion-error": "^1.0.1", - "check-error": "^1.0.1", - "deep-eql": "^3.0.0", - "get-func-name": "^2.0.0", - "pathval": "^1.0.0", - "type-detect": "^4.0.0" + "assertion-error": "1.1.0", + "check-error": "1.0.2", + "deep-eql": "3.0.1", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.6" } }, "chalk": { @@ -2453,11 +2524,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "check-error": { @@ -2471,12 +2542,12 @@ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz", "integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=", "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "~3.8.1", - "jsdom": "^7.0.2", - "lodash": "^4.1.0" + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.8.3", + "jsdom": "7.2.2", + "lodash": "4.17.4" }, "dependencies": { "abab": { @@ -2496,7 +2567,7 @@ "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", "optional": true, "requires": { - "acorn": "^2.1.0" + "acorn": "2.7.0" } }, "amdefine": { @@ -2520,10 +2591,10 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", + "boolbase": "1.0.0", + "css-what": "2.1.0", "domutils": "1.5.1", - "nth-check": "~1.0.1" + "nth-check": "1.0.1" } }, "css-what": { @@ -2542,7 +2613,7 @@ "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", "optional": true, "requires": { - "cssom": "0.3.x" + "cssom": "0.3.2" } }, "deep-is": { @@ -2556,8 +2627,8 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" + "domelementtype": "1.1.3", + "entities": "1.1.1" }, "dependencies": { "domelementtype": { @@ -2577,7 +2648,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", "requires": { - "domelementtype": "1" + "domelementtype": "1.3.0" } }, "domutils": { @@ -2585,8 +2656,8 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" } }, "entities": { @@ -2600,11 +2671,11 @@ "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", "optional": true, "requires": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.2.0" + "esprima": "2.7.3", + "estraverse": "1.9.3", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.2.0" } }, "esprima": { @@ -2636,11 +2707,11 @@ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", "requires": { - "domelementtype": "1", - "domhandler": "2.3", - "domutils": "1.5", - "entities": "1.0", - "readable-stream": "1.1" + "domelementtype": "1.3.0", + "domhandler": "2.3.0", + "domutils": "1.5.1", + "entities": "1.0.0", + "readable-stream": "1.1.14" }, "dependencies": { "entities": { @@ -2666,21 +2737,21 @@ "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=", "optional": true, "requires": { - "abab": "^1.0.0", - "acorn": "^2.4.0", - "acorn-globals": "^1.0.4", - "cssom": ">= 0.3.0 < 0.4.0", - "cssstyle": ">= 0.2.29 < 0.3.0", - "escodegen": "^1.6.1", - "nwmatcher": ">= 1.3.7 < 2.0.0", - "parse5": "^1.5.1", - "request": "^2.55.0", - "sax": "^1.1.4", - "symbol-tree": ">= 3.1.0 < 4.0.0", - "tough-cookie": "^2.2.0", - "webidl-conversions": "^2.0.0", - "whatwg-url-compat": "~0.6.5", - "xml-name-validator": ">= 2.0.1 < 3.0.0" + "abab": "1.0.3", + "acorn": "2.7.0", + "acorn-globals": "1.0.9", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "escodegen": "1.8.1", + "nwmatcher": "1.4.1", + "parse5": "1.5.1", + "request": "2.88.0", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.2", + "webidl-conversions": "2.0.1", + "whatwg-url-compat": "0.6.5", + "xml-name-validator": "2.0.1" } }, "levn": { @@ -2689,8 +2760,8 @@ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "optional": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "1.1.2", + "type-check": "0.3.2" } }, "lodash": { @@ -2703,7 +2774,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", "requires": { - "boolbase": "~1.0.0" + "boolbase": "1.0.0" } }, "nwmatcher": { @@ -2718,12 +2789,12 @@ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "optional": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" } }, "parse5": { @@ -2748,10 +2819,10 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "core-util-is": "1.0.2", + "inherits": "2.0.3", "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "string_decoder": "0.10.31" } }, "sax": { @@ -2766,7 +2837,7 @@ "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", "optional": true, "requires": { - "amdefine": ">=0.0.4" + "amdefine": "1.0.1" } }, "string_decoder": { @@ -2786,7 +2857,7 @@ "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", "optional": true, "requires": { - "punycode": "^1.4.1" + "punycode": "1.4.1" } }, "tr46": { @@ -2800,7 +2871,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "requires": { - "prelude-ls": "~1.1.2" + "prelude-ls": "1.1.2" } }, "webidl-conversions": { @@ -2815,7 +2886,7 @@ "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=", "optional": true, "requires": { - "tr46": "~0.0.1" + "tr46": "0.0.3" } }, "wordwrap": { @@ -2838,15 +2909,15 @@ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" }, "dependencies": { "inherits": { @@ -2868,8 +2939,8 @@ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "2.0.3", + "safe-buffer": "5.1.1" }, "dependencies": { "inherits": { @@ -2885,10 +2956,10 @@ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" }, "dependencies": { "define-property": { @@ -2896,7 +2967,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "isobject": { @@ -2913,7 +2984,7 @@ "dev": true, "requires": { "exit": "0.1.2", - "glob": "^7.1.1" + "glob": "7.1.2" } }, "cli-boxes": { @@ -2927,8 +2998,8 @@ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "optional": true, "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", + "center-align": "0.1.3", + "right-align": "0.1.3", "wordwrap": "0.0.2" }, "dependencies": { @@ -2950,8 +3021,8 @@ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "map-visit": "1.0.0", + "object-visit": "1.0.1" } }, "color-convert": { @@ -2978,7 +3049,7 @@ "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", "dev": true, "requires": { - "lodash": "^4.5.0" + "lodash": "4.17.4" } }, "combine-source-map": { @@ -2987,10 +3058,10 @@ "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", "dev": true, "requires": { - "convert-source-map": "~1.1.0", - "inline-source-map": "~0.6.0", - "lodash.memoize": "~3.0.3", - "source-map": "~0.5.3" + "convert-source-map": "1.1.3", + "inline-source-map": "0.6.2", + "lodash.memoize": "3.0.4", + "source-map": "0.5.7" }, "dependencies": { "convert-source-map": { @@ -3006,7 +3077,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "~1.0.0" + "delayed-stream": "1.0.0" } }, "commander": { @@ -3014,7 +3085,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "requires": { - "graceful-readlink": ">= 1.0.0" + "graceful-readlink": "1.0.1" } }, "commondir": { @@ -3052,9 +3123,9 @@ "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", "dev": true, "requires": { - "inherits": "~2.0.1", - "readable-stream": "~2.0.0", - "typedarray": "~0.0.5" + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" }, "dependencies": { "inherits": { @@ -3069,12 +3140,12 @@ "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -3090,12 +3161,12 @@ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.3.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" } }, "connect": { @@ -3106,7 +3177,7 @@ "requires": { "debug": "2.6.9", "finalhandler": "1.0.6", - "parseurl": "~1.3.2", + "parseurl": "1.3.2", "utils-merge": "1.0.1" }, "dependencies": { @@ -3117,12 +3188,12 @@ "dev": true, "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" } }, "statuses": { @@ -3138,10 +3209,10 @@ "resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.9.0.tgz", "integrity": "sha1-vCcyaxIhA3FL6/oNlYurM/ZSLjo=", "requires": { - "http-errors": "~1.6.1", + "http-errors": "1.6.2", "ms": "2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.1" + "on-finished": "2.3.0", + "on-headers": "1.0.1" }, "dependencies": { "depd": { @@ -3162,7 +3233,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" + "statuses": "1.3.1" } }, "inherits": { @@ -3206,7 +3277,7 @@ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { - "date-now": "^0.1.4" + "date-now": "0.1.4" } }, "constants-browserify": { @@ -3261,8 +3332,8 @@ "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", "dev": true, "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "bn.js": "4.11.8", + "elliptic": "6.4.0" } }, "create-error-class": { @@ -3270,7 +3341,7 @@ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "requires": { - "capture-stack-trace": "^1.0.0" + "capture-stack-trace": "1.0.0" } }, "create-hash": { @@ -3279,10 +3350,10 @@ "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", "dev": true, "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "sha.js": "^2.4.0" + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" }, "dependencies": { "inherits": { @@ -3299,12 +3370,12 @@ "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", "dev": true, "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" }, "dependencies": { "inherits": { @@ -3320,9 +3391,9 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "lru-cache": "4.1.3", + "shebang-command": "1.2.0", + "which": "1.3.1" }, "dependencies": { "lru-cache": { @@ -3330,8 +3401,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "pseudomap": "1.0.2", + "yallist": "2.1.2" } } } @@ -3342,17 +3413,17 @@ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.6", + "randomfill": "1.0.3" }, "dependencies": { "inherits": { @@ -3368,6 +3439,22 @@ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" + }, "custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -3386,7 +3473,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "date-now": { @@ -3420,7 +3507,7 @@ "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { - "type-detect": "^4.0.0" + "type-detect": "4.0.6" } }, "deep-extend": { @@ -3428,13 +3515,18 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, + "deepmerge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.1.1.tgz", + "integrity": "sha512-urQxA1smbLZ2cBbXbaYObM1dJ82aJ2H57A1C/Kklfh/ZN1bgH4G/n5KWhdNfOK11W98gqZfyYj7W4frJJRwA2w==" + }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "is-descriptor": "1.0.2", + "isobject": "3.0.1" }, "dependencies": { "is-accessor-descriptor": { @@ -3442,7 +3534,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -3450,7 +3542,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -3458,9 +3550,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "isobject": { @@ -3497,10 +3589,10 @@ "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "shasum": "^1.0.0", - "subarg": "^1.0.0", - "through2": "^2.0.0" + "JSONStream": "1.3.2", + "shasum": "1.0.2", + "subarg": "1.0.0", + "through2": "2.0.3" } }, "des.js": { @@ -3509,8 +3601,8 @@ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "dev": true, "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" }, "dependencies": { "inherits": { @@ -3531,7 +3623,7 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "requires": { - "repeating": "^2.0.0" + "repeating": "2.0.1" } }, "detective": { @@ -3540,8 +3632,8 @@ "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", "dev": true, "requires": { - "acorn": "^5.2.1", - "defined": "^1.0.0" + "acorn": "5.3.0", + "defined": "1.0.0" }, "dependencies": { "acorn": { @@ -3570,9 +3662,9 @@ "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", "dev": true, "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" } }, "dom-serialize": { @@ -3581,33 +3673,30 @@ "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", "dev": true, "requires": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" + "custom-event": "1.0.1", + "ent": "2.2.0", + "extend": "3.0.1", + "void-elements": "2.0.1" } }, "dom-serializer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "dev": true, "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" + "domelementtype": "1.1.3", + "entities": "1.1.1" }, "dependencies": { "domelementtype": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", - "dev": true + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" }, "entities": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", - "dev": true + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" } } }, @@ -3620,26 +3709,23 @@ "domelementtype": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", - "dev": true + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" }, "domhandler": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", - "dev": true, "requires": { - "domelementtype": "1" + "domelementtype": "1.3.0" } }, "domutils": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" } }, "dot-prop": { @@ -3647,7 +3733,7 @@ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "requires": { - "is-obj": "^1.0.0" + "is-obj": "1.0.1" } }, "duplexer": { @@ -3661,7 +3747,7 @@ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", "dev": true, "requires": { - "readable-stream": "^2.0.2" + "readable-stream": "2.3.3" } }, "duplexer3": { @@ -3675,8 +3761,8 @@ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "optional": true, "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" } }, "ee-first": { @@ -3690,13 +3776,13 @@ "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" }, "dependencies": { "inherits": { @@ -3724,7 +3810,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "~0.4.13" + "iconv-lite": "0.4.19" } }, "engine.io": { @@ -3747,7 +3833,7 @@ "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", "dev": true, "requires": { - "mime-types": "~2.1.11", + "mime-types": "2.1.19", "negotiator": "0.6.1" } }, @@ -3869,13 +3955,13 @@ "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "requires": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", + "duplexer": "0.1.1", + "from": "0.1.7", + "map-stream": "0.1.0", "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" + "split": "0.3.3", + "stream-combiner": "0.0.4", + "through": "2.3.8" }, "dependencies": { "split": { @@ -3883,7 +3969,7 @@ "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "requires": { - "through": "2" + "through": "2.3.8" } } } @@ -3906,8 +3992,8 @@ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" } }, "execa": { @@ -3915,13 +4001,13 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" } }, "exit": { @@ -3936,9 +4022,9 @@ "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", "dev": true, "requires": { - "array-slice": "^0.2.3", - "array-unique": "^0.2.1", - "braces": "^0.1.2" + "array-slice": "0.2.3", + "array-unique": "0.2.1", + "braces": "0.1.5" }, "dependencies": { "braces": { @@ -3947,7 +4033,7 @@ "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", "dev": true, "requires": { - "expand-range": "^0.1.0" + "expand-range": "0.1.1" } }, "expand-range": { @@ -3956,8 +4042,8 @@ "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", "dev": true, "requires": { - "is-number": "^0.1.1", - "repeat-string": "^0.2.2" + "is-number": "0.1.1", + "repeat-string": "0.2.2" } }, "is-number": { @@ -3980,7 +4066,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "^0.1.0" + "is-posix-bracket": "0.1.1" } }, "expand-range": { @@ -3989,7 +4075,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "^2.1.0" + "fill-range": "2.2.3" } }, "express": { @@ -3997,36 +4083,36 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", "requires": { - "accepts": "~1.3.5", + "accepts": "1.3.5", "array-flatten": "1.1.1", "body-parser": "1.18.2", "content-disposition": "0.5.2", - "content-type": "~1.0.4", + "content-type": "1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "finalhandler": "1.1.1", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.3", + "proxy-addr": "2.0.4", "qs": "6.5.1", - "range-parser": "~1.2.0", + "range-parser": "1.2.0", "safe-buffer": "5.1.1", "send": "0.16.2", "serve-static": "1.13.2", "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", + "statuses": "1.4.0", + "type-is": "1.6.16", "utils-merge": "1.0.1", - "vary": "~1.1.2" + "vary": "1.1.2" }, "dependencies": { "body-parser": { @@ -4035,15 +4121,15 @@ "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", "requires": { "bytes": "3.0.0", - "content-type": "~1.0.4", + "content-type": "1.0.4", "debug": "2.6.9", - "depd": "~1.1.1", - "http-errors": "~1.6.2", + "depd": "1.1.2", + "http-errors": "1.6.3", "iconv-lite": "0.4.19", - "on-finished": "~2.3.0", + "on-finished": "2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", - "type-is": "~1.6.15" + "type-is": "1.6.16" } }, "encodeurl": { @@ -4085,7 +4171,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" + "statuses": "1.4.0" } }, "setprototypeof": { @@ -4113,8 +4199,8 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -4122,7 +4208,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -4133,7 +4219,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "extract-zip": { @@ -4156,10 +4242,10 @@ "dev": true, "optional": true, "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "buffer-from": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" } }, "inherits": { @@ -4217,7 +4303,7 @@ "dev": true, "optional": true, "requires": { - "pend": "~1.2.0" + "pend": "1.2.0" } }, "file-match": { @@ -4225,7 +4311,7 @@ "resolved": "https://registry.npmjs.org/file-match/-/file-match-1.0.2.tgz", "integrity": "sha1-ycrSZdLIrfOoFHWw30dYWQafrvc=", "requires": { - "utils-extend": "^1.0.6" + "utils-extend": "1.0.8" } }, "file-system": { @@ -4233,8 +4319,8 @@ "resolved": "https://registry.npmjs.org/file-system/-/file-system-2.2.2.tgz", "integrity": "sha1-fWWDPjojR9zZVqgTxncVPtPt2Yc=", "requires": { - "file-match": "^1.0.1", - "utils-extend": "^1.0.4" + "file-match": "1.0.2", + "utils-extend": "1.0.8" } }, "filename-regex": { @@ -4249,11 +4335,11 @@ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" } }, "finalhandler": { @@ -4262,12 +4348,12 @@ "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.4.0", + "unpipe": "1.0.0" }, "dependencies": { "encodeurl": { @@ -4288,9 +4374,9 @@ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" + "commondir": "1.0.1", + "make-dir": "1.3.0", + "pkg-dir": "2.0.0" } }, "find-up": { @@ -4299,7 +4385,7 @@ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "^2.0.0" + "locate-path": "2.0.0" } }, "follow-redirects": { @@ -4307,8 +4393,8 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.1.0.tgz", "integrity": "sha1-gzP77mXS+oWFJB67E3L8AeWx9nE=", "requires": { - "debug": "^2.2.0", - "stream-consume": "^0.1.0" + "debug": "2.6.8", + "stream-consume": "0.1.0" }, "dependencies": { "debug": { @@ -4342,7 +4428,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "^1.0.1" + "for-in": "1.0.2" } }, "forever-agent": { @@ -4355,9 +4441,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "^0.4.0", + "asynckit": "0.4.0", "combined-stream": "1.0.6", - "mime-types": "^2.1.12" + "mime-types": "2.1.19" } }, "forwarded": { @@ -4370,7 +4456,7 @@ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "requires": { - "map-cache": "^0.2.2" + "map-cache": "0.2.2" } }, "fresh": { @@ -4395,9 +4481,9 @@ "dev": true, "optional": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0" + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1" } }, "fs.realpath": { @@ -4413,8 +4499,8 @@ "dev": true, "optional": true, "requires": { - "nan": "^2.3.0", - "node-pre-gyp": "^0.6.39" + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" }, "dependencies": { "abbrev": { @@ -4429,8 +4515,8 @@ "dev": true, "optional": true, "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" + "co": "4.6.0", + "json-stable-stringify": "1.0.1" } }, "ansi-regex": { @@ -4450,8 +4536,8 @@ "dev": true, "optional": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "delegates": "1.0.0", + "readable-stream": "2.2.9" } }, "asn1": { @@ -4495,7 +4581,7 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "^0.14.3" + "tweetnacl": "0.14.5" } }, "block-stream": { @@ -4503,7 +4589,7 @@ "bundled": true, "dev": true, "requires": { - "inherits": "~2.0.0" + "inherits": "2.0.3" } }, "boom": { @@ -4511,7 +4597,7 @@ "bundled": true, "dev": true, "requires": { - "hoek": "2.x.x" + "hoek": "2.16.3" } }, "brace-expansion": { @@ -4519,7 +4605,7 @@ "bundled": true, "dev": true, "requires": { - "balanced-match": "^0.4.1", + "balanced-match": "0.4.2", "concat-map": "0.0.1" } }, @@ -4550,7 +4636,7 @@ "bundled": true, "dev": true, "requires": { - "delayed-stream": "~1.0.0" + "delayed-stream": "1.0.0" } }, "concat-map": { @@ -4573,7 +4659,7 @@ "bundled": true, "dev": true, "requires": { - "boom": "2.x.x" + "boom": "2.10.1" } }, "dashdash": { @@ -4582,7 +4668,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" }, "dependencies": { "assert-plus": { @@ -4631,7 +4717,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "~0.1.0" + "jsbn": "0.1.1" } }, "extend": { @@ -4657,9 +4743,9 @@ "dev": true, "optional": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" } }, "fs.realpath": { @@ -4672,10 +4758,10 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" } }, "fstream-ignore": { @@ -4684,9 +4770,9 @@ "dev": true, "optional": true, "requires": { - "fstream": "^1.0.0", - "inherits": "2", - "minimatch": "^3.0.0" + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" } }, "gauge": { @@ -4695,14 +4781,14 @@ "dev": true, "optional": true, "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" } }, "getpass": { @@ -4711,7 +4797,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" }, "dependencies": { "assert-plus": { @@ -4727,12 +4813,12 @@ "bundled": true, "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "graceful-fs": { @@ -4752,8 +4838,8 @@ "dev": true, "optional": true, "requires": { - "ajv": "^4.9.1", - "har-schema": "^1.0.5" + "ajv": "4.11.8", + "har-schema": "1.0.5" } }, "has-unicode": { @@ -4767,10 +4853,10 @@ "bundled": true, "dev": true, "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" } }, "hoek": { @@ -4784,9 +4870,9 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" } }, "inflight": { @@ -4794,8 +4880,8 @@ "bundled": true, "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -4814,7 +4900,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "is-typedarray": { @@ -4840,7 +4926,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "~0.1.0" + "jsbn": "0.1.1" } }, "jsbn": { @@ -4861,7 +4947,7 @@ "dev": true, "optional": true, "requires": { - "jsonify": "~0.0.0" + "jsonify": "0.0.0" } }, "json-stringify-safe": { @@ -4906,7 +4992,7 @@ "bundled": true, "dev": true, "requires": { - "mime-db": "~1.27.0" + "mime-db": "1.27.0" } }, "minimatch": { @@ -4914,7 +5000,7 @@ "bundled": true, "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.7" } }, "minimist": { @@ -4942,17 +5028,17 @@ "dev": true, "optional": true, "requires": { - "detect-libc": "^1.0.2", + "detect-libc": "1.0.2", "hawk": "3.1.3", - "mkdirp": "^0.5.1", - "nopt": "^4.0.1", - "npmlog": "^4.0.2", - "rc": "^1.1.7", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", "request": "2.81.0", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^2.2.1", - "tar-pack": "^3.4.0" + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" } }, "nopt": { @@ -4961,8 +5047,8 @@ "dev": true, "optional": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "abbrev": "1.1.0", + "osenv": "0.1.4" } }, "npmlog": { @@ -4971,10 +5057,10 @@ "dev": true, "optional": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, "number-is-nan": { @@ -4999,7 +5085,7 @@ "bundled": true, "dev": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "os-homedir": { @@ -5020,8 +5106,8 @@ "dev": true, "optional": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, "path-is-absolute": { @@ -5058,10 +5144,10 @@ "dev": true, "optional": true, "requires": { - "deep-extend": "~0.4.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" }, "dependencies": { "minimist": { @@ -5077,13 +5163,13 @@ "bundled": true, "dev": true, "requires": { - "buffer-shims": "~1.0.0", - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", - "util-deprecate": "~1.0.1" + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" } }, "request": { @@ -5092,28 +5178,28 @@ "dev": true, "optional": true, "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~4.2.1", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "oauth-sign": "~0.8.1", - "performance-now": "^0.2.0", - "qs": "~6.4.0", - "safe-buffer": "^5.0.1", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.0.0" + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" } }, "rimraf": { @@ -5121,7 +5207,7 @@ "bundled": true, "dev": true, "requires": { - "glob": "^7.0.5" + "glob": "7.1.2" } }, "safe-buffer": { @@ -5152,7 +5238,7 @@ "bundled": true, "dev": true, "requires": { - "hoek": "2.x.x" + "hoek": "2.16.3" } }, "sshpk": { @@ -5161,15 +5247,15 @@ "dev": true, "optional": true, "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jodid25519": "^1.0.0", - "jsbn": "~0.1.0", - "tweetnacl": "~0.14.0" + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" }, "dependencies": { "assert-plus": { @@ -5185,9 +5271,9 @@ "bundled": true, "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "string_decoder": { @@ -5195,7 +5281,7 @@ "bundled": true, "dev": true, "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.0.1" } }, "stringstream": { @@ -5209,7 +5295,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-json-comments": { @@ -5223,9 +5309,9 @@ "bundled": true, "dev": true, "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" } }, "tar-pack": { @@ -5234,14 +5320,14 @@ "dev": true, "optional": true, "requires": { - "debug": "^2.2.0", - "fstream": "^1.0.10", - "fstream-ignore": "^1.0.5", - "once": "^1.3.3", - "readable-stream": "^2.1.4", - "rimraf": "^2.5.1", - "tar": "^2.2.1", - "uid-number": "^0.0.6" + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" } }, "tough-cookie": { @@ -5250,7 +5336,7 @@ "dev": true, "optional": true, "requires": { - "punycode": "^1.4.1" + "punycode": "1.4.1" } }, "tunnel-agent": { @@ -5259,7 +5345,7 @@ "dev": true, "optional": true, "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.0.1" } }, "tweetnacl": { @@ -5300,7 +5386,7 @@ "dev": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "1.0.2" } }, "wrappy": { @@ -5337,7 +5423,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "glob": { @@ -5346,12 +5432,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" }, "dependencies": { "inherits": { @@ -5368,8 +5454,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" + "glob-parent": "2.0.0", + "is-glob": "2.0.1" } }, "glob-parent": { @@ -5378,7 +5464,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "^2.0.0" + "is-glob": "2.0.1" } }, "global-dirs": { @@ -5386,7 +5472,7 @@ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "requires": { - "ini": "^1.3.4" + "ini": "1.3.5" } }, "globals": { @@ -5399,17 +5485,17 @@ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.1", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" } }, "graceful-fs": { @@ -5434,19 +5520,19 @@ "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", "dev": true, "requires": { - "archy": "^1.0.0", - "chalk": "^1.0.0", - "deprecated": "^0.0.1", - "gulp-util": "^3.0.0", - "interpret": "^1.0.0", - "liftoff": "^2.1.0", - "minimist": "^1.1.0", - "orchestrator": "^0.3.0", - "pretty-hrtime": "^1.0.0", - "semver": "^4.1.0", - "tildify": "^1.0.0", - "v8flags": "^2.0.2", - "vinyl-fs": "^0.3.0" + "archy": "1.0.0", + "chalk": "1.1.3", + "deprecated": "0.0.1", + "gulp-util": "3.0.8", + "interpret": "1.0.3", + "liftoff": "2.3.0", + "minimist": "1.2.0", + "orchestrator": "0.3.8", + "pretty-hrtime": "1.0.3", + "semver": "4.3.6", + "tildify": "1.2.0", + "v8flags": "2.1.1", + "vinyl-fs": "0.3.14" }, "dependencies": { "ansi-regex": { @@ -5473,7 +5559,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "^1.0.1" + "arr-flatten": "1.1.0" } }, "arr-flatten": { @@ -5512,7 +5598,7 @@ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -5522,9 +5608,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" } }, "chalk": { @@ -5533,11 +5619,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "clone": { @@ -5570,7 +5656,7 @@ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "dev": true, "requires": { - "clone": "^1.0.2" + "clone": "1.0.2" } }, "deprecated": { @@ -5585,7 +5671,7 @@ "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", "dev": true, "requires": { - "fs-exists-sync": "^0.1.0" + "fs-exists-sync": "0.1.0" } }, "end-of-stream": { @@ -5594,7 +5680,7 @@ "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", "dev": true, "requires": { - "once": "~1.3.0" + "once": "1.3.3" } }, "escape-string-regexp": { @@ -5609,7 +5695,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "^0.1.0" + "is-posix-bracket": "0.1.1" } }, "expand-range": { @@ -5618,7 +5704,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "^2.1.0" + "fill-range": "2.2.3" } }, "expand-tilde": { @@ -5627,7 +5713,7 @@ "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", "dev": true, "requires": { - "os-homedir": "^1.0.1" + "os-homedir": "1.0.2" } }, "extend": { @@ -5642,7 +5728,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "filename-regex": { @@ -5657,11 +5743,11 @@ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" } }, "find-index": { @@ -5676,10 +5762,10 @@ "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", "dev": true, "requires": { - "detect-file": "^0.1.0", - "is-glob": "^2.0.1", - "micromatch": "^2.3.7", - "resolve-dir": "^0.1.0" + "detect-file": "0.1.0", + "is-glob": "2.0.1", + "micromatch": "2.3.11", + "resolve-dir": "0.1.1" } }, "fined": { @@ -5688,11 +5774,11 @@ "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", "dev": true, "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" + "expand-tilde": "2.0.2", + "is-plain-object": "2.0.4", + "object.defaults": "1.1.0", + "object.pick": "1.3.0", + "parse-filepath": "1.0.1" }, "dependencies": { "expand-tilde": { @@ -5701,7 +5787,7 @@ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", "dev": true, "requires": { - "homedir-polyfill": "^1.0.1" + "homedir-polyfill": "1.0.1" } } } @@ -5730,7 +5816,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "^1.0.1" + "for-in": "1.0.2" } }, "fs-exists-sync": { @@ -5745,7 +5831,7 @@ "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", "dev": true, "requires": { - "globule": "~0.1.0" + "globule": "0.1.0" } }, "glob": { @@ -5754,10 +5840,10 @@ "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^2.0.1", - "once": "^1.3.0" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "2.0.10", + "once": "1.3.3" } }, "glob-base": { @@ -5766,8 +5852,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" + "glob-parent": "2.0.0", + "is-glob": "2.0.1" } }, "glob-parent": { @@ -5776,7 +5862,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "^2.0.0" + "is-glob": "2.0.1" } }, "glob-stream": { @@ -5785,12 +5871,12 @@ "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", "dev": true, "requires": { - "glob": "^4.3.1", - "glob2base": "^0.0.12", - "minimatch": "^2.0.1", - "ordered-read-streams": "^0.1.0", - "through2": "^0.6.1", - "unique-stream": "^1.0.0" + "glob": "4.5.3", + "glob2base": "0.0.12", + "minimatch": "2.0.10", + "ordered-read-streams": "0.1.0", + "through2": "0.6.5", + "unique-stream": "1.0.0" } }, "glob-watcher": { @@ -5799,7 +5885,7 @@ "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", "dev": true, "requires": { - "gaze": "^0.5.1" + "gaze": "0.5.2" } }, "glob2base": { @@ -5808,7 +5894,7 @@ "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", "dev": true, "requires": { - "find-index": "^0.1.1" + "find-index": "0.1.1" } }, "global-modules": { @@ -5817,8 +5903,8 @@ "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", "dev": true, "requires": { - "global-prefix": "^0.1.4", - "is-windows": "^0.2.0" + "global-prefix": "0.1.5", + "is-windows": "0.2.0" } }, "global-prefix": { @@ -5827,10 +5913,10 @@ "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", "dev": true, "requires": { - "homedir-polyfill": "^1.0.0", - "ini": "^1.3.4", - "is-windows": "^0.2.0", - "which": "^1.2.12" + "homedir-polyfill": "1.0.1", + "ini": "1.3.4", + "is-windows": "0.2.0", + "which": "1.3.0" } }, "globule": { @@ -5839,9 +5925,9 @@ "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", "dev": true, "requires": { - "glob": "~3.1.21", - "lodash": "~1.0.1", - "minimatch": "~0.2.11" + "glob": "3.1.21", + "lodash": "1.0.2", + "minimatch": "0.2.14" }, "dependencies": { "glob": { @@ -5850,9 +5936,9 @@ "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", "dev": true, "requires": { - "graceful-fs": "~1.2.0", - "inherits": "1", - "minimatch": "~0.2.11" + "graceful-fs": "1.2.3", + "inherits": "1.0.2", + "minimatch": "0.2.14" } }, "graceful-fs": { @@ -5873,8 +5959,8 @@ "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", "dev": true, "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" + "lru-cache": "2.7.3", + "sigmund": "1.0.1" } } } @@ -5885,7 +5971,7 @@ "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", "dev": true, "requires": { - "natives": "^1.1.0" + "natives": "1.1.0" } }, "has-ansi": { @@ -5894,7 +5980,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "homedir-polyfill": { @@ -5903,7 +5989,7 @@ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", "dev": true, "requires": { - "parse-passwd": "^1.0.0" + "parse-passwd": "1.0.0" } }, "inflight": { @@ -5912,8 +5998,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.3.3", + "wrappy": "1.0.2" } }, "inherits": { @@ -5940,8 +6026,8 @@ "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", "dev": true, "requires": { - "is-relative": "^0.2.1", - "is-windows": "^0.2.0" + "is-relative": "0.2.1", + "is-windows": "0.2.0" } }, "is-buffer": { @@ -5962,7 +6048,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "^2.0.0" + "is-primitive": "2.0.0" } }, "is-extendable": { @@ -5983,7 +6069,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "is-number": { @@ -5992,7 +6078,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-plain-object": { @@ -6001,7 +6087,7 @@ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -6030,7 +6116,7 @@ "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", "dev": true, "requires": { - "is-unc-path": "^0.1.1" + "is-unc-path": "0.1.2" } }, "is-unc-path": { @@ -6039,7 +6125,7 @@ "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", "dev": true, "requires": { - "unc-path-regex": "^0.1.0" + "unc-path-regex": "0.1.2" } }, "is-utf8": { @@ -6081,7 +6167,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.5" } }, "liftoff": { @@ -6090,15 +6176,15 @@ "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", "dev": true, "requires": { - "extend": "^3.0.0", - "findup-sync": "^0.4.2", - "fined": "^1.0.1", - "flagged-respawn": "^0.3.2", - "lodash.isplainobject": "^4.0.4", - "lodash.isstring": "^4.0.1", - "lodash.mapvalues": "^4.4.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" + "extend": "3.0.1", + "findup-sync": "0.4.3", + "fined": "1.1.0", + "flagged-respawn": "0.3.2", + "lodash.isplainobject": "4.0.6", + "lodash.isstring": "4.0.1", + "lodash.mapvalues": "4.6.0", + "rechoir": "0.6.2", + "resolve": "1.4.0" } }, "lodash": { @@ -6143,19 +6229,19 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" } }, "minimatch": { @@ -6164,7 +6250,7 @@ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", "dev": true, "requires": { - "brace-expansion": "^1.0.0" + "brace-expansion": "1.1.8" } }, "minimist": { @@ -6202,7 +6288,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "remove-trailing-separator": "1.1.0" } }, "object.defaults": { @@ -6211,10 +6297,10 @@ "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", "dev": true, "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" + "array-each": "1.0.1", + "array-slice": "1.0.0", + "for-own": "1.0.0", + "isobject": "3.0.1" }, "dependencies": { "for-own": { @@ -6223,7 +6309,7 @@ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", "dev": true, "requires": { - "for-in": "^1.0.1" + "for-in": "1.0.2" } }, "isobject": { @@ -6240,8 +6326,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "for-own": "0.1.5", + "is-extendable": "0.1.1" } }, "object.pick": { @@ -6250,7 +6336,7 @@ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -6267,7 +6353,7 @@ "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", "dev": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "orchestrator": { @@ -6276,9 +6362,9 @@ "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", "dev": true, "requires": { - "end-of-stream": "~0.1.5", - "sequencify": "~0.0.7", - "stream-consume": "~0.1.0" + "end-of-stream": "0.1.5", + "sequencify": "0.0.7", + "stream-consume": "0.1.0" } }, "ordered-read-streams": { @@ -6299,9 +6385,9 @@ "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", "dev": true, "requires": { - "is-absolute": "^0.2.3", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" + "is-absolute": "0.2.6", + "map-cache": "0.2.2", + "path-root": "0.1.1" } }, "parse-glob": { @@ -6310,10 +6396,10 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" } }, "parse-passwd": { @@ -6334,7 +6420,7 @@ "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", "dev": true, "requires": { - "path-root-regex": "^0.1.0" + "path-root-regex": "0.1.2" } }, "path-root-regex": { @@ -6361,8 +6447,8 @@ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "3.0.0", + "kind-of": "4.0.0" }, "dependencies": { "is-number": { @@ -6371,7 +6457,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -6380,7 +6466,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.5" } } } @@ -6391,7 +6477,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.5" } } } @@ -6402,10 +6488,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "core-util-is": "1.0.2", + "inherits": "2.0.3", "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "string_decoder": "0.10.31" }, "dependencies": { "isarray": { @@ -6422,7 +6508,7 @@ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "requires": { - "resolve": "^1.1.6" + "resolve": "1.4.0" } }, "regex-cache": { @@ -6431,8 +6517,8 @@ "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", "dev": true, "requires": { - "is-equal-shallow": "^0.1.3", - "is-primitive": "^2.0.0" + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" } }, "remove-trailing-separator": { @@ -6459,7 +6545,7 @@ "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", "dev": true, "requires": { - "path-parse": "^1.0.5" + "path-parse": "1.0.5" } }, "resolve-dir": { @@ -6468,8 +6554,8 @@ "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", "dev": true, "requires": { - "expand-tilde": "^1.2.2", - "global-modules": "^0.2.3" + "expand-tilde": "1.2.2", + "global-modules": "0.2.3" } }, "semver": { @@ -6508,7 +6594,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-bom": { @@ -6517,8 +6603,8 @@ "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", "dev": true, "requires": { - "first-chunk-stream": "^1.0.0", - "is-utf8": "^0.2.0" + "first-chunk-stream": "1.0.0", + "is-utf8": "0.2.1" } }, "supports-color": { @@ -6533,8 +6619,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" + "readable-stream": "1.0.34", + "xtend": "4.0.1" } }, "tildify": { @@ -6543,7 +6629,7 @@ "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", "dev": true, "requires": { - "os-homedir": "^1.0.0" + "os-homedir": "1.0.2" } }, "unc-path-regex": { @@ -6570,7 +6656,7 @@ "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", "dev": true, "requires": { - "user-home": "^1.1.1" + "user-home": "1.1.1" } }, "vinyl": { @@ -6579,8 +6665,8 @@ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", "dev": true, "requires": { - "clone": "^0.2.0", - "clone-stats": "^0.0.1" + "clone": "0.2.0", + "clone-stats": "0.0.1" }, "dependencies": { "clone": { @@ -6597,14 +6683,14 @@ "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", "dev": true, "requires": { - "defaults": "^1.0.0", - "glob-stream": "^3.1.5", - "glob-watcher": "^0.0.6", - "graceful-fs": "^3.0.0", - "mkdirp": "^0.5.0", - "strip-bom": "^1.0.0", - "through2": "^0.6.1", - "vinyl": "^0.4.0" + "defaults": "1.0.3", + "glob-stream": "3.1.18", + "glob-watcher": "0.0.6", + "graceful-fs": "3.0.11", + "mkdirp": "0.5.1", + "strip-bom": "1.0.0", + "through2": "0.6.5", + "vinyl": "0.4.6" } }, "which": { @@ -6613,7 +6699,7 @@ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } }, "wrappy": { @@ -6636,13 +6722,13 @@ "integrity": "sha1-TEGffldk2aDjMGG6uWGPgbc9QXE=", "dev": true, "requires": { - "array-unique": "^0.2.1", - "fancy-log": "^1.2.0", - "findup-sync": "^0.4.0", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "micromatch": "^2.3.8", - "resolve": "^1.1.7" + "array-unique": "0.2.1", + "fancy-log": "1.3.0", + "findup-sync": "0.4.3", + "gulplog": "1.0.0", + "has-gulplog": "0.1.0", + "micromatch": "2.3.11", + "resolve": "1.4.0" }, "dependencies": { "ansi-regex": { @@ -6663,7 +6749,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "^1.0.1" + "arr-flatten": "1.1.0" } }, "arr-flatten": { @@ -6684,9 +6770,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" } }, "chalk": { @@ -6695,11 +6781,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "detect-file": { @@ -6708,7 +6794,7 @@ "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", "dev": true, "requires": { - "fs-exists-sync": "^0.1.0" + "fs-exists-sync": "0.1.0" } }, "escape-string-regexp": { @@ -6723,7 +6809,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "^0.1.0" + "is-posix-bracket": "0.1.1" } }, "expand-range": { @@ -6732,7 +6818,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "^2.1.0" + "fill-range": "2.2.3" } }, "expand-tilde": { @@ -6741,7 +6827,7 @@ "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", "dev": true, "requires": { - "os-homedir": "^1.0.1" + "os-homedir": "1.0.2" } }, "extglob": { @@ -6750,7 +6836,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "fancy-log": { @@ -6759,8 +6845,8 @@ "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", "dev": true, "requires": { - "chalk": "^1.1.1", - "time-stamp": "^1.0.0" + "chalk": "1.1.3", + "time-stamp": "1.1.0" } }, "filename-regex": { @@ -6775,11 +6861,11 @@ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" } }, "findup-sync": { @@ -6788,10 +6874,10 @@ "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", "dev": true, "requires": { - "detect-file": "^0.1.0", - "is-glob": "^2.0.1", - "micromatch": "^2.3.7", - "resolve-dir": "^0.1.0" + "detect-file": "0.1.0", + "is-glob": "2.0.1", + "micromatch": "2.3.11", + "resolve-dir": "0.1.1" } }, "for-in": { @@ -6806,7 +6892,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "^1.0.1" + "for-in": "1.0.2" } }, "fs-exists-sync": { @@ -6821,8 +6907,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" + "glob-parent": "2.0.0", + "is-glob": "2.0.1" } }, "glob-parent": { @@ -6831,7 +6917,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "^2.0.0" + "is-glob": "2.0.1" } }, "global-modules": { @@ -6840,8 +6926,8 @@ "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", "dev": true, "requires": { - "global-prefix": "^0.1.4", - "is-windows": "^0.2.0" + "global-prefix": "0.1.5", + "is-windows": "0.2.0" } }, "global-prefix": { @@ -6850,10 +6936,10 @@ "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", "dev": true, "requires": { - "homedir-polyfill": "^1.0.0", - "ini": "^1.3.4", - "is-windows": "^0.2.0", - "which": "^1.2.12" + "homedir-polyfill": "1.0.1", + "ini": "1.3.4", + "is-windows": "0.2.0", + "which": "1.3.0" } }, "glogg": { @@ -6862,7 +6948,7 @@ "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", "dev": true, "requires": { - "sparkles": "^1.0.0" + "sparkles": "1.0.0" } }, "gulplog": { @@ -6871,7 +6957,7 @@ "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", "dev": true, "requires": { - "glogg": "^1.0.0" + "glogg": "1.0.0" } }, "has-ansi": { @@ -6880,7 +6966,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "has-gulplog": { @@ -6889,7 +6975,7 @@ "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", "dev": true, "requires": { - "sparkles": "^1.0.0" + "sparkles": "1.0.0" } }, "homedir-polyfill": { @@ -6898,7 +6984,7 @@ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", "dev": true, "requires": { - "parse-passwd": "^1.0.0" + "parse-passwd": "1.0.0" } }, "ini": { @@ -6925,7 +7011,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "^2.0.0" + "is-primitive": "2.0.0" } }, "is-extendable": { @@ -6946,7 +7032,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "is-number": { @@ -6955,7 +7041,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-posix-bracket": { @@ -7003,7 +7089,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.5" } }, "micromatch": { @@ -7012,19 +7098,19 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" } }, "normalize-path": { @@ -7033,7 +7119,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "remove-trailing-separator": "1.1.0" } }, "object.omit": { @@ -7042,8 +7128,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "for-own": "0.1.5", + "is-extendable": "0.1.1" } }, "os-homedir": { @@ -7058,10 +7144,10 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" } }, "parse-passwd": { @@ -7088,8 +7174,8 @@ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "3.0.0", + "kind-of": "4.0.0" }, "dependencies": { "is-number": { @@ -7098,7 +7184,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -7107,7 +7193,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.5" } } } @@ -7118,7 +7204,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.5" } } } @@ -7129,8 +7215,8 @@ "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", "dev": true, "requires": { - "is-equal-shallow": "^0.1.3", - "is-primitive": "^2.0.0" + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" } }, "remove-trailing-separator": { @@ -7157,7 +7243,7 @@ "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", "dev": true, "requires": { - "path-parse": "^1.0.5" + "path-parse": "1.0.5" } }, "resolve-dir": { @@ -7166,8 +7252,8 @@ "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", "dev": true, "requires": { - "expand-tilde": "^1.2.2", - "global-modules": "^0.2.3" + "expand-tilde": "1.2.2", + "global-modules": "0.2.3" } }, "sparkles": { @@ -7182,7 +7268,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -7203,7 +7289,7 @@ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } } } @@ -7214,24 +7300,24 @@ "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", "dev": true, "requires": { - "array-differ": "^1.0.0", - "array-uniq": "^1.0.2", - "beeper": "^1.0.0", - "chalk": "^1.0.0", - "dateformat": "^2.0.0", - "fancy-log": "^1.1.0", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "lodash._reescape": "^3.0.0", - "lodash._reevaluate": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.template": "^3.0.0", - "minimist": "^1.1.0", - "multipipe": "^0.1.2", - "object-assign": "^3.0.0", + "array-differ": "1.0.0", + "array-uniq": "1.0.3", + "beeper": "1.1.1", + "chalk": "1.1.3", + "dateformat": "2.0.0", + "fancy-log": "1.3.0", + "gulplog": "1.0.0", + "has-gulplog": "0.1.0", + "lodash._reescape": "3.0.0", + "lodash._reevaluate": "3.0.0", + "lodash._reinterpolate": "3.0.0", + "lodash.template": "3.6.2", + "minimist": "1.2.0", + "multipipe": "0.1.2", + "object-assign": "3.0.0", "replace-ext": "0.0.1", - "through2": "^2.0.0", - "vinyl": "^0.5.0" + "through2": "2.0.3", + "vinyl": "0.5.3" }, "dependencies": { "ansi-regex": { @@ -7270,11 +7356,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "clone": { @@ -7307,7 +7393,7 @@ "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", "dev": true, "requires": { - "readable-stream": "~1.1.9" + "readable-stream": "1.1.14" } }, "escape-string-regexp": { @@ -7322,8 +7408,8 @@ "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", "dev": true, "requires": { - "chalk": "^1.1.1", - "time-stamp": "^1.0.0" + "chalk": "1.1.3", + "time-stamp": "1.1.0" } }, "glogg": { @@ -7332,7 +7418,7 @@ "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", "dev": true, "requires": { - "sparkles": "^1.0.0" + "sparkles": "1.0.0" } }, "gulplog": { @@ -7341,7 +7427,7 @@ "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", "dev": true, "requires": { - "glogg": "^1.0.0" + "glogg": "1.0.0" } }, "has-ansi": { @@ -7350,7 +7436,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "has-gulplog": { @@ -7359,7 +7445,7 @@ "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", "dev": true, "requires": { - "sparkles": "^1.0.0" + "sparkles": "1.0.0" } }, "inherits": { @@ -7434,7 +7520,7 @@ "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", "dev": true, "requires": { - "lodash._root": "^3.0.0" + "lodash._root": "3.0.1" } }, "lodash.isarguments": { @@ -7455,9 +7541,9 @@ "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", "dev": true, "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" } }, "lodash.restparam": { @@ -7472,15 +7558,15 @@ "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", "dev": true, "requires": { - "lodash._basecopy": "^3.0.0", - "lodash._basetostring": "^3.0.0", - "lodash._basevalues": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0", - "lodash.keys": "^3.0.0", - "lodash.restparam": "^3.0.0", - "lodash.templatesettings": "^3.0.0" + "lodash._basecopy": "3.0.1", + "lodash._basetostring": "3.0.1", + "lodash._basevalues": "3.0.0", + "lodash._isiterateecall": "3.0.9", + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0", + "lodash.keys": "3.1.2", + "lodash.restparam": "3.6.1", + "lodash.templatesettings": "3.1.1" } }, "lodash.templatesettings": { @@ -7489,8 +7575,8 @@ "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", "dev": true, "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0" + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0" } }, "minimist": { @@ -7526,10 +7612,10 @@ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "core-util-is": "1.0.2", + "inherits": "2.0.3", "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "string_decoder": "0.10.31" } }, "replace-ext": { @@ -7562,7 +7648,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -7577,8 +7663,8 @@ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" + "readable-stream": "2.3.3", + "xtend": "4.0.1" }, "dependencies": { "isarray": { @@ -7593,13 +7679,13 @@ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -7608,7 +7694,7 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.1" } } } @@ -7631,8 +7717,8 @@ "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", "dev": true, "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", + "clone": "1.0.2", + "clone-stats": "0.0.1", "replace-ext": "0.0.1" } }, @@ -7649,10 +7735,10 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" }, "dependencies": { "source-map": { @@ -7660,7 +7746,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "requires": { - "amdefine": ">=0.0.4" + "amdefine": "1.0.1" } } } @@ -7675,8 +7761,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", "requires": { - "ajv": "^5.3.0", - "har-schema": "^2.0.0" + "ajv": "5.5.2", + "har-schema": "2.0.0" } }, "has": { @@ -7685,7 +7771,7 @@ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "dev": true, "requires": { - "function-bind": "^1.0.2" + "function-bind": "1.1.1" } }, "has-ansi": { @@ -7693,7 +7779,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "has-binary": { @@ -7718,8 +7804,8 @@ "resolved": "https://registry.npmjs.org/has-bom/-/has-bom-0.1.0.tgz", "integrity": "sha1-uOUNoEkYYZ0oBo8ZEFu95yUhQU0=", "requires": { - "is-buffer": "^1.1.0", - "is-utf8": "^0.2.0" + "is-buffer": "1.1.5", + "is-utf8": "0.2.1" } }, "has-cors": { @@ -7738,9 +7824,9 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -7755,8 +7841,8 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "3.0.0", + "kind-of": "4.0.0" }, "dependencies": { "is-number": { @@ -7764,7 +7850,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -7772,7 +7858,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.5" } } } @@ -7782,7 +7868,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.5" } } } @@ -7793,7 +7879,7 @@ "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", "dev": true, "requires": { - "inherits": "^2.0.1" + "inherits": "2.0.3" }, "dependencies": { "inherits": { @@ -7810,8 +7896,8 @@ "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", "dev": true, "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" }, "dependencies": { "inherits": { @@ -7829,8 +7915,8 @@ "dev": true, "optional": true, "requires": { - "is-stream": "^1.0.1", - "pinkie-promise": "^2.0.0" + "is-stream": "1.1.0", + "pinkie-promise": "2.0.1" } }, "hat": { @@ -7845,9 +7931,9 @@ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" } }, "htmlescape": { @@ -7862,11 +7948,11 @@ "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", "dev": true, "requires": { - "domelementtype": "1", - "domhandler": "2.3", - "domutils": "1.5", - "entities": "1.0", - "readable-stream": "1.1" + "domelementtype": "1.3.0", + "domhandler": "2.3.0", + "domutils": "1.5.1", + "entities": "1.0.0", + "readable-stream": "1.1.14" }, "dependencies": { "inherits": { @@ -7887,10 +7973,10 @@ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "core-util-is": "1.0.2", + "inherits": "2.0.3", "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "string_decoder": "0.10.31" } }, "string_decoder": { @@ -7906,10 +7992,10 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "depd": "~1.1.2", + "depd": "1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "statuses": "1.5.0" }, "dependencies": { "inherits": { @@ -7925,8 +8011,8 @@ "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", "dev": true, "requires": { - "eventemitter3": "1.x.x", - "requires-port": "1.x.x" + "eventemitter3": "1.2.0", + "requires-port": "1.0.0" } }, "http-signature": { @@ -7934,9 +8020,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.2" } }, "http-status": { @@ -7988,14 +8074,13 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { "version": "2.0.3", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { "version": "1.3.5", @@ -8008,7 +8093,7 @@ "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", "dev": true, "requires": { - "source-map": "~0.5.3" + "source-map": "0.5.7" } }, "insert-module-globals": { @@ -8017,14 +8102,14 @@ "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "combine-source-map": "~0.7.1", - "concat-stream": "~1.5.1", - "is-buffer": "^1.1.0", - "lexical-scope": "^1.2.0", - "process": "~0.11.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" + "JSONStream": "1.3.2", + "combine-source-map": "0.7.2", + "concat-stream": "1.5.2", + "is-buffer": "1.1.5", + "lexical-scope": "1.2.0", + "process": "0.11.10", + "through2": "2.0.3", + "xtend": "4.0.1" }, "dependencies": { "combine-source-map": { @@ -8033,10 +8118,10 @@ "integrity": "sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=", "dev": true, "requires": { - "convert-source-map": "~1.1.0", - "inline-source-map": "~0.6.0", - "lodash.memoize": "~3.0.3", - "source-map": "~0.5.3" + "convert-source-map": "1.1.3", + "inline-source-map": "0.6.2", + "lodash.memoize": "3.0.4", + "source-map": "0.5.7" } }, "convert-source-map": { @@ -8052,7 +8137,7 @@ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.4.0" } }, "ipaddr.js": { @@ -8065,7 +8150,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-binary-path": { @@ -8073,7 +8158,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "requires": { - "binary-extensions": "^1.0.0" + "binary-extensions": "1.11.0" } }, "is-buffer": { @@ -8086,7 +8171,7 @@ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.0.tgz", "integrity": "sha512-plgvKjQtalH2P3Gytb7L61Lmz95g2DlpzFiQyRSFew8WoJKxtKRzrZMeyRN2supblm3Psc8OQGy7Xjb6XG11jw==", "requires": { - "ci-info": "^1.3.0" + "ci-info": "1.4.0" } }, "is-data-descriptor": { @@ -8094,7 +8179,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-descriptor": { @@ -8102,9 +8187,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { @@ -8126,7 +8211,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "^2.0.0" + "is-primitive": "2.0.0" } }, "is-extendable": { @@ -8145,7 +8230,7 @@ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "is-fullwidth-code-point": { @@ -8159,7 +8244,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "is-installed-globally": { @@ -8167,8 +8252,8 @@ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" } }, "is-npm": { @@ -8182,7 +8267,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-obj": { @@ -8195,7 +8280,7 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "requires": { - "path-is-inside": "^1.0.1" + "path-is-inside": "1.0.2" } }, "is-plain-object": { @@ -8203,7 +8288,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -8337,17 +8422,17 @@ "integrity": "sha512-KO9SIAKTlJQOM4lE64GQUtGBRpTOuvbrRrSZw3AhUxMNG266nX9hK2cKA4SBhXOj0irJGyNyGSLT62HGOVDEOA==", "dev": true, "requires": { - "cli": "~1.0.0", - "console-browserify": "1.1.x", - "exit": "0.1.x", - "htmlparser2": "3.8.x", - "lodash": "~4.17.10", - "minimatch": "~3.0.2", - "phantom": "~4.0.1", - "phantomjs-prebuilt": "~2.1.7", - "shelljs": "0.3.x", - "strip-json-comments": "1.0.x", - "unicode-5.2.0": "^0.7.5" + "cli": "1.0.1", + "console-browserify": "1.1.0", + "exit": "0.1.2", + "htmlparser2": "3.8.3", + "lodash": "4.17.10", + "minimatch": "3.0.4", + "phantom": "4.0.12", + "phantomjs-prebuilt": "2.1.16", + "shelljs": "0.3.0", + "strip-json-comments": "1.0.4", + "unicode-5.2.0": "0.7.5" }, "dependencies": { "lodash": { @@ -8374,7 +8459,7 @@ "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", "dev": true, "requires": { - "jsonify": "~0.0.0" + "jsonify": "0.0.0" } }, "json-stringify-safe": { @@ -8400,7 +8485,7 @@ "dev": true, "optional": true, "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "4.1.11" } }, "jsonify": { @@ -8443,33 +8528,33 @@ "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==", "dev": true, "requires": { - "bluebird": "^3.3.0", - "body-parser": "^1.16.1", - "chokidar": "^1.4.1", - "colors": "^1.1.0", - "combine-lists": "^1.0.0", - "connect": "^3.6.0", - "core-js": "^2.2.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.0", - "expand-braces": "^0.1.1", - "glob": "^7.1.1", - "graceful-fs": "^4.1.2", - "http-proxy": "^1.13.0", - "isbinaryfile": "^3.0.0", - "lodash": "^3.8.0", - "log4js": "^0.6.31", - "mime": "^1.3.4", - "minimatch": "^3.0.2", - "optimist": "^0.6.1", - "qjobs": "^1.1.4", - "range-parser": "^1.2.0", - "rimraf": "^2.6.0", - "safe-buffer": "^5.0.1", + "bluebird": "3.5.1", + "body-parser": "1.18.3", + "chokidar": "1.7.0", + "colors": "1.1.2", + "combine-lists": "1.0.1", + "connect": "3.6.5", + "core-js": "2.5.3", + "di": "0.0.1", + "dom-serialize": "2.2.1", + "expand-braces": "0.1.2", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "http-proxy": "1.16.2", + "isbinaryfile": "3.0.2", + "lodash": "3.10.1", + "log4js": "0.6.38", + "mime": "1.4.1", + "minimatch": "3.0.4", + "optimist": "0.6.1", + "qjobs": "1.1.5", + "range-parser": "1.2.0", + "rimraf": "2.6.2", + "safe-buffer": "5.1.1", "socket.io": "1.7.3", - "source-map": "^0.5.3", + "source-map": "0.5.7", "tmp": "0.0.31", - "useragent": "^2.1.12" + "useragent": "2.2.1" }, "dependencies": { "lodash": { @@ -8486,12 +8571,12 @@ "integrity": "sha512-EMaUd1RNyQVGTETI80dtX/fEtYs57/A5sl3rClvzJFImPW1s3EtsbESfqNtk7/OkzfYuAHLh4RSZSSbVgvhNdQ==", "dev": true, "requires": { - "convert-source-map": "^1.1.3", - "hat": "^0.0.3", - "js-string-escape": "^1.0.0", - "lodash": "^4.17.10", - "minimatch": "^3.0.0", - "os-shim": "^0.1.3" + "convert-source-map": "1.5.1", + "hat": "0.0.3", + "js-string-escape": "1.0.1", + "lodash": "4.17.10", + "minimatch": "3.0.4", + "os-shim": "0.1.3" }, "dependencies": { "lodash": { @@ -8514,8 +8599,8 @@ "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", "dev": true, "requires": { - "fs-access": "^1.0.0", - "which": "^1.2.1" + "fs-access": "1.0.1", + "which": "1.3.0" }, "dependencies": { "fs-access": { @@ -8524,7 +8609,7 @@ "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", "dev": true, "requires": { - "null-check": "^1.0.0" + "null-check": "1.0.0" } }, "isexe": { @@ -8545,7 +8630,7 @@ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } } } @@ -8565,7 +8650,7 @@ "integrity": "sha512-Oatu8tdkfWaSveM809euI6KGcNJRdoXFilz9ozSf+vPwrM73kncu54nsfkLcMqR/iht3PXASAGK9La5oU2xDKQ==", "dev": true, "requires": { - "lolex": "^1.6.0" + "lolex": "1.6.0" } }, "kew": { @@ -8580,7 +8665,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.5" } }, "klaw": { @@ -8590,7 +8675,7 @@ "dev": true, "optional": true, "requires": { - "graceful-fs": "^4.1.9" + "graceful-fs": "4.1.11" } }, "labeled-stream-splicer": { @@ -8599,9 +8684,9 @@ "integrity": "sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=", "dev": true, "requires": { - "inherits": "^2.0.1", - "isarray": "~0.0.1", - "stream-splicer": "^2.0.0" + "inherits": "2.0.3", + "isarray": "0.0.1", + "stream-splicer": "2.0.0" }, "dependencies": { "inherits": { @@ -8623,7 +8708,7 @@ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "requires": { - "package-json": "^4.0.0" + "package-json": "4.0.1" } }, "lazy-cache": { @@ -8638,7 +8723,7 @@ "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=", "dev": true, "requires": { - "astw": "^2.0.0" + "astw": "2.2.0" } }, "loader-utils": { @@ -8647,9 +8732,9 @@ "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" } }, "locate-path": { @@ -8658,8 +8743,8 @@ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "2.0.0", + "path-exists": "3.0.0" } }, "lodash": { @@ -8690,8 +8775,8 @@ "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", "dev": true, "requires": { - "readable-stream": "~1.0.2", - "semver": "~4.3.3" + "readable-stream": "1.0.34", + "semver": "4.3.6" }, "dependencies": { "inherits": { @@ -8712,10 +8797,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "core-util-is": "1.0.2", + "inherits": "2.0.3", "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "string_decoder": "0.10.31" } }, "string_decoder": { @@ -8742,7 +8827,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "js-tokens": "3.0.2" } }, "lowercase-keys": { @@ -8760,7 +8845,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "requires": { - "pify": "^3.0.0" + "pify": "3.0.0" } }, "map-cache": { @@ -8778,7 +8863,7 @@ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "requires": { - "object-visit": "^1.0.0" + "object-visit": "1.0.1" } }, "material-design-lite": { @@ -8792,8 +8877,8 @@ "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", "dev": true, "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "hash-base": "3.0.4", + "inherits": "2.0.3" }, "dependencies": { "hash-base": { @@ -8802,8 +8887,8 @@ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "2.0.3", + "safe-buffer": "5.1.1" } }, "inherits": { @@ -8834,12 +8919,12 @@ "resolved": "https://registry.npmjs.org/microdata-node/-/microdata-node-0.2.1.tgz", "integrity": "sha1-xZ9Z0hMKMoBwoe2zFZCVDPfce40=", "requires": { - "array-unique": "^0.1.1", - "domutils": "^1.5.1", - "es6-map": "^0.1.1", - "extend": "^2.0.0", - "htmlparser2": "^3.8.2", - "is-absolute-url": "^1.0.0" + "array-unique": "0.1.1", + "domutils": "1.6.2", + "es6-map": "0.1.5", + "extend": "2.0.1", + "htmlparser2": "3.9.2", + "is-absolute-url": "1.0.0" }, "dependencies": { "array-unique": { @@ -8857,7 +8942,7 @@ "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "requires": { - "es5-ext": "^0.10.9" + "es5-ext": "0.10.29" } }, "dom-serializer": { @@ -8865,8 +8950,8 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" + "domelementtype": "1.1.3", + "entities": "1.1.1" }, "dependencies": { "domelementtype": { @@ -8886,7 +8971,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", "requires": { - "domelementtype": "1" + "domelementtype": "1.3.0" } }, "domutils": { @@ -8894,8 +8979,8 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" } }, "entities": { @@ -8908,8 +8993,8 @@ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.29.tgz", "integrity": "sha512-KXla9NXo5sdaEkGSmbFPYgjH6m75kxsthL6GDRSug/Y2OiMoYm0I9giL39j4cgmaFmAbkIFJ6gG+SGKnLSmOvA==", "requires": { - "es6-iterator": "2", - "es6-symbol": "~3.1" + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" } }, "es6-iterator": { @@ -8917,9 +9002,9 @@ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", "requires": { - "d": "1", - "es5-ext": "^0.10.14", - "es6-symbol": "^3.1" + "d": "1.0.0", + "es5-ext": "0.10.29", + "es6-symbol": "3.1.1" } }, "es6-map": { @@ -8927,12 +9012,12 @@ "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" + "d": "1.0.0", + "es5-ext": "0.10.29", + "es6-iterator": "2.0.1", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" } }, "es6-set": { @@ -8940,11 +9025,11 @@ "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", + "d": "1.0.0", + "es5-ext": "0.10.29", + "es6-iterator": "2.0.1", "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" + "event-emitter": "0.3.5" } }, "es6-symbol": { @@ -8952,8 +9037,8 @@ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "d": "1.0.0", + "es5-ext": "0.10.29" } }, "event-emitter": { @@ -8961,8 +9046,8 @@ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "d": "1.0.0", + "es5-ext": "0.10.29" } }, "extend": { @@ -8975,12 +9060,12 @@ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", "requires": { - "domelementtype": "^1.3.0", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.6.2", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3" } }, "inherits": { @@ -9008,13 +9093,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" } }, "safe-buffer": { @@ -9027,7 +9112,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.1" } }, "util-deprecate": { @@ -9043,19 +9128,19 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" } }, "miller-rabin": { @@ -9064,8 +9149,8 @@ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "bn.js": "4.11.8", + "brorand": "1.1.0" } }, "mime": { @@ -9083,7 +9168,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", "requires": { - "mime-db": "~1.35.0" + "mime-db": "1.35.0" } }, "minimalistic-assert": { @@ -9103,7 +9188,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.8" } }, "minimist": { @@ -9116,8 +9201,8 @@ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "for-in": "1.0.2", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -9190,8 +9275,8 @@ "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", "dev": true, "requires": { - "inherits": "2", - "minimatch": "0.3" + "inherits": "2.0.3", + "minimatch": "0.3.0" } }, "minimatch": { @@ -9200,8 +9285,8 @@ "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", "dev": true, "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" + "lru-cache": "2.7.3", + "sigmund": "1.0.1" } }, "ms": { @@ -9224,21 +9309,21 @@ "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "browser-resolve": "^1.7.0", - "cached-path-relative": "^1.0.0", - "concat-stream": "~1.5.0", - "defined": "^1.0.0", - "detective": "^4.0.0", - "duplexer2": "^0.1.2", - "inherits": "^2.0.1", - "parents": "^1.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.3", - "stream-combiner2": "^1.1.1", - "subarg": "^1.0.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" + "JSONStream": "1.3.2", + "browser-resolve": "1.11.2", + "cached-path-relative": "1.0.1", + "concat-stream": "1.5.2", + "defined": "1.0.0", + "detective": "4.7.1", + "duplexer2": "0.1.4", + "inherits": "2.0.3", + "parents": "1.0.1", + "readable-stream": "2.3.3", + "resolve": "1.5.0", + "stream-combiner2": "1.1.1", + "subarg": "1.0.0", + "through2": "2.0.3", + "xtend": "4.0.1" }, "dependencies": { "inherits": { @@ -9266,17 +9351,17 @@ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "arr-diff": { @@ -9301,17 +9386,22 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, "nise": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.3.tgz", "integrity": "sha512-cg44dkGHutAY+VmftgB1gHvLWxFl2vwYdF8WpbceYicQwylESRJiAAKgCRJntdoEbMiUzywkZEUzjoDWH0JwKA==", "dev": true, "requires": { - "@sinonjs/formatio": "^2.0.0", - "just-extend": "^1.1.27", - "lolex": "^2.3.2", - "path-to-regexp": "^1.7.0", - "text-encoding": "^0.6.4" + "@sinonjs/formatio": "2.0.0", + "just-extend": "1.1.27", + "lolex": "2.7.1", + "path-to-regexp": "1.7.0", + "text-encoding": "0.6.4" }, "dependencies": { "isarray": { @@ -9342,8 +9432,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" + "encoding": "0.1.12", + "is-stream": "1.1.0" } }, "nodemon": { @@ -9351,16 +9441,16 @@ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.3.tgz", "integrity": "sha512-XdVfAjGlDKU2nqoGgycxTndkJ5fdwvWJ/tlMGk2vHxMZBrSPVh86OM6z7viAv8BBJWjMgeuYQBofzr6LUoi+7g==", "requires": { - "chokidar": "^2.0.2", - "debug": "^3.1.0", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.0", - "semver": "^5.5.0", - "supports-color": "^5.2.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.2", - "update-notifier": "^2.3.0" + "chokidar": "2.0.4", + "debug": "3.1.0", + "ignore-by-default": "1.0.1", + "minimatch": "3.0.4", + "pstree.remy": "1.1.0", + "semver": "5.5.1", + "supports-color": "5.5.0", + "touch": "3.1.0", + "undefsafe": "2.0.2", + "update-notifier": "2.5.0" }, "dependencies": { "anymatch": { @@ -9387,16 +9477,16 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -9404,7 +9494,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9414,19 +9504,19 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.2", + "fsevents": "1.2.4", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "lodash.debounce": "4.0.8", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.1.0" } }, "debug": { @@ -9472,7 +9562,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -9480,7 +9570,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -9488,7 +9578,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.5" } } } @@ -9498,7 +9588,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -9506,7 +9596,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.5" } } } @@ -9516,9 +9606,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -9548,7 +9638,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -9556,7 +9646,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9577,7 +9667,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9588,8 +9678,8 @@ "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "nan": "2.10.0", + "node-pre-gyp": "0.10.0" }, "dependencies": { "abbrev": { @@ -9611,8 +9701,8 @@ "bundled": true, "optional": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "delegates": "1.0.0", + "readable-stream": "2.3.6" } }, "balanced-match": { @@ -9623,7 +9713,7 @@ "version": "1.1.11", "bundled": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -9677,7 +9767,7 @@ "bundled": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "2.2.4" } }, "fs.realpath": { @@ -9690,14 +9780,14 @@ "bundled": true, "optional": true, "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" } }, "glob": { @@ -9705,12 +9795,12 @@ "bundled": true, "optional": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "has-unicode": { @@ -9723,7 +9813,7 @@ "bundled": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": "2.1.2" } }, "ignore-walk": { @@ -9731,7 +9821,7 @@ "bundled": true, "optional": true, "requires": { - "minimatch": "^3.0.4" + "minimatch": "3.0.4" } }, "inflight": { @@ -9739,8 +9829,8 @@ "bundled": true, "optional": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -9756,7 +9846,7 @@ "version": "1.0.0", "bundled": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "isarray": { @@ -9768,7 +9858,7 @@ "version": "3.0.4", "bundled": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -9779,8 +9869,8 @@ "version": "2.2.4", "bundled": true, "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, "minizlib": { @@ -9788,7 +9878,7 @@ "bundled": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "2.2.4" } }, "mkdirp": { @@ -9808,9 +9898,9 @@ "bundled": true, "optional": true, "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "debug": "2.6.9", + "iconv-lite": "0.4.21", + "sax": "1.2.4" } }, "node-pre-gyp": { @@ -9818,16 +9908,16 @@ "bundled": true, "optional": true, "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.2.0", + "nopt": "4.0.1", + "npm-packlist": "1.1.10", + "npmlog": "4.1.2", + "rc": "1.2.7", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "4.4.1" } }, "nopt": { @@ -9835,8 +9925,8 @@ "bundled": true, "optional": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "abbrev": "1.1.1", + "osenv": "0.1.5" } }, "npm-bundled": { @@ -9849,8 +9939,8 @@ "bundled": true, "optional": true, "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" } }, "npmlog": { @@ -9858,10 +9948,10 @@ "bundled": true, "optional": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, "number-is-nan": { @@ -9877,7 +9967,7 @@ "version": "1.4.0", "bundled": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "os-homedir": { @@ -9895,8 +9985,8 @@ "bundled": true, "optional": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, "path-is-absolute": { @@ -9914,10 +10004,10 @@ "bundled": true, "optional": true, "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "deep-extend": "0.5.1", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" }, "dependencies": { "minimist": { @@ -9932,13 +10022,13 @@ "bundled": true, "optional": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "rimraf": { @@ -9946,7 +10036,7 @@ "bundled": true, "optional": true, "requires": { - "glob": "^7.0.5" + "glob": "7.1.2" } }, "safe-buffer": { @@ -9982,9 +10072,9 @@ "version": "1.0.2", "bundled": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "string_decoder": { @@ -9992,14 +10082,14 @@ "bundled": true, "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.1" } }, "strip-ansi": { "version": "3.0.1", "bundled": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-json-comments": { @@ -10012,13 +10102,13 @@ "bundled": true, "optional": true, "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, "util-deprecate": { @@ -10031,7 +10121,7 @@ "bundled": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "1.0.2" } }, "wrappy": { @@ -10073,7 +10163,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -10081,7 +10171,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -10089,9 +10179,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "is-extglob": { @@ -10140,19 +10230,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "nan": { @@ -10171,7 +10261,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -10181,7 +10271,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", "requires": { - "abbrev": "1" + "abbrev": "1.1.1" } }, "normalize-path": { @@ -10189,7 +10279,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "^1.0.1" + "remove-trailing-separator": "1.1.0" } }, "npm-run-path": { @@ -10197,7 +10287,15 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "path-key": "^2.0.0" + "path-key": "2.0.1" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "requires": { + "boolbase": "1.0.0" } }, "number-is-nan": { @@ -10227,9 +10325,9 @@ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" }, "dependencies": { "define-property": { @@ -10237,7 +10335,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } @@ -10247,7 +10345,7 @@ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "requires": { - "isobject": "^3.0.0" + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -10263,8 +10361,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "for-own": "0.1.5", + "is-extendable": "0.1.1" } }, "object.pick": { @@ -10272,7 +10370,7 @@ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" }, "dependencies": { "isobject": { @@ -10296,7 +10394,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "optimist": { @@ -10304,8 +10402,8 @@ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "minimist": "0.0.10", + "wordwrap": "0.0.3" }, "dependencies": { "minimist": { @@ -10345,7 +10443,7 @@ "integrity": "sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I=", "dev": true, "requires": { - "shell-quote": "^1.4.2" + "shell-quote": "1.6.1" } }, "p-finally": { @@ -10359,7 +10457,7 @@ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "1.0.0" } }, "p-locate": { @@ -10368,7 +10466,7 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "1.3.0" } }, "p-try": { @@ -10382,10 +10480,10 @@ "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" + "got": "6.7.1", + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0", + "semver": "5.5.1" }, "dependencies": { "semver": { @@ -10407,7 +10505,7 @@ "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", "dev": true, "requires": { - "path-platform": "~0.11.15" + "path-platform": "0.11.15" } }, "parse-asn1": { @@ -10416,11 +10514,11 @@ "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "dev": true, "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" + "asn1.js": "4.9.2", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" } }, "parse-glob": { @@ -10429,10 +10527,18 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "requires": { + "@types/node": "10.9.4" } }, "parsejson": { @@ -10441,7 +10547,7 @@ "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", "dev": true, "requires": { - "better-assert": "~1.0.0" + "better-assert": "1.0.2" } }, "parseqs": { @@ -10450,7 +10556,7 @@ "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", "dev": true, "requires": { - "better-assert": "~1.0.0" + "better-assert": "1.0.2" } }, "parseuri": { @@ -10459,7 +10565,7 @@ "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", "dev": true, "requires": { - "better-assert": "~1.0.0" + "better-assert": "1.0.2" } }, "parseurl": { @@ -10532,7 +10638,7 @@ "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "requires": { - "through": "~2.3" + "through": "2.3.8" } }, "pbkdf2": { @@ -10541,11 +10647,11 @@ "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", "dev": true, "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" } }, "pend": { @@ -10567,9 +10673,9 @@ "dev": true, "optional": true, "requires": { - "phantomjs-prebuilt": "^2.1.16", - "split": "^1.0.1", - "winston": "^2.4.0" + "phantomjs-prebuilt": "2.1.16", + "split": "1.0.1", + "winston": "2.4.4" } }, "phantomjs-prebuilt": { @@ -10579,15 +10685,15 @@ "dev": true, "optional": true, "requires": { - "es6-promise": "^4.0.3", - "extract-zip": "^1.6.5", - "fs-extra": "^1.0.0", - "hasha": "^2.2.0", - "kew": "^0.7.0", - "progress": "^1.1.8", - "request": "^2.81.0", - "request-progress": "^2.0.1", - "which": "^1.2.10" + "es6-promise": "4.2.4", + "extract-zip": "1.6.7", + "fs-extra": "1.0.0", + "hasha": "2.2.0", + "kew": "0.7.0", + "progress": "1.1.8", + "request": "2.88.0", + "request-progress": "2.0.1", + "which": "1.3.1" } }, "pify": { @@ -10609,7 +10715,7 @@ "dev": true, "optional": true, "requires": { - "pinkie": "^2.0.0" + "pinkie": "2.0.4" } }, "pkg-dir": { @@ -10618,7 +10724,7 @@ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { - "find-up": "^2.1.0" + "find-up": "2.1.0" } }, "posix-character-classes": { @@ -10642,6 +10748,19 @@ "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" }, + "probe-image-size": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-4.0.0.tgz", + "integrity": "sha512-nm7RvWUxps+2+jZKNLkd04mNapXNariS6G5WIEVzvAqjx7EUuKcY1Dp3e6oUK7GLwzJ+3gbSbPLFAASHFQrPcQ==", + "requires": { + "any-promise": "1.3.0", + "deepmerge": "2.1.1", + "inherits": "2.0.3", + "next-tick": "1.0.0", + "request": "2.88.0", + "stream-parser": "0.3.1" + } + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -10665,7 +10784,7 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "requires": { - "asap": "~2.0.3" + "asap": "2.0.6" }, "dependencies": { "asap": { @@ -10680,7 +10799,7 @@ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.1.2", "ipaddr.js": "1.8.0" } }, @@ -10689,7 +10808,7 @@ "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", "requires": { - "event-stream": "~3.3.0" + "event-stream": "3.3.4" } }, "pseudomap": { @@ -10707,7 +10826,7 @@ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.0.tgz", "integrity": "sha512-q5I5vLRMVtdWa8n/3UEzZX7Lfghzrg9eG2IKk2ENLSofKRCXVqMvMUHxCKgXNaqH/8ebhBxrqftHWnyTFweJ5Q==", "requires": { - "ps-tree": "^1.1.0" + "ps-tree": "1.1.0" } }, "public-encrypt": { @@ -10716,11 +10835,11 @@ "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", "dev": true, "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.6" } }, "punycode": { @@ -10762,8 +10881,8 @@ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "3.0.0", + "kind-of": "4.0.0" }, "dependencies": { "is-number": { @@ -10772,7 +10891,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -10781,7 +10900,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.5" } } } @@ -10792,7 +10911,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.5" } } } @@ -10803,7 +10922,7 @@ "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", "dev": true, "requires": { - "safe-buffer": "^5.1.0" + "safe-buffer": "5.1.1" } }, "randomfill": { @@ -10812,8 +10931,8 @@ "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", "dev": true, "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" + "randombytes": "2.0.6", + "safe-buffer": "5.1.1" } }, "range-parser": { @@ -10837,7 +10956,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } } } @@ -10847,10 +10966,10 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "deep-extend": "0.6.0", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" }, "dependencies": { "minimist": { @@ -10871,7 +10990,7 @@ "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", "dev": true, "requires": { - "readable-stream": "^2.0.2" + "readable-stream": "2.3.3" } }, "readable-stream": { @@ -10879,13 +10998,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" }, "dependencies": { "inherits": { @@ -10900,10 +11019,10 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" } }, "regenerator-runtime": { @@ -10917,7 +11036,7 @@ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "is-equal-shallow": "^0.1.3" + "is-equal-shallow": "0.1.3" } }, "regex-not": { @@ -10925,8 +11044,8 @@ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" } }, "registry-auth-token": { @@ -10934,8 +11053,8 @@ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" + "rc": "1.2.8", + "safe-buffer": "5.1.1" } }, "registry-url": { @@ -10943,7 +11062,7 @@ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "requires": { - "rc": "^1.0.1" + "rc": "1.2.8" } }, "remove-trailing-separator": { @@ -10966,7 +11085,7 @@ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "requires": { - "is-finite": "^1.0.0" + "is-finite": "1.0.2" } }, "request": { @@ -10974,26 +11093,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" + "aws-sign2": "0.7.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.1.0", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.19", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.4.3", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" }, "dependencies": { "extend": { @@ -11013,7 +11132,7 @@ "resolved": "https://registry.npmjs.org/request-debug/-/request-debug-0.2.0.tgz", "integrity": "sha1-/AVOyBcYGwTKQaBSwTb2HEirr3g=", "requires": { - "stringify-clone": "^1.0.0" + "stringify-clone": "1.1.1" }, "dependencies": { "stringify-clone": { @@ -11030,7 +11149,7 @@ "dev": true, "optional": true, "requires": { - "throttleit": "^1.0.0" + "throttleit": "1.0.0" } }, "requires-port": { @@ -11044,7 +11163,7 @@ "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", "dev": true, "requires": { - "path-parse": "^1.0.5" + "path-parse": "1.0.5" } }, "resolve-url": { @@ -11063,7 +11182,7 @@ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "optional": true, "requires": { - "align-text": "^0.1.1" + "align-text": "0.1.4" } }, "rimraf": { @@ -11072,7 +11191,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "^7.0.5" + "glob": "7.1.2" } }, "ripemd160": { @@ -11081,8 +11200,8 @@ "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", "dev": true, "requires": { - "hash-base": "^2.0.0", - "inherits": "^2.0.1" + "hash-base": "2.0.2", + "inherits": "2.0.3" }, "dependencies": { "inherits": { @@ -11108,7 +11227,7 @@ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "requires": { - "ret": "~0.1.10" + "ret": "0.1.15" } }, "safer-buffer": { @@ -11133,7 +11252,7 @@ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "requires": { - "semver": "^5.0.3" + "semver": "5.5.1" }, "dependencies": { "semver": { @@ -11149,18 +11268,18 @@ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", + "http-errors": "1.6.3", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" }, "dependencies": { "encodeurl": { @@ -11180,10 +11299,10 @@ "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", "requires": { - "etag": "~1.8.1", + "etag": "1.8.1", "fresh": "0.5.2", "ms": "2.1.1", - "parseurl": "~1.3.2", + "parseurl": "1.3.2", "safe-buffer": "5.1.1" }, "dependencies": { @@ -11199,9 +11318,9 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", "send": "0.16.2" }, "dependencies": { @@ -11222,10 +11341,10 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" }, "dependencies": { "extend-shallow": { @@ -11233,7 +11352,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -11249,8 +11368,8 @@ "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "2.0.3", + "safe-buffer": "5.1.1" }, "dependencies": { "inherits": { @@ -11267,8 +11386,8 @@ "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", "dev": true, "requires": { - "json-stable-stringify": "~0.0.0", - "sha.js": "~2.4.4" + "json-stable-stringify": "0.0.1", + "sha.js": "2.4.9" } }, "shebang-command": { @@ -11276,7 +11395,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "1.0.0" } }, "shebang-regex": { @@ -11290,10 +11409,10 @@ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", "dev": true, "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" } }, "shelljs": { @@ -11318,14 +11437,14 @@ "integrity": "sha512-vFTrO9Wt0ECffDYIPSP/E5bBugt0UjcBQOfQUMh66xzkyPEnhl/vM2LRZi2ajuTdkH07sA6DzrM6KvdvGIH8xw==", "dev": true, "requires": { - "diff": "^3.1.0", + "diff": "3.3.0", "formatio": "1.2.0", - "lolex": "^1.6.0", - "native-promise-only": "^0.8.1", - "path-to-regexp": "^1.7.0", - "samsam": "^1.1.3", + "lolex": "1.6.0", + "native-promise-only": "0.8.1", + "path-to-regexp": "1.7.0", + "samsam": "1.2.1", "text-encoding": "0.6.4", - "type-detect": "^4.0.0" + "type-detect": "4.0.3" }, "dependencies": { "diff": { @@ -11340,7 +11459,7 @@ "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", "dev": true, "requires": { - "samsam": "1.x" + "samsam": "1.2.1" } }, "isarray": { @@ -11402,9 +11521,9 @@ "integrity": "sha1-DkJTvR7Or/pX4hZLyBfCx7TvORI=", "dev": true, "requires": { - "lodash": "^4.16.3", - "sinon": "^4.4.2", - "urijs": "^1.18.2" + "lodash": "4.17.4", + "sinon": "4.5.0", + "urijs": "1.19.1" }, "dependencies": { "diff": { @@ -11425,13 +11544,13 @@ "integrity": "sha512-trdx+mB0VBBgoYucy6a9L7/jfQOmvGeaKZT4OOJ+lPAtI8623xyGr8wLiE4eojzBS8G9yXbhx42GHUOVLr4X2w==", "dev": true, "requires": { - "@sinonjs/formatio": "^2.0.0", - "diff": "^3.1.0", - "lodash.get": "^4.4.2", - "lolex": "^2.2.0", - "nise": "^1.2.0", - "supports-color": "^5.1.0", - "type-detect": "^4.0.5" + "@sinonjs/formatio": "2.0.0", + "diff": "3.5.0", + "lodash.get": "4.4.2", + "lolex": "2.7.1", + "nise": "1.4.3", + "supports-color": "5.5.0", + "type-detect": "4.0.6" } }, "supports-color": { @@ -11440,7 +11559,7 @@ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -11455,14 +11574,14 @@ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.2", + "use": "3.1.1" }, "dependencies": { "define-property": { @@ -11478,7 +11597,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -11488,9 +11607,9 @@ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" }, "dependencies": { "define-property": { @@ -11498,7 +11617,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "is-accessor-descriptor": { @@ -11506,7 +11625,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-data-descriptor": { @@ -11514,7 +11633,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.2" } }, "is-descriptor": { @@ -11522,9 +11641,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "isobject": { @@ -11544,7 +11663,7 @@ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "requires": { - "kind-of": "^3.2.0" + "kind-of": "3.2.2" } }, "socket.io": { @@ -11693,11 +11812,11 @@ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "atob": "2.1.2", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" } }, "source-map-url": { @@ -11712,7 +11831,7 @@ "dev": true, "optional": true, "requires": { - "through": "2" + "through": "2.3.8" } }, "split-string": { @@ -11720,7 +11839,7 @@ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "requires": { - "extend-shallow": "^3.0.0" + "extend-shallow": "3.0.2" } }, "sshpk": { @@ -11728,15 +11847,15 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" } }, "stack-trace": { @@ -11751,8 +11870,8 @@ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" + "define-property": "0.2.5", + "object-copy": "0.1.0" }, "dependencies": { "define-property": { @@ -11760,7 +11879,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } @@ -11776,8 +11895,8 @@ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", "dev": true, "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" + "inherits": "2.0.3", + "readable-stream": "2.3.3" }, "dependencies": { "inherits": { @@ -11793,7 +11912,7 @@ "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "requires": { - "duplexer": "~0.1.1" + "duplexer": "0.1.1" } }, "stream-combiner2": { @@ -11802,8 +11921,8 @@ "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", "dev": true, "requires": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" + "duplexer2": "0.1.4", + "readable-stream": "2.3.3" } }, "stream-http": { @@ -11812,11 +11931,11 @@ "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", "dev": true, "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.3", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" }, "dependencies": { "inherits": { @@ -11827,14 +11946,22 @@ } } }, + "stream-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", + "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", + "requires": { + "debug": "2.6.9" + } + }, "stream-splicer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" + "inherits": "2.0.3", + "readable-stream": "2.3.3" }, "dependencies": { "inherits": { @@ -11855,8 +11982,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" }, "dependencies": { "ansi-regex": { @@ -11869,7 +11996,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" } } } @@ -11879,7 +12006,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.1" } }, "strip-ansi": { @@ -11887,7 +12014,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-eof": { @@ -11907,7 +12034,7 @@ "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", "dev": true, "requires": { - "minimist": "^1.1.0" + "minimist": "1.2.0" }, "dependencies": { "minimist": { @@ -11924,8 +12051,8 @@ "integrity": "sha1-hQp5X5Bo0vrxngF5n/CZYuDOQ74=", "dev": true, "requires": { - "methods": "1.x", - "superagent": "^1.7.2" + "methods": "1.1.2", + "superagent": "1.8.5" }, "dependencies": { "async": { @@ -11940,7 +12067,7 @@ "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, "requires": { - "delayed-stream": "~1.0.0" + "delayed-stream": "1.0.0" } }, "component-emitter": { @@ -11988,9 +12115,9 @@ "integrity": "sha1-01vGLn+8KTeuePlIqqDTjZBgdXc=", "dev": true, "requires": { - "async": "^1.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.3" + "async": "1.5.2", + "combined-stream": "1.0.5", + "mime-types": "2.1.16" } }, "formidable": { @@ -12035,7 +12162,7 @@ "integrity": "sha1-K4WKUuXs1RbbiXrCvodIeDBpjiM=", "dev": true, "requires": { - "mime-db": "~1.29.0" + "mime-db": "1.29.0" } }, "ms": { @@ -12056,10 +12183,10 @@ "integrity": "sha1-a2eYPCA1fO/QfwFlABoW1xDZEHg=", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "core-util-is": "1.0.2", + "inherits": "2.0.3", "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "string_decoder": "0.10.31" } }, "reduce-component": { @@ -12080,13 +12207,13 @@ "integrity": "sha1-HA3cOvMOgOuE68BcshItqP6UC1U=", "dev": true, "requires": { - "component-emitter": "~1.2.0", + "component-emitter": "1.2.1", "cookiejar": "2.0.6", - "debug": "2", + "debug": "2.6.8", "extend": "3.0.0", "form-data": "1.0.0-rc3", - "formidable": "~1.0.14", - "methods": "~1.1.1", + "formidable": "1.0.17", + "methods": "1.1.2", "mime": "1.3.4", "qs": "2.3.3", "readable-stream": "1.0.27-1", @@ -12106,7 +12233,7 @@ "integrity": "sha1-HtkmbE1AvnXcVb+bsct3Biu5bKE=", "dev": true, "requires": { - "acorn": "^4.0.3" + "acorn": "4.0.13" } }, "term-size": { @@ -12114,7 +12241,7 @@ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "requires": { - "execa": "^0.7.0" + "execa": "0.7.0" } }, "text-encoding": { @@ -12123,6 +12250,11 @@ "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", "dev": true }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" + }, "throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", @@ -12141,8 +12273,8 @@ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" + "readable-stream": "2.3.3", + "xtend": "4.0.1" } }, "timed-out": { @@ -12156,7 +12288,7 @@ "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", "dev": true, "requires": { - "process": "~0.11.0" + "process": "0.11.10" } }, "tmp": { @@ -12165,7 +12297,7 @@ "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", "dev": true, "requires": { - "os-tmpdir": "~1.0.1" + "os-tmpdir": "1.0.2" } }, "to-array": { @@ -12196,7 +12328,7 @@ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "to-regex": { @@ -12204,10 +12336,10 @@ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" } }, "to-regex-range": { @@ -12215,8 +12347,8 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "3.0.0", + "repeat-string": "1.6.1" }, "dependencies": { "is-number": { @@ -12224,7 +12356,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } } } @@ -12234,7 +12366,7 @@ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", "requires": { - "nopt": "~1.0.10" + "nopt": "1.0.10" } }, "tough-cookie": { @@ -12242,8 +12374,8 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" + "psl": "1.1.29", + "punycode": "1.4.1" }, "dependencies": { "punycode": { @@ -12269,7 +12401,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.1.1" } }, "tweetnacl": { @@ -12290,7 +12422,7 @@ "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "requires": { "media-typer": "0.3.0", - "mime-types": "~2.1.18" + "mime-types": "2.1.19" } }, "typedarray": { @@ -12305,9 +12437,9 @@ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "optional": true, "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" } }, "uglify-to-browserify": { @@ -12333,7 +12465,7 @@ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", "requires": { - "debug": "^2.2.0" + "debug": "2.6.9" } }, "unicode-5.2.0": { @@ -12347,10 +12479,10 @@ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" }, "dependencies": { "extend-shallow": { @@ -12358,7 +12490,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "set-value": { @@ -12366,10 +12498,10 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" } } } @@ -12379,7 +12511,7 @@ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "requires": { - "crypto-random-string": "^1.0.0" + "crypto-random-string": "1.0.0" } }, "unpipe": { @@ -12392,8 +12524,8 @@ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" + "has-value": "0.3.1", + "isobject": "3.0.1" }, "dependencies": { "has-value": { @@ -12401,9 +12533,9 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" }, "dependencies": { "isobject": { @@ -12443,16 +12575,16 @@ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" + "boxen": "1.3.0", + "chalk": "2.4.1", + "configstore": "3.1.2", + "import-lazy": "2.1.0", + "is-ci": "1.2.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" }, "dependencies": { "ansi-styles": { @@ -12460,7 +12592,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.2" } }, "chalk": { @@ -12468,9 +12600,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" } }, "supports-color": { @@ -12478,7 +12610,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -12517,8 +12649,8 @@ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz", "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==", "requires": { - "querystringify": "^2.0.0", - "requires-port": "^1.0.0" + "querystringify": "2.0.0", + "requires-port": "1.0.0" } }, "url-parse-lax": { @@ -12526,7 +12658,7 @@ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "requires": { - "prepend-http": "^1.0.1" + "prepend-http": "1.0.4" } }, "use": { @@ -12540,8 +12672,8 @@ "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", "dev": true, "requires": { - "lru-cache": "2.2.x", - "tmp": "0.0.x" + "lru-cache": "2.2.4", + "tmp": "0.0.31" }, "dependencies": { "lru-cache": { @@ -12604,9 +12736,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "^1.0.0", + "assert-plus": "1.0.0", "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "extsprintf": "1.3.0" } }, "vm-browserify": { @@ -12630,13 +12762,13 @@ "integrity": "sha512-7jWG0c3cKKm2hKScnSAMUEUjRJKXUShwMPk0ASVhICycQhwND3IMAdhJYmc1mxxKzBUJTSF5HZizfrKrS6BzkA==", "dev": true, "requires": { - "anymatch": "^1.3.0", - "browserify": "^16.1.0", - "chokidar": "^1.0.0", - "defined": "^1.0.0", - "outpipe": "^1.1.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" + "anymatch": "1.3.2", + "browserify": "16.2.2", + "chokidar": "1.7.0", + "defined": "1.0.0", + "outpipe": "1.1.1", + "through2": "2.0.3", + "xtend": "4.0.1" }, "dependencies": { "browserify": { @@ -12645,54 +12777,54 @@ "integrity": "sha512-fMES05wq1Oukts6ksGUU2TMVHHp06LyQt0SIwbXIHm7waSrQmNBZePsU0iM/4f94zbvb/wHma+D1YrdzWYnF/A==", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^1.11.0", - "browserify-zlib": "~0.2.0", - "buffer": "^5.0.2", - "cached-path-relative": "^1.0.0", - "concat-stream": "^1.6.0", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.0", - "domain-browser": "^1.2.0", - "duplexer2": "~0.1.2", - "events": "^2.0.0", - "glob": "^7.1.0", - "has": "^1.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.0.0", - "labeled-stream-splicer": "^2.0.0", - "mkdirp": "^0.5.0", - "module-deps": "^6.0.0", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "~0.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum": "^1.0.0", - "shell-quote": "^1.6.1", - "stream-browserify": "^2.0.0", - "stream-http": "^2.0.0", - "string_decoder": "^1.1.1", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", + "JSONStream": "1.3.2", + "assert": "1.4.1", + "browser-pack": "6.0.3", + "browser-resolve": "1.11.2", + "browserify-zlib": "0.2.0", + "buffer": "5.0.8", + "cached-path-relative": "1.0.1", + "concat-stream": "1.6.2", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "defined": "1.0.0", + "deps-sort": "2.0.0", + "domain-browser": "1.2.0", + "duplexer2": "0.1.4", + "events": "2.1.0", + "glob": "7.1.2", + "has": "1.0.1", + "htmlescape": "1.1.1", + "https-browserify": "1.0.0", + "inherits": "2.0.3", + "insert-module-globals": "7.0.1", + "labeled-stream-splicer": "2.0.0", + "mkdirp": "0.5.1", + "module-deps": "6.1.0", + "os-browserify": "0.3.0", + "parents": "1.0.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "read-only-stream": "2.0.0", + "readable-stream": "2.3.3", + "resolve": "1.5.0", + "shasum": "1.0.2", + "shell-quote": "1.6.1", + "stream-browserify": "2.0.1", + "stream-http": "2.8.0", + "string_decoder": "1.1.1", + "subarg": "1.0.0", + "syntax-error": "1.3.0", + "through2": "2.0.3", + "timers-browserify": "1.4.2", "tty-browserify": "0.0.1", - "url": "~0.11.0", - "util": "~0.10.1", - "vm-browserify": "^1.0.0", - "xtend": "^4.0.0" + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "1.1.0", + "xtend": "4.0.1" } }, "concat-stream": { @@ -12701,10 +12833,10 @@ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "buffer-from": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" } }, "detective": { @@ -12713,9 +12845,9 @@ "integrity": "sha512-TFHMqfOvxlgrfVzTEkNBSh9SvSNX/HfF4OFI2QFGCyPm02EsyILqnUeb5P6q7JZ3SFNTBL5t2sePRgrN4epUWQ==", "dev": true, "requires": { - "acorn-node": "^1.3.0", - "defined": "^1.0.0", - "minimist": "^1.1.1" + "acorn-node": "1.5.2", + "defined": "1.0.0", + "minimist": "1.2.0" }, "dependencies": { "minimist": { @@ -12765,21 +12897,21 @@ "integrity": "sha512-NPs5N511VD1rrVJihSso/LiBShRbJALYBKzDW91uZYy7BpjnO4bGnZL3HjZ9yKcFdZUWwaYjDz9zxbuP7vKMuQ==", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "browser-resolve": "^1.7.0", - "cached-path-relative": "^1.0.0", - "concat-stream": "~1.6.0", - "defined": "^1.0.0", - "detective": "^5.0.2", - "duplexer2": "^0.1.2", - "inherits": "^2.0.1", - "parents": "^1.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.4.0", - "stream-combiner2": "^1.1.1", - "subarg": "^1.0.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" + "JSONStream": "1.3.2", + "browser-resolve": "1.11.2", + "cached-path-relative": "1.0.1", + "concat-stream": "1.6.2", + "defined": "1.0.0", + "detective": "5.1.0", + "duplexer2": "0.1.4", + "inherits": "2.0.3", + "parents": "1.0.1", + "readable-stream": "2.3.3", + "resolve": "1.5.0", + "stream-combiner2": "1.1.1", + "subarg": "1.0.0", + "through2": "2.0.3", + "xtend": "4.0.1" } }, "punycode": { @@ -12794,7 +12926,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.1" } }, "tty-browserify": { @@ -12837,7 +12969,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } }, "widest-line": { @@ -12845,7 +12977,7 @@ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "requires": { - "string-width": "^2.1.1" + "string-width": "2.1.1" } }, "window-size": { @@ -12861,12 +12993,12 @@ "dev": true, "optional": true, "requires": { - "async": "~1.0.0", - "colors": "1.0.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "stack-trace": "0.0.x" + "async": "1.0.0", + "colors": "1.0.3", + "cycle": "1.0.3", + "eyes": "0.1.8", + "isstream": "0.1.2", + "stack-trace": "0.0.10" }, "dependencies": { "async": { @@ -12901,9 +13033,9 @@ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" } }, "ws": { @@ -12912,8 +13044,8 @@ "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", "dev": true, "requires": { - "options": ">=0.0.5", - "ultron": "1.0.x" + "options": "0.0.6", + "ultron": "1.0.2" } }, "wtf-8": { @@ -12950,9 +13082,9 @@ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "optional": true, "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", "window-size": "0.1.0" } }, @@ -12963,7 +13095,7 @@ "dev": true, "optional": true, "requires": { - "fd-slicer": "~1.0.1" + "fd-slicer": "1.0.1" } }, "yeast": { diff --git a/package.json b/package.json index 5e1e30e..2a95741 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "repository": "https://github.com/ampproject/ampbench", "private": true, "scripts": { + "preinstall": "cd amp-story/linter && npm install", "start": "node ampbench_main.js", "monitor": "nodemon --watch . --watch views/index.hbs --watch views/results.hbs --ignore 'validator/*.*'", "deploy": "gcloud app deploy app.yaml", @@ -15,8 +16,9 @@ "author": "The AMP HTML Authors", "license": "Apache Version 2.0", "dependencies": { - "amphtml-validator": "^1.0.23", + "amp-story-linter": "file:amp-story/linter", "amp-toolbox-cache-url": "^0.1.0", + "amphtml-validator": "^1.0.23", "babel-core": "^6.26.3", "body-parser": "^1.18.3", "cheerio": "^0.20.0", diff --git a/views/results.hbs b/views/results.hbs index 4011dbc..c103ed1 100644 --- a/views/results.hbs +++ b/views/results.hbs @@ -253,6 +253,38 @@ + +
+
AMP Story
+
+ +
+ + + + + + + + + + {{#variant_is_amp_story}} + + + + + + {{/variant_is_amp_story}} + {{^variant_is_amp_story}} + + + + + + {{/variant_is_amp_story}} + +
CheckStatusResults
Thumbnails okay?{{{amp_story_thumbnails_status}}}{{amp_story_thumbnails.message}}
URL is not AMP Story
+
AMP Validator Output
From 249e7f9148c368c1adea4ade828b5278342d841f Mon Sep 17 00:00:00 2001 From: Michael Stillwell Date: Tue, 18 Sep 2018 18:00:23 +0100 Subject: [PATCH 2/4] eslint --fix + small no-sequences-avoiding change --- ampbench_handlers.js | 15 +++++++++------ ampbench_lib.js | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ampbench_handlers.js b/ampbench_handlers.js index 3318886..1a5f8d3 100644 --- a/ampbench_handlers.js +++ b/ampbench_handlers.js @@ -414,7 +414,7 @@ function validate(route, user_agent, user_agent_name, req, res, on_validate_call const testContext = { headers: { - "user-agent": user_agent + 'user-agent': user_agent }, url: url_to_validate, $: http_response.$ @@ -489,9 +489,9 @@ function validate(route, user_agent, user_agent_name, req, res, on_validate_call check_robots_txt_return: check_robots_txt_return, check_google_amp_cache_status_css: check_google_amp_cache_status_css, check_google_amp_cache_return: check_google_amp_cache_return, - variant_is_amp_story: testAmpStory.then(res => res.status !== "FAIL"), + variant_is_amp_story: testAmpStory.then((res) => res.status !== 'FAIL'), amp_story_thumbnails: testThumbnails, - amp_story_thumbnails_status: testThumbnails.then(res => get_check_status_css(res.status)), + amp_story_thumbnails_status: testThumbnails.then((res) => get_check_status_css(res.status)), // check_redirects_return: check_redirects_return, http_redirect_status: get_check_status_css(http_redirect_status), http_redirect_route: http_redirect_route, @@ -502,10 +502,13 @@ function validate(route, user_agent, user_agent_name, req, res, on_validate_call // The values of __ret can be promises. Use Promise.all() to resolve these in parallel. const keys = Object.keys(__ret); - const kvPromises = keys.map(k => Promise.resolve(__ret[k]).then(v => [k, v])); + const kvPromises = keys.map((k) => Promise.resolve(__ret[k]).then((v) => [k, v])); Promise.all(kvPromises) - .then(kvs => (kvs.reduce((a, kv) => (a[kv[0]] = kv[1], a), {}))) - .then(ret => on_validate_callback(ret)) // DONE!!! + .then((kvs) => (kvs.reduce((a, kv) => { + a[kv[0]] = kv[1]; + return a; + }, {}))) + .then((ret) => on_validate_callback(ret)); } // console.log(`### [DANGLING!][http_response.statusIsOK: ${http_response.statusIsOK()}]`); diff --git a/ampbench_lib.js b/ampbench_lib.js index 49788fa..9713cc9 100644 --- a/ampbench_lib.js +++ b/ampbench_lib.js @@ -157,7 +157,7 @@ class HttpResponse { if (this.http_response_body) { this._$ = cheerio.load(this.http_response_body); } else { - this._$ = cheerio.load(""); + this._$ = cheerio.load(''); } } return this._$; From c6837960e7dcea58bb22f98dfbaf7132b4495b0b Mon Sep 17 00:00:00 2001 From: Pieter Greyling Date: Tue, 18 Sep 2018 19:29:11 +0100 Subject: [PATCH 3/4] commit package updates --- package-lock.json | 2220 ++++++++++++++++++--------------------------- 1 file changed, 872 insertions(+), 1348 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9595613..847aff2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", "requires": { - "@babel/highlight": "7.0.0" + "@babel/highlight": "^7.0.0" } }, "@babel/highlight": { @@ -17,9 +17,9 @@ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", "requires": { - "chalk": "2.4.1", - "esutils": "2.0.2", - "js-tokens": "4.0.0" + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" } }, "abab": { @@ -38,7 +38,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "2.1.20", + "mime-types": "~2.1.18", "negotiator": "0.6.1" } }, @@ -53,7 +53,7 @@ "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", "optional": true, "requires": { - "acorn": "2.7.0" + "acorn": "^2.1.0" } }, "acorn-jsx": { @@ -61,7 +61,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-4.1.1.tgz", "integrity": "sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw==", "requires": { - "acorn": "5.7.3" + "acorn": "^5.0.3" }, "dependencies": { "acorn": { @@ -76,10 +76,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "ajv-keywords": { @@ -92,8 +92,8 @@ "resolved": "https://registry.npmjs.org/amp-toolbox-cache-url/-/amp-toolbox-cache-url-0.1.0.tgz", "integrity": "sha512-fT7pXZDx15dAVgZB6jP1WHltR+SMOPpoaG/qhOuuUPH8lFTFivQ2+owyLYKAfwkui6Ia3lYqKeTH7UB0VQXZzg==", "requires": { - "mime-types": "2.1.20", - "punycode": "2.1.1" + "mime-types": "^2.1.18", + "punycode": "^2.1.0" } }, "amphtml-validator": { @@ -111,7 +111,7 @@ "resolved": "http://registry.npmjs.org/promise/-/promise-7.1.1.tgz", "integrity": "sha1-SJZUxpJha4qlWwck+oCbt9tJxb8=", "requires": { - "asap": "2.0.6" + "asap": "~2.0.3" } } } @@ -121,7 +121,7 @@ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "requires": { - "string-width": "2.1.1" + "string-width": "^2.0.0" } }, "ansi-escapes": { @@ -139,7 +139,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "anymatch": { @@ -147,8 +147,8 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "requires": { - "micromatch": "3.1.10", - "normalize-path": "2.1.1" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, "argparse": { @@ -156,7 +156,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "arr-diff": { @@ -184,7 +184,7 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -212,7 +212,7 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "~2.1.0" } }, "assert-plus": { @@ -230,14 +230,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", "requires": { - "lodash": "4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - } + "lodash": "^4.17.10" } }, "async-each": { @@ -275,26 +268,21 @@ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -302,7 +290,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -310,7 +298,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -318,15 +306,10 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, @@ -336,7 +319,7 @@ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "binary-extensions": { @@ -350,25 +333,15 @@ "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", "requires": { "bytes": "3.0.0", - "content-type": "1.0.4", + "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.3", + "depd": "~1.1.2", + "http-errors": "~1.6.3", "iconv-lite": "0.4.23", - "on-finished": "2.3.0", + "on-finished": "~2.3.0", "qs": "6.5.2", "raw-body": "2.3.3", - "type-is": "1.6.16" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "requires": { - "safer-buffer": "2.1.2" - } - } + "type-is": "~1.6.16" } }, "boolbase": { @@ -381,41 +354,13 @@ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.4.1", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "1.9.3" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.5.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "3.0.0" - } - } + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" } }, "brace-expansion": { @@ -423,7 +368,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -432,16 +377,16 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.3", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { "array-unique": { @@ -454,7 +399,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -469,27 +414,15 @@ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" } }, "caller-path": { @@ -497,7 +430,7 @@ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "requires": { - "callsites": "0.2.0" + "callsites": "^0.2.0" } }, "callsites": { @@ -525,9 +458,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.5.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "chardet": { @@ -540,12 +473,12 @@ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz", "integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=", "requires": { - "css-select": "1.2.0", - "dom-serializer": "0.1.0", - "entities": "1.1.1", - "htmlparser2": "3.8.3", - "jsdom": "7.2.2", - "lodash": "4.17.11" + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "~3.8.1", + "jsdom": "^7.0.2", + "lodash": "^4.1.0" } }, "chokidar": { @@ -553,19 +486,19 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.2", - "fsevents": "1.2.4", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "lodash.debounce": "4.0.8", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.2.1", - "upath": "1.1.0" + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" } }, "ci-info": { @@ -583,10 +516,10 @@ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { "define-property": { @@ -594,13 +527,8 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, @@ -614,7 +542,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, "cli-width": { @@ -632,8 +560,8 @@ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, "color-convert": { @@ -655,21 +583,26 @@ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" }, "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "resolved": "http://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -680,12 +613,12 @@ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.3.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.3.0", - "xdg-basedir": "3.0.0" + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "connect-timeout": { @@ -693,10 +626,10 @@ "resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.9.0.tgz", "integrity": "sha1-vCcyaxIhA3FL6/oNlYurM/ZSLjo=", "requires": { - "http-errors": "1.6.3", + "http-errors": "~1.6.1", "ms": "2.0.0", - "on-finished": "2.3.0", - "on-headers": "1.0.1" + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" } }, "content-disposition": { @@ -734,17 +667,19 @@ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "requires": { - "capture-stack-trace": "1.0.1" + "capture-stack-trace": "^1.0.0" } }, "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "crypto-random-string": { @@ -757,10 +692,10 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", + "boolbase": "~1.0.0", + "css-what": "2.1", "domutils": "1.5.1", - "nth-check": "1.0.1" + "nth-check": "~1.0.1" } }, "css-what": { @@ -779,7 +714,7 @@ "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", "optional": true, "requires": { - "cssom": "0.3.4" + "cssom": "0.3.x" } }, "d": { @@ -787,7 +722,7 @@ "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "requires": { - "es5-ext": "0.10.46" + "es5-ext": "^0.10.9" } }, "dashdash": { @@ -795,7 +730,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "debug": { @@ -826,8 +761,8 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { "is-accessor-descriptor": { @@ -835,7 +770,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -843,7 +778,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -851,15 +786,10 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, @@ -868,20 +798,13 @@ "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.1", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.2" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" } }, "delayed-stream": { @@ -904,7 +827,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "requires": { - "esutils": "2.0.2" + "esutils": "^2.0.2" } }, "dom-serializer": { @@ -912,8 +835,8 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" + "domelementtype": "~1.1.1", + "entities": "~1.1.1" }, "dependencies": { "domelementtype": { @@ -933,7 +856,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", "requires": { - "domelementtype": "1.3.0" + "domelementtype": "1" } }, "domutils": { @@ -941,8 +864,8 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" + "dom-serializer": "0", + "domelementtype": "1" } }, "dot-prop": { @@ -950,7 +873,7 @@ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "requires": { - "is-obj": "1.0.1" + "is-obj": "^1.0.0" } }, "duplexer": { @@ -969,8 +892,8 @@ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "optional": true, "requires": { - "jsbn": "0.1.1", - "safer-buffer": "2.1.2" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "ee-first": { @@ -988,7 +911,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.19" + "iconv-lite": "~0.4.13" } }, "entities": { @@ -1001,9 +924,9 @@ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "next-tick": "1.0.0" + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" } }, "es6-iterator": { @@ -1011,9 +934,9 @@ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "requires": { - "d": "1.0.0", - "es5-ext": "0.10.46", - "es6-symbol": "3.1.1" + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" } }, "es6-map": { @@ -1021,12 +944,12 @@ "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", "requires": { - "d": "1.0.0", - "es5-ext": "0.10.46", - "es6-iterator": "2.0.3", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" } }, "es6-set": { @@ -1034,11 +957,11 @@ "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", "requires": { - "d": "1.0.0", - "es5-ext": "0.10.46", - "es6-iterator": "2.0.3", + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "event-emitter": "~0.3.5" } }, "es6-symbol": { @@ -1046,8 +969,8 @@ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", "requires": { - "d": "1.0.0", - "es5-ext": "0.10.46" + "d": "1", + "es5-ext": "~0.10.14" } }, "escape-html": { @@ -1066,11 +989,11 @@ "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", "optional": true, "requires": { - "esprima": "3.1.3", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.6.1" + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" } }, "eslint": { @@ -1078,44 +1001,44 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.6.0.tgz", "integrity": "sha512-/eVYs9VVVboX286mBK7bbKnO1yamUy2UCRjiY6MryhQL2PaaXCExsCQ2aO83OeYRhU2eCU/FMFP+tVMoOrzNrA==", "requires": { - "@babel/code-frame": "7.0.0", - "ajv": "6.5.3", - "chalk": "2.4.1", - "cross-spawn": "6.0.5", - "debug": "3.2.5", - "doctrine": "2.1.0", - "eslint-scope": "4.0.0", - "eslint-utils": "1.3.1", - "eslint-visitor-keys": "1.0.0", - "espree": "4.0.0", - "esquery": "1.0.1", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.3", - "globals": "11.7.0", - "ignore": "4.0.6", - "imurmurhash": "0.1.4", - "inquirer": "6.2.0", - "is-resolvable": "1.1.0", - "js-yaml": "3.12.0", - "json-stable-stringify-without-jsonify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.11", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "7.0.0", - "progress": "2.0.0", - "regexpp": "2.0.0", - "require-uncached": "1.0.3", - "semver": "5.5.1", - "strip-ansi": "4.0.0", - "strip-json-comments": "2.0.1", - "table": "4.0.3", - "text-table": "0.2.0" + "@babel/code-frame": "^7.0.0", + "ajv": "^6.5.3", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.0.0", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "imurmurhash": "^0.1.4", + "inquirer": "^6.1.0", + "is-resolvable": "^1.1.0", + "js-yaml": "^3.12.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^2.0.0", + "require-uncached": "^1.0.3", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^4.0.3", + "text-table": "^0.2.0" }, "dependencies": { "ajv": { @@ -1123,22 +1046,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", "requires": { - "fast-deep-equal": "2.0.1", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.4.1", - "uri-js": "4.2.2" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "1.0.5", - "path-key": "2.0.1", - "semver": "5.5.1", - "shebang-command": "1.2.0", - "which": "1.3.1" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "debug": { @@ -1146,7 +1057,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", "requires": { - "ms": "2.1.1" + "ms": "^2.1.1" } }, "fast-deep-equal": { @@ -1171,8 +1082,8 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", "requires": { - "esrecurse": "4.2.1", - "estraverse": "4.2.0" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "eslint-utils": { @@ -1190,8 +1101,8 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-4.0.0.tgz", "integrity": "sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg==", "requires": { - "acorn": "5.7.3", - "acorn-jsx": "4.1.1" + "acorn": "^5.6.0", + "acorn-jsx": "^4.1.1" }, "dependencies": { "acorn": { @@ -1212,7 +1123,7 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.0.0" } }, "esrecurse": { @@ -1220,7 +1131,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.1.0" } }, "estraverse": { @@ -1243,8 +1154,8 @@ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "requires": { - "d": "1.0.0", - "es5-ext": "0.10.46" + "d": "1", + "es5-ext": "~0.10.14" } }, "event-stream": { @@ -1252,14 +1163,14 @@ "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.6.tgz", "integrity": "sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g==", "requires": { - "duplexer": "0.1.1", - "flatmap-stream": "0.1.0", - "from": "0.1.7", + "duplexer": "^0.1.1", + "flatmap-stream": "^0.1.0", + "from": "^0.1.7", "map-stream": "0.0.7", - "pause-stream": "0.0.11", - "split": "1.0.1", - "stream-combiner": "0.2.2", - "through": "2.3.8" + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" } }, "execa": { @@ -1267,13 +1178,25 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } } }, "expand-brackets": { @@ -1281,13 +1204,13 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -1295,7 +1218,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -1303,7 +1226,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1313,36 +1236,36 @@ "resolved": "http://registry.npmjs.org/express/-/express-4.16.3.tgz", "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", "requires": { - "accepts": "1.3.5", + "accepts": "~1.3.5", "array-flatten": "1.1.1", "body-parser": "1.18.2", "content-disposition": "0.5.2", - "content-type": "1.0.4", + "content-type": "~1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "1.1.2", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", "finalhandler": "1.1.1", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.4", + "proxy-addr": "~2.0.3", "qs": "6.5.1", - "range-parser": "1.2.0", + "range-parser": "~1.2.0", "safe-buffer": "5.1.1", "send": "0.16.2", "serve-static": "1.13.2", "setprototypeof": "1.1.0", - "statuses": "1.4.0", - "type-is": "1.6.16", + "statuses": "~1.4.0", + "type-is": "~1.6.16", "utils-merge": "1.0.1", - "vary": "1.1.2" + "vary": "~1.1.2" }, "dependencies": { "body-parser": { @@ -1351,17 +1274,22 @@ "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", "requires": { "bytes": "3.0.0", - "content-type": "1.0.4", + "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.3", + "depd": "~1.1.1", + "http-errors": "~1.6.2", "iconv-lite": "0.4.19", - "on-finished": "2.3.0", + "on-finished": "~2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", - "type-is": "1.6.16" + "type-is": "~1.6.15" } }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", @@ -1391,7 +1319,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": "1.4.0" + "statuses": ">= 1.3.1 < 2" } }, "setprototypeof": { @@ -1401,6 +1329,11 @@ } } }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", @@ -1418,8 +1351,8 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -1427,7 +1360,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -1437,9 +1370,9 @@ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", "requires": { - "chardet": "0.7.0", - "iconv-lite": "0.4.24", - "tmp": "0.0.33" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" }, "dependencies": { "iconv-lite": { @@ -1447,7 +1380,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } } } @@ -1457,14 +1390,14 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "array-unique": { @@ -1477,7 +1410,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -1485,7 +1418,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -1493,7 +1426,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -1501,7 +1434,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -1509,9 +1442,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } @@ -1541,7 +1474,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { @@ -1549,8 +1482,8 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "requires": { - "flat-cache": "1.3.0", - "object-assign": "4.1.1" + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" } }, "file-match": { @@ -1558,7 +1491,7 @@ "resolved": "https://registry.npmjs.org/file-match/-/file-match-1.0.2.tgz", "integrity": "sha1-ycrSZdLIrfOoFHWw30dYWQafrvc=", "requires": { - "utils-extend": "1.0.8" + "utils-extend": "^1.0.6" } }, "file-system": { @@ -1566,8 +1499,8 @@ "resolved": "https://registry.npmjs.org/file-system/-/file-system-2.2.2.tgz", "integrity": "sha1-fWWDPjojR9zZVqgTxncVPtPt2Yc=", "requires": { - "file-match": "1.0.2", - "utils-extend": "1.0.8" + "file-match": "^1.0.1", + "utils-extend": "^1.0.4" } }, "fill-range": { @@ -1575,10 +1508,10 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -1586,7 +1519,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1597,19 +1530,14 @@ "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "requires": { "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.4.0", - "unpipe": "1.0.0" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" }, "dependencies": { - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", @@ -1622,10 +1550,10 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" + "circular-json": "^0.3.1", + "del": "^2.0.2", + "graceful-fs": "^4.1.2", + "write": "^0.2.1" } }, "flatmap-stream": { @@ -1638,8 +1566,8 @@ "resolved": "http://registry.npmjs.org/follow-redirects/-/follow-redirects-0.1.0.tgz", "integrity": "sha1-gzP77mXS+oWFJB67E3L8AeWx9nE=", "requires": { - "debug": "2.6.9", - "stream-consume": "0.1.1" + "debug": "^2.2.0", + "stream-consume": "^0.1.0" } }, "for-in": { @@ -1657,9 +1585,19 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.20" + "mime-types": "^2.1.12" + }, + "dependencies": { + "combined-stream": { + "version": "1.0.6", + "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "~1.0.0" + } + } } }, "forwarded": { @@ -1672,7 +1610,7 @@ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "requires": { - "map-cache": "0.2.2" + "map-cache": "^0.2.2" } }, "fresh": { @@ -1701,8 +1639,8 @@ "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", "optional": true, "requires": { - "nan": "2.11.0", - "node-pre-gyp": "0.10.0" + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" }, "dependencies": { "abbrev": { @@ -1724,8 +1662,8 @@ "bundled": true, "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "balanced-match": { @@ -1736,7 +1674,7 @@ "version": "1.1.11", "bundled": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -1790,7 +1728,7 @@ "bundled": true, "optional": true, "requires": { - "minipass": "2.2.4" + "minipass": "^2.2.1" } }, "fs.realpath": { @@ -1803,14 +1741,14 @@ "bundled": true, "optional": true, "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "glob": { @@ -1818,12 +1756,12 @@ "bundled": true, "optional": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "has-unicode": { @@ -1836,7 +1774,7 @@ "bundled": true, "optional": true, "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "^2.1.0" } }, "ignore-walk": { @@ -1844,7 +1782,7 @@ "bundled": true, "optional": true, "requires": { - "minimatch": "3.0.4" + "minimatch": "^3.0.4" } }, "inflight": { @@ -1852,8 +1790,8 @@ "bundled": true, "optional": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -1869,7 +1807,7 @@ "version": "1.0.0", "bundled": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "isarray": { @@ -1881,7 +1819,7 @@ "version": "3.0.4", "bundled": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -1892,8 +1830,8 @@ "version": "2.2.4", "bundled": true, "requires": { - "safe-buffer": "5.1.1", - "yallist": "3.0.2" + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" } }, "minizlib": { @@ -1901,7 +1839,7 @@ "bundled": true, "optional": true, "requires": { - "minipass": "2.2.4" + "minipass": "^2.2.1" } }, "mkdirp": { @@ -1921,9 +1859,9 @@ "bundled": true, "optional": true, "requires": { - "debug": "2.6.9", - "iconv-lite": "0.4.21", - "sax": "1.2.4" + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" } }, "node-pre-gyp": { @@ -1931,16 +1869,16 @@ "bundled": true, "optional": true, "requires": { - "detect-libc": "1.0.3", - "mkdirp": "0.5.1", - "needle": "2.2.0", - "nopt": "4.0.1", - "npm-packlist": "1.1.10", - "npmlog": "4.1.2", - "rc": "1.2.7", - "rimraf": "2.6.2", - "semver": "5.5.0", - "tar": "4.4.1" + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" } }, "nopt": { @@ -1948,8 +1886,8 @@ "bundled": true, "optional": true, "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" + "abbrev": "1", + "osenv": "^0.1.4" } }, "npm-bundled": { @@ -1962,8 +1900,8 @@ "bundled": true, "optional": true, "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" } }, "npmlog": { @@ -1971,10 +1909,10 @@ "bundled": true, "optional": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { @@ -1990,7 +1928,7 @@ "version": "1.4.0", "bundled": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-homedir": { @@ -2008,8 +1946,8 @@ "bundled": true, "optional": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "path-is-absolute": { @@ -2027,10 +1965,10 @@ "bundled": true, "optional": true, "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -2045,13 +1983,13 @@ "bundled": true, "optional": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "rimraf": { @@ -2059,7 +1997,7 @@ "bundled": true, "optional": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -2095,9 +2033,9 @@ "version": "1.0.2", "bundled": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { @@ -2105,14 +2043,14 @@ "bundled": true, "optional": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { "version": "3.0.1", "bundled": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-json-comments": { @@ -2125,13 +2063,13 @@ "bundled": true, "optional": true, "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.2.4", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.1", - "yallist": "3.0.2" + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" } }, "util-deprecate": { @@ -2144,7 +2082,7 @@ "bundled": true, "optional": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "wrappy": { @@ -2177,7 +2115,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "glob": { @@ -2185,12 +2123,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-parent": { @@ -2198,8 +2136,8 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" }, "dependencies": { "is-glob": { @@ -2207,7 +2145,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } } } @@ -2217,7 +2155,7 @@ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "requires": { - "ini": "1.3.5" + "ini": "^1.3.4" } }, "globals": { @@ -2230,19 +2168,12 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.3", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "got": { @@ -2250,17 +2181,17 @@ "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz", "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" } }, "graceful-fs": { @@ -2278,10 +2209,10 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", "requires": { - "async": "2.6.1", - "optimist": "0.6.1", - "source-map": "0.6.1", - "uglify-js": "3.4.9" + "async": "^2.5.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" } }, "har-schema": { @@ -2294,8 +2225,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.3.0", + "har-schema": "^2.0.0" } }, "has-bom": { @@ -2303,8 +2234,8 @@ "resolved": "https://registry.npmjs.org/has-bom/-/has-bom-0.1.0.tgz", "integrity": "sha1-uOUNoEkYYZ0oBo8ZEFu95yUhQU0=", "requires": { - "is-buffer": "1.1.5", - "is-utf8": "0.2.1" + "is-buffer": "^1.1.0", + "is-utf8": "^0.2.0" } }, "has-flag": { @@ -2317,16 +2248,9 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, "has-values": { @@ -2334,34 +2258,16 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } } } @@ -2371,57 +2277,29 @@ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.3.0", - "domutils": "1.5.1", - "entities": "1.0.0", - "readable-stream": "1.1.14" + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" }, "dependencies": { "entities": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" } } }, "http-errors": { "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "depd": "1.1.2", + "depd": "~1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": "1.5.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } + "statuses": ">= 1.4.0 < 2" } }, "http-signature": { @@ -2429,9 +2307,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.2" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "http-status": { @@ -2440,9 +2318,12 @@ "integrity": "sha1-l2+RB36nv8FSd8vPjIDE1cUbSbA=" }, "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } }, "ignore": { "version": "4.0.6", @@ -2469,8 +2350,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -2488,19 +2369,19 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz", "integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==", "requires": { - "ansi-escapes": "3.1.0", - "chalk": "2.4.1", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "3.0.3", - "figures": "2.0.0", - "lodash": "4.17.11", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.0", + "figures": "^2.0.0", + "lodash": "^4.17.10", "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rxjs": "6.3.2", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" + "run-async": "^2.2.0", + "rxjs": "^6.1.0", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" } }, "ipaddr.js": { @@ -2518,7 +2399,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2526,7 +2407,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } } } @@ -2536,20 +2417,20 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "requires": { - "binary-extensions": "1.12.0" + "binary-extensions": "^1.0.0" } }, "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-ci": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", "requires": { - "ci-info": "1.5.1" + "ci-info": "^1.5.0" } }, "is-data-descriptor": { @@ -2557,7 +2438,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2565,7 +2446,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } } } @@ -2575,9 +2456,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { "kind-of": { @@ -2607,7 +2488,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.1" } }, "is-installed-globally": { @@ -2615,8 +2496,8 @@ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "requires": { - "global-dirs": "0.1.1", - "is-path-inside": "1.0.1" + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" } }, "is-npm": { @@ -2629,7 +2510,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2637,7 +2518,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } } } @@ -2657,7 +2538,7 @@ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "requires": { - "is-path-inside": "1.0.1" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { @@ -2665,7 +2546,7 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-plain-object": { @@ -2673,14 +2554,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "isobject": "^3.0.1" } }, "is-promise": { @@ -2724,9 +2598,9 @@ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, "isexe": { "version": "2.0.0", @@ -2753,8 +2627,8 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "requires": { - "argparse": "1.0.10", - "esprima": "4.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, "dependencies": { "esprima": { @@ -2776,21 +2650,21 @@ "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=", "optional": true, "requires": { - "abab": "1.0.4", - "acorn": "2.7.0", - "acorn-globals": "1.0.9", - "cssom": "0.3.4", - "cssstyle": "0.2.37", - "escodegen": "1.11.0", - "nwmatcher": "1.4.4", - "parse5": "1.5.1", - "request": "2.88.0", - "sax": "1.2.4", - "symbol-tree": "3.2.2", - "tough-cookie": "2.4.3", - "webidl-conversions": "2.0.1", - "whatwg-url-compat": "0.6.5", - "xml-name-validator": "2.0.1" + "abab": "^1.0.0", + "acorn": "^2.4.0", + "acorn-globals": "^1.0.4", + "cssom": ">= 0.3.0 < 0.4.0", + "cssstyle": ">= 0.2.29 < 0.3.0", + "escodegen": "^1.6.1", + "nwmatcher": ">= 1.3.7 < 2.0.0", + "parse5": "^1.5.1", + "request": "^2.55.0", + "sax": "^1.1.4", + "symbol-tree": ">= 3.1.0 < 4.0.0", + "tough-cookie": "^2.2.0", + "webidl-conversions": "^2.0.0", + "whatwg-url-compat": "~0.6.5", + "xml-name-validator": ">= 2.0.1 < 3.0.0" } }, "json-schema": { @@ -2839,7 +2713,7 @@ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "requires": { - "package-json": "4.0.1" + "package-json": "^4.0.0" } }, "levn": { @@ -2847,8 +2721,8 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "lodash": { @@ -2871,8 +2745,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "make-dir": { @@ -2880,7 +2754,14 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } } }, "map-cache": { @@ -2898,7 +2779,7 @@ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "requires": { - "object-visit": "1.0.1" + "object-visit": "^1.0.0" } }, "material-design-lite": { @@ -2926,12 +2807,12 @@ "resolved": "https://registry.npmjs.org/microdata-node/-/microdata-node-0.2.1.tgz", "integrity": "sha1-xZ9Z0hMKMoBwoe2zFZCVDPfce40=", "requires": { - "array-unique": "0.1.1", - "domutils": "1.5.1", - "es6-map": "0.1.5", - "extend": "2.0.2", - "htmlparser2": "3.8.3", - "is-absolute-url": "1.0.0" + "array-unique": "^0.1.1", + "domutils": "^1.5.1", + "es6-map": "^0.1.1", + "extend": "^2.0.0", + "htmlparser2": "^3.8.2", + "is-absolute-url": "^1.0.0" }, "dependencies": { "extend": { @@ -2946,19 +2827,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "dependencies": { "array-unique": { @@ -2983,7 +2864,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", "requires": { - "mime-db": "1.36.0" + "mime-db": "~1.36.0" } }, "mimic-fn": { @@ -2996,21 +2877,21 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "0.0.10", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "mixin-deep": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -3018,7 +2899,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -3029,13 +2910,6 @@ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } } }, "ms": { @@ -3059,24 +2933,19 @@ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -3109,8 +2978,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } }, "nodemon": { @@ -3118,16 +2987,16 @@ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.4.tgz", "integrity": "sha512-hyK6vl65IPnky/ee+D3IWvVGgJa/m3No2/Xc/3wanS6Ce1MWjCzH6NnhPJ/vZM+6JFym16jtHx51lmCMB9HDtg==", "requires": { - "chokidar": "2.0.4", - "debug": "3.2.5", - "ignore-by-default": "1.0.1", - "minimatch": "3.0.4", - "pstree.remy": "1.1.0", - "semver": "5.5.1", - "supports-color": "5.5.0", - "touch": "3.1.0", - "undefsafe": "2.0.2", - "update-notifier": "2.5.0" + "chokidar": "^2.0.2", + "debug": "^3.1.0", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.0", + "semver": "^5.5.0", + "supports-color": "^5.2.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.2", + "update-notifier": "^2.3.0" }, "dependencies": { "debug": { @@ -3135,7 +3004,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", "requires": { - "ms": "2.1.1" + "ms": "^2.1.1" } }, "ms": { @@ -3150,7 +3019,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "normalize-path": { @@ -3158,7 +3027,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "npm-run-path": { @@ -3166,7 +3035,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "nth-check": { @@ -3174,7 +3043,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", "requires": { - "boolbase": "1.0.0" + "boolbase": "~1.0.0" } }, "nwmatcher": { @@ -3198,9 +3067,9 @@ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { "define-property": { @@ -3208,7 +3077,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "kind-of": { @@ -3216,7 +3085,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } } } @@ -3226,14 +3095,7 @@ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "isobject": "^3.0.0" } }, "object.pick": { @@ -3241,14 +3103,7 @@ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "isobject": "^3.0.1" } }, "on-finished": { @@ -3269,7 +3124,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -3277,7 +3132,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "optimist": { @@ -3285,8 +3140,15 @@ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + } } }, "optionator": { @@ -3294,19 +3156,12 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - } + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" } }, "os-tmpdir": { @@ -3324,17 +3179,10 @@ "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0", - "semver": "5.5.1" - }, - "dependencies": { - "semver": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", - "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" - } + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" } }, "parse5": { @@ -3383,7 +3231,7 @@ "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "requires": { - "through": "2.3.8" + "through": "~2.3" } }, "performance-now": { @@ -3392,9 +3240,9 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" }, "pinkie": { "version": "2.0.4", @@ -3406,7 +3254,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "pluralize": { @@ -3444,7 +3292,7 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "requires": { - "asap": "2.0.6" + "asap": "~2.0.3" } }, "proxy-addr": { @@ -3452,7 +3300,7 @@ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", "requires": { - "forwarded": "0.1.2", + "forwarded": "~0.1.2", "ipaddr.js": "1.8.0" } }, @@ -3461,7 +3309,7 @@ "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", "requires": { - "event-stream": "3.3.6" + "event-stream": "~3.3.0" } }, "pseudomap": { @@ -3479,7 +3327,7 @@ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.0.tgz", "integrity": "sha512-q5I5vLRMVtdWa8n/3UEzZX7Lfghzrg9eG2IKk2ENLSofKRCXVqMvMUHxCKgXNaqH/8ebhBxrqftHWnyTFweJ5Q==", "requires": { - "ps-tree": "1.1.0" + "ps-tree": "^1.1.0" } }, "punycode": { @@ -3511,16 +3359,6 @@ "http-errors": "1.6.3", "iconv-lite": "0.4.23", "unpipe": "1.0.0" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "requires": { - "safer-buffer": "2.1.2" - } - } } }, "rc": { @@ -3528,36 +3366,28 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "requires": { - "deep-extend": "0.6.0", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { "version": "1.2.0", "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" } } }, "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "1.1.14", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" } }, "readdirp": { @@ -3565,252 +3395,36 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "requires": { - "graceful-fs": "4.1.11", - "micromatch": "3.1.10", - "readable-stream": "2.3.6" + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.3", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { + "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.5" - } - } + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "safe-buffer": "~5.1.0" } } } @@ -3820,8 +3434,8 @@ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, "regexpp": { @@ -3834,8 +3448,8 @@ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "requires": { - "rc": "1.2.8", - "safe-buffer": "5.1.1" + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" } }, "registry-url": { @@ -3843,7 +3457,7 @@ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "requires": { - "rc": "1.2.8" + "rc": "^1.0.1" } }, "remove-trailing-separator": { @@ -3866,33 +3480,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.8.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.2", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.1.0", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.20", - "oauth-sign": "0.9.0", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.4.3", - "tunnel-agent": "0.6.0", - "uuid": "3.3.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" } }, "request-debug": { @@ -3900,7 +3507,7 @@ "resolved": "https://registry.npmjs.org/request-debug/-/request-debug-0.2.0.tgz", "integrity": "sha1-/AVOyBcYGwTKQaBSwTb2HEirr3g=", "requires": { - "stringify-clone": "1.1.1" + "stringify-clone": "^1.0.0" } }, "require-uncached": { @@ -3908,8 +3515,8 @@ "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" } }, "requires-port": { @@ -3932,8 +3539,8 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "ret": { @@ -3946,7 +3553,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { - "glob": "7.1.3" + "glob": "^7.0.5" } }, "robots-parser": { @@ -3959,7 +3566,7 @@ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "requires": { - "is-promise": "2.1.0" + "is-promise": "^2.1.0" } }, "rxjs": { @@ -3967,20 +3574,20 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.2.tgz", "integrity": "sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw==", "requires": { - "tslib": "1.9.3" + "tslib": "^1.9.0" } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "requires": { - "ret": "0.1.15" + "ret": "~0.1.10" } }, "safer-buffer": { @@ -4004,14 +3611,7 @@ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "requires": { - "semver": "5.5.1" - }, - "dependencies": { - "semver": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", - "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" - } + "semver": "^5.0.3" } }, "send": { @@ -4020,25 +3620,20 @@ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "requires": { "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.6.3", + "http-errors": "~1.6.2", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.4.0" + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" }, "dependencies": { - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", @@ -4051,10 +3646,10 @@ "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", "requires": { - "etag": "1.8.1", + "etag": "~1.8.1", "fresh": "0.5.2", "ms": "2.1.1", - "parseurl": "1.3.2", + "parseurl": "~1.3.2", "safe-buffer": "5.1.1" }, "dependencies": { @@ -4062,6 +3657,11 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" } } }, @@ -4070,17 +3670,10 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "requires": { - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "parseurl": "1.3.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", "send": "0.16.2" - }, - "dependencies": { - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - } } }, "set-value": { @@ -4088,10 +3681,10 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -4099,7 +3692,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -4114,7 +3707,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -4132,7 +3725,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", "requires": { - "is-fullwidth-code-point": "2.0.0" + "is-fullwidth-code-point": "^2.0.0" } }, "snapdragon": { @@ -4140,14 +3733,14 @@ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.2", - "use": "3.1.1" + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" }, "dependencies": { "define-property": { @@ -4155,7 +3748,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -4163,7 +3756,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "source-map": { @@ -4178,9 +3771,9 @@ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" }, "dependencies": { "define-property": { @@ -4188,7 +3781,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -4196,7 +3789,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -4204,7 +3797,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -4212,15 +3805,10 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, @@ -4229,7 +3817,7 @@ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.2.0" }, "dependencies": { "kind-of": { @@ -4237,7 +3825,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } } } @@ -4252,11 +3840,11 @@ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "requires": { - "atob": "2.1.2", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, "source-map-url": { @@ -4269,7 +3857,7 @@ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "requires": { - "through": "2.3.8" + "through": "2" } }, "split-string": { @@ -4277,7 +3865,7 @@ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "requires": { - "extend-shallow": "3.0.2" + "extend-shallow": "^3.0.0" } }, "sprintf-js": { @@ -4290,15 +3878,15 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", "requires": { - "asn1": "0.2.4", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.2", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.2", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "safer-buffer": "2.1.2", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, "static-extend": { @@ -4306,8 +3894,8 @@ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "dependencies": { "define-property": { @@ -4315,7 +3903,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -4330,8 +3918,8 @@ "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", "requires": { - "duplexer": "0.1.1", - "through": "2.3.8" + "duplexer": "~0.1.1", + "through": "~2.3.4" } }, "stream-consume": { @@ -4349,32 +3937,14 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "3.0.0" - } - } + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "5.1.1" - } + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, "stringify-clone": { "version": "1.1.1", @@ -4386,7 +3956,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } }, "strip-eof": { @@ -4404,7 +3974,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } }, "symbol-tree": { @@ -4418,12 +3988,12 @@ "resolved": "http://registry.npmjs.org/table/-/table-4.0.3.tgz", "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", "requires": { - "ajv": "6.5.3", - "ajv-keywords": "3.2.0", - "chalk": "2.4.1", - "lodash": "4.17.11", + "ajv": "^6.0.1", + "ajv-keywords": "^3.0.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", "slice-ansi": "1.0.0", - "string-width": "2.1.1" + "string-width": "^2.1.1" }, "dependencies": { "ajv": { @@ -4431,10 +4001,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", "requires": { - "fast-deep-equal": "2.0.1", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.4.1", - "uri-js": "4.2.2" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "fast-deep-equal": { @@ -4454,7 +4024,7 @@ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "requires": { - "execa": "0.7.0" + "execa": "^0.7.0" } }, "text-table": { @@ -4477,7 +4047,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.2" } }, "to-object-path": { @@ -4485,7 +4055,7 @@ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -4493,7 +4063,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } } } @@ -4503,10 +4073,10 @@ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, "to-regex-range": { @@ -4514,26 +4084,8 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "3.2.2" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.5" - } - } + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } }, "touch": { @@ -4541,7 +4093,7 @@ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", "requires": { - "nopt": "1.0.10" + "nopt": "~1.0.10" } }, "tough-cookie": { @@ -4549,8 +4101,8 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "requires": { - "psl": "1.1.29", - "punycode": "1.4.1" + "psl": "^1.1.24", + "punycode": "^1.4.1" }, "dependencies": { "punycode": { @@ -4581,7 +4133,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -4595,7 +4147,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, "type-is": { @@ -4604,7 +4156,7 @@ "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.20" + "mime-types": "~2.1.18" } }, "uglify-js": { @@ -4613,8 +4165,8 @@ "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", "optional": true, "requires": { - "commander": "2.17.1", - "source-map": "0.6.1" + "commander": "~2.17.1", + "source-map": "~0.6.1" }, "dependencies": { "commander": { @@ -4630,7 +4182,7 @@ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", "requires": { - "debug": "2.6.9" + "debug": "^2.2.0" } }, "union-value": { @@ -4638,10 +4190,10 @@ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" }, "dependencies": { "extend-shallow": { @@ -4649,7 +4201,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "set-value": { @@ -4657,10 +4209,10 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" } } } @@ -4670,7 +4222,7 @@ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "requires": { - "crypto-random-string": "1.0.0" + "crypto-random-string": "^1.0.0" } }, "unpipe": { @@ -4683,8 +4235,8 @@ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { "has-value": { @@ -4692,9 +4244,9 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" }, "dependencies": { "isobject": { @@ -4712,10 +4264,10 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" } } }, @@ -4734,44 +4286,16 @@ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "requires": { - "boxen": "1.3.0", - "chalk": "2.4.1", - "configstore": "3.1.2", - "import-lazy": "2.1.0", - "is-ci": "1.2.1", - "is-installed-globally": "0.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "1.9.3" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.5.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "3.0.0" - } - } + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "uri-js": { @@ -4779,7 +4303,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "requires": { - "punycode": "2.1.1" + "punycode": "^2.1.0" } }, "urix": { @@ -4792,8 +4316,8 @@ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz", "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==", "requires": { - "querystringify": "2.0.0", - "requires-port": "1.0.0" + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" } }, "url-parse-lax": { @@ -4801,7 +4325,7 @@ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "requires": { - "prepend-http": "1.0.4" + "prepend-http": "^1.0.1" } }, "use": { @@ -4844,9 +4368,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "webidl-conversions": { @@ -4877,7 +4401,7 @@ "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=", "optional": true, "requires": { - "tr46": "0.0.3" + "tr46": "~0.0.1" } }, "which": { @@ -4885,7 +4409,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "widest-line": { @@ -4893,13 +4417,13 @@ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "requires": { - "string-width": "2.1.1" + "string-width": "^2.1.1" } }, "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, "wrappy": { "version": "1.0.2", @@ -4911,7 +4435,7 @@ "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", "requires": { - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" } }, "write-file-atomic": { @@ -4919,9 +4443,9 @@ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } }, "xdg-basedir": { From 2de9dbe21ae701d11ba1a23fe27c9e846d4e3d09 Mon Sep 17 00:00:00 2001 From: Pieter Greyling Date: Tue, 18 Sep 2018 19:45:04 +0100 Subject: [PATCH 4/4] Integrate (some) AMP Story tests #69 - packages --- amp-story/linter/package-lock.json | 370 +++++----- package-lock.json | 1040 ++++++++++++++++++++++++++++ 2 files changed, 1225 insertions(+), 185 deletions(-) diff --git a/amp-story/linter/package-lock.json b/amp-story/linter/package-lock.json index b43c5d0..aa0a65e 100644 --- a/amp-story/linter/package-lock.json +++ b/amp-story/linter/package-lock.json @@ -28,7 +28,7 @@ "integrity": "sha512-ZHf/X8rTQ5Tb1rHjxIJYqm55uO265agE3G7NoSXVa2ep+EcJXgB2fsme+zBvK7MhrxTwkC/xkB6THyv50u0MGw==", "dev": true, "requires": { - "@types/node": "10.5.2" + "@types/node": "*" } }, "@types/node": { @@ -42,7 +42,7 @@ "integrity": "sha512-XroxUzLpKuL+CVkQqXlffRkEPi4Gh3Oui/mWyS7ztKiyqVxiU+h3imCW5I2NQmde5jK+3q++36/Q96cyRWsweg==", "dev": true, "requires": { - "@types/node": "10.5.2" + "@types/node": "*" } }, "ajv": { @@ -50,10 +50,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "amphtml-validator": { @@ -89,7 +89,7 @@ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "asap": { @@ -102,7 +102,7 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "~2.1.0" } }, "assert-plus": { @@ -137,9 +137,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" }, "dependencies": { "chalk": { @@ -148,11 +148,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } } } @@ -169,7 +169,7 @@ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "boolbase": { @@ -183,7 +183,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -210,12 +210,12 @@ "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", "dev": true, "requires": { - "assertion-error": "1.1.0", - "check-error": "1.0.2", - "deep-eql": "3.0.1", - "get-func-name": "2.0.0", - "pathval": "1.1.0", - "type-detect": "4.0.8" + "assertion-error": "^1.0.1", + "check-error": "^1.0.1", + "deep-eql": "^3.0.0", + "get-func-name": "^2.0.0", + "pathval": "^1.0.0", + "type-detect": "^4.0.0" } }, "chalk": { @@ -224,9 +224,9 @@ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "dependencies": { "ansi-styles": { @@ -235,7 +235,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.2" + "color-convert": "^1.9.0" } }, "supports-color": { @@ -244,7 +244,7 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -260,12 +260,12 @@ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", "requires": { - "css-select": "1.2.0", - "dom-serializer": "0.1.0", - "entities": "1.1.1", - "htmlparser2": "3.9.2", - "lodash": "4.17.10", - "parse5": "3.0.3" + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" } }, "co": { @@ -298,7 +298,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -306,7 +306,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } }, "concat-map": { @@ -325,10 +325,10 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", + "boolbase": "~1.0.0", + "css-what": "2.1", "domutils": "1.5.1", - "nth-check": "1.0.1" + "nth-check": "~1.0.1" } }, "css-what": { @@ -341,7 +341,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "debug": { @@ -349,7 +349,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.0.1.tgz", "integrity": "sha512-K23FHJ/Mt404FSlp6gSZCevIbTMLX0j3fmHhUEhQ3Wq0FMODW3+cUSoLdy1Gx4polAf4t/lphhmHH35BB8cLYw==", "requires": { - "ms": "2.1.1" + "ms": "^2.1.1" }, "dependencies": { "ms": { @@ -365,7 +365,7 @@ "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { - "type-detect": "4.0.8" + "type-detect": "^4.0.0" } }, "deep-equal": { @@ -395,8 +395,8 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" + "domelementtype": "~1.1.1", + "entities": "~1.1.1" }, "dependencies": { "domelementtype": { @@ -416,7 +416,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "requires": { - "domelementtype": "1.3.0" + "domelementtype": "1" } }, "domutils": { @@ -424,8 +424,8 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" + "dom-serializer": "0", + "domelementtype": "1" } }, "duplexer": { @@ -440,8 +440,8 @@ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "optional": true, "requires": { - "jsbn": "0.1.1", - "safer-buffer": "2.1.2" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "entities": { @@ -493,8 +493,8 @@ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" } }, "forever-agent": { @@ -507,9 +507,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.19" + "mime-types": "^2.1.12" } }, "fs.realpath": { @@ -529,7 +529,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "glob": { @@ -538,12 +538,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "graceful-readlink": { @@ -561,8 +561,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.3.0", + "har-schema": "^2.0.0" } }, "has-ansi": { @@ -571,7 +571,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -585,12 +585,12 @@ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.4.2", - "domutils": "1.5.1", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" } }, "http-signature": { @@ -598,9 +598,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.2" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "inflight": { @@ -609,8 +609,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -624,7 +624,7 @@ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-typedarray": { @@ -654,8 +654,8 @@ "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "dev": true, "requires": { - "argparse": "1.0.10", - "esprima": "4.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsbn": { @@ -705,7 +705,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", "requires": { - "mime-db": "1.35.0" + "mime-db": "~1.35.0" } }, "minimatch": { @@ -714,7 +714,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -748,15 +748,15 @@ "integrity": "sha512-EDgl/WgNQ0C1BZZlASOQkQdE6tAWXJi8QQlugqzN64JJkvZ7ILijZuG24r4vCC7yOfnm6HKpne5AGExLGCeBWg==", "dev": true, "requires": { - "chai": "4.1.2", - "debug": "3.2.5", - "deep-equal": "1.0.1", - "json-stringify-safe": "5.0.1", - "lodash": "4.17.10", - "mkdirp": "0.5.1", - "propagate": "1.0.0", - "qs": "6.5.2", - "semver": "5.5.0" + "chai": "^4.1.2", + "debug": "^3.1.0", + "deep-equal": "^1.0.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.5", + "mkdirp": "^0.5.0", + "propagate": "^1.0.0", + "qs": "^6.5.1", + "semver": "^5.5.0" }, "dependencies": { "debug": { @@ -765,7 +765,7 @@ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", "dev": true, "requires": { - "ms": "2.1.1" + "ms": "^2.1.1" } }, "ms": { @@ -786,7 +786,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", "requires": { - "boolbase": "1.0.0" + "boolbase": "~1.0.0" } }, "number-is-nan": { @@ -812,7 +812,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "parse-ms": { @@ -826,7 +826,7 @@ "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", "requires": { - "@types/node": "10.5.2" + "@types/node": "*" } }, "path-is-absolute": { @@ -864,9 +864,9 @@ "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", "dev": true, "requires": { - "is-finite": "1.0.2", - "parse-ms": "1.0.1", - "plur": "1.0.0" + "is-finite": "^1.0.1", + "parse-ms": "^1.0.0", + "plur": "^1.0.0" } }, "probe-image-size": { @@ -874,12 +874,12 @@ "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-4.0.0.tgz", "integrity": "sha512-nm7RvWUxps+2+jZKNLkd04mNapXNariS6G5WIEVzvAqjx7EUuKcY1Dp3e6oUK7GLwzJ+3gbSbPLFAASHFQrPcQ==", "requires": { - "any-promise": "1.3.0", - "deepmerge": "2.1.1", - "inherits": "2.0.3", - "next-tick": "1.0.0", - "request": "2.88.0", - "stream-parser": "0.3.1" + "any-promise": "^1.3.0", + "deepmerge": "^2.0.1", + "inherits": "^2.0.3", + "next-tick": "^1.0.0", + "request": "^2.83.0", + "stream-parser": "~0.3.1" } }, "process-nextick-args": { @@ -892,7 +892,7 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz", "integrity": "sha1-SJZUxpJha4qlWwck+oCbt9tJxb8=", "requires": { - "asap": "2.0.6" + "asap": "~2.0.3" } }, "propagate": { @@ -927,13 +927,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "repeat-string": { @@ -947,26 +947,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.8.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.2", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.1.0", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.19", - "oauth-sign": "0.9.0", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.4.3", - "tunnel-agent": "0.6.0", - "uuid": "3.3.2" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" } }, "resolve": { @@ -975,7 +975,7 @@ "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", "dev": true, "requires": { - "path-parse": "1.0.6" + "path-parse": "^1.0.5" } }, "safe-buffer": { @@ -1000,7 +1000,7 @@ "integrity": "sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=", "dev": true, "requires": { - "through": "2.3.8" + "through": "2" } }, "sprintf-js": { @@ -1014,15 +1014,15 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", "requires": { - "asn1": "0.2.4", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.2", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.2", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "safer-buffer": "2.1.2", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, "stream-parser": { @@ -1030,7 +1030,7 @@ "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", "requires": { - "debug": "2.6.9" + "debug": "2" }, "dependencies": { "debug": { @@ -1048,7 +1048,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -1057,7 +1057,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -1090,13 +1090,13 @@ "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", "dev": true, "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -1105,7 +1105,7 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } } } @@ -1116,14 +1116,14 @@ "integrity": "sha512-zMDVJiE5I6Y4XGjlueGXJIX2YIkbDN44broZlnypT38Hj/czfOXrszHNNJBF/DXR8n+x6gbfSx68x04kIEHdrw==", "dev": true, "requires": { - "chalk": "1.1.3", - "duplexer": "0.1.1", - "figures": "1.7.0", - "lodash": "4.17.10", - "pretty-ms": "2.1.0", - "repeat-string": "1.6.1", - "tap-out": "2.1.0", - "through2": "2.0.3" + "chalk": "^1.0.0", + "duplexer": "^0.1.1", + "figures": "^1.4.0", + "lodash": "^4.17.10", + "pretty-ms": "^2.1.0", + "repeat-string": "^1.5.2", + "tap-out": "^2.1.0", + "through2": "^2.0.0" }, "dependencies": { "chalk": { @@ -1132,11 +1132,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } } } @@ -1158,8 +1158,8 @@ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" } }, "tough-cookie": { @@ -1167,8 +1167,8 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "requires": { - "psl": "1.1.29", - "punycode": "1.4.1" + "psl": "^1.1.24", + "punycode": "^1.4.1" } }, "trim": { @@ -1189,18 +1189,18 @@ "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "builtin-modules": "1.1.1", - "chalk": "2.4.1", - "commander": "2.17.1", - "diff": "3.5.0", - "glob": "7.1.2", - "js-yaml": "3.12.0", - "minimatch": "3.0.4", - "resolve": "1.8.1", - "semver": "5.5.0", - "tslib": "1.9.3", - "tsutils": "2.29.0" + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.27.2" }, "dependencies": { "commander": { @@ -1217,7 +1217,7 @@ "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", "dev": true, "requires": { - "tslib": "1.9.3" + "tslib": "^1.8.1" } }, "tunnel-agent": { @@ -1225,7 +1225,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -1261,9 +1261,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "wrappy": { diff --git a/package-lock.json b/package-lock.json index 847aff2..a2e8e86 100644 --- a/package-lock.json +++ b/package-lock.json @@ -87,6 +87,1046 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=" }, + "amp-story-linter": { + "version": "file:amp-story/linter", + "requires": { + "amphtml-validator": "^1.0.23", + "cheerio": "^1.0.0-rc.2", + "debug": "^4.0.1", + "node-fetch": "^2.2.0", + "probe-image-size": "^4.0.0", + "throat": "^4.1.0" + }, + "dependencies": { + "@types/cheerio": { + "version": "0.22.9", + "bundled": true + }, + "@types/debug": { + "version": "0.0.30", + "bundled": true + }, + "@types/diff": { + "version": "3.5.1", + "bundled": true + }, + "@types/nock": { + "version": "9.3.0", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "10.5.2", + "bundled": true + }, + "@types/node-fetch": { + "version": "2.1.2", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "ajv": { + "version": "5.5.2", + "bundled": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "amphtml-validator": { + "version": "1.0.23", + "bundled": true, + "requires": { + "colors": "1.1.2", + "commander": "2.9.0", + "promise": "7.1.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true + }, + "any-promise": { + "version": "1.3.0", + "bundled": true + }, + "argparse": { + "version": "1.0.10", + "bundled": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "asap": { + "version": "2.0.6", + "bundled": true + }, + "asn1": { + "version": "0.2.4", + "bundled": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "bundled": true + }, + "assertion-error": { + "version": "1.1.0", + "bundled": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true + }, + "aws-sign2": { + "version": "0.7.0", + "bundled": true + }, + "aws4": { + "version": "1.8.0", + "bundled": true + }, + "babel-code-frame": { + "version": "6.26.0", + "bundled": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + } + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "boolbase": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true + }, + "chai": { + "version": "4.1.2", + "bundled": true, + "requires": { + "assertion-error": "^1.0.1", + "check-error": "^1.0.1", + "deep-eql": "^3.0.0", + "get-func-name": "^2.0.0", + "pathval": "^1.0.0", + "type-detect": "^4.0.0" + } + }, + "chalk": { + "version": "2.4.1", + "bundled": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "supports-color": { + "version": "5.4.0", + "bundled": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "check-error": { + "version": "1.0.2", + "bundled": true + }, + "cheerio": { + "version": "1.0.0-rc.2", + "bundled": true, + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" + } + }, + "co": { + "version": "4.6.0", + "bundled": true + }, + "color-convert": { + "version": "1.9.2", + "bundled": true, + "requires": { + "color-name": "1.1.1" + } + }, + "color-name": { + "version": "1.1.1", + "bundled": true + }, + "colors": { + "version": "1.1.2", + "bundled": true + }, + "combined-stream": { + "version": "1.0.6", + "bundled": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.9.0", + "bundled": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "css-select": { + "version": "1.2.0", + "bundled": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.0", + "bundled": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "4.0.1", + "bundled": true, + "requires": { + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "bundled": true + } + } + }, + "deep-eql": { + "version": "3.0.1", + "bundled": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-equal": { + "version": "1.0.1", + "bundled": true + }, + "deepmerge": { + "version": "2.1.1", + "bundled": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "diff": { + "version": "3.5.0", + "bundled": true + }, + "dom-serializer": { + "version": "0.1.0", + "bundled": true, + "requires": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "bundled": true + } + } + }, + "domelementtype": { + "version": "1.3.0", + "bundled": true + }, + "domhandler": { + "version": "2.4.2", + "bundled": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "bundled": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "duplexer": { + "version": "0.1.1", + "bundled": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "entities": { + "version": "1.1.1", + "bundled": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "esprima": { + "version": "4.0.1", + "bundled": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true + }, + "extend": { + "version": "3.0.2", + "bundled": true + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "bundled": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true + }, + "figures": { + "version": "1.7.0", + "bundled": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true + }, + "form-data": { + "version": "2.3.2", + "bundled": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "get-func-name": { + "version": "2.0.0", + "bundled": true + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-readlink": { + "version": "1.0.1", + "bundled": true + }, + "har-schema": { + "version": "2.0.0", + "bundled": true + }, + "har-validator": { + "version": "5.1.0", + "bundled": true, + "requires": { + "ajv": "^5.3.0", + "har-schema": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "bundled": true + }, + "htmlparser2": { + "version": "3.9.2", + "bundled": true, + "requires": { + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, + "http-signature": { + "version": "1.2.0", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true + }, + "js-yaml": { + "version": "3.12.0", + "bundled": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "lodash": { + "version": "4.17.10", + "bundled": true + }, + "mime-db": { + "version": "1.35.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.19", + "bundled": true, + "requires": { + "mime-db": "~1.35.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "next-tick": { + "version": "1.0.0", + "bundled": true + }, + "nock": { + "version": "9.6.1", + "bundled": true, + "requires": { + "chai": "^4.1.2", + "debug": "^3.1.0", + "deep-equal": "^1.0.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.5", + "mkdirp": "^0.5.0", + "propagate": "^1.0.0", + "qs": "^6.5.1", + "semver": "^5.5.0" + }, + "dependencies": { + "debug": { + "version": "3.2.5", + "bundled": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true + } + } + }, + "node-fetch": { + "version": "2.2.0", + "bundled": true + }, + "nth-check": { + "version": "1.0.1", + "bundled": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "oauth-sign": { + "version": "0.9.0", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "parse-ms": { + "version": "1.0.1", + "bundled": true + }, + "parse5": { + "version": "3.0.3", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "path-parse": { + "version": "1.0.6", + "bundled": true + }, + "pathval": { + "version": "1.1.0", + "bundled": true + }, + "performance-now": { + "version": "2.1.0", + "bundled": true + }, + "plur": { + "version": "1.0.0", + "bundled": true + }, + "pretty-ms": { + "version": "2.1.0", + "bundled": true, + "requires": { + "is-finite": "^1.0.1", + "parse-ms": "^1.0.0", + "plur": "^1.0.0" + } + }, + "probe-image-size": { + "version": "4.0.0", + "bundled": true, + "requires": { + "any-promise": "^1.3.0", + "deepmerge": "^2.0.1", + "inherits": "^2.0.3", + "next-tick": "^1.0.0", + "request": "^2.83.0", + "stream-parser": "~0.3.1" + } + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true + }, + "promise": { + "version": "7.1.1", + "bundled": true, + "requires": { + "asap": "~2.0.3" + } + }, + "propagate": { + "version": "1.0.0", + "bundled": true + }, + "psl": { + "version": "1.1.29", + "bundled": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true + }, + "qs": { + "version": "6.5.2", + "bundled": true + }, + "re-emitter": { + "version": "1.1.3", + "bundled": true + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true + }, + "request": { + "version": "2.88.0", + "bundled": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "resolve": { + "version": "1.8.1", + "bundled": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true + }, + "semver": { + "version": "5.5.0", + "bundled": true + }, + "split": { + "version": "1.0.0", + "bundled": true, + "requires": { + "through": "2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "bundled": true + }, + "sshpk": { + "version": "1.14.2", + "bundled": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stream-parser": { + "version": "0.3.1", + "bundled": true, + "requires": { + "debug": "2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + }, + "tap-out": { + "version": "2.1.0", + "bundled": true, + "requires": { + "re-emitter": "1.1.3", + "readable-stream": "2.2.9", + "split": "1.0.0", + "trim": "0.0.1" + }, + "dependencies": { + "process-nextick-args": { + "version": "1.0.7", + "bundled": true + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "requires": { + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "tap-spec": { + "version": "5.0.0", + "bundled": true, + "requires": { + "chalk": "^1.0.0", + "duplexer": "^0.1.1", + "figures": "^1.4.0", + "lodash": "^4.17.10", + "pretty-ms": "^2.1.0", + "repeat-string": "^1.5.2", + "tap-out": "^2.1.0", + "through2": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + } + } + }, + "throat": { + "version": "4.1.0", + "bundled": true + }, + "through": { + "version": "2.3.8", + "bundled": true + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "tough-cookie": { + "version": "2.4.3", + "bundled": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + }, + "trim": { + "version": "0.0.1", + "bundled": true + }, + "tslib": { + "version": "1.9.3", + "bundled": true + }, + "tslint": { + "version": "5.11.0", + "bundled": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.27.2" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "bundled": true + } + } + }, + "tsutils": { + "version": "2.29.0", + "bundled": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "type-detect": { + "version": "4.0.8", + "bundled": true + }, + "typescript": { + "version": "3.0.3", + "bundled": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.3.2", + "bundled": true + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true + } + } + }, "amp-toolbox-cache-url": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/amp-toolbox-cache-url/-/amp-toolbox-cache-url-0.1.0.tgz",