## 1. Project Overview & Quickstart (cloudflare/cfssl)

## File: certdb/README.md

# certdb usage

Using a database enables additional functionality for existing commands when a
db config is provided:

 - `sign` and `gencert` add a certificate to the certdb after signing it
 - `serve` enables database functionality for the sign and revoke endpoints

A database is required for the following:

 - `revoke` marks certificates revoked in the database with an optional reason
 - `ocsprefresh` refreshes the table of cached OCSP responses
 - `ocspdump` outputs cached OCSP responses in a concatenated base64-encoded format

## Setup/Migration

This directory stores [goose](https://bitbucket.org/liamstask/goose/) db migration scripts for various DB backends.
Currently supported:
 - MySQL in mysql
 - PostgreSQL in pg
 - SQLite in sqlite

### Get goose

    go get bitbucket.org/liamstask/goose/cmd/goose

### Use goose to start and terminate a MySQL DB
To start a MySQL using goose:

    goose -path certdb/mysql up

To tear down a MySQL DB using goose

    goose -path certdb/mysql down

Note: the administration of MySQL DB is not included. We assume
the databases being connected to are already created and access control
is properly handled.

### Use goose to start and terminate a PostgreSQL DB
To start a PostgreSQL using goose:

    goose -path certdb/pg up

To tear down a PostgreSQL DB using goose

    goose -path certdb/pg down

Note: the administration of PostgreSQL DB is not included. We assume
the databases being connected to are already created and access control
is properly handled.

### Use goose to start and terminate a SQLite DB
To start a SQLite DB using goose:

    goose -path certdb/sqlite up

To tear down a SQLite DB using goose

    goose -path certdb/sqlite down

## CFSSL Configuration

Several cfssl commands take a -db-config flag. Create a file with a
JSON dictionary:

    {"driver":"sqlite3","data_source":"certs.db"}

or

    {"driver":"postgres","data_source":"postgres://user:password@host/db"}
 
or

    {"driver":"mysql","data_source":"user:password@tcp(hostname:3306)/db?parseTime=true"}

---

## File: cli/serve/README.md

## Compiling and serving static files using esc

```
go install github.com/mjibson/esc

# Compile changes to static files 
esc -pkg serve -prefix cli/serve/static cli/serve/static > cli/serve/static.go

# Build and run CFSSL
go build ./cmd/cfssl/...
./cfssl serve
```

---

## File: initca/testdata/README.md

1. To generate 5min-rsa.pem and 5min-rsa-key.pem

```
$ cfssl gencert -initca ca_csr_rsa.json | cfssljson -bare 5min-rsa
```

2. To generate 5min-ecdsa.pem and 5min-ecdsa-key.pem

```
$ cfssl gencert -initca ca_csr_ecdsa.json | cfssljson -bare 5min-ecdsa
```

2. To generate 5min-ed25519.pem and 5min-ed25519-key.pem

```
$ cfssl gencert -initca ca_csr_ed25519.json | cfssljson -bare 5min-ed25519
```

The above commands will generate 5min-rsa.csr, 5min-ecdsa.csr 5min-ed25519.csr
accordingly, but those files can be ignored.

---

## File: signer/remote/testdata/README.md

Instructions to generate client key/certificate
-----------------------------------------------

Use CFSSL to generate the client certificate if they expire

```
cfssl gencert -ca=ca.pem -ca-key=ca_key.pem -config=config.json -profile=client client.json | cfssljson -bare client
cfssl gencert -ca=ca.pem -ca-key=ca_key.pem -config=config.json -profile=server server.json | cfssljson -bare server

```

---

## File: transport/example/README.md

# Transport Package Examples

`maserver` and `maclient` are a mutually authenticated server and client;
the client will connect to the server and send a few messages.

## Set up

A running CFSSL is needed. The `genca.sh` script should generate
everything that's needed to run CFSSL locally. In a terminal for the
CA:

```
$ basename $(pwd)
example
$ ./genca.sh
2015/10/27 14:00:29 [INFO] generating a new CA key and certificate from CSR
2015/10/27 14:00:29 [INFO] generate received request
2015/10/27 14:00:29 [INFO] received CSR
2015/10/27 14:00:29 [INFO] generating key: rsa-4096
2015/10/27 14:00:32 [INFO] encoded CSR
2015/10/27 14:00:33 [INFO] signed certificate with serial number 2940131150448804266
$ cfssl serve -ca ca.pem -ca-key ca-key.pem -config config.json
...
2015/10/27 14:00:35 [INFO] Setting up '/api/v1/cfssl/sign' endpoint
```

The providing `config.json` contains the CFSSL configuration; the
`client.json` and `server.json` configurations are based on this
config.

## Running the server

The server expects a `server.json` in the same directory containing
the configuration. One is provided in the server source, or it may be
overridden using the `-f` command line flag.

```
$ basename $(pwd)
example
$ cd maserver/
$ go run server.go -a 127.0.0.1:9876
$ go run server.go -a 127.0.0.1:9876
2015/10/27 14:05:47 [INFO] using client auth
2015/10/27 14:05:47 [DEBUG] transport isn't ready; attempting to refresh keypair
2015/10/27 14:05:47 [DEBUG] key and certificate aren't ready, loading
2015/10/27 14:05:47 [DEBUG] failed to load keypair: open server.key: no such file or directory
2015/10/27 14:05:47 [DEBUG] transport's certificate is out of date (lifespan 0)
2015/10/27 14:05:47 [INFO] encoded CSR
2015/10/27 14:05:47 [DEBUG] requesting certificate from CA
2015/10/27 14:05:47 [DEBUG] giving the certificate to the provider
2015/10/27 14:05:47 [DEBUG] storing the certificate
2015/10/27 14:05:47 [INFO] setting up auto-update
2015/10/27 14:05:47 [INFO] listening on 127.0.0.1:9876
```

At this point, the clients can start talking to the server.

## Running a client

At this point, clients just connect and send a few messages, ensuring
the server acknowledges the messages. The client also expects a
`client.json` configuration in the same directory; once is provided in
the source directory, or it may be overridden using the `-f` command
line flag.

```
$ basename $(pwd)
example
$ go run client.go
2015/10/27 14:08:34 [DEBUG] transport isn't ready; attempting to refresh keypair
2015/10/27 14:08:34 [DEBUG] key and certificate aren't ready, loading
2015/10/27 14:08:34 [DEBUG] failed to load keypair: open client.key: no such file or directory
2015/10/27 14:08:34 [DEBUG] transport's certificate is out of date (lifespan 0)
2015/10/27 14:08:34 [INFO] encoded CSR
2015/10/27 14:08:34 [DEBUG] requesting certificate from CA
2015/10/27 14:08:34 [DEBUG] giving the certificate to the provider
2015/10/27 14:08:34 [DEBUG] storing the certificate
OK
$
```

## Auth Examples

The CA, server, and client ship with a `_auth.json` configuration file
that will use an authenticated CFSSL. The commands change to:

```
$ cfssl serve -ca ca.pem -ca-key ca-key.pem -config config_auth.json
$ go run server.go -a 127.0.0.1:9876 -f server_auth.json
$ go run client.go -f client_auth.json
```

---

## File: whitelist/README.md

## whitelist

This is a simple whitelisting package that encompasses several common
patterns into a reusable package.

The basic type of a whitelist is the `ACL` type, which provides
a single method on a `net.IP` value:

* `Permitted` determines whether the IP address is whitelisted and
  therefore should be permitted access. It should return true if the
  address is whitelisted.

Additionally, there are two other types that are built on the `ACL`
type; the `HostACL` stores individual hosts and the `NetACL` stores
networks. Each of these provides two functions that differ in the
types of their arguments.

* `Add` whitelists the IP address.
* `Remove` drops the IP address from the whitelist.

The `HostACL` operates on `net.IP` values, while the `NetACL` operates
on `*net.IPNet`s.

There are currently four implementations of `ACL` provided in this
package; a basic implementation of the two types of ACLs and a stub
type for each:

* `Basic` is a simple host-based whitelister that converts the IP
  addresses to strings; the whitelist is implemented as a set of
  string addresses. The set is implemented as a `map[string]bool`, and
  uses a `sync.Mutex` to coordinate updates to the whitelist.
* `BasicNet` is a simple network-based whitelister that similarly uses
  a mutex and an array to store networks. This has a number of
  limitations: operations are /O(n)/, and subsets/supersets of
  existing networks isn't detected. That is, if 192.168.3.0/24 is
  removed from a whitelist that has 192.168.0.0/16 permitted, **that
  subnet will not actually be removed**. Exact networks are required
  for `Add` and `Remove` at this time.
* `HostStub` and `NetStub` are stand-in whitelists that always permits
  addresses. They are vocal about logging warning messages noting that
  whitelisting is stubbed. They are designed to be used in cases where
  whitelisting is desired, but the mechanics of whitelisting
  (i.e. administration of the whitelist) is not yet implemented,
  perhaps to keep whitelists in the system's flow.

Two convenience functions are provided here for extracting IP addresses:

* `NetConnLookup` accepts a `net.Conn` value, and returns the `net.IP`
  value from the connection.
* `HTTPRequestLookup` accepts a `*http.Request` and returns the
  `net.IP` value from the request.

There are also two functions for whitelisting HTTP endpoints:

* `NewHandler` returns an `http.Handler`
* `NewHandlerFunc` returns an `http.HandlerFunc`

These endpoints will work with both `HostACL` and `NetACL`.

### Example `http.Handler`

This is a file server that uses a pair of whitelists. The admin
whitelist permits modifications to the user whitelist only by the
localhost. The user whitelist controls which hosts have access to
the file server.

```
package main

import (
	"encoding/json"
	"flag"
	"fmt"
	"log"
	"net"
	"net/http"

	"github.com/cloudflare/cfssl/whitelist"
)

var wl = whitelist.NewBasic()

func addIP(w http.ResponseWriter, r *http.Request) {
	addr := r.FormValue("ip")

	ip := net.ParseIP(addr)
	wl.Add(ip)
	log.Printf("request to add %s to the whitelist", addr)
	w.Write([]byte(fmt.Sprintf("Added %s to whitelist.\n", addr)))
}

func delIP(w http.ResponseWriter, r *http.Request) {
	addr := r.FormValue("ip")

	ip := net.ParseIP(addr)
	wl.Remove(ip)
	log.Printf("request to remove %s from the whitelist", addr)
	w.Write([]byte(fmt.Sprintf("Removed %s from whitelist.\n", ip)))
}

func dumpWhitelist(w http.ResponseWriter, r *http.Request) {
	out, err := json.Marshal(wl)
	if err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
	} else {
		w.Write(out)
	}
}

type handler struct {
	h func(http.ResponseWriter, *http.Request)
}

func newHandler(h func(w http.ResponseWriter, r *http.Request)) http.Handler {
	return &handler{h: h}
}

func (h *handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	h.h(w, r)
}

func main() {
	root := flag.String("root", "files/", "file server root")
	flag.Parse()

	fileServer := http.StripPrefix("/files/",
		http.FileServer(http.Dir(*root)))
	wl.Add(net.IP{127, 0, 0, 1})

	adminWL := whitelist.NewBasic()
	adminWL.Add(net.IP{127, 0, 0, 1})
	adminWL.Add(net.ParseIP("::1"))

	protFiles, err := whitelist.NewHandler(fileServer, nil, wl)
	if err != nil {
		log.Fatalf("%v", err)
	}

	addHandler, err := whitelist.NewHandlerFunc(addIP, nil, adminWL)
	if err != nil {
		log.Fatalf("%v", err)
	}

	delHandler, err := whitelist.NewHandlerFunc(delIP, nil, adminWL)
	if err != nil {
		log.Fatalf("%v", err)
	}

	dumpHandler, err := whitelist.NewHandlerFunc(dumpWhitelist, nil, adminWL)
	if err != nil {
		log.Fatalf("%v", err)
	}

	http.Handle("/files/", protFiles)
	http.Handle("/add", addHandler)
	http.Handle("/del", delHandler)
	http.Handle("/dump", dumpHandler)

	log.Println("Serving files on :8080")
	log.Fatal(http.ListenAndServe(":8080", nil))
}
```

## 2. Official Technical Reference & Guides (cloudflare/docs)

## File: README.md

AMPProject.org [](https://travis-ci.org/ampproject/docs)
=========================

You're looking at the source code of the official website of the AMP Project. 
Even if you don't plan on contributing, explore how we've built the site for 
a good example of how to build a canonical, responsive standalone AMP site.

How to build the site
---------------------

### Install

Install [Grow](http://grow.io) and npm dependencies:

```sh
$ curl https://install.growsdk.org | bash
$ npm install
```

### Get a GitHub token or app id/secret

The docs in the reference section of the AMP Project site are not part of this repository; instead they are read from the [amphtml GitHub repository](https://github.com/ampproject/amphtml) "source of truth."  When building the site these docs are fetched via GitHub.

Due to GitHub quotas this fetching will quickly fail unless additional information is provided in the request.  This can be either a personal access token or an application id/secret.

#### Personal access token

  1. Request a GitHub [personal access token](https://help.github.com/articles/creating-an-access-token-for-command-line-use/).  Since the docs are fetched from a public repository you only need to select the "public_repo" scope when creating the token.  (It's a good practice to limit the token to the scope you need.)
  2. In your shell export the generated personal access token as `AMP_DOC_TOKEN`

#### Application client id and secret

If you prefer not to use a personal access token, you can also create a GitHub application and use its id and secret.

  1. Register for a [GitHub application](https://github.com/settings/applications/new)
  2. In your shell export the application client id as `AMP_DOC_ID` and the client secret as `AMP_DOC_SECRET`

### Build

```sh
$ grow build
```

This will generate a static, complete build of the site into the **build* folder.


### Develop

Note: Be sure to run `grow build` at least once to pull in reference docs before running the following command.

```sh
$ grow run
```

You can now open http://localhost:8080/ and continue working on the source files, then reload the page to see changes appear.

Support
-------

If you've found an error or inconsistency, please file an issue:
https://github.com/ampproject/docs/issues

Patches are encouraged, and may be submitted by forking this project and
submitting a pull request through GitHub.

License
-------

All image and audio files except in folders "source/img/partners",
"source/img/publishers" and "source/img/quotes" (including *.png, *.jpg, *.svg,
*.mp3, *.wav and *.ogg) are licensed under the CC-BY-NC license. Images in the
excluded folders are not licensed.

All other files are licensed under the Apache 2 license.

- - -

Copyright 2015 Google, Inc.

Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements.  See the NOTICE file distributed with this work for
additional information regarding copyright ownership.  The ASF licenses this
file to you 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.

---

## File: CONTRIBUTING.md

# How to become a contributor and submit your own code

## Contributor License Agreements

We'd love to accept your patches and doc suggestions! Before we can take them, we
have to jump a couple of legal hurdles.

Please fill out either the individual or corporate Contributor License Agreement
(CLA).

  * If you are an individual writing original source code and you're sure you
    own the intellectual property, then you'll need to sign an [individual CLA]
    (https://developers.google.com/open-source/cla/individual).
  * If you work for a company that wants to allow you to contribute your work,
    then you'll need to sign a [corporate CLA]
    (https://developers.google.com/open-source/cla/corporate).

Follow either of the two links above to access the appropriate CLA and
instructions for how to sign and return it. Once we receive it, we'll be able to
accept your pull requests.

## Contributing A Patch

1. Submit an issue describing your proposed change to the repo in question.
1. The repo owner will respond to your issue promptly.
1. If your proposed change is accepted, and you haven't already done so, sign a
   Contributor License Agreement (see details above).
1. Fork the desired repo, develop and test your code changes.
1. Ensure that your code adheres to the existing style in the sample to which
   you are contributing. Refer to the
   [Google Cloud Platform Samples Style Guide]
   (https://github.com/GoogleCloudPlatform/Template/wiki/style.html) for the
   recommended coding standards for this organization.
1. Ensure that your code has an appropriate set of unit tests which all pass.
1. Submit a pull request.

---

## File: firebase.json

{
  "hosting": {
    "public": "build",
    "cleanUrls": true,
    "headers": [
      {
        "source": "**/*.@(jpg|jpeg|gif|png|svg|mp4)",
        "headers": [
          {
            "key": "Cache-Control",
            "value": "max-age=604800"
          }
        ]
      },
      {
        "source": "service-worker.js",
        "headers": [
          {
            "key": "Cache-Control",
            "value": "no-cache"
          }
        ]
      },
      {
        "source": "/amp-conf-2017/",
        "headers": [
          {
            "key": "Cache-Control",
            "value": "no-cache"
          }
        ]
      },
      {
        "source": "/amp-conf-2017-pwa/",
        "headers": [
          {
            "key": "Cache-Control",
            "value": "no-cache"
          }
        ]
      }
    ],
    "redirects": [
      {
        "source": "/who",
        "destination": "/learn/who/",
        "type": 301
      },
      {
        "source": "/who/",
        "destination": "/learn/who/",
        "type": 301
      },
      {
        "source": "/docs/get_started/technical_overview.html",
        "destination": "/learn/how-amp-works/",
        "type": 301
      },
      {
        "source": "/docs/get_started/about-amp.html",
        "destination": "/learn/overview/",
        "type": 301
      },
      {
        "source": "/docs/guides/responsive_amp?(.html)",
        "destination": "/docs/guides/author-develop/responsive_amp",
        "type": 301
      },
      {
        "source": "/docs/guides/responsive/style_pages?(.html)",
        "destination": "/docs/guides/author-develop/responsive/style_pages.html",
        "type": 301
      },
      {
        "source": "/docs/guides/responsive/control_layout?(.html)",
        "destination": "/docs/guides/author-develop/responsive/control_layout.html",
        "type": 301
      },
      {
        "source": "/docs/guides/responsive/placeholders?(.html)",
        "destination": "/docs/guides/author-develop/responsive/placeholders.html",
        "type": 301
      },
      {
        "source": "/docs/guides/responsive/art_direction?(.html)",
        "destination": "/docs/guides/author-develop/responsive/art_direction.html",
        "type": 301
      },
      {
        "source": "/docs/guides/responsive/custom_fonts?(.html)",
        "destination": "/docs/guides/author-develop/responsive/custom_fonts.html",
        "type": 301
      },
      {
        "source": "/docs/guides/amp_replacements?(.html)",
        "destination": "/docs/guides/author-develop/amp_replacements.html",
        "type": 301
      },
      {
        "source": "/docs/guides/iframes?(.html)",
        "destination": "/docs/guides/author-develop/iframes.html",
        "type": 301
      },
      {
        "source": "/docs/guides/third_party_components?(.html)",
        "destination": "/docs/guides/author-develop/third_party_components.html",
        "type": 301
      },
      {
        "source": "/docs/guides/ads_on_amp?(.html)",
        "destination": "/docs/guides/author-develop/ads_on_amp.html",
        "type": 301
      },
      {
        "source": "/docs/guides/validate?(.html)",
        "destination": "/docs/guides/debug/validate.html",
        "type": 301
      },
      {
        "source": "/docs/guides/analytics_amp?(.html)",
        "destination": "/docs/guides/deploy/analytics_amp.html",
        "type": 301
      },
      {
        "source": "/docs/guides/discovery?(.html)",
        "destination": "/docs/guides/deploy/discovery.html",
        "type": 301
      },
      {
        "source": "/docs/guides/engagement?(.html)",
        "destination": "/docs/guides/deploy/engagement.html",
        "type": 301
      },
      {
        "source": "/docs/guides/login-paywalls",
        "destination": "/docs/get_started/login_requiring",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-pixel?(.html)",
        "destination": "/docs/reference/components/ads/amp-pixel.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-ad?(.html)",
        "destination": "/docs/reference/components/ads/amp-ad.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-analytics?(.html)",
        "destination": "/docs/reference/components/ads/amp-analytics.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-auto-ads?(.html)",
        "destination": "/docs/reference/components/ads/amp-auto-ads.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-call-tracking?(.html)",
        "destination": "/docs/reference/components/ads/amp-call-tracking.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-experiment?(.html)",
        "destination": "/docs/reference/components/ads/amp-experiment.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-sticky-ad?(.html)",
        "destination": "/docs/reference/components/ads/amp-sticky-ad.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-access-laterpay?(.html)",
        "destination": "/docs/reference/components/dynamic/amp-access-laterpay.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-access?(.html)",
        "destination": "/docs/reference/components/dynamic/amp-access.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-bind?(.html)",
        "destination": "/docs/reference/components/dynamic/amp-bind.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-form?(.html)",
        "destination": "/docs/reference/components/dynamic/amp-form.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-install-serviceworker?(.html)",
        "destination": "/docs/reference/components/dynamic/amp-install-serviceworker.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-list?(.html)",
        "destination": "/docs/reference/components/dynamic/amp-list.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-live-list?(.html)",
        "destination": "/docs/reference/components/dynamic/amp-live-list.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-mustache?(.html)",
        "destination": "/docs/reference/components/dynamic/amp-mustache.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-selector?(.html)",
        "destination": "/docs/reference/components/dynamic/amp-selector.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-user-notification?(.html)",
        "destination": "/docs/reference/components/dynamic/amp-user-notification.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-accordion?(.html)",
        "destination": "/docs/reference/components/layout/amp-accordion.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-app-banner?(.html)",
        "destination": "/docs/reference/components/layout/amp-app-banner.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-carousel?(.html)",
        "destination": "/docs/reference/components/layout/amp-carousel.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-fx-flying-carpet?(.html)",
        "destination": "/docs/reference/components/layout/amp-fx-flying-carpet.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-fx-parallax?(.html)",
        "destination": "/docs/reference/components/layout/amp-fx-parallax.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-iframe?(.html)",
        "destination": "/docs/reference/components/layout/amp-iframe.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-lightbox?(.html)",
        "destination": "/docs/reference/components/layout/amp-lightbox.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-sidebar?(.html)",
        "destination": "/docs/reference/components/layout/amp-sidebar.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-img?(.html)",
        "destination": "/docs/reference/components/media/amp-img.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-anim?(.html)",
        "destination": "/docs/reference/components/media/amp-anim.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-apester-media?(.html)",
        "destination": "/docs/reference/components/media/amp-apester-media.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-audio?(.html)",
        "destination": "/docs/reference/components/media/amp-audio.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-brid-player?(.html)",
        "destination": "/docs/reference/components/media/amp-brid-player.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-brightcove?(.html)",
        "destination": "/docs/reference/components/media/amp-brightcove.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-dailymotion?(.html)",
        "destination": "/docs/reference/components/media/amp-dailymotion.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-google-vrview-image?(.html)",
        "destination": "/docs/reference/components/media/amp-google-vrview-image.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-hulu?(.html)",
        "destination": "/docs/reference/components/media/amp-hulu.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-image-lightbox?(.html)",
        "destination": "/docs/reference/components/media/amp-image-lightbox.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-izlesene?(.html)",
        "destination": "/docs/reference/components/media/amp-izlesene.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-jwplayer?(.html)",
        "destination": "/docs/reference/components/media/amp-jwplayer.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-kaltura-player?(.html)",
        "destination": "/docs/reference/components/media/amp-kaltura-player.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-o2-player?(.html)",
        "destination": "/docs/reference/components/media/amp-o2-player.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-ooyala-player?(.html)",
        "destination": "/docs/reference/components/media/amp-ooyala-player.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-playbuzz?(.html)",
        "destination": "/docs/reference/components/media/amp-playbuzz.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-reach-player?(.html)",
        "destination": "/docs/reference/components/media/amp-reach-player.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-soundcloud?(.html)",
        "destination": "/docs/reference/components/media/amp-soundcloud.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-springboard-player?(.html)",
        "destination": "/docs/reference/components/media/amp-springboard-player.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-video?(.html)",
        "destination": "/docs/reference/components/media/amp-video.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-vimeo?(.html)",
        "destination": "/docs/reference/components/media/amp-vimeo.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-youtube?(.html)",
        "destination": "/docs/reference/components/media/amp-youtube.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-animation?(.html)",
        "destination": "/docs/reference/components/presentation/amp-animation.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-dynamic-css-classes?(.html)",
        "destination": "/docs/reference/components/presentation/amp-dynamic-css-classes.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-fit-text?(.html)",
        "destination": "/docs/reference/components/presentation/amp-fit-text.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-font?(.html)",
        "destination": "/docs/reference/components/presentation/amp-font.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-viz-vega?(.html)",
        "destination": "/docs/reference/components/presentation/amp-viz-vega.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-facebook?(.html)",
        "destination": "/docs/reference/components/social/amp-facebook.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-gfycat?(.html)",
        "destination": "/docs/reference/components/social/amp-gfycat.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-instagram?(.html)",
        "destination": "/docs/reference/components/social/amp-instagram.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-pinterest?(.html)",
        "destination": "/docs/reference/components/social/amp-pinterest.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-reddit?(.html)",
        "destination": "/docs/reference/components/social/amp-reddit.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-share-tracking?(.html)",
        "destination": "/docs/reference/components/social/amp-share-tracking.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-social-share?(.html)",
        "destination": "/docs/reference/components/social/amp-social-share.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-twitter?(.html)",
        "destination": "/docs/reference/components/social/amp-twitter.html",
        "type": 301
      },
      {
        "source": "/docs/reference/components/amp-vine?(.html)",
        "destination": "/docs/reference/components/social/amp-vine.html",
        "type": 301
      },
      {
        "source": "/contribute/governance/",
        "destination": "/docs/contribute/governance/",
        "type": 301
      },
      {
        "source": "/docs",
        "destination": "/learn/overview/",
        "type": 301
      },
      {
        "source": "/docs/index.html",
        "destination": "/learn/overview/",
        "type": 301
      },
      {
        "source": "/learn/about-amp/",
        "destination": "/learn/overview/",
        "type": 301
      },
      {
        "source": "/learn/how-amp-works/",
        "destination": "/learn/about-how/",
        "type": 301
      },
      {
        "source": "/learn/design-principles/",
        "destination": "/learn/amp-design-principles/",
        "type": 301
      },
      {
        "source": "/learn/@(browsers|who)/",
        "destination": "/support/faqs/supported-platforms.html",
        "type": 301
      },
      {
        "source": "/docs/support/contribute.html",
        "destination": "/contribute/",
        "type": 301
      },
      {
        "source": "/docs/support/faqs.html",
        "destination": "/support/faqs/",
        "type": 301
      },
      {
        "source": "/docs/reference/amp-ad.html",
        "destination": "/docs/reference/extended/amp-ad.html",
        "type": 301
      },
      {
        "source": "/faq",
        "destination": "/support/faqs/",
        "type": 301
      },
      {
        "source": "/faq/",
        "destination": "/support/faqs/",
        "type": 301
      },
      {
        "source": "/faq/index.html",
        "destination": "/support/faqs/",
        "type": 301
      },
      {
        "source": "/docs/get_started/create_page.html",
        "destination": "/docs/get_started/create.html",
        "type": 301
      },
      {
        "source": "/contact",
        "destination": "https://github.com/ampproject/amphtml/issues/new",
        "type": 301
      },
      {
        "source": "/contact/",
        "destination": "https://github.com/ampproject/amphtml/issues/new",
        "type": 301
      },
      {
        "source": "/contact/",
        "destination": "https://github.com/ampproject/amphtml/issues/new",
        "type": 301
      },
      {
        "source": "/docs/reference/extended.html",
        "destination": "/docs/reference/components.html",
        "type": 301
      },
      {
        "source": "/docs/reference/amp-img.html",
        "destination": "/docs/reference/components/amp-img.html",
        "type": 301
      },
      {
        "source": "/docs/reference/amp-pixel.html",
        "destination": "/docs/reference/components/amp-pixel.html",
        "type": 301
      },
      {
        "source": "/docs/reference/amp-ad.html",
        "destination": "/docs/reference/components/amp-ad.html",
        "type": 301
      },
      {
        "source": "/docs/reference/amp-video.html",
        "destination": "/docs/reference/components/amp-video.html",
        "type": 301
      },
      {
        "source": "/docs/reference/extended/:post*",
        "destination": "/docs/reference/components/:post*",
        "type": 301
      }
    ],
    "ignore": [
      ".grow"
    ]
  }
}

---

## File: npm-shrinkwrap.json

{
  "name": "AMPProject.org",
  "dependencies": {
    "abbrev": {
      "version": "1.0.9",
      "from": "abbrev@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz"
    },
    "addressparser": {
      "version": "0.1.3",
      "from": "addressparser@>=0.1.3 <0.2.0",
      "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.1.3.tgz"
    },
    "ansi-regex": {
      "version": "2.0.0",
      "from": "ansi-regex@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz"
    },
    "ansi-styles": {
      "version": "2.2.1",
      "from": "ansi-styles@>=2.2.1 <3.0.0",
      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"
    },
    "aproba": {
      "version": "1.0.4",
      "from": "aproba@>=1.0.3 <2.0.0",
      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz"
    },
    "archy": {
      "version": "1.0.0",
      "from": "archy@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz"
    },
    "are-we-there-yet": {
      "version": "1.1.2",
      "from": "are-we-there-yet@>=1.1.2 <1.2.0",
      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz",
      "dependencies": {
        "isarray": {
          "version": "1.0.0",
          "from": "isarray@>=1.0.0 <1.1.0",
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
        },
        "readable-stream": {
          "version": "2.1.5",
          "from": "readable-stream@>=2.0.0 <3.0.0||>=1.1.13 <2.0.0",
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz"
        }
      }
    },
    "argparse": {
      "version": "1.0.9",
      "from": "argparse@>=1.0.7 <2.0.0",
      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz"
    },
    "arr-diff": {
      "version": "2.0.0",
      "from": "arr-diff@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz"
    },
    "arr-flatten": {
      "version": "1.0.1",
      "from": "arr-flatten@>=1.0.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz"
    },
    "array-differ": {
      "version": "1.0.0",
      "from": "array-differ@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz"
    },
    "array-find-index": {
      "version": "1.0.2",
      "from": "array-find-index@>=1.0.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz"
    },
    "array-flatten": {
      "version": "1.1.1",
      "from": "array-flatten@>=1.1.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz"
    },
    "array-index": {
      "version": "1.0.0",
      "from": "array-index@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/array-index/-/array-index-1.0.0.tgz"
    },
    "array-indexofobject": {
      "version": "0.0.1",
      "from": "array-indexofobject@>=0.0.1 <0.1.0",
      "resolved": "https://registry.npmjs.org/array-indexofobject/-/array-indexofobject-0.0.1.tgz"
    },
    "array-uniq": {
      "version": "1.0.3",
      "from": "array-uniq@>=1.0.2 <2.0.0",
      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz"
    },
    "array-unique": {
      "version": "0.2.1",
      "from": "array-unique@>=0.2.1 <0.3.0",
      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz"
    },
    "article-json-html-render": {
      "version": "2.7.1",
      "from": "article-json-html-render@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/article-json-html-render/-/article-json-html-render-2.7.1.tgz"
    },
    "article-json-to-amp": {
      "version": "1.10.6",
      "from": "article-json-to-amp@>=1.2.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/article-json-to-amp/-/article-json-to-amp-1.10.6.tgz"
    },
    "asn1": {
      "version": "0.2.3",
      "from": "asn1@>=0.2.3 <0.3.0",
      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz"
    },
    "assert-plus": {
      "version": "0.2.0",
      "from": "assert-plus@>=0.2.0 <0.3.0",
      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz"
    },
    "async": {
      "version": "2.1.2",
      "from": "async@>=2.0.1 <3.0.0",
      "resolved": "https://registry.npmjs.org/async/-/async-2.1.2.tgz",
      "dependencies": {
        "lodash": {
          "version": "4.16.4",
          "from": "lodash@>=4.14.0 <5.0.0"
        }
      }
    },
    "async-foreach": {
      "version": "0.1.3",
      "from": "async-foreach@>=0.1.3 <0.2.0",
      "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz"
    },
    "asynckit": {
      "version": "0.4.0",
      "from": "asynckit@>=0.4.0 <0.5.0",
      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
    },
    "autoprefixer": {
      "version": "6.5.1",
      "from": "autoprefixer@>=6.0.0 <7.0.0",
      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.5.1.tgz"
    },
    "aws-sign2": {
      "version": "0.6.0",
      "from": "aws-sign2@>=0.6.0 <0.7.0",
      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz"
    },
    "aws4": {
      "version": "1.5.0",
      "from": "aws4@>=1.2.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.5.0.tgz"
    },
    "balanced-match": {
      "version": "0.4.2",
      "from": "balanced-match@>=0.4.1 <0.5.0",
      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz"
    },
    "bcrypt-pbkdf": {
      "version": "1.0.0",
      "from": "bcrypt-pbkdf@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz"
    },
    "beeper": {
      "version": "1.1.0",
      "from": "beeper@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.0.tgz"
    },
    "bl": {
      "version": "1.1.2",
      "from": "bl@>=1.1.2 <1.2.0",
      "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz",
      "dependencies": {
        "isarray": {
          "version": "1.0.0",
          "from": "isarray@>=1.0.0 <1.1.0"
        },
        "readable-stream": {
          "version": "2.0.6",
          "from": "readable-stream@>=2.0.5 <2.1.0"
        }
      }
    },
    "block-elements": {
      "version": "1.1.0",
      "from": "block-elements@>=1.1.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/block-elements/-/block-elements-1.1.0.tgz"
    },
    "block-stream": {
      "version": "0.0.9",
      "from": "block-stream@*",
      "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz"
    },
    "bluebird": {
      "version": "3.4.7",
      "from": "bluebird@>=3.3.1 <4.0.0",
      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz"
    },
    "body-parser": {
      "version": "1.14.2",
      "from": "body-parser@>=1.14.0 <1.15.0",
      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz",
      "dependencies": {
        "qs": {
          "version": "5.2.0",
          "from": "qs@5.2.0",
          "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz"
        }
      }
    },
    "boom": {
      "version": "2.10.1",
      "from": "boom@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz"
    },
    "brace-expansion": {
      "version": "1.1.6",
      "from": "brace-expansion@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz"
    },
    "braces": {
      "version": "1.8.5",
      "from": "braces@>=1.8.2 <2.0.0",
      "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz"
    },
    "browserslist": {
      "version": "1.4.0",
      "from": "browserslist@>=1.4.0 <1.5.0",
      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.4.0.tgz"
    },
    "buffer-shims": {
      "version": "1.0.0",
      "from": "buffer-shims@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz"
    },
    "builtin-modules": {
      "version": "1.1.1",
      "from": "builtin-modules@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz"
    },
    "bytes": {
      "version": "2.2.0",
      "from": "bytes@2.2.0",
      "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz"
    },
    "camelcase": {
      "version": "2.1.1",
      "from": "camelcase@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz"
    },
    "camelcase-css": {
      "version": "1.0.1",
      "from": "camelcase-css@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-1.0.1.tgz"
    },
    "camelcase-keys": {
      "version": "2.1.0",
      "from": "camelcase-keys@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz"
    },
    "caniuse-db": {
      "version": "1.0.30000568",
      "from": "caniuse-db@>=1.0.30000554 <2.0.0",
      "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000568.tgz"
    },
    "caseless": {
      "version": "0.11.0",
      "from": "caseless@>=0.11.0 <0.12.0",
      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz"
    },
    "chalk": {
      "version": "1.1.3",
      "from": "chalk@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz"
    },
    "clap": {
      "version": "1.1.1",
      "from": "clap@>=1.0.9 <2.0.0",
      "resolved": "https://registry.npmjs.org/clap/-/clap-1.1.1.tgz"
    },
    "classnames": {
      "version": "2.2.5",
      "from": "classnames@>=2.1.3 <3.0.0",
      "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz"
    },
    "cliui": {
      "version": "3.2.0",
      "from": "cliui@>=3.2.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz"
    },
    "clone": {
      "version": "1.0.2",
      "from": "clone@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz"
    },
    "clone-stats": {
      "version": "0.0.1",
      "from": "clone-stats@>=0.0.1 <0.0.2",
      "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz"
    },
    "coa": {
      "version": "1.0.1",
      "from": "coa@>=1.0.1 <1.1.0",
      "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.1.tgz"
    },
    "code-point-at": {
      "version": "1.0.1",
      "from": "code-point-at@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.1.tgz"
    },
    "colors": {
      "version": "1.1.2",
      "from": "colors@>=1.1.2 <1.2.0",
      "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz"
    },
    "combined-stream": {
      "version": "1.0.5",
      "from": "combined-stream@>=1.0.5 <1.1.0",
      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz"
    },
    "commander": {
      "version": "2.9.0",
      "from": "commander@>=2.9.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz"
    },
    "component-emitter": {
      "version": "1.2.0",
      "from": "component-emitter@1.2.0",
      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.0.tgz"
    },
    "component-raf": {
      "version": "1.2.0",
      "from": "component-raf@1.2.0",
      "resolved": "https://registry.npmjs.org/component-raf/-/component-raf-1.2.0.tgz"
    },
    "component-type": {
      "version": "1.1.0",
      "from": "component-type@>=1.1.0 <1.2.0",
      "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.1.0.tgz"
    },
    "concat-map": {
      "version": "0.0.1",
      "from": "concat-map@0.0.1",
      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
    },
    "concat-stream": {
      "version": "1.5.0",
      "from": "concat-stream@1.5.0",
      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz",
      "dependencies": {
        "isarray": {
          "version": "1.0.0",
          "from": "isarray@>=1.0.0 <1.1.0",
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
        },
        "readable-stream": {
          "version": "2.0.6",
          "from": "readable-stream@>=2.0.0 <2.1.0",
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz"
        }
      }
    },
    "console-control-strings": {
      "version": "1.1.0",
      "from": "console-control-strings@>=1.1.0 <1.2.0",
      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"
    },
    "content-type": {
      "version": "1.0.2",
      "from": "content-type@>=1.0.1 <1.1.0",
      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz"
    },
    "core-util-is": {
      "version": "1.0.2",
      "from": "core-util-is@>=1.0.0 <1.1.0",
      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
    },
    "cross-spawn": {
      "version": "3.0.1",
      "from": "cross-spawn@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
      "dependencies": {
        "lru-cache": {
          "version": "4.0.1",
          "from": "lru-cache@>=4.0.1 <5.0.0",
          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.1.tgz"
        }
      }
    },
    "cryptiles": {
      "version": "2.0.5",
      "from": "cryptiles@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz"
    },
    "css-selector-parser": {
      "version": "1.2.0",
      "from": "css-selector-parser@>=1.1.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.2.0.tgz"
    },
    "cssauron": {
      "version": "1.4.0",
      "from": "cssauron@>=1.4.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz"
    },
    "cssmin": {
      "version": "0.4.3",
      "from": "cssmin@>=0.4.3 <0.5.0",
      "resolved": "https://registry.npmjs.org/cssmin/-/cssmin-0.4.3.tgz"
    },
    "csso": {
      "version": "2.2.1",
      "from": "csso@>=2.2.1 <2.3.0",
      "resolved": "https://registry.npmjs.org/csso/-/csso-2.2.1.tgz"
    },
    "cssom": {
      "version": "0.3.1",
      "from": "cssom@>=0.3.1 <0.4.0",
      "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.1.tgz"
    },
    "currently-unhandled": {
      "version": "0.4.1",
      "from": "currently-unhandled@>=0.4.1 <0.5.0",
      "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz"
    },
    "cycle": {
      "version": "1.0.3",
      "from": "cycle@>=1.0.0 <1.1.0",
      "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz"
    },
    "d": {
      "version": "0.1.1",
      "from": "d@>=0.1.1 <0.2.0",
      "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz"
    },
    "dashdash": {
      "version": "1.14.0",
      "from": "dashdash@>=1.12.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz",
      "dependencies": {
        "assert-plus": {
          "version": "1.0.0",
          "from": "assert-plus@>=1.0.0 <2.0.0",
          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz"
        }
      }
    },
    "dateformat": {
      "version": "1.0.12",
      "from": "dateformat@>=1.0.11 <2.0.0",
      "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz"
    },
    "debug": {
      "version": "2.2.0",
      "from": "debug@>=2.1.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz"
    },
    "decamelize": {
      "version": "1.2.0",
      "from": "decamelize@>=1.1.2 <2.0.0",
      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz"
    },
    "deep-extend": {
      "version": "0.4.1",
      "from": "deep-extend@>=0.4.1 <0.5.0",
      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz"
    },
    "defaults": {
      "version": "1.0.3",
      "from": "defaults@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz"
    },
    "deku": {
      "version": "1.0.0",
      "from": "deku@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/deku/-/deku-1.0.0.tgz",
      "dependencies": {
        "component-type": {
          "version": "1.2.0",
          "from": "component-type@1.2.0",
          "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.0.tgz"
        }
      }
    },
    "delayed-stream": {
      "version": "1.0.0",
      "from": "delayed-stream@>=1.0.0 <1.1.0",
      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
    },
    "delegates": {
      "version": "1.0.0",
      "from": "delegates@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz"
    },
    "depd": {
      "version": "1.1.0",
      "from": "depd@>=1.1.0 <1.2.0",
      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz"
    },
    "deprecated": {
      "version": "0.0.1",
      "from": "deprecated@>=0.0.1 <0.0.2",
      "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz"
    },
    "detect-file": {
      "version": "0.1.0",
      "from": "detect-file@>=0.1.0 <0.2.0",
      "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz"
    },
    "duplexer": {
      "version": "0.1.1",
      "from": "duplexer@>=0.1.1 <0.2.0",
      "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz"
    },
    "duplexer2": {
      "version": "0.0.2",
      "from": "duplexer2@0.0.2",
      "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
      "dependencies": {
        "readable-stream": {
          "version": "1.1.14",
          "from": "readable-stream@>=1.1.9 <1.2.0",
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz"
        }
      }
    },
    "ecc-jsbn": {
      "version": "0.1.1",
      "from": "ecc-jsbn@>=0.1.1 <0.2.0",
      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz"
    },
    "ee-first": {
      "version": "1.1.1",
      "from": "ee-first@1.1.1",
      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
    },
    "embedly-url": {
      "version": "1.0.0",
      "from": "embedly-url@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/embedly-url/-/embedly-url-1.0.0.tgz"
    },
    "embeds": {
      "version": "2.11.4",
      "from": "embeds@>=2.6.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/embeds/-/embeds-2.11.4.tgz",
      "dependencies": {
        "lodash.map": {
          "version": "4.6.0",
          "from": "lodash.map@>=4.2.1 <5.0.0"
        }
      }
    },
    "end-of-stream": {
      "version": "0.1.5",
      "from": "end-of-stream@>=0.1.5 <0.2.0",
      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz"
    },
    "error-ex": {
      "version": "1.3.0",
      "from": "error-ex@>=1.2.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz"
    },
    "es5-ext": {
      "version": "0.10.12",
      "from": "es5-ext@>=0.10.11 <0.11.0",
      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz"
    },
    "es6-iterator": {
      "version": "2.0.0",
      "from": "es6-iterator@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz"
    },
    "es6-promise": {
      "version": "4.0.5",
      "from": "es6-promise@>=4.0.3 <4.1.0",
      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.0.5.tgz"
    },
    "es6-set": {
      "version": "0.1.4",
      "from": "es6-set@>=0.1.2 <0.2.0",
      "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.4.tgz"
    },
    "es6-symbol": {
      "version": "3.1.0",
      "from": "es6-symbol@>=3.0.2 <4.0.0",
      "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz"
    },
    "escape-string-regexp": {
      "version": "1.0.5",
      "from": "escape-string-regexp@>=1.0.2 <2.0.0",
      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
    },
    "esprima": {
      "version": "2.7.3",
      "from": "esprima@>=2.6.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz"
    },
    "event-emitter": {
      "version": "0.3.4",
      "from": "event-emitter@>=0.3.4 <0.4.0",
      "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.4.tgz"
    },
    "event-stream": {
      "version": "3.3.4",
      "from": "event-stream@>=3.1.7 <4.0.0",
      "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz"
    },
    "expand-brackets": {
      "version": "0.1.5",
      "from": "expand-brackets@>=0.1.4 <0.2.0",
      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz"
    },
    "expand-range": {
      "version": "1.8.2",
      "from": "expand-range@>=1.8.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz"
    },
    "expand-tilde": {
      "version": "1.2.2",
      "from": "expand-tilde@>=1.2.2 <2.0.0",
      "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz"
    },
    "extend": {
      "version": "3.0.0",
      "from": "extend@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz"
    },
    "extglob": {
      "version": "0.3.2",
      "from": "extglob@>=0.3.1 <0.4.0",
      "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz"
    },
    "extract-zip": {
      "version": "1.5.0",
      "from": "extract-zip@>=1.5.0 <1.6.0",
      "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz",
      "dependencies": {
        "debug": {
          "version": "0.7.4",
          "from": "debug@0.7.4",
          "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz"
        },
        "minimist": {
          "version": "0.0.8",
          "from": "minimist@0.0.8",
          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
        },
        "mkdirp": {
          "version": "0.5.0",
          "from": "mkdirp@0.5.0",
          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz"
        }
      }
    },
    "extsprintf": {
      "version": "1.0.2",
      "from": "extsprintf@1.0.2",
      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz"
    },
    "eyes": {
      "version": "0.1.8",
      "from": "eyes@>=0.1.0 <0.2.0",
      "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz"
    },
    "fancy-log": {
      "version": "1.2.0",
      "from": "fancy-log@>=1.1.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.2.0.tgz"
    },
    "fast.js": {
      "version": "0.1.1",
      "from": "fast.js@0.1.1",
      "resolved": "https://registry.npmjs.org/fast.js/-/fast.js-0.1.1.tgz"
    },
    "faye-websocket": {
      "version": "0.7.3",
      "from": "faye-websocket@>=0.7.2 <0.8.0",
      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.7.3.tgz"
    },
    "fd-slicer": {
      "version": "1.0.1",
      "from": "fd-slicer@>=1.0.1 <1.1.0",
      "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz"
    },
    "feedparser": {
      "version": "1.1.5",
      "from": "feedparser@*",
      "resolved": "https://registry.npmjs.org/feedparser/-/feedparser-1.1.5.tgz"
    },
    "filename-regex": {
      "version": "2.0.0",
      "from": "filename-regex@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz"
    },
    "fill-range": {
      "version": "2.2.3",
      "from": "fill-range@>=2.1.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz"
    },
    "find-index": {
      "version": "0.1.1",
      "from": "find-index@>=0.1.1 <0.2.0",
      "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz"
    },
    "find-up": {
      "version": "1.1.2",
      "from": "find-up@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz"
    },
    "findup-sync": {
      "version": "0.4.3",
      "from": "findup-sync@>=0.4.2 <0.5.0",
      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz"
    },
    "fined": {
      "version": "1.0.2",
      "from": "fined@>=1.0.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/fined/-/fined-1.0.2.tgz"
    },
    "first-chunk-stream": {
      "version": "1.0.0",
      "from": "first-chunk-stream@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz"
    },
    "flagged-respawn": {
      "version": "0.3.2",
      "from": "flagged-respawn@>=0.3.2 <0.4.0",
      "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz"
    },
    "for-in": {
      "version": "0.1.6",
      "from": "for-in@>=0.1.5 <0.2.0",
      "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.6.tgz"
    },
    "for-own": {
      "version": "0.1.4",
      "from": "for-own@>=0.1.3 <0.2.0",
      "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.4.tgz"
    },
    "forever-agent": {
      "version": "0.6.1",
      "from": "forever-agent@>=0.6.1 <0.7.0",
      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz"
    },
    "form-data": {
      "version": "2.1.1",
      "from": "form-data@>=2.1.1 <2.2.0",
      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.1.tgz"
    },
    "from": {
      "version": "0.1.3",
      "from": "from@>=0.0.0 <1.0.0",
      "resolved": "https://registry.npmjs.org/from/-/from-0.1.3.tgz"
    },
    "fs-exists-sync": {
      "version": "0.1.0",
      "from": "fs-exists-sync@>=0.1.0 <0.2.0",
      "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz"
    },
    "fs-extra": {
      "version": "0.30.0",
      "from": "fs-extra@>=0.30.0 <0.31.0",
      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz"
    },
    "fs.realpath": {
      "version": "1.0.0",
      "from": "fs.realpath@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
    },
    "fstream": {
      "version": "1.0.10",
      "from": "fstream@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz"
    },
    "gauge": {
      "version": "2.6.0",
      "from": "gauge@>=2.6.0 <2.7.0",
      "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz",
      "dependencies": {
        "object-assign": {
          "version": "4.1.0",
          "from": "object-assign@>=4.1.0 <5.0.0",
          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz"
        }
      }
    },
    "gaze": {
      "version": "0.5.2",
      "from": "gaze@>=0.5.1 <0.6.0",
      "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz"
    },
    "generate-function": {
      "version": "2.0.0",
      "from": "generate-function@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz"
    },
    "generate-object-property": {
      "version": "1.2.0",
      "from": "generate-object-property@>=1.1.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz"
    },
    "get-caller-file": {
      "version": "1.0.2",
      "from": "get-caller-file@>=1.0.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz"
    },
    "get-stdin": {
      "version": "4.0.1",
      "from": "get-stdin@>=4.0.1 <5.0.0",
      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz"
    },
    "get-uid": {
      "version": "1.0.1",
      "from": "get-uid@1.0.1",
      "resolved": "https://registry.npmjs.org/get-uid/-/get-uid-1.0.1.tgz"
    },
    "get-youtube-id": {
      "version": "1.0.0",
      "from": "get-youtube-id@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/get-youtube-id/-/get-youtube-id-1.0.0.tgz"
    },
    "getpass": {
      "version": "0.1.6",
      "from": "getpass@>=0.1.1 <0.2.0",
      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz",
      "dependencies": {
        "assert-plus": {
          "version": "1.0.0",
          "from": "assert-plus@>=1.0.0 <2.0.0",
          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz"
        }
      }
    },
    "glob": {
      "version": "4.5.3",
      "from": "glob@>=4.3.1 <5.0.0",
      "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz"
    },
    "glob-base": {
      "version": "0.3.0",
      "from": "glob-base@>=0.3.0 <0.4.0",
      "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz"
    },
    "glob-parent": {
      "version": "2.0.0",
      "from": "glob-parent@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz"
    },
    "glob-stream": {
      "version": "3.1.18",
      "from": "glob-stream@>=3.1.5 <4.0.0",
      "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz",
      "dependencies": {
        "through2": {
          "version": "0.6.5",
          "from": "through2@>=0.6.1 <0.7.0",
          "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz"
        }
      }
    },
    "glob-watcher": {
      "version": "0.0.6",
      "from": "glob-watcher@>=0.0.6 <0.0.7",
      "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz"
    },
    "glob2base": {
      "version": "0.0.12",
      "from": "glob2base@>=0.0.12 <0.0.13",
      "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz"
    },
    "global-modules": {
      "version": "0.2.3",
      "from": "global-modules@>=0.2.3 <0.3.0",
      "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz"
    },
    "global-prefix": {
      "version": "0.1.4",
      "from": "global-prefix@>=0.1.4 <0.2.0",
      "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.4.tgz"
    },
    "globule": {
      "version": "0.1.0",
      "from": "globule@>=0.1.0 <0.2.0",
      "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz",
      "dependencies": {
        "glob": {
          "version": "3.1.21",
          "from": "glob@>=3.1.21 <3.2.0",
          "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz"
        },
        "graceful-fs": {
          "version": "1.2.3",
          "from": "graceful-fs@>=1.2.0 <1.3.0",
          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz"
        },
        "inherits": {
          "version": "1.0.2",
          "from": "inherits@>=1.0.0 <2.0.0",
          "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz"
        },
        "minimatch": {
          "version": "0.2.14",
          "from": "minimatch@>=0.2.11 <0.3.0",
          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz"
        }
      }
    },
    "glogg": {
      "version": "1.0.0",
      "from": "glogg@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz"
    },
    "graceful-fs": {
      "version": "4.1.9",
      "from": "graceful-fs@>=4.1.2 <5.0.0",
      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.9.tgz"
    },
    "graceful-readlink": {
      "version": "1.0.1",
      "from": "graceful-readlink@>=1.0.0",
      "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz"
    },
    "gulp": {
      "version": "3.9.1",
      "from": "gulp@*",
      "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz"
    },
    "gulp-autoprefixer": {
      "version": "3.1.1",
      "from": "gulp-autoprefixer@*",
      "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-3.1.1.tgz"
    },
    "gulp-livereload": {
      "version": "3.8.1",
      "from": "gulp-livereload@*",
      "resolved": "https://registry.npmjs.org/gulp-livereload/-/gulp-livereload-3.8.1.tgz",
      "dependencies": {
        "ansi-regex": {
          "version": "0.2.1",
          "from": "ansi-regex@>=0.2.0 <0.3.0",
          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
        },
        "ansi-styles": {
          "version": "1.1.0",
          "from": "ansi-styles@>=1.1.0 <2.0.0",
          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
        },
        "chalk": {
          "version": "0.5.1",
          "from": "chalk@>=0.5.1 <0.6.0",
          "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz"
        },
        "has-ansi": {
          "version": "0.1.0",
          "from": "has-ansi@>=0.1.0 <0.2.0",
          "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz"
        },
        "strip-ansi": {
          "version": "0.3.0",
          "from": "strip-ansi@>=0.3.0 <0.4.0",
          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz"
        },
        "supports-color": {
          "version": "0.2.0",
          "from": "supports-color@>=0.2.0 <0.3.0",
          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"
        }
      }
    },
    "gulp-plumber": {
      "version": "1.1.0",
      "from": "gulp-plumber@*",
      "resolved": "https://registry.npmjs.org/gulp-plumber/-/gulp-plumber-1.1.0.tgz"
    },
    "gulp-sass": {
      "version": "2.3.2",
      "from": "gulp-sass@*",
      "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-2.3.2.tgz"
    },
    "gulp-svg-sprite": {
      "version": "1.3.6",
      "from": "gulp-svg-sprite@latest",
      "resolved": "https://registry.npmjs.org/gulp-svg-sprite/-/gulp-svg-sprite-1.3.6.tgz",
      "dependencies": {
        "vinyl": {
          "version": "1.2.0",
          "from": "vinyl@>=1.2.0 <2.0.0",
          "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz"
        }
      }
    },
    "gulp-util": {
      "version": "3.0.7",
      "from": "gulp-util@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.7.tgz"
    },
    "gulplog": {
      "version": "1.0.0",
      "from": "gulplog@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz"
    },
    "har-validator": {
      "version": "2.0.6",
      "from": "har-validator@>=2.0.6 <2.1.0",
      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz"
    },
    "has-ansi": {
      "version": "2.0.0",
      "from": "has-ansi@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"
    },
    "has-color": {
      "version": "0.1.7",
      "from": "has-color@>=0.1.7 <0.2.0",
      "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz"
    },
    "has-flag": {
      "version": "1.0.0",
      "from": "has-flag@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz"
    },
    "has-gulplog": {
      "version": "0.1.0",
      "from": "has-gulplog@>=0.1.0 <0.2.0",
      "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz"
    },
    "has-unicode": {
      "version": "2.0.1",
      "from": "has-unicode@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz"
    },
    "hasha": {
      "version": "2.2.0",
      "from": "hasha@>=2.2.0 <2.3.0",
      "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz"
    },
    "hawk": {
      "version": "3.1.3",
      "from": "hawk@>=3.1.3 <3.2.0",
      "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz"
    },
    "he": {
      "version": "0.5.0",
      "from": "he@>=0.5.0 <0.6.0",
      "resolved": "https://registry.npmjs.org/he/-/he-0.5.0.tgz"
    },
    "hoek": {
      "version": "2.16.3",
      "from": "hoek@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz"
    },
    "hosted-git-info": {
      "version": "2.1.5",
      "from": "hosted-git-info@>=2.1.4 <3.0.0",
      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.5.tgz"
    },
    "html-to-amp": {
      "version": "2.0.2",
      "from": "html-to-amp@latest",
      "resolved": "https://registry.npmjs.org/html-to-amp/-/html-to-amp-2.0.2.tgz"
    },
    "html-to-article-json": {
      "version": "1.20.1",
      "from": "html-to-article-json@>=1.9.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/html-to-article-json/-/html-to-article-json-1.20.1.tgz",
      "dependencies": {
        "lodash.map": {
          "version": "4.6.0",
          "from": "lodash.map@>=4.2.0 <5.0.0",
          "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz"
        }
      }
    },
    "http-errors": {
      "version": "1.3.1",
      "from": "http-errors@>=1.3.1 <1.4.0",
      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz"
    },
    "http-signature": {
      "version": "1.1.1",
      "from": "http-signature@>=1.1.0 <1.2.0",
      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz"
    },
    "iconv-lite": {
      "version": "0.4.13",
      "from": "iconv-lite@0.4.13",
      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz"
    },
    "image-size": {
      "version": "0.3.5",
      "from": "image-size@>=0.3.5 <0.4.0",
      "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.3.5.tgz"
    },
    "in-publish": {
      "version": "2.0.0",
      "from": "in-publish@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz"
    },
    "indent-string": {
      "version": "2.1.0",
      "from": "indent-string@>=2.1.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz"
    },
    "inflight": {
      "version": "1.0.6",
      "from": "inflight@>=1.0.4 <2.0.0",
      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
    },
    "inherits": {
      "version": "2.0.3",
      "from": "inherits@>=2.0.1 <2.1.0",
      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
    },
    "ini": {
      "version": "1.3.4",
      "from": "ini@>=1.3.4 <2.0.0",
      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz"
    },
    "interpret": {
      "version": "1.0.1",
      "from": "interpret@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.1.tgz"
    },
    "invert-kv": {
      "version": "1.0.0",
      "from": "invert-kv@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz"
    },
    "is-absolute": {
      "version": "0.2.6",
      "from": "is-absolute@>=0.2.3 <0.3.0",
      "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz"
    },
    "is-arrayish": {
      "version": "0.2.1",
      "from": "is-arrayish@>=0.2.1 <0.3.0",
      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
    },
    "is-buffer": {
      "version": "1.1.4",
      "from": "is-buffer@>=1.0.2 <2.0.0",
      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.4.tgz"
    },
    "is-builtin-module": {
      "version": "1.0.0",
      "from": "is-builtin-module@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz"
    },
    "is-dom": {
      "version": "1.0.5",
      "from": "is-dom@1.0.5",
      "resolved": "https://registry.npmjs.org/is-dom/-/is-dom-1.0.5.tgz"
    },
    "is-dotfile": {
      "version": "1.0.2",
      "from": "is-dotfile@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.2.tgz"
    },
    "is-equal-shallow": {
      "version": "0.1.3",
      "from": "is-equal-shallow@>=0.1.3 <0.2.0",
      "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz"
    },
    "is-extendable": {
      "version": "0.1.1",
      "from": "is-extendable@>=0.1.1 <0.2.0",
      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz"
    },
    "is-extglob": {
      "version": "1.0.0",
      "from": "is-extglob@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz"
    },
    "is-finite": {
      "version": "1.0.2",
      "from": "is-finite@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz"
    },
    "is-fullwidth-code-point": {
      "version": "1.0.0",
      "from": "is-fullwidth-code-point@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"
    },
    "is-glob": {
      "version": "2.0.1",
      "from": "is-glob@>=2.0.1 <3.0.0",
      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz"
    },
    "is-my-json-valid": {
      "version": "2.15.0",
      "from": "is-my-json-valid@>=2.12.4 <3.0.0",
      "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz"
    },
    "is-number": {
      "version": "2.1.0",
      "from": "is-number@>=2.1.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz"
    },
    "is-posix-bracket": {
      "version": "0.1.1",
      "from": "is-posix-bracket@>=0.1.0 <0.2.0",
      "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz"
    },
    "is-primitive": {
      "version": "2.0.0",
      "from": "is-primitive@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz"
    },
    "is-property": {
      "version": "1.0.2",
      "from": "is-property@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz"
    },
    "is-relative": {
      "version": "0.2.1",
      "from": "is-relative@>=0.2.1 <0.3.0",
      "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz"
    },
    "is-stream": {
      "version": "1.1.0",
      "from": "is-stream@>=1.0.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz"
    },
    "is-svg-attribute": {
      "version": "1.0.2",
      "from": "is-svg-attribute@1.0.2",
      "resolved": "https://registry.npmjs.org/is-svg-attribute/-/is-svg-attribute-1.0.2.tgz"
    },
    "is-svg-element": {
      "version": "1.0.1",
      "from": "is-svg-element@1.0.1",
      "resolved": "https://registry.npmjs.org/is-svg-element/-/is-svg-element-1.0.1.tgz"
    },
    "is-typedarray": {
      "version": "1.0.0",
      "from": "is-typedarray@>=1.0.0 <1.1.0",
      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz"
    },
    "is-unc-path": {
      "version": "0.1.1",
      "from": "is-unc-path@>=0.1.1 <0.2.0",
      "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.1.tgz"
    },
    "is-utf8": {
      "version": "0.2.1",
      "from": "is-utf8@>=0.2.0 <0.3.0",
      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz"
    },
    "is-windows": {
      "version": "0.2.0",
      "from": "is-windows@>=0.2.0 <0.3.0",
      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz"
    },
    "isarray": {
      "version": "0.0.1",
      "from": "isarray@0.0.1",
      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
    },
    "isexe": {
      "version": "1.1.2",
      "from": "isexe@>=1.1.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz"
    },
    "isobject": {
      "version": "2.1.0",
      "from": "isobject@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
      "dependencies": {
        "isarray": {
          "version": "1.0.0",
          "from": "isarray@1.0.0",
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
        }
      }
    },
    "isstream": {
      "version": "0.1.2",
      "from": "isstream@>=0.1.2 <0.2.0",
      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"
    },
    "jodid25519": {
      "version": "1.0.2",
      "from": "jodid25519@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz"
    },
    "js-base64": {
      "version": "2.1.9",
      "from": "js-base64@>=2.1.9 <3.0.0",
      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz"
    },
    "js-yaml": {
      "version": "3.6.1",
      "from": "js-yaml@>=3.6.1 <4.0.0",
      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz"
    },
    "jsbn": {
      "version": "0.1.0",
      "from": "jsbn@>=0.1.0 <0.2.0",
      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz"
    },
    "json-schema": {
      "version": "0.2.3",
      "from": "json-schema@0.2.3",
      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz"
    },
    "json-stringify-safe": {
      "version": "5.0.1",
      "from": "json-stringify-safe@>=5.0.1 <5.1.0",
      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
    },
    "jsonfile": {
      "version": "2.4.0",
      "from": "jsonfile@>=2.1.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz"
    },
    "jsonpointer": {
      "version": "4.0.0",
      "from": "jsonpointer@>=4.0.0 <5.0.0",
      "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.0.tgz"
    },
    "jsprim": {
      "version": "1.3.1",
      "from": "jsprim@>=1.2.2 <2.0.0",
      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz"
    },
    "kew": {
      "version": "0.7.0",
      "from": "kew@>=0.7.0 <0.8.0",
      "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz"
    },
    "kind-of": {
      "version": "3.0.4",
      "from": "kind-of@>=3.0.2 <4.0.0",
      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.4.tgz"
    },
    "klaw": {
      "version": "1.3.1",
      "from": "klaw@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz"
    },
    "lcid": {
      "version": "1.0.0",
      "from": "lcid@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz"
    },
    "liftoff": {
      "version": "2.3.0",
      "from": "liftoff@>=2.1.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz"
    },
    "livereload-js": {
      "version": "2.2.2",
      "from": "livereload-js@>=2.2.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz"
    },
    "load-json-file": {
      "version": "1.1.0",
      "from": "load-json-file@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz"
    },
    "lodash": {
      "version": "1.0.2",
      "from": "lodash@>=1.0.1 <1.1.0",
      "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz"
    },
    "lodash._arraymap": {
      "version": "3.0.0",
      "from": "lodash._arraymap@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._arraymap/-/lodash._arraymap-3.0.0.tgz"
    },
    "lodash._baseassign": {
      "version": "3.2.0",
      "from": "lodash._baseassign@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz"
    },
    "lodash._basecallback": {
      "version": "3.3.1",
      "from": "lodash._basecallback@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._basecallback/-/lodash._basecallback-3.3.1.tgz"
    },
    "lodash._basecopy": {
      "version": "3.0.1",
      "from": "lodash._basecopy@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz"
    },
    "lodash._baseeach": {
      "version": "3.0.4",
      "from": "lodash._baseeach@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._baseeach/-/lodash._baseeach-3.0.4.tgz"
    },
    "lodash._baseget": {
      "version": "3.7.2",
      "from": "lodash._baseget@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._baseget/-/lodash._baseget-3.7.2.tgz"
    },
    "lodash._baseisequal": {
      "version": "3.0.7",
      "from": "lodash._baseisequal@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz"
    },
    "lodash._basetostring": {
      "version": "3.0.1",
      "from": "lodash._basetostring@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz"
    },
    "lodash._basevalues": {
      "version": "3.0.0",
      "from": "lodash._basevalues@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz"
    },
    "lodash._bindcallback": {
      "version": "3.0.1",
      "from": "lodash._bindcallback@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz"
    },
    "lodash._createassigner": {
      "version": "3.1.1",
      "from": "lodash._createassigner@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz"
    },
    "lodash._getnative": {
      "version": "3.9.1",
      "from": "lodash._getnative@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz"
    },
    "lodash._isiterateecall": {
      "version": "3.0.9",
      "from": "lodash._isiterateecall@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz"
    },
    "lodash._reescape": {
      "version": "3.0.0",
      "from": "lodash._reescape@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz"
    },
    "lodash._reevaluate": {
      "version": "3.0.0",
      "from": "lodash._reevaluate@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz"
    },
    "lodash._reinterpolate": {
      "version": "3.0.0",
      "from": "lodash._reinterpolate@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz"
    },
    "lodash._root": {
      "version": "3.0.1",
      "from": "lodash._root@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz"
    },
    "lodash._topath": {
      "version": "3.8.1",
      "from": "lodash._topath@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash._topath/-/lodash._topath-3.8.1.tgz"
    },
    "lodash.assign": {
      "version": "3.2.0",
      "from": "lodash.assign@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz"
    },
    "lodash.assignwith": {
      "version": "4.2.0",
      "from": "lodash.assignwith@>=4.0.7 <5.0.0",
      "resolved": "https://registry.npmjs.org/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz"
    },
    "lodash.clonedeep": {
      "version": "4.5.0",
      "from": "lodash.clonedeep@>=4.3.2 <5.0.0",
      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz"
    },
    "lodash.escape": {
      "version": "3.2.0",
      "from": "lodash.escape@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz"
    },
    "lodash.find": {
      "version": "4.6.0",
      "from": "lodash.find@>=4.2.0 <5.0.0",
      "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz"
    },
    "lodash.foreach": {
      "version": "4.5.0",
      "from": "lodash.foreach@>=4.2.0 <5.0.0",
      "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz"
    },
    "lodash.isarguments": {
      "version": "3.1.0",
      "from": "lodash.isarguments@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz"
    },
    "lodash.isarray": {
      "version": "3.0.4",
      "from": "lodash.isarray@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz"
    },
    "lodash.isempty": {
      "version": "4.4.0",
      "from": "lodash.isempty@>=4.2.1 <5.0.0",
      "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz"
    },
    "lodash.isplainobject": {
      "version": "4.0.6",
      "from": "lodash.isplainobject@>=4.0.4 <5.0.0",
      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz"
    },
    "lodash.isstring": {
      "version": "4.0.1",
      "from": "lodash.isstring@>=4.0.1 <5.0.0",
      "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz"
    },
    "lodash.istypedarray": {
      "version": "3.0.6",
      "from": "lodash.istypedarray@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz"
    },
    "lodash.keys": {
      "version": "3.1.2",
      "from": "lodash.keys@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz"
    },
    "lodash.last": {
      "version": "3.0.0",
      "from": "lodash.last@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash.last/-/lodash.last-3.0.0.tgz"
    },
    "lodash.map": {
      "version": "3.1.4",
      "from": "lodash.map@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-3.1.4.tgz"
    },
    "lodash.mapvalues": {
      "version": "4.6.0",
      "from": "lodash.mapvalues@>=4.4.0 <5.0.0",
      "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz"
    },
    "lodash.pairs": {
      "version": "3.0.1",
      "from": "lodash.pairs@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash.pairs/-/lodash.pairs-3.0.1.tgz"
    },
    "lodash.pick": {
      "version": "4.4.0",
      "from": "lodash.pick@>=4.2.1 <5.0.0",
      "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz"
    },
    "lodash.pluck": {
      "version": "3.1.2",
      "from": "lodash.pluck@>=3.1.2 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash.pluck/-/lodash.pluck-3.1.2.tgz"
    },
    "lodash.restparam": {
      "version": "3.6.1",
      "from": "lodash.restparam@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz"
    },
    "lodash.startswith": {
      "version": "4.2.1",
      "from": "lodash.startswith@>=4.0.0 <5.0.0",
      "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz"
    },
    "lodash.template": {
      "version": "3.6.2",
      "from": "lodash.template@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz"
    },
    "lodash.templatesettings": {
      "version": "3.1.1",
      "from": "lodash.templatesettings@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz"
    },
    "lodash.values": {
      "version": "4.3.0",
      "from": "lodash.values@>=4.1.0 <5.0.0",
      "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz"
    },
    "loud-rejection": {
      "version": "1.6.0",
      "from": "loud-rejection@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz"
    },
    "lru-cache": {
      "version": "2.7.3",
      "from": "lru-cache@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz"
    },
    "magic-virtual-element": {
      "version": "1.0.6",
      "from": "magic-virtual-element@>=1.0.6 <2.0.0",
      "resolved": "https://registry.npmjs.org/magic-virtual-element/-/magic-virtual-element-1.0.6.tgz"
    },
    "map-cache": {
      "version": "0.2.2",
      "from": "map-cache@>=0.2.0 <0.3.0",
      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz"
    },
    "map-obj": {
      "version": "1.0.1",
      "from": "map-obj@>=1.0.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz"
    },
    "map-stream": {
      "version": "0.1.0",
      "from": "map-stream@>=0.1.0 <0.2.0",
      "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz"
    },
    "media-typer": {
      "version": "0.3.0",
      "from": "media-typer@0.3.0",
      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
    },
    "meow": {
      "version": "3.7.0",
      "from": "meow@>=3.3.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
      "dependencies": {
        "object-assign": {
          "version": "4.1.0",
          "from": "object-assign@>=4.0.1 <5.0.0",
          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz"
        }
      }
    },
    "micromatch": {
      "version": "2.3.11",
      "from": "micromatch@>=2.3.7 <3.0.0",
      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz"
    },
    "mime-db": {
      "version": "1.24.0",
      "from": "mime-db@>=1.24.0 <1.25.0",
      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz"
    },
    "mime-types": {
      "version": "2.1.12",
      "from": "mime-types@>=2.1.11 <2.2.0",
      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.12.tgz"
    },
    "mini-lr": {
      "version": "0.1.9",
      "from": "mini-lr@>=0.1.8 <0.2.0",
      "resolved": "https://registry.npmjs.org/mini-lr/-/mini-lr-0.1.9.tgz"
    },
    "minimatch": {
      "version": "2.0.10",
      "from": "minimatch@>=2.0.1 <3.0.0",
      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz"
    },
    "minimist": {
      "version": "1.2.0",
      "from": "minimist@>=1.1.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
    },
    "mkdirp": {
      "version": "0.5.1",
      "from": "mkdirp@>=0.5.0 <0.6.0",
      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
      "dependencies": {
        "minimist": {
          "version": "0.0.8",
          "from": "minimist@0.0.8",
          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
        }
      }
    },
    "moment": {
      "version": "2.15.2",
      "from": "moment@*",
      "resolved": "https://registry.npmjs.org/moment/-/moment-2.15.2.tgz"
    },
    "ms": {
      "version": "0.7.1",
      "from": "ms@0.7.1",
      "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
    },
    "multipipe": {
      "version": "0.1.2",
      "from": "multipipe@>=0.1.2 <0.2.0",
      "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz"
    },
    "mustache": {
      "version": "2.2.1",
      "from": "mustache@>=2.2.1 <3.0.0",
      "resolved": "https://registry.npmjs.org/mustache/-/mustache-2.2.1.tgz"
    },
    "nan": {
      "version": "2.4.0",
      "from": "nan@>=2.3.2 <3.0.0",
      "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz"
    },
    "natives": {
      "version": "1.1.0",
      "from": "natives@>=1.1.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz"
    },
    "node-gyp": {
      "version": "3.4.0",
      "from": "node-gyp@>=3.3.1 <4.0.0",
      "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.4.0.tgz",
      "dependencies": {
        "glob": {
          "version": "7.1.1",
          "from": "glob@>=7.0.3 <8.0.0",
          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz"
        },
        "minimatch": {
          "version": "3.0.3",
          "from": "minimatch@>=3.0.2 <4.0.0",
          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz"
        },
        "npmlog": {
          "version": "3.1.2",
          "from": "npmlog@>=0.0.0 <1.0.0||>=1.0.0 <2.0.0||>=2.0.0 <3.0.0||>=3.0.0 <4.0.0",
          "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz"
        }
      }
    },
    "node-sass": {
      "version": "3.10.1",
      "from": "node-sass@>=3.4.2 <4.0.0",
      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-3.10.1.tgz",
      "dependencies": {
        "gaze": {
          "version": "1.1.2",
          "from": "gaze@>=1.0.0 <2.0.0",
          "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz"
        },
        "glob": {
          "version": "7.1.1",
          "from": "glob@>=7.0.3 <8.0.0",
          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz"
        },
        "globule": {
          "version": "1.1.0",
          "from": "globule@>=1.0.0 <2.0.0",
          "resolved": "https://registry.npmjs.org/globule/-/globule-1.1.0.tgz"
        },
        "lodash": {
          "version": "4.16.4",
          "from": "lodash@>=4.16.4 <4.17.0",
          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.16.4.tgz"
        },
        "lodash.assign": {
          "version": "4.2.0",
          "from": "lodash.assign@>=4.2.0 <5.0.0",
          "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz"
        },
        "minimatch": {
          "version": "3.0.3",
          "from": "minimatch@>=3.0.2 <3.1.0",
          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz"
        }
      }
    },
    "node-uuid": {
      "version": "1.4.7",
      "from": "node-uuid@>=1.4.7 <1.5.0",
      "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz"
    },
    "nopt": {
      "version": "3.0.6",
      "from": "nopt@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz"
    },
    "normalize-package-data": {
      "version": "2.3.5",
      "from": "normalize-package-data@>=2.3.4 <3.0.0",
      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz"
    },
    "normalize-path": {
      "version": "2.0.1",
      "from": "normalize-path@>=2.0.1 <3.0.0",
      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.0.1.tgz"
    },
    "normalize-range": {
      "version": "0.1.2",
      "from": "normalize-range@>=0.1.2 <0.2.0",
      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz"
    },
    "npmlog": {
      "version": "4.0.0",
      "from": "npmlog@>=4.0.0 <5.0.0",
      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.0.0.tgz"
    },
    "num2fraction": {
      "version": "1.2.2",
      "from": "num2fraction@>=1.2.2 <2.0.0",
      "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz"
    },
    "number-is-nan": {
      "version": "1.0.1",
      "from": "number-is-nan@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"
    },
    "oauth-sign": {
      "version": "0.8.2",
      "from": "oauth-sign@>=0.8.1 <0.9.0",
      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz"
    },
    "object-assign": {
      "version": "3.0.0",
      "from": "object-assign@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz"
    },
    "object-defaults": {
      "version": "0.1.0",
      "from": "object-defaults@0.1.0",
      "resolved": "https://registry.npmjs.org/object-defaults/-/object-defaults-0.1.0.tgz"
    },
    "object-path": {
      "version": "0.9.2",
      "from": "object-path@0.9.2",
      "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz"
    },
    "object.omit": {
      "version": "2.0.0",
      "from": "object.omit@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.0.tgz"
    },
    "octonode": {
      "version": "0.7.6",
      "from": "octonode@*",
      "resolved": "https://registry.npmjs.org/octonode/-/octonode-0.7.6.tgz"
    },
    "on-finished": {
      "version": "2.3.0",
      "from": "on-finished@>=2.3.0 <2.4.0",
      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz"
    },
    "once": {
      "version": "1.3.3",
      "from": "once@>=1.3.0 <1.4.0",
      "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz"
    },
    "orchestrator": {
      "version": "0.3.7",
      "from": "orchestrator@>=0.3.0 <0.4.0",
      "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.7.tgz"
    },
    "ordered-read-streams": {
      "version": "0.1.0",
      "from": "ordered-read-streams@>=0.1.0 <0.2.0",
      "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz"
    },
    "os-homedir": {
      "version": "1.0.2",
      "from": "os-homedir@>=1.0.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz"
    },
    "os-locale": {
      "version": "1.4.0",
      "from": "os-locale@>=1.4.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz"
    },
    "os-tmpdir": {
      "version": "1.0.2",
      "from": "os-tmpdir@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"
    },
    "osenv": {
      "version": "0.1.3",
      "from": "osenv@>=0.1.3 <0.2.0",
      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz"
    },
    "parse-filepath": {
      "version": "1.0.1",
      "from": "parse-filepath@>=1.0.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz"
    },
    "parse-glob": {
      "version": "3.0.4",
      "from": "parse-glob@>=3.0.4 <4.0.0",
      "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz"
    },
    "parse-json": {
      "version": "2.2.0",
      "from": "parse-json@>=2.2.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz"
    },
    "parse5": {
      "version": "2.2.3",
      "from": "parse5@>=2.1.5 <3.0.0",
      "resolved": "https://registry.npmjs.org/parse5/-/parse5-2.2.3.tgz"
    },
    "parseurl": {
      "version": "1.3.1",
      "from": "parseurl@>=1.3.0 <1.4.0",
      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz"
    },
    "path-array": {
      "version": "1.0.1",
      "from": "path-array@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/path-array/-/path-array-1.0.1.tgz"
    },
    "path-exists": {
      "version": "2.1.0",
      "from": "path-exists@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz"
    },
    "path-is-absolute": {
      "version": "1.0.1",
      "from": "path-is-absolute@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
    },
    "path-root": {
      "version": "0.1.1",
      "from": "path-root@>=0.1.1 <0.2.0",
      "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz"
    },
    "path-root-regex": {
      "version": "0.1.2",
      "from": "path-root-regex@>=0.1.0 <0.2.0",
      "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz"
    },
    "path-type": {
      "version": "1.1.0",
      "from": "path-type@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz"
    },
    "pause-stream": {
      "version": "0.0.11",
      "from": "pause-stream@0.0.11",
      "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz"
    },
    "pend": {
      "version": "1.2.0",
      "from": "pend@>=1.2.0 <1.3.0",
      "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz"
    },
    "phantomjs-prebuilt": {
      "version": "2.1.13",
      "from": "phantomjs-prebuilt@>=2.1.12 <3.0.0",
      "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.13.tgz",
      "dependencies": {
        "form-data": {
          "version": "1.0.1",
          "from": "form-data@>=1.0.0-rc4 <1.1.0",
          "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz"
        },
        "qs": {
          "version": "6.2.1",
          "from": "qs@>=6.2.0 <6.3.0",
          "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz"
        },
        "request": {
          "version": "2.74.0",
          "from": "request@>=2.74.0 <2.75.0",
          "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz"
        }
      }
    },
    "pify": {
      "version": "2.3.0",
      "from": "pify@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz"
    },
    "pinkie": {
      "version": "2.0.4",
      "from": "pinkie@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz"
    },
    "pinkie-promise": {
      "version": "2.0.1",
      "from": "pinkie-promise@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"
    },
    "pkginfo": {
      "version": "0.3.1",
      "from": "pkginfo@>=0.3.0 <0.4.0",
      "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz"
    },
    "postcss": {
      "version": "5.2.5",
      "from": "postcss@>=5.0.4 <6.0.0",
      "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.5.tgz",
      "dependencies": {
        "supports-color": {
          "version": "3.1.2",
          "from": "supports-color@>=3.1.2 <4.0.0",
          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz"
        }
      }
    },
    "postcss-value-parser": {
      "version": "3.3.0",
      "from": "postcss-value-parser@>=3.2.3 <4.0.0",
      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz"
    },
    "preserve": {
      "version": "0.2.0",
      "from": "preserve@>=0.2.0 <0.3.0",
      "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz"
    },
    "pretty-hrtime": {
      "version": "1.0.2",
      "from": "pretty-hrtime@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.2.tgz"
    },
    "prettysize": {
      "version": "0.0.3",
      "from": "prettysize@>=0.0.3 <0.0.4",
      "resolved": "https://registry.npmjs.org/prettysize/-/prettysize-0.0.3.tgz"
    },
    "process-nextick-args": {
      "version": "1.0.7",
      "from": "process-nextick-args@>=1.0.6 <1.1.0",
      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz"
    },
    "progress": {
      "version": "1.1.8",
      "from": "progress@>=1.1.8 <1.2.0",
      "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz"
    },
    "pseudomap": {
      "version": "1.0.2",
      "from": "pseudomap@>=1.0.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz"
    },
    "punycode": {
      "version": "1.4.1",
      "from": "punycode@>=1.4.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"
    },
    "q": {
      "version": "1.4.1",
      "from": "q@>=1.1.2 <2.0.0",
      "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz"
    },
    "qs": {
      "version": "2.2.5",
      "from": "qs@>=2.2.3 <2.3.0",
      "resolved": "https://registry.npmjs.org/qs/-/qs-2.2.5.tgz"
    },
    "query-dom": {
      "version": "3.4.3",
      "from": "query-dom@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/query-dom/-/query-dom-3.4.3.tgz",
      "dependencies": {
        "object-assign": {
          "version": "4.1.1",
          "from": "object-assign@>=4.0.1 <5.0.0",
          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
        }
      }
    },
    "randomatic": {
      "version": "1.1.5",
      "from": "randomatic@>=1.1.3 <2.0.0",
      "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.5.tgz"
    },
    "randomstring": {
      "version": "1.1.5",
      "from": "randomstring@>=1.1.5 <2.0.0",
      "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.1.5.tgz",
      "dependencies": {
        "array-uniq": {
          "version": "1.0.2",
          "from": "array-uniq@1.0.2",
          "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz"
        }
      }
    },
    "raw-body": {
      "version": "2.1.7",
      "from": "raw-body@>=2.1.5 <2.2.0",
      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz",
      "dependencies": {
        "bytes": {
          "version": "2.4.0",
          "from": "bytes@2.4.0",
          "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz"
        }
      }
    },
    "read-pkg": {
      "version": "1.1.0",
      "from": "read-pkg@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz"
    },
    "read-pkg-up": {
      "version": "1.0.1",
      "from": "read-pkg-up@>=1.0.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz"
    },
    "readable-stream": {
      "version": "1.0.34",
      "from": "readable-stream@>=1.0.17 <1.1.0",
      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz"
    },
    "rechoir": {
      "version": "0.6.2",
      "from": "rechoir@>=0.6.2 <0.7.0",
      "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz"
    },
    "redent": {
      "version": "1.0.0",
      "from": "redent@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz"
    },
    "regex-cache": {
      "version": "0.4.3",
      "from": "regex-cache@>=0.4.2 <0.5.0",
      "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz"
    },
    "repeat-element": {
      "version": "1.1.2",
      "from": "repeat-element@>=1.1.2 <2.0.0",
      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz"
    },
    "repeat-string": {
      "version": "1.6.1",
      "from": "repeat-string@>=1.5.2 <2.0.0",
      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz"
    },
    "repeating": {
      "version": "2.0.1",
      "from": "repeating@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz"
    },
    "replace-ext": {
      "version": "0.0.1",
      "from": "replace-ext@0.0.1",
      "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz"
    },
    "request": {
      "version": "2.76.0",
      "from": "request@*",
      "resolved": "https://registry.npmjs.org/request/-/request-2.76.0.tgz",
      "dependencies": {
        "qs": {
          "version": "6.3.0",
          "from": "qs@>=6.3.0 <6.4.0",
          "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.0.tgz"
        }
      }
    },
    "request-image-size": {
      "version": "1.2.2",
      "from": "request-image-size@>=1.2.2 <2.0.0",
      "resolved": "https://registry.npmjs.org/request-image-size/-/request-image-size-1.2.2.tgz"
    },
    "request-progress": {
      "version": "2.0.1",
      "from": "request-progress@>=2.0.1 <2.1.0",
      "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz"
    },
    "require-directory": {
      "version": "2.1.1",
      "from": "require-directory@>=2.1.1 <3.0.0",
      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
    },
    "require-main-filename": {
      "version": "1.0.1",
      "from": "require-main-filename@>=1.0.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz"
    },
    "resolve": {
      "version": "1.1.7",
      "from": "resolve@>=1.1.7 <2.0.0",
      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz"
    },
    "resolve-dir": {
      "version": "0.1.1",
      "from": "resolve-dir@>=0.1.0 <0.2.0",
      "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz"
    },
    "rimraf": {
      "version": "2.5.4",
      "from": "rimraf@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz",
      "dependencies": {
        "glob": {
          "version": "7.1.1",
          "from": "glob@>=7.0.5 <8.0.0",
          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz"
        },
        "minimatch": {
          "version": "3.0.3",
          "from": "minimatch@>=3.0.2 <4.0.0",
          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz"
        }
      }
    },
    "sass-graph": {
      "version": "2.1.2",
      "from": "sass-graph@>=2.1.1 <3.0.0",
      "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.1.2.tgz",
      "dependencies": {
        "glob": {
          "version": "7.1.1",
          "from": "glob@>=7.0.0 <8.0.0",
          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz"
        },
        "lodash": {
          "version": "4.16.4",
          "from": "lodash@>=4.0.0 <5.0.0",
          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.16.4.tgz"
        },
        "minimatch": {
          "version": "3.0.3",
          "from": "minimatch@>=3.0.2 <4.0.0",
          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz"
        }
      }
    },
    "sax": {
      "version": "0.6.1",
      "from": "sax@>=0.6.0 <0.7.0",
      "resolved": "https://registry.npmjs.org/sax/-/sax-0.6.1.tgz"
    },
    "semver": {
      "version": "4.3.6",
      "from": "semver@>=4.1.0 <5.0.0",
      "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz"
    },
    "sequencify": {
      "version": "0.0.7",
      "from": "sequencify@>=0.0.7 <0.1.0",
      "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz"
    },
    "set-blocking": {
      "version": "2.0.0",
      "from": "set-blocking@>=2.0.0 <2.1.0",
      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
    },
    "sigmund": {
      "version": "1.0.1",
      "from": "sigmund@>=1.0.0 <1.1.0",
      "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz"
    },
    "signal-exit": {
      "version": "3.0.1",
      "from": "signal-exit@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.1.tgz"
    },
    "sliced": {
      "version": "1.0.1",
      "from": "sliced@>=1.0.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz"
    },
    "sntp": {
      "version": "1.0.9",
      "from": "sntp@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz"
    },
    "source-map": {
      "version": "0.5.6",
      "from": "source-map@>=0.5.6 <0.6.0",
      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz"
    },
    "sparkles": {
      "version": "1.0.0",
      "from": "sparkles@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz"
    },
    "spdx-correct": {
      "version": "1.0.2",
      "from": "spdx-correct@>=1.0.0 <1.1.0",
      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz"
    },
    "spdx-expression-parse": {
      "version": "1.0.4",
      "from": "spdx-expression-parse@>=1.0.0 <1.1.0",
      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz"
    },
    "spdx-license-ids": {
      "version": "1.2.2",
      "from": "spdx-license-ids@>=1.0.2 <2.0.0",
      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz"
    },
    "split": {
      "version": "0.3.3",
      "from": "split@>=0.3.0 <0.4.0",
      "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz"
    },
    "sprintf-js": {
      "version": "1.0.3",
      "from": "sprintf-js@>=1.0.2 <1.1.0",
      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"
    },
    "sshpk": {
      "version": "1.10.1",
      "from": "sshpk@>=1.7.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.1.tgz",
      "dependencies": {
        "assert-plus": {
          "version": "1.0.0",
          "from": "assert-plus@>=1.0.0 <2.0.0",
          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz"
        }
      }
    },
    "stack-trace": {
      "version": "0.0.9",
      "from": "stack-trace@>=0.0.0 <0.1.0",
      "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz"
    },
    "statuses": {
      "version": "1.3.0",
      "from": "statuses@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz"
    },
    "stream-combiner": {
      "version": "0.0.4",
      "from": "stream-combiner@>=0.0.4 <0.1.0",
      "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz"
    },
    "stream-consume": {
      "version": "0.1.0",
      "from": "stream-consume@>=0.1.0 <0.2.0",
      "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz"
    },
    "string_decoder": {
      "version": "0.10.31",
      "from": "string_decoder@>=0.10.0 <0.11.0",
      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
    },
    "string-width": {
      "version": "1.0.2",
      "from": "string-width@>=1.0.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"
    },
    "stringstream": {
      "version": "0.0.5",
      "from": "stringstream@>=0.0.4 <0.1.0",
      "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz"
    },
    "strip-ansi": {
      "version": "3.0.1",
      "from": "strip-ansi@>=3.0.0 <4.0.0",
      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"
    },
    "strip-bom": {
      "version": "2.0.0",
      "from": "strip-bom@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz"
    },
    "strip-indent": {
      "version": "1.0.1",
      "from": "strip-indent@>=1.0.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz"
    },
    "supports-color": {
      "version": "2.0.0",
      "from": "supports-color@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"
    },
    "svg-sprite": {
      "version": "1.3.6",
      "from": "svg-sprite@>=1.3.6 <1.4.0",
      "resolved": "https://registry.npmjs.org/svg-sprite/-/svg-sprite-1.3.6.tgz",
      "dependencies": {
        "camelcase": {
          "version": "3.0.0",
          "from": "camelcase@>=3.0.0 <4.0.0",
          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz"
        },
        "glob": {
          "version": "7.1.1",
          "from": "glob@>=7.0.6 <8.0.0",
          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz"
        },
        "lodash": {
          "version": "4.16.4",
          "from": "lodash@>=4.15.0 <5.0.0",
          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.16.4.tgz"
        },
        "lodash.assign": {
          "version": "4.2.0",
          "from": "lodash.assign@>=4.2.0 <5.0.0",
          "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz"
        },
        "minimatch": {
          "version": "3.0.3",
          "from": "minimatch@>=3.0.2 <4.0.0",
          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz"
        },
        "vinyl": {
          "version": "1.2.0",
          "from": "vinyl@>=1.2.0 <2.0.0"
        },
        "yargs": {
          "version": "5.0.0",
          "from": "yargs@>=5.0.0 <6.0.0",
          "resolved": "https://registry.npmjs.org/yargs/-/yargs-5.0.0.tgz"
        },
        "yargs-parser": {
          "version": "3.2.0",
          "from": "yargs-parser@>=3.2.0 <4.0.0",
          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-3.2.0.tgz"
        }
      }
    },
    "svgo": {
      "version": "0.7.0",
      "from": "svgo@0.7.0",
      "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.0.tgz",
      "dependencies": {
        "sax": {
          "version": "1.2.1",
          "from": "sax@>=1.2.1 <1.3.0",
          "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz"
        }
      }
    },
    "tar": {
      "version": "2.2.1",
      "from": "tar@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz"
    },
    "throttleit": {
      "version": "1.0.0",
      "from": "throttleit@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz"
    },
    "through": {
      "version": "2.3.8",
      "from": "through@>=2.3.1 <2.4.0",
      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz"
    },
    "through2": {
      "version": "2.0.1",
      "from": "through2@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz",
      "dependencies": {
        "isarray": {
          "version": "1.0.0",
          "from": "isarray@>=1.0.0 <1.1.0",
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
        },
        "readable-stream": {
          "version": "2.0.6",
          "from": "readable-stream@>=2.0.0 <2.1.0",
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz"
        }
      }
    },
    "tildify": {
      "version": "1.2.0",
      "from": "tildify@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz"
    },
    "time-stamp": {
      "version": "1.0.1",
      "from": "time-stamp@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.0.1.tgz"
    },
    "to-fast-properties": {
      "version": "1.0.2",
      "from": "to-fast-properties@>=1.0.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.2.tgz"
    },
    "to-style": {
      "version": "1.3.3",
      "from": "to-style@>=1.3.3 <2.0.0",
      "resolved": "https://registry.npmjs.org/to-style/-/to-style-1.3.3.tgz"
    },
    "tough-cookie": {
      "version": "2.3.2",
      "from": "tough-cookie@>=2.3.0 <2.4.0",
      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz"
    },
    "trim-newlines": {
      "version": "1.0.0",
      "from": "trim-newlines@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz"
    },
    "tunnel-agent": {
      "version": "0.4.3",
      "from": "tunnel-agent@>=0.4.1 <0.5.0",
      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz"
    },
    "tweetnacl": {
      "version": "0.14.3",
      "from": "tweetnacl@>=0.14.0 <0.15.0",
      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz"
    },
    "type-is": {
      "version": "1.6.13",
      "from": "type-is@>=1.6.10 <1.7.0",
      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz"
    },
    "typedarray": {
      "version": "0.0.6",
      "from": "typedarray@>=0.0.5 <0.1.0",
      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
    },
    "unc-path-regex": {
      "version": "0.1.2",
      "from": "unc-path-regex@>=0.1.0 <0.2.0",
      "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz"
    },
    "unique-stream": {
      "version": "1.0.0",
      "from": "unique-stream@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz"
    },
    "unpipe": {
      "version": "1.0.0",
      "from": "unpipe@1.0.0",
      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
    },
    "user-home": {
      "version": "1.1.1",
      "from": "user-home@>=1.1.1 <2.0.0",
      "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz"
    },
    "util-deprecate": {
      "version": "1.0.2",
      "from": "util-deprecate@>=1.0.1 <1.1.0",
      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
    },
    "v8flags": {
      "version": "2.0.11",
      "from": "v8flags@>=2.0.2 <3.0.0",
      "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.0.11.tgz"
    },
    "validate-npm-package-license": {
      "version": "3.0.1",
      "from": "validate-npm-package-license@>=3.0.1 <4.0.0",
      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz"
    },
    "verror": {
      "version": "1.3.6",
      "from": "verror@1.3.6",
      "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz"
    },
    "vinyl": {
      "version": "0.5.3",
      "from": "vinyl@>=0.5.0 <0.6.0",
      "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz"
    },
    "vinyl-fs": {
      "version": "0.3.14",
      "from": "vinyl-fs@>=0.3.0 <0.4.0",
      "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz",
      "dependencies": {
        "clone": {
          "version": "0.2.0",
          "from": "clone@>=0.2.0 <0.3.0",
          "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz"
        },
        "graceful-fs": {
          "version": "3.0.11",
          "from": "graceful-fs@>=3.0.0 <4.0.0",
          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz"
        },
        "strip-bom": {
          "version": "1.0.0",
          "from": "strip-bom@>=1.0.0 <2.0.0",
          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz"
        },
        "through2": {
          "version": "0.6.5",
          "from": "through2@>=0.6.1 <0.7.0",
          "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz"
        },
        "vinyl": {
          "version": "0.4.6",
          "from": "vinyl@>=0.4.0 <0.5.0",
          "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz"
        }
      }
    },
    "vinyl-sourcemaps-apply": {
      "version": "0.2.1",
      "from": "vinyl-sourcemaps-apply@>=0.2.0 <0.3.0",
      "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz"
    },
    "virtual-element": {
      "version": "1.2.0",
      "from": "virtual-element@>=1.1.2 <2.0.0",
      "resolved": "https://registry.npmjs.org/virtual-element/-/virtual-element-1.2.0.tgz",
      "dependencies": {
        "sliced": {
          "version": "0.0.5",
          "from": "sliced@0.0.5",
          "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz"
        }
      }
    },
    "websocket-driver": {
      "version": "0.6.5",
      "from": "websocket-driver@>=0.3.6",
      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz"
    },
    "websocket-extensions": {
      "version": "0.1.1",
      "from": "websocket-extensions@>=0.1.1",
      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz"
    },
    "whet.extend": {
      "version": "0.9.9",
      "from": "whet.extend@>=0.9.9 <0.10.0",
      "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz"
    },
    "which": {
      "version": "1.2.11",
      "from": "which@>=1.2.10 <2.0.0",
      "resolved": "https://registry.npmjs.org/which/-/which-1.2.11.tgz"
    },
    "which-module": {
      "version": "1.0.0",
      "from": "which-module@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz"
    },
    "wide-align": {
      "version": "1.1.0",
      "from": "wide-align@>=1.1.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz"
    },
    "window-size": {
      "version": "0.2.0",
      "from": "window-size@>=0.2.0 <0.3.0",
      "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz"
    },
    "winston": {
      "version": "2.2.0",
      "from": "winston@>=2.2.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/winston/-/winston-2.2.0.tgz",
      "dependencies": {
        "async": {
          "version": "1.0.0",
          "from": "async@>=1.0.0 <1.1.0",
          "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz"
        },
        "colors": {
          "version": "1.0.3",
          "from": "colors@>=1.0.0 <1.1.0",
          "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz"
        }
      }
    },
    "wrap-ansi": {
      "version": "2.0.0",
      "from": "wrap-ansi@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.0.0.tgz"
    },
    "wrappy": {
      "version": "1.0.2",
      "from": "wrappy@>=1.0.0 <2.0.0",
      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
    },
    "xmldom": {
      "version": "0.1.22",
      "from": "xmldom@0.1.22",
      "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.22.tgz"
    },
    "xpath": {
      "version": "0.0.23",
      "from": "xpath@>=0.0.23 <0.0.24",
      "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.23.tgz"
    },
    "xtend": {
      "version": "4.0.1",
      "from": "xtend@>=4.0.0 <4.1.0",
      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz"
    },
    "y18n": {
      "version": "3.2.1",
      "from": "y18n@>=3.2.1 <4.0.0",
      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz"
    },
    "yallist": {
      "version": "2.0.0",
      "from": "yallist@>=2.0.0 <3.0.0",
      "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz"
    },
    "yargs": {
      "version": "4.8.1",
      "from": "yargs@>=4.7.1 <5.0.0",
      "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz",
      "dependencies": {
        "lodash.assign": {
          "version": "4.2.0",
          "from": "lodash.assign@>=4.0.3 <5.0.0",
          "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz"
        }
      }
    },
    "yargs-parser": {
      "version": "2.4.1",
      "from": "yargs-parser@>=2.4.1 <3.0.0",
      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz",
      "dependencies": {
        "camelcase": {
          "version": "3.0.0",
          "from": "camelcase@>=3.0.0 <4.0.0",
          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz"
        },
        "lodash.assign": {
          "version": "4.2.0",
          "from": "lodash.assign@>=4.0.6 <5.0.0",
          "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz"
        }
      }
    },
    "yauzl": {
      "version": "2.4.1",
      "from": "yauzl@2.4.1",
      "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz"
    }
  }
}

---

## File: package.json

{
  "name": "AMPProject.org",
  "private": true,
  "dependencies": {
    "feedparser": "*",
    "gulp": "*",
    "gulp-autoprefixer": "*",
    "gulp-plumber": "*",
    "gulp-sass": "*",
    "gulp-svg-sprite": "^1.3.6",
    "moment": "*",
    "octonode": "*",
    "request": "*"
  }
}

---

## File: podspec.yaml

grow_version: ">=0.0.66"
home: /content/pages/home.html

localization:
  default_locale: en
  locales:
  - ar
  - de
  - en
  - es
  - fr
  - id
  - it
  - ja
  - ko
  - pl
  - pt_BR
  - ru
  - th
  - tr
  - zh_CN
  aliases:
    en_UK: en_GB

static_dirs:
- static_dir: /assets/
  serve_at: /static/
- static_dir: /pwa/
  serve_at: /

preprocessors:
- kind: gulp

markdown:
  extensions:
  - kind: sourcecode
    classes: true

deployments:
  review:
    destination: webreview
    server: googwebreview.appspot.com
    project: search/amp
    name: amp

---

## File: .eslintrc.json

{
    "env": {
        "browser": true,
        "es6": true
    },
    "extends": "eslint:recommended",
    "rules": {
        "indent": [
            "error",
            2
        ],
        "linebreak-style": [
            "error",
            "unix"
        ],
        "quotes": [
            "error",
            "single"
        ],
        "semi": [
            "error",
            "always"
        ],
        "no-else-return": [
            "error"
        ],
        "array-bracket-spacing": [
            "error",
            "always",
            { "singleValue": false }
        ],
        "brace-style": [
            "error",
            "1tbs"
        ]
    }
}

---

## File: .travis.yml

language: node_js
node_js:
- node
cache:
  directories:
  - node_modules # NPM packages
  - $(npm config get prefix)/bin/gulp
  - $(npm config get prefix)/bin/firebase
  - /home/travis/.nvm/versions/node/v7.2.0/lib/node_modules
  - $HOME/.cache/pip
  - /home/travis/.local/bin
install:
- pip install grow --user
- npm install gulp
- npm install firebase-tools
- npm install
script:
- 'if [ "${TRAVIS_BRANCH}" = "production" ]; then firebase use production; fi'
- 'if [ "${TRAVIS_BRANCH}" = "master" ]; then firebase use staging; fi'
- grow build
after_success:
- firebase deploy --token "$FIREBASE_TOKEN"
branches:
  only:
  - production
  - master
env:
  global:
    secure: RRx3CaLmCC0rA+MOYXTI3HTAMc2TI9AQcodUfZhr+vNEL8d0q09EZkYU/TjkRx9VQ1paOT1AmxNQJtHhysIS7B/pSAZoNG9bPC5UXmiZHVLbRB4qPmMMte9zdfKanGY3/g3zt2qOTUVVL4ymDy5xK2uYZ/KgkrDx1gGH3mSoTO6gK79I4nisJYDcRfzI/UUvrNkdjlFYrFnZbnMdnqZSryuv7CrdZWpYtLDryzJ+bcgq6Vr2liiKwmVb+/tff3EblAzBcWMAM4I0MzRaM+Mahw0EEENc24brtVoQTbvSdXXJ9CEIfWjykSyZh0WrZkx3tKY95GDr9PCHEkyI5d2kUGYDbRjjrEuBEdPTcjx6zZ2vXUlVPeDxNwLO1WZwVy0Om1dg/jwPjVDtsubjBaC+4XezJCywaZruGD6Q0iStemMVapN19SbGJzo9uYG8EvVB4OFlmY2l/fOadTIC9YHpYJREhGc2DBW9jHfTK1dgyW1JpnFgieEOSw24gsvbxSSV5db7tJU36Pt1Kkcu3IZnYyHlBUmYKZ24cizh6azfkHRaLvSvdJuvx0euuoz/WOJ77toUD6wPc0/OtrKnkCfQowtciMdnKNhuu4JpegdZ9gQqpV2gQ0XpPgxc4afKCd0L5QiUNFCu1J+fQ0obclqWZpC0VzHdDpNMckv4I7XqnhI=

---

## File: assets/manifest.json

{
  "name": "AMPProject.org",
  "short_name": "AMP",
  "start_url": "/",
  "display": "standalone",
  "background_color": "#fff",
  "theme_color": "#0379C4",
  "description": "The official website and documentation for the Accelerated Mobile Pages project.",
  "icons": [{
    "src": "/static/img/icons/48.png",
    "sizes": "48x48",
    "type": "image/png"
  }, {
    "src": "/static/img/icons/72.png",
    "sizes": "72x72",
    "type": "image/png"
  }, {
    "src": "/static/img/icons/96.png",
    "sizes": "96x96",
    "type": "image/png"
  }, {
    "src": "/static/img/icons/144.png",
    "sizes": "144x144",
    "type": "image/png"
  }, {
    "src": "/static/img/icons/168.png",
    "sizes": "168x168",
    "type": "image/png"
  }, {
    "src": "/static/img/icons/192.png",
    "sizes": "192x192",
    "type": "image/png"
  }, {
    "src": "/static/img/icons/any.svg",
    "sizes": "any"
  }]
}

---

## File: content/contribute/governance.md

---
$title: Open Source Governance
$order: 4
---


The AMP Project's chief and primary concern is with the development of AMP HTML, an open-source runtime shared by many producers and consumers of (mostly) static web content.  Its governance model thus reflects only the need to steer engineering direction, and not any other activities, which would be out of scope.

Our governance model is as follows:

* There is a single Tech Lead, who will have the final say on all decisions regarding technical direction.
* The Tech Lead directs the Core Committers, whose members include the Tech Lead and those who have been appointed by the Tech Lead as Core Committers.
* In the event the Tech Lead is unable to perform his or her duties, or abdicates, the Core Committers can select a new Tech Lead from amongst themselves.
* In the event there are no Core Committers, Google Inc. will appoint one.

## Core Committers:

* Tech Lead: Malte Ubl (@cramforce)
* Dima Voytenko (@dvoytenko)
* Erwin Mombay (@erwinmombay)
* Justin Ridgewell (@jridgewell)
* Mohammad Khatib (@mkhatib)
* Sriram Krishnan (@sriramkrish85)
* Yuxi Chen (@muxin)
* Yuxuan Zhou (@zhouyx)

---

## File: content/docs/_blueprint.yaml

$title@: Docs
$path: /docs/{base}/
$view: /views/doc.html
$localization:
  path: /{locale}/docs/{base}/
build_root: true
index_path: /content/docs/build.md

---

## File: content/docs/build.md

---
$title@: Docs
$order: 0
$hidden: true
$path: /docs/
$localization:
  path: /{locale}/docs/
$view: /views/grid_page.html

class: bg-triangle-primary
---

---

## File: content/docs/contribute.md

---
$title@: Contribute
$order: 5
$parent: /content/docs/build.md
$view: /views/grid_page.html

class: bg-triangle-secondary
---

---

## File: content/docs/getting-started.md

---
$title@: Getting Started
$order: 0
goto: /content/docs/get_started/general/create.md
---

---

## File: content/docs/guides.md

---
$title@: Guides
$order: 2
$parent: /content/docs/build.md
$view: /views/grid_page.html

class: bg-triangle-secondary
---

---

## File: content/docs/reference.md

---
$title@: Reference
$order: 3
$parent: /content/docs/build.md
$view: /views/grid_page.html

class: bg-triangle-secondary
---

---

## File: content/docs/tutorials.md

---
$title@: Tutorials
$order: 1
$parent: /content/docs/build.md
$view: /views/grid_page.html

collectionPath: /content/docs/get_started
class: bg-triangle-secondary
---

---

## File: content/docs/contribute/_blueprint.yaml

$title@: Contribute
$path: /docs/contribute/{base}/
$view: /views/doc.html
$localization:
  path: /{locale}/docs/contribute/{base}/
index_path: /content/docs/contribute.md

navigation:
  prev:
    section: true
    title@: Reference
    href: /content/docs/reference/components.md
  next:
    section: true
    title@: Tutorials
    href: /content/docs/get_started/general/create.md

---

## File: content/docs/contribute/contribute.md

---
$title: How to Contribute
$order: 0
$path: /contribute/
$localization:
  path: /{locale}/{base}/
---

The AMP Project would not be possible without help from all members of the community
whether you are a developer, content creator or provider of services relevant to AMP.
There are many ways for you to contribute.

### Reporting issues with AMP
If you have feedback or are experiencing technical issues with AMP, please file it using the [issue tracker](https://github.com/ampproject/amphtml/issues).  If you're having issues with [ampproject.org](https://ampproject.org), please use the [docs issue tracker](https://github.com/ampproject/docs/issues) instead.

### Providing technical contributions to AMP

The AMP Project strongly encourages technical contributions!

We hope you'll become an ongoing participant in our open source community, but we also welcome one-off contributions for the issues you're particularly passionate about.

#### Helping with code

To get started with contributing code to the AMP Project read through [the CONTRIBUTING file](https://github.com/ampproject/amphtml/blob/master/CONTRIBUTING.md), which includes details of the process by which a feature or bug fix goes from concept to submission and how you can participate in technical designs and discussions.  If you're new to open source we have some [tips for getting started](https://github.com/ampproject/amphtml/blob/master/CONTRIBUTING.md#contributing-code).

#### Helping with documentation

Documentation is important for the entire AMP community, and we would appreciate your help in making our documentation better!  We've got all sorts of documentation--examples for users of AMP, docs to help AMP Project contributors, etc.

[ampproject.org](https://ampproject.org) is where most people get familiar with AMP.  You can contribute to documentation in the [ampproject docs GitHub project](https://github.com/ampproject/docs).  (You can even make [the page you are reading](https://github.com/ampproject/docs/blob/master/content/docs/contribute/contribute.md) better!)

[ampbyexample.com](https://ampbyexample.com) provides examples of how to use AMP.  You can improve it at the [amp-by-example GitHub project](https://github.com/ampproject/amp-by-example/).

You can also help make things better for other contributors to the AMP Project by improving our documentation in the [amphtml GitHub project](https://github.com/ampproject/amphtml).

---

## File: content/docs/contribute/contribute@ar.md

---
$title: كيفية المساهمة
---

### مشكلات AMP

الرجاء تقديم أي تعليقات لديكم بخصوص المشروع الفعلي على [أداة تتبع مشكلات amphtml](https://github.com/ampproject/amphtml/issues).

### مشكلات المستندات

بالنسبة إلى الأخطاء والتناقضات الموجودة على هذا الموقع، يُرجى الإبلاغ عن الخطأ في [أداة تتبع مشكلات المستندات](https://github.com/ampproject/docs/issues) بدلاً من ذلك.

### المساهمة بشفرة مصدر

هل تريد المساعدة في إصلاح الأخطاء أو جعل AMP أكثر سرعة؟ إننا سعداء بمساعدتك.

الرجاء مراجعة [ملف CONTRIBUTING](https://github.com/ampproject/amphtml/blob/master/CONTRIBUTING.md) للاطلاع على معلومات حول المساهمة في مشروع AMP و[ملف DEVELOPING](https://github.com/ampproject/amphtml/blob/master/DEVELOPING.md) للاطلاع على مستندات حول العناصر الداخلية لمكتبة AMP و[نصائح حول كيفية البدء](https://github.com/ampproject/amphtml/blob/master/DEVELOPING.md#starter-issues).

---

## File: content/docs/contribute/contribute@de.md

---
$title: So können Sie zum Projekt beitragen
---

### AMP-Probleme

Verwenden Sie für Feedback zum Projekt die [amphtml-Problemverfolgung](https://github.com/ampproject/amphtml/issues).

### Dokumentationsprobleme

Für Fehler oder Inkonsistenzen auf dieser Website steht Ihnen der [Problem-Tracker für die Dokumentation](https://github.com/ampproject/docs/issues) zur Verfügung.

### Quellcode freigeben

Sie möchten sich an der Fehlerbeseitigung beteiligen oder AMP noch schneller machen? Wir freuen uns über jede Hilfe!

In [der CONTRIBUTING-Datei](https://github.com/ampproject/amphtml/blob/master/CONTRIBUTING.md) finden Sie Informationen für Beitragende zum AMP-Projekt. Die [DEVELOPING-Datei](https://github.com/ampproject/amphtml/blob/master/DEVELOPING.md) enthält die Dokumentation zum zu den internen Dateien der AMP-Bibliothek. Außerdem werden [Tipps für den Einstieg](https://github.com/ampproject/amphtml/blob/master/DEVELOPING.md#starter-issues) gegeben.

---

## File: content/docs/contribute/contribute@es.md

---
$title: Cómo colaborar
---

### Problemas con AMP

Introduce tus comentarios sobre el proyecto en el [sistema de seguimiento de problemas con amphtml](https://github.com/ampproject/amphtml/issues).

### Problemas con la documentación

Si detectas errores o incoherencias en este sitio web, abre una incidencia en el [sistema de seguimiento de problemas con la documentación](https://github.com/ampproject/docs/issues).

### Contribuir con software libre

¿Quieres corregir errores o a hacer que las páginas AMP sean aún más rápidas? Estaremos encantados de que nos ayudes.

Consulta [el archivo sobre contribuciones](https://github.com/ampproject/amphtml/blob/master/CONTRIBUTING.md) para obtener información sobre cómo contribuir al proyecto AMP y el [archivo sobre desarrollo](https://github.com/ampproject/amphtml/blob/master/DEVELOPING.md) para obtener documentación sobre el funcionamiento interno de la biblioteca de AMP y [consejos sobre cómo empezar](https://github.com/ampproject/amphtml/blob/master/DEVELOPING.md#starter-issues).

---

## File: content/docs/contribute/contribute@fr.md

---
$title: Comment participer
---

### Problèmes relatifs au projet AMP

Veuillez nous faire part de vos commentaires sur le projet en utilisant l'[outil amphtml de suivi des problèmes](https://github.com/ampproject/amphtml/issues).

### Problèmes liés à la documentation

Si vous voulez signaler des bugs ou des incohérences sur ce site Web, utilisez plutôt l'[outil docs de suivi des problèmes](https://github.com/ampproject/docs/issues).

### Contribuer au code source

Vous voulez aider à corriger des bugs ou à rendre l'AMP encore plus rapide ? Votre aide est la bienvenue.

Veuillez consulter le fichier [CONTRIBUTION](https://github.com/ampproject/amphtml/blob/master/CONTRIBUTING.md) pour plus d'informations sur la contribution au projet AMP, le fichier [DÉVELOPPEMENT](https://github.com/ampproject/amphtml/blob/master/DEVELOPING.md) pour parcourir les documents relatifs à la bibliothèque AMP et les [astuces pour faire vos premiers pas](https://github.com/ampproject/amphtml/blob/master/DEVELOPING.md#starter-issues).

---

## File: content/docs/contribute/file-a-bug.md

---
$title@: File a bug
$order: 2
goto: https://github.com/ampproject/amphtml/issues/new
---

---

## File: content/docs/contribute/github.md

---
$title@: GitHub
$order: 3
goto: https://github.com/ampproject/amphtml
---

---

## File: content/docs/get_started/_blueprint.yaml

$title@: Tutorials
$view: /views/doc.html
$path: /docs/get_started/{base}.html
$localization:
  path: /{locale}/docs/get_started/{base}.html
index_path: /content/docs/getting-started.md

navigation:
  prev:
    section: true
    title@: Contribute
    href: /content/docs/contribute/contribute.md
  next:
    section: true
    title@: Guides
    href: /content/docs/guides/author_develop/responsive_amp.md

---

## File: content/docs/get_started/create.md

---
$title: Create Your First AMP Page
$order: 0
numbered: 1
---

Not sure how to get started? In this tutorial, you’ll learn how to create a basic AMP HTML page, how to stage it and validate that it’s AMP compliant, and finally how to get it ready for publication and distribution.

{% include "/views/partials/sub_nav.html" %}

<a class="button go-button" href="/docs/get_started/create/basic_markup.html">Continue to Step 1</a>

---

## File: content/docs/get_started/create@ar.md

---
$title: إنشاء صفحتك الأولى في AMP
---

لست متأكّدًا من كيفية بدء الاستخدام؟ في هذا البرنامج التعليمي، سوف تتعرّف على كيفية إنشاء صفحة AMP HTML أساسية، وكيفية تنظيمها، والتحقق من أنها متوافقة مع AMP، وكيفية تجهيزها في النهاية للنشر والتوزيع.

{% include "/views/partials/sub_nav.html" %}

<a class="button go-button" href="/ar/docs/get_started/create/basic_markup.html">المتابعة إلى الخطوة 1</a>

---

## File: content/docs/get_started/create@de.md

---
$title: Ihre erste AMP-Seite
---

Sie wissen nicht genau, wie Sie anfangen sollen? In dieser Anleitung erfahren Sie, wie Sie eine einfache AMP-HTML-Seite erstellen, sie testen, ihre Übereinstimmung mit den AMP-Anforderungen überprüfen und sie schließlich für die Veröffentlichung und Bereitstellung vorbereiten.

{% include "/views/partials/sub_nav.html" %}

<a class="button go-button" href="/de/docs/get_started/create/basic_markup.html">Weiter mit Schritt 1</a>

---

## File: content/docs/get_started/create@es.md

---
$title: Crea tu primera página AMP
---

¿No estás seguro de cómo empezar? En este tutorial, aprenderás a crear una página AMP HTML básica, organizarla, validar su cumplimiento con AMP y, finalmente, prepararla para su publicación y distribución.

{% include "/views/partials/sub_nav.html" %}

<a class="button go-button" href="/es/docs/get_started/create/basic_markup.html">Continuar con el paso 1</a>

---

## File: content/docs/get_started/create@fr.md

---
$title: Créer votre première page AMP
---

Vous ne savez pas par où commencer ? Dans ce didacticiel, vous allez découvrir comment créer une page AMP HTML de base, comment l'organiser et vérifier sa conformité AMP et enfin, comment la préparer pour sa publication et sa distribution.

{% include "/views/partials/sub_nav.html" %}

<a class="button go-button" href="/fr/docs/get_started/create/basic_markup.html">Continuer à l'Étape 1</a>

---

## File: content/docs/get_started/create@id.md

---
$title: Membuat Halaman AMP Pertama Anda
---

Tidak tahu cara memulainya? Dalam tutorial ini, Anda akan mempelajari cara membuat halaman AMP HTML, cara menggelarnya, dan memvalidasi bahwa halaman tersebut sesuai dengan AMP, dan terakhir cara menyiapkannya untuk dipublikasikan dan didistribusikan.

{% include "/views/partials/sub_nav.html" %}

<a class="button go-button" href="/id/docs/get_started/create/basic_markup.html">Lanjutkan ke Langkah 1</a>

---

## File: content/docs/get_started/create@it.md

---
$title: Crea la tua prima pagina AMP
---

Non sai bene come iniziare? Con questo tutorial scoprirai come creare una pagina HTML AMP di base, come prepararla e convalidarla in modo da renderla conforme al formato AMP e infine come predisporla per la pubblicazione e la distribuzione.

{% include "/views/partials/sub_nav.html" %}

<a class="button go-button" href="/it/docs/get_started/create/basic_markup.html">Vai al Passaggio 1</a>

---

## File: content/docs/get_started/create@ja.md

---
$title: 初めての AMP ページを作成する
---

AMP ページを初めて作成する方は、このチュートリアルをご覧ください。ここでは基本的な AMP HTML ページを作成し、それをステージングして AMP 仕様に準拠しているかを検証する方法、そして最終的にページを公開して配信するまでの準備について説明します。

{% include "/views/partials/sub_nav.html" %}

<a class="button go-button" href="/ja/docs/get_started/create/basic_markup.html">ステップ 1 に進む</a>

---

## File: content/docs/get_started/create@ko.md

---
$title: 첫 번째 AMP 페이지 만들기
---

시작 방법을 잘 모르시나요? 이 자습서에서는 기본 AMP HTML 페이지를 만드는 방법과 이 페이지를 배치하고 AMP 호환 여부를 검사하는 방법 그리고 마지막으로 게시 및 배포를 준비하는 방법에 대해 설명합니다.

{% include "/views/partials/sub_nav.html" %}

<a class="button go-button" href="/ko/docs/get_started/create/basic_markup.html">1단계로 계속</a>

---

## File: content/docs/get_started/create@pl.md

---
$title: Tworzenie pierwszej strony AMP
---

Nie wiesz jak zacząć? W tym samouczku dowiesz się, jak utworzyć podstawową stronę AMP HTML, jak ją przygotować, jak sprawdzić jej zgodność z AMP i na koniec jak ją przygotować do publikowania i rozpowszechniania.

{% include "/views/partials/sub_nav.html" %}

<a class="button go-button" href="/pl/docs/get_started/create/basic_markup.html">Przejdź do kroku 1</a>

---

## File: content/docs/get_started/create@pt_BR.md

---
$title: Criar sua primeira página AMP
---

Não sabe como começar? Neste tutorial, você aprenderá a criar uma página básica em AMP HTML, como lançá-la e validar sua conformidade com o AMP e, finalmente, como prepará-la para publicação e distribuição.

{% include "/views/partials/sub_nav.html" %}

<a class="button go-button" href="/pt_br/docs/get_started/create/basic_markup.html">Continuar para a etapa 1</a>

---

## File: content/docs/get_started/create@ru.md

---
$title: Создание первой страницы AMP
---

Не знаете, с чего начать? Из этого учебного руководства вы узнаете, как создать простую страницу AMP HTML, как ее организовать и проверить на соответствие правилам AMP, а также как подготовить ее к публикации и распространению.

{% include "/views/partials/sub_nav.html" %}

<a class="button go-button" href="/ru/docs/get_started/create/basic_markup.html">Перейти к шагу 1</a>

---

## File: content/docs/get_started/create@th.md

---
$title: สร้าง AMP หน้าแรกของคุณ
---

หากคุณไม่ทราบว่าจะเริ่มต้นอย่างไร ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีการสร้างหน้า AMP HTML พื้นฐาน การดำเนินขั้นตอนต่างๆ การตรวจสอบความเข้ากันได้กับ AMP และการเตรียมที่จะเผยแพร่และแจกจ่าย

{% include "/views/partials/sub_nav.html" %}

<a class="button go-button" href="/th/docs/get_started/create/basic_markup.html">ไปยังขั้นตอนที่ 1</a>

---

## File: content/docs/get_started/create@tr.md

---
$title: İlk AMP›nizi oluşturun
---

Nasıl başlayacağınızdan emin değil misiniz? Bu eğiticide, temel bir AMP HTML sayfasını nasıl oluşturacağınızı, nasıl aşamalandıracağınızı ve AMP uyumlu olduğunu onaylayacağınızı ve son olarak da yayın ve dağıtıma nasıl hazırlayacağınızı öğreneceksiniz.

{% include "/views/partials/sub_nav.html" %}

<a class="button go-button" href="/tr/docs/get_started/create/basic_markup.html">Adım 1 ile devam edin</a>

---

## File: content/docs/get_started/create@zh_CN.md

---
$title: 创建您的第一个 AMP 页面
---

不能确定如何开始？在本教程中，您将学习如何创建基本的 AMP HTML 页面，如何将该页面暂存并验证其是否符合 AMP 要求，最后，您将学习如何准备好该页面以进行发布和分发。

{% include "/views/partials/sub_nav.html" %}

<a class="button go-button" href="/zh_cn/docs/get_started/create/basic_markup.html">继续执行步骤 1</a>

---

## File: content/docs/get_started/live_blog.md

---
$title: Create a Live Blog
$order: 3
---
Live blogs are web pages that are updated frequently throughout an on-going event, such as the Super Bowl.

A live blog can be implemented in AMP via the `amp-live-list` component using the LiveBlogPosting markup. To see a sample implementation that you can use as a starting point, visit the [live blog sample](https://www.ampbyexample.com/samples_templates/live_blog/) at [ampbyexample.com](https://www.ampbyexample.com).

This tutorial offers a short overview of the `amp-live-list` component and focuses on some implementation details like pagination and deep linking, all using the live blog sample as an example.

## Amp-live-list overview

The `amp-live-list` component regularly polls the host document for updated content and updates the end user's browser as new items become available. This means that every time a new blog post needs to be added, the host document should be updated by the CMS to include the update in both the body and the metadata section.

This is how an initial blog could look like:

[sourcecode:html]
<amp-live-list id="my-live-list" data-poll-interval="15000" data-max-items-per-page="5">
  You have updates!
  
</amp-live-list>
[/sourcecode]

The `data-poll-interval` attribute allows you to specify how often polls should occur; if the host document is updated, the update should be available to the user after the next time interval.

Every time a new item is added to the host document, the `` element shows a button which, when clicked, will trigger the page to show the latest posts.

Live blogs could grow making the page too long, the `data-max-items-per-page` attribute allows you to specify how many items can be added to the live blog page. If the number of items after an update exceed `data-max-items-per-page`, the oldest updates exceeding this number will be removed. For instance, if the page currently has 9 items, `data-max-items-per-page` is set to 10, and 3 new items arrive in the latest update, the two oldest items will be removed from the page with the latest update.

`amp-live-list` requires all the posts to be children of the tag ``. By referring to each post as an item, every item should have an unique `id` and a `data-sort-time`.

## Live Blog implementation details

Now that you’re familiar with the `amp-live-list` component, let’s figure out how to implement a more complex live blog. Read on to learn more about how to implement pagination, and how deep linking is going to work.

##Pagination

Long blogs could use pagination to improve performance by limiting the number of blog items to display on a page. To implement pagination, add the `` element within the `amp-live-list` component, then insert any markup you need for pagination (for example, a page number or a link to the next and previous page).

When using pagination, the simple code we used earlier becomes:

[sourcecode:html]
<amp-live-list id="my-live-list" data-poll-interval="15000" data-max-items-per-page="5">
  You have updates!
  
  
    <nav>
      
        <li>1</li>
        <li>Next</li>
      
     </nav>
   
</amp-live-list>
[/sourcecode]

It’s your responsibility to populate the navigation items correctly by updating the hosted page. For example, in the [live blog sample](https://www.ampbyexample.com/samples_templates/live_blog/) we render the page via a server-side template and we use a query parameter to specify what the first blog item of the page should be. We limit the size of the page to 5 items, so if the server has generated more than 5 items, when a user lands on the main page it should show the Next element in the navigation area.

<amp-img src="/static/img/liveblog-pagination.png" alt="Live blog pagination" height="526" width="300"></amp-img>

After the size of blog posts has exceeded the maximum number of items specified by `data-max-items-per-page`, the older blog items are displayed in the “Next” pages, for example on page 2. Given that the `amp-live-list` polls the server at intervals to see if there is any change in the items, there's no need to poll the server if the user isn't on the first page.

You can add the disabled attribute to  the hosted page to prevent the polling mechanism. In the live blog sample, we perform this behavior in  a server-side template; when the requested page is not the first one, we add the disabled attribute to the amp-live-list component.

## Deeplinking

When you publish a blog post, it’s important to be able to deep link to the post to enable features like sharing. With `amp-live-list`, deep linking is possible by simply using the id of the blog item. For example, [https://ampbyexample.com/samples_templates/live_blog/preview/#post3](https://ampbyexample.com/samples_templates/live_blog/preview/#post3) allows you to navigate directly to the blog post with id “post3”.

In the [live blog sample](https://www.ampbyexample.com/samples_templates/live_blog/) we are using a technique based on a cookie to generate fresh content (see More on the Live Blog sample section for more details on that), so if it’s the first time you are landing on the page, the post with id “post3” might not be available, in that case we redirect to the first post.

---

## File: content/docs/get_started/live_blog@ko.md

---
$title: 라이브 블로그 만들기
$order: 3
---
라이브 블로그는 슈퍼 볼같이, 진행 중인 이벤트에서 자주 업데이트 되는 웹사이트입니다.

LiveBlogPosting 마크업을 이용한 `amp-live-list` 컴포넌트를 통해 AMP로 라이브 블로그를 구현할 수 있습니다.
스타팅 포인트로 할만한 샘플 구현을 보고싶다면, [ampbyexample.com](https://www.ampbyexample.com)의[live blog sample](https://www.ampbyexample.com/samples_templates/live_blog/)를 살펴보길 바랍니다. 

이 튜토리얼은 `amp-live-list` 컴포넌트에 대한 간략한 개요와 라이브 블로그 샘플을 예제로 페이지네이션이나 딥링크와 같은 몇가지 상세한 구현 사항들을 살펴보는데 중점을 둡니다.

## Amp-live-list 개요

`amp-live-list` 컴포넌트는 정기적으로 호스트 문서를 폴링하여 업데이트 된 콘텐츠를 확인하고 사용 가능한 새 아이템이 있다면 유저의 브라우저를 업데이트합니다.
즉, 새 블로그 포스트를 추가할 때마다, CMS에서 본문 및 메타데이터 섹션을 업데이트하여 호스트 문서를 업데이트해야합니다.

다음은 기본적인 블로그의 모습입니다:

[sourcecode:html]
<amp-live-list id="my-live-list" data-poll-interval="15000" data-max-items-per-page="5">
  You have updates!
  
</amp-live-list>
[/sourcecode]

`data-poll-interval` 속성으로 폴링 발생 빈도를 정할 수 있습니다; 만약 호스트 문서가 업데이트되면 다음 시간 인터벌 후에 사용자가 업데이트된 걸 사용할 수 있어야합니다.
호스트 문서에 새 아이템이 추가될 때마다, `` 요소가 버튼으로 보이고, 버튼을 클릭하면 최신 포스트를 보여주는 트리거가 페이지에 걸립니다.

라이브 블로그가 페이지를 너무 길게 만든다면, `data-max-items-per-page` 속성으로 라이브 블로그 페이지에 얼마나 많은 아이템을 가져올 지 정할 수 있습니다.
만약 아이템의 갯수가 `data-max-items-per-page`를 넘어선다면, 숫자를 초과하는 가장 오래된 업데이트가 삭제됩니다.
예를 들어, 현재 페이지에 9개 아이템이 있고, `data-max-items-per-page`가 10개로 세트되었을 때, 3개의 새로운 아이템이 추가되었다면, 최신 업데이트와 함께 페이지에서 2개의 가장 오래된 아이템은 삭제됩니다.

`amp-live-list`는 포스트가 `` 태그의 자식이어야합니다. 각 게시물을 아이템으로 참조하면, 각 아이템에 유니크한 `id`와 `data-sort-time`을 가지고 있어야합니다.

## 라이브 블로그의 세부 구현

이제 `amp-live-list` 컴포넌트에 익숙해졌으니, 더 복잡한 라이브 블로그를 구현하는 방법을 알아봅시다. 여기서는 페이지네이션을 어떻게 구현할 지, 딥링크가 어떻게 동작하는 지 배울 수 있습니다.

## 페이지네이션

긴 블로그에서 성능을 향상시키기 위해 페이지에 표시할 블로그 아이템의 수를 제한하고 페이지네이션을 사용할 수 있습니다.
페이지네이션을 구현하려면, `` 요소를 `amp-live-list` 컴포넌트에 넣고, 페이지네이션을 위해 필요한 아무 마크업이나 넣으면 됩니다. (페이지 넘버나, 이전 or 다음 페이지로 가는 링크같은 것들)

페이지네이션을 사용할 때, 위에서 본 간단한 코드를 사용해보겠습니다:

[sourcecode:html]
<amp-live-list id="my-live-list" data-poll-interval="15000" data-max-items-per-page="5">
  You have updates!
  
  
  	<nav>
      
        <li>1</li>
        <li>Next</li>
      
    </nav>
   
</amp-live-list>
[/sourcecode]

호스팅 페이지를 업데이트 하여 네비게이션 아이템을 채우는 건 당신의 몫입니다.
예를 들어, [live blog sample](https://www.ampbyexample.com/samples_templates/live_blog/)에서는 서버사이드 템플릿을 이용해 페이지를 렌더링하고, 쿼리 파라미터를 이용하여 페이지의 첫번째 블로그 아이템을 지정했습니다.
우리는 페이지를 5개 아이템으로 제한하였고, 서버가 5개 이상의 아이템을 생성하는 경우, 유저가 기본페이지에 도착하면 네비게이션 영역에 Next 요소가 보입니다.

<amp-img src="/static/img/liveblog-pagination.jpg" alt="Live blog pagination" height="526" width="300"></amp-img>

블로그 포스트의 사이즈가 `data-max-items-per-page`로 정의한 최대 갯수를 넘은 경우.
더 오래된 블로그 아이템은 2번째 페이지 같은 "Next" 페이지에서 보여집니다.
`amp-live-list`는 주기적으로 서버를 폴링하여 아이템에 변경이 있는 지 확인하므로, 사용자가 첫번째 페이지에 있지 않다면 서버를 폴링할 필요가 없습니다.

폴링 메커니즘을 방지하기 위해 호스트 페이지에 disabled 속성을 추가할 수 있습니다.
라이브 블로그 샘플에서는 서버사이드 플랫폼에서 이 동작을 수행합니다.
요청한 페이지가 첫번쨰 페이지가 아닌 경우, `amp-live-list` 컴포넌트에 disabled 속성을 추가합니다.

## 딥링크

블로그 포스트를 발행할 때, 공유 같은 기능을 사용하려면 포스트에 딥 링크할 수 있어야합니다.
`amp-live-list`를 사용하면 블로그 아이템의 id를 이용하여 간단하게 딥링크할 수 있습니다.
예를 들어, [https://ampbyexample.com/samples_templates/live_blog/preview/#post3](https://ampbyexample.com/samples_templates/live_blog/preview/#post3)는 "post3" id를 가진 블로그 포스트로 연결하여 바로 그 포스트로 이동합니다.

[라이브 블로그 샘플](https://www.ampbyexample.com/samples_templates/live_blog/)에서는 쿠키를 기반으로 한 테크닉을 사용하여 새로운 콘텐츠를 생성합니다. (자세한 내용은 라이브 블로그 샘플 섹션의 추가 정보 참고)
페이지에 최초로 방문했을 때, "post3"란 id를 가진 포스트를 사용할 수 없으면 첫번째 게시물로 리디렉트합니다.

---

## File: content/docs/get_started/login_requiring.md

---
$title: Create a login-requiring AMP page
$order: 2
numbered: 1
---
Some user interactions with a page, such as leaving a comment, could be conditioned by a login flow. You can implement a login flow with AMP by using the [amp-access](https://www.ampproject.org/docs/reference/components/amp-access) component combined with the [amp-form](https://www.ampproject.org/docs/reference/components/amp-form) component.
{% call callout('Tip', type='success') %}
To see a sample implementation, visit the [comment section sample](https://ampbyexample.com/samples_templates/comment_section/) at [ampbyexample.com](https://ampbyexample.com).
{% endcall %}

The [comment section sample](https://ampbyexample.com/samples_templates/comment_section/) combines `amp-access` and `amp-form` to create a comment section which is enabled only when an user has logged in. In order to explain how this sample works, let's follow the set of actions that will be performed once you land on the page.

{% include "/views/partials/sub_nav.html" %}

<a class="button go-button" href="/docs/get_started/login_requiring/login.html">Continue to Step 1</a>

---

## File: content/docs/get_started/login_requiring@ko.md

[Binary file]

---

## File: content/docs/get_started/create/_blueprint.yaml

$path: /docs/get_started/create/{base}.html
$view: /views/doc.html
$localization:
  path: /{locale}/docs/get_started/create/{base}.html
$title@: Create Your First AMP Page

navigation:
  prev:
    section: true
    title@: Contribute
    href: /content/docs/contribute/contribute.md
  next:
    subtitle@: Next Tutorial
    title@: Logins with AMP
    href: /content/docs/get_started/login_requiring.md

---

## File: content/docs/get_started/create/basic_markup.md

---
$title: Create Your AMP HTML Page
$order: 0
$parent: /content/docs/get_started/create.md
---

The following markup is a decent starting point or boilerplate.
Copy this and save it to a file with a .html extension.

[sourcecode:html]
<!doctype html>
<html amp lang="en">
  <head>
    <meta charset="utf-8">
    <script async src="https://cdn.ampproject.org/v0.js"></script>
    <title>Hello, AMPs</title>
    <link rel="canonical" href="http://example.ampproject.org/article-metadata.html" />
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@type": "NewsArticle",
        "headline": "Open-source framework for publishing content",
        "datePublished": "2015-10-07T12:02:41Z",
        "image": [
          "logo.jpg"
        ]
      }
    </script>
    <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>
  </head>
  
    <h1>Welcome to the mobile web</h1>
  
</html>
[/sourcecode]

The content in the body, so far, is pretty straightforward. But there’s a lot of additional code in the head of the page that might not be immediately obvious. Let’s deconstruct the required mark-up.

## Required mark-up

AMP HTML documents MUST:

  - Start with the doctype `<!doctype html>`.
  - Contain a top-level `<html ⚡>` tag (`<html amp>` is accepted as well).
  - Contain `<head>` and `` tags (They are optional in HTML).
  - Contain a `<meta charset="utf-8">` tag as the first child of their `<head>` tag.
  - Contain a `<script async src="https://cdn.ampproject.org/v0.js"></script>` tag as the second child of their `<head>` tag (this includes and loads the AMP JS library).
  - Contain a `<link rel="canonical" href="$SOME_URL" />` tag inside their `<head>` tag that points to the regular HTML version of the AMP HTML document or to itself if no such HTML version exists.
  - Contain a `<meta name="viewport" content="width=device-width,minimum-scale=1">` tag inside their `<head>` tag. It's also recommended to include initial-scale=1.
  - Contain the following in their `<head>` tag:
    `<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>`

## Optional meta-data

In addition to the bare requirements, our sample also includes a Schema.org definition in the head, which isn’t a strict requirement for AMP, but is a requirement to get your content distributed in certain places, for instance in the [Google Search news carousel demo (try on your phone)](https://g.co/ampdemo).

To learn more about all the meta-data you’ll need in various other places, i.e. Twitter, [explore our samples](https://github.com/ampproject/amphtml/tree/master/examples/metadata-examples). To learn specifically about AMP in Google Search, see [Top Stories with AMP](https://developers.google.com/structured-data/carousels/top-stories).

<hr>

Good news! That’s all we need to create our first AMP page, but of course, there’s not a lot going on in the body yet. In the next section, we’ll cover how to add basics like images, custom AMP elements, how to style your page and work out a responsive layout.

<a class="go-button button" href="/docs/get_started/create/include_image.html">Continue to Step 2</a>

---

## File: content/docs/get_started/create/basic_markup@ar.md

---
$title: إنشاء صفحة AMP HTML
---

يمثل الترميز التالي نقطة بداية مناسبة أو نصًا معياريًا.
انسخه واحفظه في ملف بإضافة ‎.html.

[sourcecode:html]
<!doctype html>
<html amp lang="en">
  <head>
    <meta charset="utf-8">
    <title>Hello, AMPs</title>
    <link rel="canonical" href="http://example.ampproject.org/article-metadata.html" />
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@type": "NewsArticle",
        "headline": "Open-source framework for publishing content",
        "datePublished": "2015-10-07T12:02:41Z",
        "image": [
          "logo.jpg"
        ]
      }
    </script>
    <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>
    <script async src="https://cdn.ampproject.org/v0.js"></script>
  </head>
  
    <h1>Welcome to the mobile web</h1>
  
</html>
[/sourcecode]

المحتوى في النص الأساسي واضح حتى الآن. لكن هناك الكثير من الشفرات الإضافية في عنوان الصفحة، والتي قد لا تبدو واضحةً مباشرةً. هيا نحلل الترميز المطلوب.

## الترميز المطلوب

يُشترط في مستندات AMP HTML:

  - أن تبدأ بـ doctype `<!doctype html>`.
  - أن تحتوي على علامة المستوى الأعلى `<html ⚡>` (تكون `<html amp>` مقبولة كذلك).
  - أن تحتوي على العلامتين `<head>` و`` (هما علامتان اختياريتان في HTML).
  - أن تحتوي على العلامة `<link rel="canonical" href="$SOME_URL" />` داخل عنوانها، والتي تشير إلى إصدار HTML العادي لمستند AMP HTML أو إلى نفسها إذا لم يكن إصدار HTML من هذا القبيل موجودًا.
  - أن تحتوي على العلامة `<meta charset="utf-8">` بوصفها التابع الأول للعلامة head.
  - أن تحتوي على العلامة `<meta name="viewport" content="width=device-width,minimum-scale=1">` داخل العلامة head. من الموصى به أيضًا تضمين initial-scale=1.
  - أن تحتوي على العلامة `<script async src="https://cdn.ampproject.org/v0.js"></script>` بوصفها العنصر الأخير في head (يشمل هذا مكتبة AMP JS ويقوم بتحميلها).
  - أن تحتوي على ما يلي في العلامة `<head>`:
    `<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>`

## البيانات الوصفية الاختيارية

بالإضافة إلى المتطلبات المجرّدة، كذلك يتضمن النموذج تعريف Schema.org في العنوان، والتي لا تمثل متطلبًا صارمًا لـ AMP، لكنها متطلب لتوزيع محتواك في مواقع معينة، على سبيل المثال في [العرض التوضيحي لسلسلة عرض أخبار بحث Google (جرّبه على هاتفك)](https://g.co/ampdemo).

للتعرّف على المزيد بشأن كل البيانات الوصفية التي ستحتاجها في العديد من المواقع الأخرى، أي Twitter، [استكشف نماذجنا](https://github.com/ampproject/amphtml/tree/master/examples/metadata-examples). للتعرّف بصفة خاصة على AMP في بحث Google، انظر [أهم الأخبار باستخدام AMP](https://developers.google.com/structured-data/carousels/top-stories).

<hr>

أخبار سارّة! هذا كل ما نحتاجه لإنشاء صفحتنا الأولى في AMP، لكن ليس هناك الكثير مما يجري، بطبيعة الحال، في النص الأساسي حتى اللحظة. في القسم التالي، سوف نتناول كيفية إضافة أساسيات، مثل الصور وعناصر AMP المخصصة، وكيفية إضفاء نمط على صفحتك، وتطوير تنسيق سريع الاستجابة.

<a class="go-button button" href="/ar/docs/get_started/create/include_image.html">المتابعة إلى الخطوة 2</a>

---

## File: content/docs/get_started/create/basic_markup@de.md

---
$title: AMP-HTML-Seite erstellen
---

Das folgende Markup ist eine gute Ausgangsbasis und kann als Standard-Markup verwendet werden.
Kopieren Sie es und speichern Sie es in einer Datei mit der Erweiterung ".html".

[sourcecode:html]
<!doctype html>
<html amp lang="en">
  <head>
    <meta charset="utf-8">
    <title>Hello, AMPs</title>
    <link rel="canonical" href="http://example.ampproject.org/article-metadata.html" />
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@type": "NewsArticle",
        "headline": "Open-source framework for publishing content",
        "datePublished": "2015-10-07T12:02:41Z",
        "image": [
          "logo.jpg"
        ]
      }
    </script>
    <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>
    <script async src="https://cdn.ampproject.org/v0.js"></script>
  </head>
  
    <h1>Welcome to the mobile web</h1>
  
</html>
[/sourcecode]

Der Inhalt im body-Element ist bisher ziemlich einfach. Allerdings ist relativ viel zusätzlicher Code im head-Element enthalten, der etwas genauer erläutert werden sollte. Darum dekonstruieren wir nun das erforderliche Markup.

### Erforderliches Markup

AMP-HTML-Dokumente MÜSSEN:

  - mit dem Doctype `<!doctype html>` beginnen.
  - ein Top-Level-`<html ⚡>`-Tag enthalten (`<html amp>` wird auch akzeptiert).
  - die Tags `<head>` und `body` enthalten (in HTML sind sie optional).
  - im head-Element das Tag `<link rel="canonical" href="$SOME_URL" />` enthalten, das auf die reguläre HTML-Version des AMP-HTML-Dokuments oder auf sich selbst verweist, falls keine reguläre HTML-Version existiert.
  - ein `<meta charset="utf-8">`-Tag als erstes untergeordnetes Element des head-Tags enthalten.
  - das Tag `<meta name="viewport" content="width=device-width,minimum-scale=1">` innerhalb des head-Tags enthalten. Außerdem wird empfohlen, "initial-scale=1" einzufügen.
  - das Tag `<script async src="https://cdn.ampproject.org/v0.js"></script>` als letztes Element im head-Tag enthalten. Damit wird die AMP-JS-Bibliothek eingeschlossen und geladen.
  <li>Folgendes im `<head>`-Tag enthalten:
    `<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>`

## Optionale Metadaten

Neben den Basisanforderungen enthält unser Beispiel auch eine Schema.org-Definition im head-Element. Dies ist zwar keine strikte Anforderung für AMP, ist aber erforderlich, damit Inhalte an verschiedenen Stellen bereitgestellt werden können, zum Beispiel im [Nachrichtenkarussell der Google-Suche (auf dem Smartphone ausprobieren)](https://g.co/ampdemo).

Weitere Informationen zu den Metadaten, die Sie an verschiedenen anderen Stellen wie z. B. Twitter brauchen, [finden Sie in unseren Beispielen](https://github.com/ampproject/amphtml/tree/master/examples/metadata-examples). Mehr über AMP in der Google-Suche erfahren Sie unter [Schlagzeilen mit AMP](https://developers.google.com/structured-data/carousels/top-stories).

<hr>

Gute Neuigkeiten! Das ist alles, was Sie zum Erstellen Ihrer ersten AMP-Seite brauchen. Aber natürlich passiert bisher noch nicht viel im HTML-Body. In den nächsten Schritten erfahren Sie, wie Sie grundlegende Komponenten wie Bilder und benutzerdefinierte AMP-Elemente hinzufügen, Ihre Seite gestalten und ein responsives Layout erstellen.

<a class="go-button button" href="/de/docs/get_started/create/include_image.html">Weiter mit Schritt 2</a>

---

## File: content/docs/get_started/create/basic_markup@es.md

---
$title: Crea tu página AMP HTML
---

El siguiente marcado es un punto de partida o código estándar aceptable.
Cópialo y guárdalo en un archivo con extensión .html.

[sourcecode:html]
<!doctype html>
<html amp lang="es">
  <head>
    <meta charset="utf-8">
    <script async src="https://cdn.ampproject.org/v0.js"></script>
    <title>Hola, AMP</title>
    <link rel="canonical" href="http://example.ampproject.org/article-metadata.html" />
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@type": "NewsArticle",
        "headline": "Open-source framework for publishing content",
        "datePublished": "2015-10-07T12:02:41Z",
        "image": [
          "logo.jpg"
        ]
      }
    </script>
    <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>
  </head>
  
    <h1>Bienvenido a la web móvil</h1>
  
</html>
[/sourcecode]

El contenido del cuerpo, hasta ahora, es bastante sencillo. Sin embargo, hay mucho más código en la etiqueta `<head>` de la página que podría no ser evidente de inmediato. Analicemos el marcado obligatorio.

## Marcado obligatorio

Los documentos AMP HTML DEBEN:

  - Comenzar con el tipo de documento `<!doctype html>`.
  - Contener la etiqueta `<html ⚡>` en el nivel superior (también se acepta `<html amp>`).
  - Contener las etiquetas `<head>` y `` (opcionales en HTML).
  - Contener la etiqueta `<meta charset="utf-8">` como el primer hijo de su etiqueta `<head>`.
  - Contener la etiqueta `<script async src="https://cdn.ampproject.org/v0.js"></script>` como el segundo hijo de su etiqueta `<head>` (esto incluye y carga la biblioteca AMP JS).
  - Contener una etiqueta `<link rel="canonical" href="$SOME_URL" />` en la etiqueta `<head>` orientada a la versión de HTML común del documento de AMP HTML o a sí misma si no existiera dicha versión de HTML.
  - Contener una etiqueta `<meta name="viewport" content="width=device-width,minimum-scale=1">` en la etiqueta `<head>`. También se recomienda incluir initial-scale=1.
  - Contener lo siguiente en su etiqueta `<head>`:
    `<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>`

## Meta datos opcionales

Además de los requisitos básicos, en nuestro ejemplo también se incluye una definición Schema.org en el `<head>`, que no es un requisito estricto para AMP, pero es un requisito para poder distribuir tu contenido en determinados sitios. Por ejemplo, en la [demostración del carrusel de novedades sobre Búsqueda de Google (pruébalo en tu teléfono)](https://g.co/ampdemo).

Para obtener más información acerca de todos los metadatos que necesitarás en muchos otros entornos (por ejemplo, Twitter), [explora nuestros ejemplos](https://github.com/ampproject/amphtml/tree/master/examples/metadata-examples). Para obtener información específica sobre AMP en la Búsqueda de Google, consulta [Historias principales con AMP](https://developers.google.com/structured-data/carousels/top-stories).

<hr>

¡Buenas noticias! Eso es todo lo que necesitamos para crear nuestra primera página AMP, aunque por supuesto aún no hay demasiadas noticias respecto del ``. En la próxima sección, veremos la manera de agregar componentes básicos, como imágenes, elementos de AMP personalizados, de dar estilo a tu página y de definir un diseño responsivo.

<a class="go-button button" href="/es/docs/get_started/create/include_image.html">Continuar con el paso 2</a>

---

## File: content/docs/get_started/create/basic_markup@fr.md

---
$title: Créer votre page AMP HTML
---

Le balisage suivant est un bon point de départ, un modèle standard.
Copiez et enregistrez ce qui suit dans un fichier .html.

[sourcecode:html]
<!doctype html>
<html amp lang="en">
  <head>
    <meta charset="utf-8">
    <title>Hello, AMPs</title>
    <link rel="canonical" href="http://example.ampproject.org/article-metadata.html" />
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@type": "NewsArticle",
        "headline": "Open-source framework for publishing content",
        "datePublished": "2015-10-07T12:02:41Z",
        "image": [
          "logo.jpg"
        ]
      }
    </script>
    <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>
    <script async src="https://cdn.ampproject.org/v0.js"></script>
  </head>
  
    <h1>Welcome to the mobile web</h1>
  
</html>
[/sourcecode]

Jusque là, le contenu dans le corps (body) est assez simple. Mais le code supplémentaire dans l'en-tête (head) de la page n'est peut-être pas aussi évident. Décomposons le balisage obligatoire.

## Balisage obligatoire

Les documents AMP HTML DOIVENT :

  - Commencer par le type du document `<!doctype html>`.
  - Contenir une balise `<html ⚡>` de niveau supérieur (`<html amp>` est également accepté).
  - Contenir les balises `<head>` et `` (facultatives dans HTML).
  - Contenir une balise `<link rel="canonical" href="$SOME_URL" />` dans l'en-tête qui pointe vers la version HTML standard du document AMP HTML ou vers le document lui-même si aucune version HTML n'existe.
  - Contenir une balise `<meta charset="utf-8">` comme premier enfant de la balise head.
  - Contenir une balise `<meta name="viewport" content="width=device-width,minimum-scale=1">` dans la balise head. Il est également recommandé d'inclure initial-scale=1.
  - Contenir une balise `<script async src="https://cdn.ampproject.org/v0.js"></script>` comme dernier élément de l'en-tête (inclut et charge la bibliothèque AMP JS).
  - Contenir ce qui suit dans la balise `<head>` :
    `<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>`

## Métadonnées facultatives

En plus des éléments de base, notre exemple inclut une définition Schema.org dans l'en-tête qui n'est pas une condition absolue pour AMP, mais une condition pour distribuer le contenu dans certains emplacements, par exemple, dans la [démonstration du carrousel d'actualités Google Search (essayez-la sur votre téléphone)](https://g.co/ampdemo).

Pour en savoir plus sur toutes les métadonnées nécessaires pour les divers autres emplacements, par exemple Twitter, [consultez nos exemples](https://github.com/ampproject/amphtml/tree/master/examples/metadata-examples). Pour en savoir plus sur AMP dans Google Search, voir [Le meilleur de l'actualité avec AMP](https://developers.google.com/structured-data/carousels/top-stories).

<hr>

Bonne nouvelle ! C'est tout ce dont nous avons besoin pour créer la première page AMP. Bien évidemment, le corps ne contient pas encore grand chose. Dans la prochaine section, nous découvrirons comment ajouter des objets de base (images et éléments AMP personnalisés), comment créer un style pour la page et comment définir une disposition réactive.

<a class="go-button button" href="/fr/docs/get_started/create/include_image.html">Continuer à l'Étape 2</a>

---

## File: content/docs/get_started/create/basic_markup@id.md

---
$title: Membuat Halaman AMP HTML
---

Markup berikut merupakan titik awal yang sesuai atau boilerplate.
Salin yang berikut ini dan simpanlah ke file dengan ekstensi .html.

[sourcecode:html]
<!doctype html>
<html amp lang="en">
  <head>
    <meta charset="utf-8">
    <title>Hello, AMPs</title>
    <link rel="canonical" href="http://example.ampproject.org/article-metadata.html" />
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@type": "NewsArticle",
        "headline": "Open-source framework for publishing content",
        "datePublished": "2015-10-07T12:02:41Z",
        "image": [
          "logo.jpg"
        ]
      }
    </script>
    <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>
    <script async src="https://cdn.ampproject.org/v0.js"></script>
  </head>
  
    <h1>Welcome to the mobile web</h1>
  
</html>
[/sourcecode]

Materi dalam badan teks sejauh ini tidak sulit dipahami. Namun ada banyak kode tambahan dalam kepala halaman yang mungkin tidak langsung bisa dipahami. Mari kita uraikan markup wajib ini:

## Markup wajib

Dokumen AMP HTML HARUS:

  - Mulai dengan tipe dokumen `<!doctype html>`.
  - Berisi tag `<html ⚡>` tingkat atas (`<html amp>` juga berterima).
  - Berisi tag `<head>` dan `` (Keduanya opsional dalam HTML).
  - Berisi tag `<link rel="canonical" href="$SOME_URL" />` dalam bagian kepala yang menunjuk pada versi HTML reguler dari dokumen AMP HTML atau menunjuk pada dirinya sendiri jika tidak ada versi HTML seperti itu.
  - Berisi tag `<meta charset="utf-8">` sebagai anak pertama dari tag kepalanya.
  - Berisi tag `<meta name="viewport" content="width=device-width,minimum-scale=1">` di dalam tag kepalanya. Juga disarankan untuk menyertakan initial-scale=1.
  - Berisi tag `<script async src="https://cdn.ampproject.org/v0.js"></script>` sebagai elemen terakhir dalam kepalanya (ini mencakup dan memuat pustaka AMP JS).
  - Berisi yang berikut dalam tag `<head>`-nya:
    `<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>`

## Meta-data opsional

Selain persyaratan yang tak mendetail, sampel kami juga menyertakan definisi Schema.org pada bagian kepalanya, yang bukan merupakan persyaratan ketat bagi AMP, namun diwajibkan agar materi Anda didistribusikan di beberapa tempat, misalnya dalam [Demo menu korsel berita Google Penelusuran (cobalah pada ponsel Anda)](https://g.co/ampdemo).

Untuk mengetahui selengkapnya tentang meta-data yang akan Anda butuhkan di berbagai tempat berbeda, misalnya Twitter, [jelajahilah sampel kami](https://github.com/ampproject/amphtml/tree/master/examples/metadata-examples) Untuk mempelajari secara khusus tentang AMP dalam Google Penelusuran, lihat [Cerita Teratas dengan AMP](https://developers.google.com/structured-data/carousels/top-stories).

<hr>

Kabar gembira! Itulah semua yang kita perlukan untuk membuat halaman AMP kita yang pertama, belum banyak yang terjadi di dalam bagian badan. Dalam bagian berikutnya, kita akan membahas mengenai cara menambahkan hal-hal dasar seperti gambar, elemen AMP khusus, cara menggayakan halaman Anda dan mengerjakan layout responsif.

<a class="go-button button" href="/id/docs/get_started/create/include_image.html">Lanjutkan ke Langkah 2</a>

---

## File: content/docs/get_started/create/basic_markup@it.md

---
$title: Crea la tua pagina HTML AMP
---

Il seguente markup costituisce un discreto punto di inizio o boilerplate.
Copialo e salvalo in un file con estensione .html.

[sourcecode:html]
<!doctype html>
<html amp lang="en">
  <head>
    <meta charset="utf-8">
    <title>Hello, AMPs</title>
    <link rel="canonical" href="http://example.ampproject.org/article-metadata.html" />
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@type": "NewsArticle",
        "headline": "Open-source framework for publishing content",
        "datePublished": "2015-10-07T12:02:41Z",
        "image": [
          "logo.jpg"
        ]
      }
    </script>
    <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>
    <script async src="https://cdn.ampproject.org/v0.js"></script>
  </head>
  
    <h1>Welcome to the mobile web</h1>
  
</html>
[/sourcecode]

Il contenuto del corpo della pagina, fin qui, è piuttosto lineare. Nell’intestazione della pagina però è presente una buona porzione di codice supplementare che potrebbe non risultare immediatamente ovvio. Proviamo a scomporre il markup obbligatorio.

## Markup obbligatorio

I documenti HTML AMP DEVONO:

  - Iniziare con il doctype `<!doctype html>`.
  - Contenere un tag di primo livello `<html ⚡>` (`<html amp>` è ugualmente accettato).
  - Contenere i tag `<head>` e `` (questi sono opzionali in HTML).
  - Contenere un tag `<link rel="canonical" href="$SOME_URL" />` all’interno dell’intestazione che faccia riferimento alla normale versione HTML del documento HTML AMP o a sé stesso se non esiste tale versione HTML.
  - Contenere un tag `<meta charset="utf-8">` in quanto primo tag secondario del tag dell’intestazione.
  - Contenere un tag `<meta name="viewport" content="width=device-width,minimum-scale=1">` all’interno del tag dell’intestazione. Si consiglia anche di includere initial-scale=1.
  - Contenere un tag `<script async src="https://cdn.ampproject.org/v0.js"></script>` in quanto ultimo elemento dell’intestazione (ciò comprende e carica la libreria AMP JS).
  - Contenere quanto segue nei tag `<head>`:
    `<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>`

## Metadati opzionali

Oltre ai requisiti di base, il nostro campione nell’intestazione comprende anche una definizione Schema.org, che non è un requisito essenziale per AMP, ma è un requisito per la distribuzione del contenuto in alcuni luoghi, ad esempio nella [demo del carosello di notizie di Ricerca Google (provala sul tuo telefono)](https://g.co/ampdemo).

Per ulteriori informazioni su tutti i metadati che ti serviranno i svariate altre situazioni, come Twitter, [esamina i nostri campioni](https://github.com/ampproject/amphtml/tree/master/examples/metadata-examples). Per informazioni dettagliate su AMP in Ricerca Google, vai alla sezione [Top Stories con AMP](https://developers.google.com/structured-data/carousels/top-stories).

<hr>

Buone notizie! Questo è tutto ciò che ci serve per creare la nostra prima pagina AMP, ma naturalmente il corpo della pagina non comprende ancora molte informazioni. Nella prossima sezione parleremo di come aggiungere componenti di base come immagini ed elementi AMP personalizzati, di come applicare uno stile alla pagina e di come definire un layout reattivo.

<a class="go-button button" href="/it/docs/get_started/create/include_image.html">Vai al Passaggio 2</a>

---

## File: content/docs/get_started/create/basic_markup@ja.md

---
$title: AMP HTML ページを作成する
---

まずは以下のマークアップから見ていきましょう。
このボイラープレートをコピーして html 拡張子のファイルとして保存してください。

[sourcecode:html]
<!doctype html>
<html amp lang="en">
  <head>
    <meta charset="utf-8">
    <title>Hello, AMPs</title>
    <link rel="canonical" href="http://example.ampproject.org/article-metadata.html" />
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@type": "NewsArticle",
        "headline": "Open-source framework for publishing content",
        "datePublished": "2015-10-07T12:02:41Z",
        "image": [
          "logo.jpg"
        ]
      }
    </script>
    <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>
    <script async src="https://cdn.ampproject.org/v0.js"></script>
  </head>
  
    <h1>Welcome to the mobile web</h1>
  
</html>
[/sourcecode]

この時点ではまだ、ボディ部のコンテンツはとてもシンプルです。一方、ページのヘッド部には一見ではわかりづらいコードがたくさん追加されています。では、必須となるマークアップを分解していきます。

## 必須マークアップ

AMP HTML ドキュメントが満たすべき条件は以下のとおりです。

  - `<!doctype html>` という文書型宣言で開始する。
  - 最上位階層のタグを `<html ⚡>`（`<html amp>` でも可）にする。
  - `<head>` タグと `` タグ（HTML ではどちらも任意）を含める。
  - ヘッド部に `<link rel="canonical" href="$SOME_URL" />` タグを入れて、AMP HTML 版の通常の HTML バージョンを指定する。該当する HTML が存在しない場合は自身を指定する。
  - head タグの最初の子要素を `<meta charset="utf-8">` タグにする。
  - head タグ内に `<meta name="viewport" content="width=device-width,minimum-scale=1">` タグを含める。initial-scale=1 も入れることをお勧めします。
  - head タグの最後の要素を `<script async src="https://cdn.ampproject.org/v0.js"></script>` タグにする（これによって AMP JS ライブラリがインクルードされ、読み込まれます）。
  - 次の内容を `<head>` タグの中に含める。
    `<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>`

## 省略可能なメタデータ

このサンプルでは最小限必要なものに加えて、ヘッド部に Schema.org の定義を含めています。これは AMP においては必須ではありませんが、[Google 検索のニュース カルーセルのデモ（スマートフォンで確認してください）](https://g.co/ampdemo)のように、特定の環境にコンテンツを配信する際は必要になります。

Twitter など、他のさまざまな環境で必要になる全メタデータについては、[こちらのサンプルを参考にして](https://github.com/ampproject/amphtml/tree/master/examples/metadata-examples)詳細をご確認ください。Google 検索における AMP について詳しく知りたい方は、[AMP 対応のトップニュース](https://developers.google.com/structured-data/carousels/top-stories)をご覧ください。

<hr>

ここまでで、初めて AMP ページを作成する上で必要な作業をすべて説明しましたが、まだボディ部はほとんど手をつけていません。次のセクションでは、イメージなどの基本要素の追加方法、カスタム AMP 要素、ページをスタイリングしてレスポンシブなレイアウトを作成する方法をご紹介します。

<a class="go-button button" href="/ja/docs/get_started/create/include_image.html">ステップ 2 に進む</a>

---

## File: content/docs/get_started/create/basic_markup@ko.md

---
$title: AMP HTML 페이지 만들기
---

다음의 마크업은 적절한 시작점이나 표준이 될 수 있습니다.
이것을 복사하여 .html 확장자로 파일에 저장합니다.

[sourcecode:html]
<!doctype html>
<html amp lang="en">
  <head>
    <meta charset="utf-8">
    <title>Hello, AMPs</title>
    <link rel="canonical" href="http://example.ampproject.org/article-metadata.html" />
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@type": "NewsArticle",
        "headline": "Open-source framework for publishing content",
        "datePublished": "2015-10-07T12:02:41Z",
        "image": [
          "logo.jpg"
        ]
      }
    </script>
    <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>
    <script async src="https://cdn.ampproject.org/v0.js"></script>
  </head>
  
    <h1>Welcome to the mobile web</h1>
  
</html>
[/sourcecode]

지금까지의 본문 콘텐츠는 매우 단순합니다. 그러나 즉시 이해되지 않을 수도 있는 추가적인 코드가 페이지 헤드에 많이 있습니다. 필수 마크업을 분석해 보겠습니다.

## 필수 마크업

AMP HTML 문서는:

  - Doctype `<!doctype html>`로 시작해야 합니다.
  - 최상위 `<html ⚡>` 태그를 포함해야 합니다(`<html amp>`도 허용됨).
  - `<head>` 및 `` 태그를 포함해야 합니다(HTML에서는 선택 항목).
  - AMP HTML 문서의 일반 HTML 버전을 가리키는 `<link rel="canonical" href="$SOME_URL" />` 태그를 헤드 내에 포함해야 합니다. 이러한 HTML 버전이 없는 경우 스스로를 가리키는 태그를 포함해야 합니다.
  - 헤드 태그의 첫 번째 하위 요소로서 `<meta charset="utf-8">` 태그를 포함해야 합니다.
  - 헤드 태그 내에 `<meta name="viewport" content="width=device-width,minimum-scale=1">` 태그를 포함해야 합니다. 또한 initial-scale=1을 포함시키는 것이 좋습니다.
  - 헤드의 마지막 요소로서 `<script async src="https://cdn.ampproject.org/v0.js"></script>` 태그를 포함해야 합니다(이 요소는 AMP JS 라이브러리를 포함하고 로드합니다).
  - `<head>` 태그에 다음을 포함해야 합니다.
    `<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>`

## 선택 항목인 메타데이터

우리의 샘플에서는 최소한의 요구사항 뿐만 아니라 Schema.org 정의도 헤드에 포함합니다. 이것은 AMP에는 엄격한 요구사항이 아니지만, 여러분의 콘텐츠를 특정 장소(예: [Google 검색 뉴스 캐러셀 데모(전화에서 시도)](https://g.co/ampdemo))에 배포하기 위한 요구사항입니다.

다양한 다른 곳(예: Twitter)에 필요한 모든 메타데이터에 대해 알아보시려면 [샘플을 살펴보세요](https://github.com/ampproject/amphtml/tree/master/examples/metadata-examples). Google 검색에서 AMP에 대해 구체적으로 알아보려면, [Top Stories with AMP](https://developers.google.com/structured-data/carousels/top-stories)를 참조하세요.

<hr>

희소식입니다! 이것만 있으면 우리는 첫 번째 AMP 페이지를 만들 수 있습니다. 물론 본문은 아직 갈 길이 멉니다. 다음 섹션에서는 이미지, 사용자 지정 AMP 요소와 같은 기본사항을 추가하는 방법과 페이지에 스타일을 지정하고 반응형 레이아웃을 만드는 방법에 대해 설명합니다.

<a class="go-button button" href="/ko/docs/get_started/create/include_image.html">2단계로 계속</a>

---

## File: content/docs/get_started/create/basic_markup@pl.md

---
$title: Tworzenie strony AMP HTML
---

Poniższy znacznik stanowi doskonały punkt wyjścia lub szablon.
Skopiuj go i zapisz w pliku z rozszerzeniem .html.

[sourcecode:html]
<!doctype html>
<html amp lang="en">
  <head>
    <meta charset="utf-8">
    <title>Hello, AMPs</title>
    <link rel="canonical" href="http://example.ampproject.org/article-metadata.html" />
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@type": "NewsArticle",
        "headline": "Open-source framework for publishing content",
        "datePublished": "2015-10-07T12:02:41Z",
        "image": [
          "logo.jpg"
        ]
      }
    </script>
    <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>
    <script async src="https://cdn.ampproject.org/v0.js"></script>
  </head>
  
    <h1>Welcome to the mobile web</h1>
  
</html>
[/sourcecode]

Zawartość sekcji body jest na razie całkiem prosta. Jednak sekcja head strony zawiera wiele dodatkowego kodu, którego znaczenie nie jest od razu oczywiste. Zajmijmy się teraz analizą wymaganych znaczników.

## Wymagane znaczniki

Dokumenty AMP HTML MUSZĄ:

  - Zaczynać się od deklaracji doctype `<!doctype html>`.
  - Zawierać znacznik `<html ⚡>` najwyższego poziomu (akceptowany jest również znacznik `<html amp>`).
  - Zawierać znaczniki `<head>` i `` (w języku HTML są one opcjonalne).
  - Zawierać w sekcji head znacznik `<link rel="canonical" href="$SOME_URL" />` wskazujący wersję dokumentu AMP HTML w zwykłym HTML lub ten sam dokument, jeśli taka wersja HTML nie istnieje.
  - Zawierać znacznik `<meta charset="utf-8">` jako pierwszy element podrzędny znacznika head.
  - Zawierać znacznik `<meta name="viewport" content="width=device-width,minimum-scale=1">` wewnątrz znacznika head. Zalecane jest także dodanie atrybutu initial-scale=1.
  - Zawierać znacznik `<script async src="https://cdn.ampproject.org/v0.js"></script>` jako ostatni element w sekcji head (służy do dołączenia i ładowania biblioteki AMP JS).
  - Zawierać następujące dane w znaczniku `<head>`:
    `<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>`

## Opcjonalne metadane

Oprócz elementów zgodnych z podstawowymi wymaganiami przykład zawiera także definicję Schema.org w sekcji head, która nie jest wymagana przez AMP, ale jest niezbędna, aby treści były rozpowszechniane w niektórych miejscach, na przykład w [demonstracyjnej wersji karuzeli wiadomości aplikacji Szukaj w Google (wypróbuj na swoim telefonie)](https://g.co/ampdemo).

Aby dowiedzieć się więcej o wszystkich metadanych potrzebnych w różnych innych miejscach, np. na Twitterze, [zapoznaj się z przykładami](https://github.com/ampproject/amphtml/tree/master/examples/metadata-examples). Aby poznać w szczególności zastosowanie AMP w aplikacji Szukaj w Google, zobacz [Najlepsze historie z AMP](https://developers.google.com/structured-data/carousels/top-stories).

<hr>

Dobra wiadomość! To wszystko, co potrzebne do utworzenia pierwszej strony AMP, przy czym oczywiście niewiele dzieje się na razie w sekcji body. W następnej części zostanie opisane dodawanie podstawowych elementów, takich jak obrazy, dodawanie niestandardowych elementów AMP, nadawanie stronie stylu i opracowanie przyjaznego w obsłudze układu.

<a class="go-button button" href="/pl/docs/get_started/create/include_image.html">Przejdź do kroku 2</a>

---

## File: content/docs/get_started/create/basic_markup@pt_BR.md

---
$title: Criar sua página em AMP HTML
---

A marcação a seguir é um ponto de partida ou texto clichê aceitável.
Copie e salve-a em um arquivo de extensão .html.

[sourcecode:html]
<!doctype html>
<html amp lang="en">
  <head>
    <meta charset="utf-8">
    <title>Hello, AMPs</title>
    <link rel="canonical" href="http://example.ampproject.org/article-metadata.html" />
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@type": "NewsArticle",
        "headline": "Open-source framework for publishing content",
        "datePublished": "2015-10-07T12:02:41Z",
        "image": [
          "logo.jpg"
        ]
      }
    </script>
    <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>
    <script async src="https://cdn.ampproject.org/v0.js"></script>
  </head>
  
    <h1>Welcome to the mobile web</h1>
  
</html>
[/sourcecode]

O conteúdo do corpo, até agora, é bastante simples. No então, há muito código adicional no cabeçalho da página que pode não ser imediatamente óbvio. Vamos desconstruir a marcação obrigatória.

## Marcação obrigatória

Documentos em AMP HTML DEVEM:

  - Ser iniciados pelo doctype `<!doctype html>`.
  - Conter uma tag `<html ⚡>` de nível superior (`<html amp>` também é aceita).
  - Conter as tags `<head>` e `` (elas são opcionais em HTML).
  - Conter uma tag `<link rel="canonical" href="$SOME_URL" />` dentro do cabeçalho que aponte para a versão em HTML comum do documento em AMP HTML, ou para o próprio documento se a versão em HTML não existir.
  - Conter uma tag `<meta charset="utf-8">` como primeira filha da tag do cabeçalho.
  - Conter uma tag `<meta name="viewport" content="width=device-width,minimum-scale=1">`dentro da tag do cabeçalho. Também é recomendável incluir initial-scale=1.
  - Conter uma tag `<script async src="https://cdn.ampproject.org/v0.js"></script>` como o último elemento do cabeçalho (isso inclui e carrega a biblioteca de AMP JS).
  - Conter o seguinte na tag `<head>`:
    `<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>`

## Metadados opcionais

Além dos requisitos básicos, nosso exemplo também inclui uma definição de Schema.org no cabeçalho, o que não é um requisito obrigatório para o AMP, mas é necessário para que seu conteúdo seja distribuído para certos lugares, como a [demonstração do carrossel de notícias da Pesquisa do Google (experimente no seu telefone)](https://g.co/ampdemo).

Para saber mais sobre todos os metadados necessários para outros locais, como o Twitter, [explore nossos exemplos](https://github.com/ampproject/amphtml/tree/master/examples/metadata-examples). Para saber especificamente sobre o AMP na Pesquisa do Google, consulte [Principais histórias com o AMP](https://developers.google.com/structured-data/carousels/top-stories).

<hr>

Boa notícia! Isso é tudo de que precisamos para criar nossa primeira página AMP, mas é claro que ainda falta muita coisa no corpo. Na próxima seção, abordaremos como adicionar itens básicos como imagens, elementos AMP personalizados, como compor o estilo da sua página e desenvolver um layout responsivo.

<a class="go-button button" href="/pt_br/docs/get_started/create/include_image.html">Continuar para a etapa 2</a>

---

## File: content/docs/get_started/create/basic_markup@ru.md

---
$title: Создание страницы AMP HTML
---

Следующая разметка может служить хорошей начальной точкой или шаблоном.
Скопируйте ее и сохраните в файл с расширением .html.

[sourcecode:html]
<!doctype html>
<html amp lang="en">
  <head>
    <meta charset="utf-8">
    <title>Hello, AMPs</title>
    <link rel="canonical" href="http://example.ampproject.org/article-metadata.html" />
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@type": "NewsArticle",
        "headline": "Open-source framework for publishing content",
        "datePublished": "2015-10-07T12:02:41Z",
        "image": [
          "logo.jpg"
        ]
      }
    </script>
    <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>
    <script async src="https://cdn.ampproject.org/v0.js"></script>
  </head>
  
    <h1>Welcome to the mobile web</h1>
  
</html>
[/sourcecode]

Содержимое тела страницы пока достаточно простое. Однако в ее заголовке содержится много дополнительного кода, который не так очевиден. Попробуем проанализировать необходимую разметку.

## Необходимая разметка

Документ AMP HTML ДОЛЖЕН:

  - Начинаться с типа документа `<!doctype html>`.
  - Содержать тег верхнего уровня `<html ⚡>` (также допускается использование `<html amp>`).
  - Содержать теги `<head>` и `` (необязательные в разметке HTML).
  - Содержать внутри заголовка тег `<link rel="canonical" href="$SOME_URL" />`, который указывает на обычную HTML-версию документа AMP HTML или на сам исходный документ, если такой версии не существует.
  - Содержать тег `<meta charset="utf-8">` в качестве первого дочернего элемента тега заголовка.
  - Содержать в теге заголовка тег `<meta name="viewport" content="width=device-width,minimum-scale=1">`. Также рекомендуется включить в него значение initial-scale=1.
  - Содержать в качестве последнего элемента заголовка тег `<script async src="https://cdn.ampproject.org/v0.js"></script>`, который указывает и загружает библиотеку AMP JS.
  - Содержать в теге `<head>` следующий код:
    `<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>`

## Дополнительные метаданные

Кроме выполнения этих простых требований заголовок нашего примера также включает определение Schema.org, которое не является жестким требованием для AMP, но необходимо для предоставления контента в некоторых местах, например в [демонстрации карусельного представления новостей Google Поиска (попробуйте на своем телефоне)](https://g.co/ampdemo).

Чтобы узнать больше о всех метаданных, которые потребуются в различных других местах, таких как Twitter, [ознакомьтесь с нашими примерами](https://github.com/ampproject/amphtml/tree/master/examples/metadata-examples). Для получения дополнительной информации об использовании AMP в Google Поиске см. раздел [Горячие новости с AMP](https://developers.google.com/structured-data/carousels/top-stories).

<hr>

Это все, что потребуется для создания нашей первой страницы AMP, однако в ее теле пока ничего нет. В следующем разделе мы рассмотрим способы добавления основных компонентов, таких как изображения и персонализированные элементы AMP, а также настройку стиля страницы и разработку отзывчивого макета.

<a class="go-button button" href="/ru/docs/get_started/create/include_image.html">Перейти к шагу 2</a>

---

## File: content/docs/get_started/create/basic_markup@th.md

---
$title: สร้างหน้า AMP HTML
---

มาร์กอัปต่อไปนี้คือจุดเริ่มต้นหรือต้นแบบที่ดี
ให้คัดลอกและบันทึกลงในไฟล์ที่มีส่วนขยาย .html

[sourcecode:html]
<!doctype html>
<html amp lang="en">
  <head>
    <meta charset="utf-8">
    <title>Hello, AMPs</title>
    <link rel="canonical" href="http://example.ampproject.org/article-metadata.html" />
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@type": "NewsArticle",
        "headline": "Open-source framework for publishing content",
        "datePublished": "2015-10-07T12:02:41Z",
        "image": [
          "logo.jpg"
        ]
      }
    </script>
    <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>
    <script async src="https://cdn.ampproject.org/v0.js"></script>
  </head>
  
    <h1>Welcome to the mobile web</h1>
  
</html>
[/sourcecode]

ส่วนเนื้อความในตัวอย่างจะค่อนข้างตรงไปตรงมา แต่มีการเพิ่มโค้ดหลายอย่างไว้ที่ส่วนหัวของหน้าซึ่งคุณอาจไม่ทันได้สังเกต ลองมาดูมาร์กอัปที่จำเป็นกัน

## มาร์กอัปที่จำเป็น

เอกสาร AMP HTML จะต้อง:

  - เริ่มต้นด้วย doctype `<!doctype html>`
  - มีแท็ก `<html ⚡>` ระดับบนสุด (สามารถใช้ `<html amp>` ได้เช่นกัน)
  - มีแท็ก `<head>` และ `` (มีหรือไม่ก็ได้ใน HTML)
  - มีแท็ก `<link rel="canonical" href="$SOME_URL" />` อยู่ภายในส่วนหัวที่นำไปยังเอกสาร AMP HTML เวอร์ชัน HTML ปกติหรือไปยังหน้านั้นเองในกรณีที่ไม่มีเวอร์ชัน HTML
  - มีแท็ก `<meta charset="utf-8">` เป็นรายการย่อยแรกของแท็กส่วนหัว
  - มีแท็ก `<meta name="viewport" content="width=device-width,minimum-scale=1">` อยู่ในแท็กส่วนหัว โดยแนะนำให้ใส่ initial-scale=1 ไว้ด้วย
  - มีแท็ก `<script async src="https://cdn.ampproject.org/v0.js"></script>` เป็นอิลิเมนต์สุดท้ายในส่วนหัว (ซึ่งรวมถึงและการโหลดไลบรารี AMP JS)
  - มีรายการต่อไปนี้ในแท็ก `<head>`:
    `<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>`

## เมตาดาตาที่จะมีหรือไม่ก็ได้

นอกเหนือจากข้อกำหนดโดยทั่วไป ตัวอย่างของเรายังมีการใช้ข้อกำหนด Schema.org ในส่วนหัว ซึ่งไม่ใช่ข้อกำหนดที่จำเป็นต้องใช้สำหรับ AMP แต่จำเป็นต้องมีเพื่อให้สามารถเผยแพร่เนื้อหาของคุณไปยังปลายทางที่ระบุ เช่น ใน[การสาธิตการแสดงข่าวแบบหมุนใน Google Search (ให้ลองใช้บนโทรศัพท์ของคุณ)](https://g.co/ampdemo)

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเมตาดาตาทั้งหมดที่คุณจำเป็นต้องใช้ในที่ต่างๆ เช่น Twitter [ให้ดูตัวอย่างของเรา](https://github.com/ampproject/amphtml/tree/master/examples/metadata-examples) หากต้องการเรียนรู้เฉพาะเจาะจงเกี่ยวกับ AMP ใน Google Search ดู[การแสดงเรื่องเด่นด้วย AMP](https://developers.google.com/structured-data/carousels/top-stories)

<hr>

ข่าวดี! คุณได้ดำเนินการต่างๆ ที่จำเป็นสำหรับการสร้าง AMP หน้าแรกแล้ว อย่างไรก็ตาม ยังมีเนื้อหาในส่วนเนื้อความไม่มากนัก ในส่วนต่อไป เราจะกล่าวถึงวิธีการเพิ่มรายการพื้นฐาน เช่น รูปภาพ อิลิเมนต์ AMP แบบกำหนดเอง การจัดรูปแบบหน้าเว็บของคุณ และการจัดเค้าโครงแบบอินเทอร์แอคทีฟ

<a class="go-button button" href="/th/docs/get_started/create/include_image.html">ไปยังขั้นตอนที่ 2</a>

---

## File: content/docs/get_started/create/basic_markup@tr.md

---
$title: AMP HTML Sayfanızı Oluşturun
---

Aşağıdaki işaretleme uygun bir başlangıç noktası veya standart metindir.
Bunu kopyalayın veya .html uzantılı bir dosyaya kaydedin.

[sourcecode:html]
<!doctype html>
<html amp lang="en">
  <head>
    <meta charset="utf-8">
    <title>Hello, AMPs</title>
    <link rel="canonical" href="http://example.ampproject.org/article-metadata.html" />
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@type": "NewsArticle",
        "headline": "Open-source framework for publishing content",
        "datePublished": "2015-10-07T12:02:41Z",
        "image": [
          "logo.jpg"
        ]
      }
    </script>
    <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>
    <script async src="https://cdn.ampproject.org/v0.js"></script>
  </head>
  
    <h1>Welcome to the mobile web</h1>
  
</html>
[/sourcecode]

Buraya kadarki gövde içeriği oldukça anlaşılırdır. Ancak sayfanın başında hemen anlaşılır olmayan birçok ek kod bulunmaktadır. İstenen işaretlemeyi yapılarına ayırıp analiz edelim.

## İstenen işaretleme

AMP HTML belgeleri şu özelliklere sahip olmalıdır:

  - Belge tipiyle `<!doctype html>` başlamalıdır.
  - Üst seviye bir `<html ⚡>` etiketi içermelidir (`<html amp>` de kabul edilir).
  - `<head>` ve `` etiketleri içermelidir (HTML›de isteğe bağlıdır).
  - Başında AMP HTML belgesinin düzenli HTML sürümünü ya da böyle bir HTML versiyonu mevcut değilse kendisini gösteren bir `<link rel="canonical" href="$SOME_URL" />` etiketi içerir.
  - Baş etiketin ilk ürünü olarak `<meta charset="utf-8">` etiketini içerir.
  - Baş etiketin içerisinde bir `<meta name="viewport" content="width=device-width,minimum-scale=1">` etiketi içerir. initial-scale=1›in de eklenmesi önerilir.
  - Başında en son öge olarak`<script async src="https://cdn.ampproject.org/v0.js"></script>` etiketini içerir (Buna AMP JS kitaplığı da eklenip yüklenir).
  - `<head>` etiketinde aşağıdakileri içerir:
    `<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>`

## Opsiyonel meta-veri

Açık gerekliliklerin yanı sıra, verdiğimiz örnekte baştaki Schema.org tanımı da yer alır; bu AMP için katı bir gereklilik değildir, ancak içeriğinizin belli yerlere dağıtılması için, örneğin [Google Arama haberler karusel demosuna (telefonunuzda deneyin)](https://g.co/ampdemo) bir gerekliliktir.

Twitter vb. diğer çeşitli yerlerde ihtiyacını olan tüm meta-veriler hakkında daha fazla bilgi için, [örneklerimizi inceleyin](https://github.com/ampproject/amphtml/tree/master/examples/metadata-examples). Spesifik olarak Google Arama›daki AMP hakkında öğrenmek için, bkz. [En İyi AMP Hikayeleri](https://developers.google.com/structured-data/carousels/top-stories).

<hr>

İyi haber! İlk AMP sayfamızı oluşturmak için gerekli olan tek şey bu, fakat tabii ki gövdede devam eden daha birçok şey var. Bir sonraki bölümde görüntü, özel AMP ögeleri gibi temel unsurların nasıl ekleneceğini, sayfanızın nasıl biçimlendirileceğini ve nasıl etkileşimli bir düzen geliştirileceği üzerinde duracağız.

<a class="go-button button" href="/tr/docs/get_started/create/include_image.html">Adım 2 ile devam edin</a>

---

## File: content/docs/get_started/create/basic_markup@zh_CN.md

---
$title: 创建 AMP HTML 页面
---

以下标记是一个不错的起点或样板文件。
复制此标记，并将其保存为扩展名为 .html 的文件。

[sourcecode:html]
<!doctype html>
<html amp lang="en">
  <head>
    <meta charset="utf-8">
    <title>Hello, AMPs</title>
    <link rel="canonical" href="http://example.ampproject.org/article-metadata.html" />
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@type": "NewsArticle",
        "headline": "Open-source framework for publishing content",
        "datePublished": "2015-10-07T12:02:41Z",
        "image": [
          "logo.jpg"
        ]
      }
    </script>
    <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>
    <script async src="https://cdn.ampproject.org/v0.js"></script>
  </head>
  
    <h1>Welcome to the mobile web</h1>
  
</html>
[/sourcecode]

到目前为止，正文中的内容相当简单。但页面最前面有一些可能并非立即显而易见的额外代码。让我们解构一下所需的标记。

## 所需的标记

AMP HTML 文档必须：

  - 以文档类型 `<!doctype html>` 开头
  - 包含顶级 `<html ⚡>` 标记（也接受 `<html amp>`）
  - 包含 `<head>` 和 `` 标记（这些标记在 HTML 中是可选的）
  - 在<head>内包含一个 `<link rel="canonical" href="$SOME_URL" />` 标记，该标记指向 AMP HTML 文档的常规 HTML 版本，或在此类 HTML 版本不存在的情况下指向文档本身
  - 包含 `<meta charset="utf-8">` 标记作为<head>标记的第一个子项
  - 在<head>标记内包含 `<meta name="viewport" content="width=device-width,minimum-scale=1">` 标记。还建议包括 initial-scale=1
  - 包含 `<script async src="https://cdn.ampproject.org/v0.js"></script>` 标记作为<head>中的最后一个元素（这样做将会包括并加载 AMP JS 库）
  - 在其 `<head>` 标记内包含以下内容：
    `<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>`

## 可选的元数据

除了纯粹的要求外，我们的示例还在<head>中包括了 Schema.org 定义，该定义不是对 AMP 的严格要求，但必须满足才能在某些地方（例如在 [Google 搜索新闻轮播演示（请在您的手机上尝试）](https://g.co/ampdemo)）分发内容。

如需详细了解在各类其他地方（例如 Twitter）需要的所有元数据，请[浏览我们的示例](https://github.com/ampproject/amphtml/tree/master/examples/metadata-examples)。如需具体了解 Google 搜索中的 AMP，请参阅 [AMP 头条新闻](https://developers.google.com/structured-data/carousels/top-stories)。

<hr>

好消息！这就是创建第一个 AMP 页面所需的全部内容，当然在正文中还有很多工作要做。在下一部分中，我们将介绍如何添加像图像、自定义 AMP 元素这样的基本内容，如何设置页面样式，以及如何实现响应式布局。

<a class="go-button button" href="/zh_cn/docs/get_started/create/include_image.html">继续执行步骤 2</a>

---

## File: content/docs/get_started/create/include_image.md

---
$title: Include an Image
$order: 1
---

Most HTML tags can be used directly in AMP HTML, but certain tags, such as the `` tag, are replaced with equivalent or slightly enhanced custom AMP HTML tags (and a few problematic tags are outright banned, see [HTML Tags in the specification](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-format.md)).

To demonstrate what additional markup could look like, here’s the code required to embed an image into the page:

[sourcecode:html]
<amp-img src="welcome.jpg" alt="Welcome" height="400" width="800"></amp-img>
[/sourcecode]

To learn why we’re replacing tags like `` with `<amp-img>`, and how many are available, head to [Include Iframes and Media](/docs/guides/amp_replacements.html).

<a class="go-button button" href="/docs/get_started/create/presentation_layout.html">Continue to Step 3</a>

---

## File: content/docs/get_started/create/include_image@ar.md

[Binary file]

---

## File: content/docs/get_started/create/include_image@de.md

---
$title: Bilder hinzufügen
---

Die meisten HTML-Tags können direkt im AMP-HTML-Code verwendet werden, aber manche Tags wie das ``-Tag werden durch gleichwertige oder leicht verbesserte benutzerdefinierte AMP-HTML-Tags ersetzt. Einige problematische HTML-Tags werden auch komplett ausgeschlossen, [wie in der Spezifikation angegeben](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-format.md).

Hier sehen Sie ein Beispiel für den Code, mit dem Sie ein Bild auf der Seite einbetten:

[sourcecode:html]
<amp-img src="welcome.jpg" alt="Welcome" height="400" width="800"></amp-img>
[/sourcecode]

Weshalb wir Tags wie `` durch `<amp-img>` ersetzen und wie viele es gibt, erfahren Sie unter [iFrames und Medien einschließen](/docs/guides/amp_replacements.html).

<a class="go-button button" href="/de/docs/get_started/create/presentation_layout.html">Weiter mit Schritt 3</a>

---

## File: content/docs/get_started/create/include_image@es.md

---
$title: Incluir una imagen
---

La mayoría de las etiquetas HTML se pueden usar directamente en AMP HTML, pero algunas, como ``, se reemplazan por etiquetas AMP HTML personalizadas equivalentes o ligeramente optimizadas (y unas pocas etiquetas problemáticas se inhabilitan directamente; consulta [etiquetas HTML en la especificación](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-format.md)).

Para demostrar el aspecto que tendría el marcado adicional, a continuación te mostramos el código requerido para integrar una imagen a la página:

[sourcecode:html]
<amp-img src="bienvenido.jpg" alt="Bienvenido" height="400" width="800"></amp-img>
[/sourcecode]

Para saber por qué reemplazamos etiquetas como `` por `<amp-img>` y cuántas hay disponibles, consulta [Incluir Iframes y medios](/docs/guides/amp_replacements.html).

<a class="go-button button" href="/es/docs/get_started/create/presentation_layout.html">Continuar con el paso 3</a>

---

## File: content/docs/get_started/create/include_image@fr.md

---
$title: Inclure une image
---

La plupart des balises HTML peuvent être utilisées directement dans AMP HTML, mais certaines, comme la balise ``, sont remplacées par des balises équivalentes ou des balises AMP HTML personnalisées légèrement améliorées (et quelques balises problématiques sont purement interdites, voir les [balises HTML dans la spécification](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-format.md)).

Pour découvrir à quoi ressemblerait un balisage supplémentaire, voici le code requis pour intégrer une image dans la page :

[sourcecode:html]
<amp-img src="welcome.jpg" alt="Welcome" height="400" width="800"></amp-img>
[/sourcecode]

Pour savoir pourquoi nous remplaçons les balises, telles que `` par `<amp-img>`, et combien sont disponibles, accédez à [Inclure des iframes et des éléments multimédias](/docs/guides/amp_replacements.html).

<a class="go-button button" href="/fr/docs/get_started/create/presentation_layout.html">Continuer à l'Étape 3</a>

---

## File: content/docs/get_started/create/include_image@id.md

---
$title: Menyertakan Gambar
---

Sebagian besar tag HTML bisa digunakan secara langsung dalam AMP HTML, namun tag tertentu seperti tag ``, diganti dengan yang setara atau tag AMP HTML khusus yang telah sedikit disempurnakan (dan beberapa tag bermasalah langsung dicekal, lihat [Tag HTML dalam spesifikasi](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-format.md)).

Untuk mendemonstrasikan seperti apa tampilan markup tambahan ini, berikut kode yang diperlukan untuk menyematkan sebuah gambar ke dalam halaman:

[sourcecode:html]
<amp-img src="welcome.jpg" alt="Welcome" height="400" width="800"></amp-img>
[/sourcecode]

Untuk mengetahui alasan kami mengganti tag seperti `` dengan `<amp-img>`, dan jumlah ketersediaannya, kunjungi [Menyertakan Iframe dan Media](/docs/guides/amp_replacements.html).

<a class="go-button button" href="/id/docs/get_started/create/presentation_layout.html">Lanjutkan ke Langkah 3</a>

---

## File: content/docs/get_started/create/include_image@it.md

---
$title: Aggiunta di un’immagine
---

La maggior parte dei tag HTML può essere utilizzata direttamente in HTML AMP, tuttavia alcuni tag, come ``, vengono sostituiti con tag HTML AMP personalizzati equivalenti o leggermente ottimizzati (inoltre alcuni tag problematici sono stati del tutto esclusi, vedi [Tag HTML nelle specifiche](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-format.md)).

Per illustrare il possibile aspetto del markup supplementare, ecco il codice necessario per incorporare un’immagine nella pagina:

[sourcecode:html]
<amp-img src="welcome.jpg" alt="Welcome" height="400" width="800"></amp-img>
[/sourcecode]

Per capire perché stiamo sostituendo tag come `` con `<amp-img>` e quanti di essi sono disponibili, vai alla sezione [Includere Iframe ed elementi multimediali](/docs/guides/amp_replacements.html).

<a class="go-button button" href="/it/docs/get_started/create/presentation_layout.html">Vai al Passaggio 3</a>

---

## File: content/docs/get_started/create/include_image@ja.md

---
$title: イメージを含める
---

ほとんどの HTML タグは、そのまま AMP HTML でも使用できますが、中には `` タグのように同等か少し高機能のカスタム AMP HTML タグに置き換えなくてはいけないものがあります（一部のタグは問題があるため、使用が一切禁止されています。詳細については、[仕様書の HTML タグ](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-format.md)の内容をご覧ください）。

以下のコードは追加のマークアップを使った例で、ページ内にイメージを埋め込んでいます。

[sourcecode:html]
<amp-img src="welcome.jpg" alt="Welcome" height="400" width="800"></amp-img>
[/sourcecode]

`` タグの代わりに `<amp-img>` タグを使っている理由や、使用できるタグの種類については、[iframe とメディアを含める](/docs/guides/amp_replacements.html)をご覧ください。

<a class="go-button button" href="/ja/docs/get_started/create/presentation_layout.html">ステップ 3 に進む</a>

---

## File: content/docs/get_started/create/include_image@ko.md

---
$title: 이미지 포함
---

대부분의 HTML 태그는 AMP HTML에 직접 사용될 수 있지만, `` 태그와 같은 특정 태그는 이와 동등하거나 약간 향상된 사용자 지정 AMP HTML 태그로 대체되며, 문제가 있는 몇몇 태그는 즉시 금지됩니다([사양의 HTML 태그](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-format.md) 참조).

추가적인 마크업이 어떻게 나타나는지를 보여주기 위해, 여기서는 이미지를 페이지에 삽입하는 데 필요한 코드를 보여줍니다.

[sourcecode:html]
<amp-img src="welcome.jpg" alt="Welcome" height="400" width="800"></amp-img>
[/sourcecode]

``와 같은 태그를 `<amp-img>`로 대체하는 이유와 얼마나 많은 태그를 사용할 수 있는지에 대해 알아보려면, [Iframe 및 미디어 포함](/docs/guides/amp_replacements.html)으로 이동하세요.

<a class="go-button button" href="/ko/docs/get_started/create/presentation_layout.html">3단계로 계속</a>

---

## File: content/docs/get_started/create/include_image@pl.md

---
$title: Dołączanie obrazów
---

Większość tagów HTML może być używanych bezpośrednio w kodzie AMP HTML, ale niektóre z nich, na przykład znacznik ``, są zastępowane przez równoważne lub nieznacznie rozszerzone, niestandardowe tagi AMP HTML (a kilka problematycznych znaczników zostało zdecydowanie wykluczonych, zobacz [Tagi HTML w specyfikacji](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-format.md)).

Przedstawiony poniżej kod wymagany do umieszczenia obrazu na stronie demonstruje wygląd tych dodatkowych znaczników:

[sourcecode:html]
<amp-img src="welcome.jpg" alt="Welcome" height="400" width="800"></amp-img>
[/sourcecode]

Uzasadnienie zamiany znaczników w rodzaju `` na `<amp-img>` oraz informacje o liczbie dostępnych znaczników znajdziesz w części [Dołączanie ramek iframe i multimediów](/docs/guides/amp_replacements.html).

<a class="go-button button" href="/pl/docs/get_started/create/presentation_layout.html">Przejdź do kroku 3</a>

---

## File: content/docs/get_started/create/include_image@pt_BR.md

---
$title: Incluir uma imagem
---

A maioria das tags HTML podem ser usadas diretamente em AMP HTML, mas algumas, como a tag ``, são substituídas por tags AMP HTML equivalentes ou ligeiramente melhoradas e personalizadas (e algumas poucas tags problemáticas são diretamente eliminadas, consulte [Tags HTML na especificação](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-format.md)).

Para demonstrar qual seria a aparência de uma marcação adicional, veja o código necessário para incorporar uma imagem na página:

[sourcecode:html]
<amp-img src="welcome.jpg" alt="Welcome" height="400" width="800"></amp-img>
[/sourcecode]

Para saber por que estamos substituindo tags como `` por `<amp-img>` e quantas estão disponíveis, consulte [Incluir iframes e mídia](/docs/guides/amp_replacements.html).

<a class="go-button button" href="/pt_br/docs/get_started/create/presentation_layout.html">Continuar para a etapa 3</a>

---

## File: content/docs/get_started/create/include_image@ru.md

---
$title: Вставка изображения
---

Большинство тегов HTML может быть использовано непосредственно в AMP HTML, однако некоторые теги, такие как ``, заменяются своим эквивалентом или слегка расширенными персонализированными тегами AMP HTML (также запрещено использование нескольких проблемных тегов, см. [описание тегов HTML в спецификации AMP](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-format.md)).

Для демонстрации того, как может выглядеть дополнительная разметка, ниже приведен пример кода для встраивания изображения в страницу:

[sourcecode:html]
<amp-img src="welcome.jpg" alt="Welcome" height="400" width="800"></amp-img>
[/sourcecode]

Чтобы узнать о причинах замены тегов `` на `<amp-img>`, а также о других доступных возможностях, ознакомьтесь с разделом [Вставка встроенных фреймов и мультимедийного содержимого](/docs/guides/amp_replacements.html).

<a class="go-button button" href="/ru/docs/get_started/create/presentation_layout.html">Перейти к шагу 3</a>

---

## File: content/docs/get_started/create/include_image@th.md

---
$title: ใส่รูปภาพ
---

แท็ก HTML ส่วนใหญ่สามารถนำไปใช้ใน AMP HTML ได้โดยตรง แต่สำหรับบางแท็ก เช่น แท็ก `` จะถูกแทนที่ด้วยแท็ก AMP HTML แบบกำหนดเองที่เทียบเท่าหรือปรับปรุงเล็กน้อย (ซึ่งแท็กที่ไม่สามารถแสดงได้บางอย่างจะถูกห้ามแสดงในทันที ดู[ข้อกำหนดในการใช้แท็ก HTML](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-format.md))

หากต้องการทราบว่ามาร์กอัปเพิ่มเติมที่จำเป็นต้องใช้มีลักษณะอย่างไร โปรดดูโค้ดที่ใช้ในการฝังรูปภาพไว้ในหน้าเว็บด้านล่าง

[sourcecode:html]
<amp-img src="welcome.jpg" alt="Welcome" height="400" width="800"></amp-img>
[/sourcecode]

หากต้องการทราบว่าเหตุใดเราจึงแทนที่แท็ก `` ด้วย `<amp-img>` รวมถึงมีแท็กใดบ้างที่สามารถนำมาใช้แทนได้ โปรดไปที่[การใส่ Iframe และสื่อต่างๆ](/docs/guides/amp_replacements.html)

<a class="go-button button" href="/th/docs/get_started/create/presentation_layout.html">ไปยังขั้นตอนที่ 3</a>

---

## File: content/docs/get_started/create/include_image@tr.md

---
$title: Bir Görüntü Ekleyin
---

HTML etiketlerinin birçoğu AMP HTML›de kullanılabilir, ancak `` etiketi gibi bazı etiketler eşdeğeri ya da biraz geliştirilmiş özel AMP HTML etiketleri ile değiştirilir (ve sorunlu etiketlerden birkaçı tamamen yasaklanır, bkz.[Spesifikasyondaki HTML Etiketleri](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-format.md)).

Ek işaretlerin nasıl görüneceğini örneklendirmek için, sayfaya bir görüntü yerleştirmek için gerekli kod burada verilmiştir:

[sourcecode:html]
<amp-img src="welcome.jpg" alt="Welcome" height="400" width="800"></amp-img>
[/sourcecode]

`` gibi etiketleri `<amp-img>` ile neden değiştirdiğimizi ve kaç tane mevcut olduğunu öğrenmek için, [Bilgi İletim Birimleri ve Medya Ekle](/docs/guides/amp_replacements.html) bölümüne gidin.

<a class="go-button button" href="/tr/docs/get_started/create/presentation_layout.html">Adım 3 ile devam edin</a>

---

## File: content/docs/get_started/create/include_image@zh_CN.md

---
$title: 包括图像
---

大多数 HTML 标记都可在 AMP HTML 中直接使用，但某些标记（例如 `` 标记）被替换为等效标记或略微增强的自定义 AMP HTML 标记（少数存在问题的标记会被完全禁止使用，请参阅[规范中的 HTML 标记](https://github.com/ampproject/amphtml/blob/master/spec/amp-html-format.md)）。

以下是在页面中嵌入图像所需的代码，用于演示其他标记是什么样的：

[sourcecode:html]
<amp-img src="welcome.jpg" alt="Welcome" height="400" width="800"></amp-img>
[/sourcecode]

如需了解我们为何要将诸如 `` 等标记替换为 `<amp-img>` 以及有多少标记可用，请查看[包括 Iframe 和媒体](/docs/guides/amp_replacements.html)。

<a class="go-button button" href="/zh_cn/docs/get_started/create/presentation_layout.html">继续执行步骤 3</a>

---

## File: content/docs/get_started/create/prepare_for_discovery.md

---
$title: Prepare Your Page for Discovery and Distribution
$order: 4
---

In some cases, you might want to have both a non-AMP and an AMP version of the same page, for example, a news article. Consider this: If Google Search finds the non-AMP version of that page, *how does it know there’s a "paired" AMP version of it*?

## Linking pages with `<link>`

In order to establish that a non-AMP page and an AMP page should be treated as being "paired" together, we add information about the AMP page to the non-AMP page and vice versa, in the form of `<link>` tags in the `<head>`.

Add the following to the non-AMP page:

[sourcecode:html]
<link rel="amphtml" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

And this to the AMP page

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/full/document.html">
[/sourcecode]

## What if I only have one page?

If you only have one page, and that page is an AMP page, you must still add the canonical link to it, which will then simply point to itself:

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

<a class="go-button button" href="/docs/get_started/create/publish.html">Continue to Step 6</a>

---

## File: content/docs/get_started/create/prepare_for_discovery@ar.md

---
$title: تحضير صفحتك للاكتشاف والتوزيع
---

في بعض الحالات، قد تحتاج إلى امتلاك إصدار تابع لـ AMP وآخر غير تابع لها من الصفحة، مثل مقالة إخبارية. ضع هذا في حسبانك: إذا عثر بحث Google على الإصدار غير التابع لـ AMP من تلك الصفحة، *فكيف يعرف بوجود إصدار تابع لـ AMP منها*؟

## ربط الصفحات بـ &lt;link>

لحل هذه المشكلة، نضيف المعلومات بشأن صفحة AMP إلى الصفحة غير التابعة لـ AMP، والعكس صحيح، في شكل علامات `<link>` في `<head>`.

أضف ما يلي إلى الصفحة غير التابعة لـ AMP:

[sourcecode:html]
<link rel="amphtml" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

وهذا لصفحة AMP

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/full/document.html">
[/sourcecode]

## ماذا إن كان المتوفر لدي صفحة واحدة فقط؟

إذا كانت لديك صفحة واحدة فقط، وكانت هذه الصفحة صفحة AMP، يجب عليك مع ذلك إضافة رابط متعارف عليه إليها، وهو ما يجعلها ببساطة تشير إلى نفسها:

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

<a class="go-button button" href="/ar/docs/get_started/create/publish.html">المتابعة إلى الخطوة 6</a>

---

## File: content/docs/get_started/create/prepare_for_discovery@de.md

---
$title: Seite für die Auffindbarkeit und Bereitstellung vorbereiten
---

Vielleicht gibt es bei Ihnen in manchen Fällen von der gleichen Seite, zum Beispiel einem Nachrichtenartikel, sowohl eine Nicht-AMP-Version als auch eine AMP-Version. Wenn die Google-Suche nun die Nicht-AMP-Version der Seite findet, *woher weiß sie, dass es auch noch eine AMP-Version gibt?*

## Seiten mit `<link>` verknüpfen

Um dieses Problem zu lösen, fügen wir Informationen zur AMP-Seite auf der Nicht-AMP-Seite ein und umgekehrt. Dies geschieht in Form von `<link>`-Tags im `<head>`-Element.

Fügen Sie Ihrer Nicht-AMP-Seite den folgenden Code hinzu:

[sourcecode:html]
<link rel="amphtml" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

Und diesen der AMP-Seite:

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/full/document.html">
[/sourcecode]

## Was ist, wenn ich nur eine Seite habe?

Wenn Sie nur eine Seite haben und es sich dabei um eine AMP-Seite handelt, müssen Sie trotzdem den kanonischen Link hinzufügen. Dieser verweist dann einfach auf sich selbst:

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

<a class="go-button button" href="/de/docs/get_started/create/publish.html">Weiter mit Schritt 6</a>

---

## File: content/docs/get_started/create/prepare_for_discovery@es.md

---
$title: Prepara tu página para la detección y la distribución
---

En algunos casos, podrías tener una versión AMP y una versión no AMP de la misma página; por ejemplo, un artículo informativo. Considera lo siguiente: Si la Búsqueda de Google encuentra la versión no AMP de esa página, *¿cómo sabe que existe una versión AMP?*

## Vinculación de páginas con&lt;link>

Para resolver este problema, agregamos información sobre la página AMP a la página no AMP y viceversa en forma de etiquetas `<link>` en el `<head>`.

Agrega lo siguiente a la página no AMP:

[sourcecode:html]
<link rel="amphtml" href="https://www.ejemplo.com/url/al/documento/amp.html">
[/sourcecode]

Y esto a la página AMP

[sourcecode:html]
<link rel="canonical" href="https://www.ejemplo.com/url/al/documento/completo.html">
[/sourcecode]

## ¿Qué sucede si tengo una sola página?

Si solo tienes una página y es AMP, debes agregarle el vínculo canónico. Este luego simplemente apuntará a sí mismo.

[sourcecode:html]
<link rel="canonical" href="https://www.ejemplo.com/url/al/documento/amp.html">
[/sourcecode]

<a class="go-button button" href="/es/docs/get_started/create/publish.html">Continuar con el paso 6</a>

---

## File: content/docs/get_started/create/prepare_for_discovery@fr.md

---
$title: Préparer votre page pour la détection et la distribution
---

Dans certains cas, vous pouvez avoir besoin de deux versions (non-AMP et AMP) de la même page. Par exemple, pour un article d'actualités. Supposons ce qui suit : Si Google Search trouve la version non-AMP de cette page, *comment sait-il qu'il en existe également une version AMP *?

## Relier les pages avec &lt;link>

Pour résoudre ce problème, nous ajoutons des informations sur la page AMP dans la page non-AMP et vice versa, sous forme de balises `<link>` dans `<head>`.

Ajoutez ce qui suit sur la page non-AMP :

[sourcecode:html]
<link rel="amphtml" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

Et ce qui suit sur la page AMP

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/full/document.html">
[/sourcecode]

## Que se passe-t-il si je n'ai qu'une seule page ?

Si vous n'avez qu'une seule page, et que cette page est une page AMP, vous devez tout de même lui ajouter le lien canonique, qui dans ce cas pointe simplement vers elle-même :

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

<a class="go-button button" href="/fr/docs/get_started/create/publish.html">Continuer à l'Étape 6</a>

---

## File: content/docs/get_started/create/prepare_for_discovery@id.md

---
$title: Menyiapkan Halaman Anda untuk Pencarian dan Distribusi
---

Dalam beberapa kasus, Anda mungkin menginginkan versi non-AMP dan AMP dari halaman yang sama, misalnya, artikel berita. Pertimbangkan ini: Jika Google Penelusuran menemukan versi non-AMP dari halaman itu, *bagaimana Google Penelusuran mengetahui bahwa ada versi AMP dari halaman itu*?

## Menautkan halaman dengan &lt;link>

Untuk menyelesaikan masalah ini, kami menambahkan informasi tentang halaman AMP ke halaman non-AMP dan sebaliknya, dalam bentuk tag `<link>` dalam `<head>`.

Tambahkan yang berikut ini ke halaman non-AMP:

[sourcecode:html]
<link rel="amphtml" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

Tambahkan ini ke halaman AMP

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/full/document.html">
[/sourcecode]

## Bagaimana jika saya memiliki satu halaman saja?

Jika Anda hanya menautkan satu halaman, dan halaman itu adalah halaman AMP, Anda masih harus menambahkan tautan kanonis ke halaman itu, yang kemudian hanya akan menunjuk pada halaman itu sendiri:

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

<a class="go-button button" href="/id/docs/get_started/create/publish.html">Lanjutkan ke Langkah 6</a>

---

## File: content/docs/get_started/create/prepare_for_discovery@it.md

---
$title: Preparazione della pagina per il rilevamento e la distribuzione
---

In alcuni casi potresti aver necessità di una versione AMP e non AMP della stessa pagina, ad esempio per un comunicato stampa. Considera quanto segue: Se Ricerca Google trova la versione non AMP di quella pagina, *come fa a sapere che ne esiste anche una versione AMP*?

## Collegamente delle pagine con &lt;link>

Per risolvere questo problema aggiungiamo delle informazioni sulla pagina AMP alla pagina non AMP e viceversa, sotto forma di tag `<link>` in `<head>`.

Aggiungi quanto segue nella pagina non AMP:

[sourcecode:html]
<link rel="amphtml" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

Aggiungi questo nella pagina AMP:

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/full/document.html">
[/sourcecode]

## Cosa succede in caso di pagine in un solo formato?

Se la tua pagina è in un solo formato e stai usando una pagina AMP, devi comunque aggiungervi il link tradizionale, che a questo punto rimanda semplicemente a sé stesso:

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

<a class="go-button button" href="/it/docs/get_started/create/publish.html">Vai al Passaggio 6</a>

---

## File: content/docs/get_started/create/prepare_for_discovery@ja.md

---
$title: ページの検出、配信の準備をする
---

ニュース記事のように、同じページに対して AMP 版と非 AMP 版のページをそれぞれ用意したい場合を考えましょう。たとえば Google 検索で、あるページの非 AMP 版を検出した場合、そのページには AMP 版も存在することを知らせるにはどうしたらよいでしょうか。

## &lt;link> を使ってページをリンクする

この課題を解決するには、`<head>` 内の `<link>` タグという形で、AMP ページの情報を非 AMP ページに追加します。同様に、非 AMP ページの情報は AMP ページに追加します。

以下を非 AMP ページに追加します。

[sourcecode:html]
<link rel="amphtml" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

また、以下を AMP ページに追加します。

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/full/document.html">
[/sourcecode]

## 1 ページしかない場合

1 ページしか存在せず、それが AMP ページである場合も、canonical リンクを追加して単純に自身を指定する必要があります。

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

<a class="go-button button" href="/ja/docs/get_started/create/publish.html">ステップ 6 に進む</a>

---

## File: content/docs/get_started/create/prepare_for_discovery@ko.md

---
$title: 검색 및 배포를 위해 페이지 준비
---

어떤 경우에는 동일 페이지의 비 AMP 버전과 AMP 버전을 모두 갖기를 원할 수도 있습니다(예: 뉴스 기사). 다음을 고려하세요. Google 검색에서 해당 페이지의 비 AMP 버전을 찾은 경우, *AMP 버전이 있는지 어떻게 알 수 있나요*?

## `<link>`로 페이지 링크하기

이 문제를 해결하기 위해 저희는 `<head>`에서 `<link>` 태그 형식으로 AMP 페이지에 대한 정보를 비 AMP 페이지에 추가하거나 그 반대로도 추가합니다.

다음을 비 AMP 페이지에 추가합니다.

[sourcecode:html]
<link rel="amphtml" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

또한 다음을 AMP 페이지에 추가합니다.

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/full/document.html">
[/sourcecode]

## 페이지가 하나 밖에 없으면 어떻게 하나요?

페이지가 하나 밖에 없고 이 페이지가 AMP 페이지인 경우, 그래도 정식 링크를 페이지에 추가해야 합니다. 이 링크는 스스로를 가리킵니다.

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

<a class="go-button button" href="/ko/docs/get_started/create/publish.html">6단계로 계속</a>

---

## File: content/docs/get_started/create/prepare_for_discovery@pl.md

---
$title: Przygotowanie strony do wykrywania i rozpowszechniania
---

Czasami dana strona, na przykład artykuł wiadomości, potrzebna jest w wersji AMP i tradycyjnej. Rozważmy następujący przypadek: Jeśli usługa Szukaj w Google znajdzie wersję tradycyjną tej strony, *skąd będzie wiedziała, że istnieje również wersja AMP tej strony*?

## Powiązanie stron za pomocą elementu &lt;link>

Aby rozwiązać ten problem, do każdej wersji strony dodaliśmy informacje o drugiej wersji, używając znaczników `<link>` w sekcji `<head>`.

Dodaj następujący wpis do strony w wersji tradycyjnej:

[sourcecode:html]
<link rel="amphtml" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

A ten do strony AMP:

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/full/document.html">
[/sourcecode]

## A co, jeśli jest tylko jedna strona?

Jeśli jest tylko jedna wersja strony i jest to wersja AMP, nadal konieczne jest dodanie do niej linku kanonicznego, które w takim wypadku wskaże tę samą stronę:

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

<a class="go-button button" href="/pl/docs/get_started/create/publish.html">Przejdź do kroku 6</a>

---

## File: content/docs/get_started/create/prepare_for_discovery@pt_BR.md

---
$title: Preparar sua página para descoberta e distribuição
---

Em alguns casos, você pode querer uma versão não AMP e uma versão AMP da mesma página, por exemplo, no caso de um artigo de notícia. Considere o seguinte: se a Pesquisa do Google encontrar uma versão não AMP dessa página, *como saberá que há uma versão AMP dela*?

## Páginas vinculadas com um link&lt;>

Para solucionar esse problema, adicionamos informações sobre a página AMP na página não AMP e vice-versa, na forma de tags de `<link>` no elemento `<head>`.

Adicione o seguinte à página não AMP:

[sourcecode:html]
<link rel="amphtml" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

Adicione isto à página AMP

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/full/document.html">
[/sourcecode]

## E se eu só tiver uma página?

Se você só tiver uma página, e essa página for AMP, ainda assim deverá adicionar o link canônico a ela, mas ele simplesmente apontará para a própria página:

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

<a class="go-button button" href="/pt_br/docs/get_started/create/publish.html">Continuar para a etapa 6</a>

---

## File: content/docs/get_started/create/prepare_for_discovery@ru.md

---
$title: Подготовка страницы к обнаружению и распространению
---

В некоторых случаях вам могут понадобиться версии одной и той же страницы, например новостной статьи, выполненные как с использованием разметки AMP, так и без нее. Подумайте над следующим вопросом: если Google Поиск находит версию страницы без разметки AMP, *как он узнает о существовании версии с разметкой AMP*?

## Связывание страниц тегом &lt;link>

Для решения этой проблемы мы добавляем в страницу информацию о ее другой версии (с разметкой AMP или без нее) в виде тегов `<link>` в разделе `<head>`.

Добавьте следующий код в страницу, не использующую AMP:

[sourcecode:html]
<link rel="amphtml" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

В страницу AMP добавьте следующее:

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/full/document.html">
[/sourcecode]

## Если существует только одна страница

Если у вас есть только одна страница, которая использует разметку AMP, в нее следует включить каноническую ссылку на саму себя:

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

<a class="go-button button" href="/ru/docs/get_started/create/publish.html">Перейти к шагу 6</a>

---

## File: content/docs/get_started/create/prepare_for_discovery@th.md

[Binary file]

---

## File: content/docs/get_started/create/prepare_for_discovery@tr.md

---
$title: Sayfanızı Keşif ve Dağıtım için Hazırlayın
---

Bazı durumlarda, aynı sayfanın hem AMP olmayan hem de AMP sürümüne sahip olmak isteyebilirsiniz; örneğin, bir haber makalesi. Bunu düşünün: Google Arama bu sayfanın AMP olmayan bir sürümünü bulursa, *bir AMP versiyonu olduğunu nasıl anlar*?

## &lt;bağlantılı sayfaları bağlama>

Bu sorunu çözmek için, AMP olmayan sayfaya AMP sayfası ile bilgileri, AMP sayfasına ise AMP olmayan sayfa bilgilerini `<head>` içindeki `<link>` etiketi şeklinde ekleriz.

AMP olmayan sayfaya aşağıdakileri ekleyin:

[sourcecode:html]
<link rel="amphtml" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

Ve AMP sayfasına bunu ekleyin

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/full/document.html">
[/sourcecode]

## Sadece tek bir sayfam varsa ne olur?

Sadece tek bir sayfanız var ve bu sayfa bir AMP sayfasıysa, yine de standart bağlantıyı eklemeniz gerekir, bu bağlantı daha sonra yalnızca kendini gösterecektir:

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

<a class="go-button button" href="/tr/docs/get_started/create/publish.html">Adım 6 ile devam edin</a>

---

## File: content/docs/get_started/create/prepare_for_discovery@zh_CN.md

---
$title: 准备页面以供发现和分发
---

在某些情况下，您可能希望同时拥有同一页面（例如，新闻文章）的非 AMP 版本和 AMP 版本。请考虑此情况：如果 Google 搜索找到该页面的非 AMP 版本，*它如何知道该页面有 AMP 版本*？

## 使用 &lt;link> 链接页面

为了解决此问题，我们以在 `<head>` 中包含 `<link>` 标记的形式向非 AMP 页面中添加了有关 AMP 页面的信息，反之亦然。

向非 AMP 页面中添加以下内容：

[sourcecode:html]
<link rel="amphtml" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

向 AMP 页面中添加以下内容

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/full/document.html">
[/sourcecode]

## 如果我只有一个页面该怎么办？

如果您只有一个页面，并且该页面是 AMP 页面，则您仍必须向其中添加规范链接，该链接只是指向自身：

[sourcecode:html]
<link rel="canonical" href="https://www.example.com/url/to/amp/document.html">
[/sourcecode]

<a class="go-button button" href="/zh_cn/docs/get_started/create/publish.html">继续执行步骤 6</a>

---

## File: content/docs/get_started/create/presentation_layout.md

---
$title: Modify Presentation and Layout
$order: 2
---

## Modify the presentation

AMPs are web pages; any styling to the page and its elements is done using common CSS properties. Style elements using class or element selectors in an inline stylesheet in the `<head>`, called `<style amp-custom>`:

[sourcecode:html]
<style amp-custom>
  /* any custom style goes here */
  body {
    background-color: white;
  }
  amp-img {
    background-color: gray;
    border: 1px solid black;
  }
</style>
[/sourcecode]

Every AMP page can only have a single embedded stylesheet, and there are certain selectors you’re not allowed to use. [Learn all about styling](/docs/guides/responsive/style_pages.html).

## Control the layout

AMP follows stricter rules when laying out elements on the page. On a normal HTML page, you almost exclusively use CSS to lay out elements. But for performance reasons, AMP requires all elements to have an explicit size set from the get-go.

Learn all about how AMP renders and layouts a page and how you can modify the layout in [How to Control Layout](/docs/guides/responsive/control_layout.html).

<a class="button go-button" href="/docs/get_started/create/preview_and_validate.html">Continue to Step 4</a>

---

## File: content/docs/get_started/create/presentation_layout@ar.md

[Binary file]

---

## File: content/docs/get_started/create/presentation_layout@de.md

---
$title: Stil und Layout anpassen
---

## Stil anpassen

AMPs sind Webseiten, das heißt, der Stil der Seite und ihrer Elemente wird mithilfe allgemeiner CSS-Eigenschaften bearbeitet. Elemente mit Klassen- oder Elementselektoren können Sie in einem Inline-Stylesheet innerhalb des `<head>`-Elements anpassen. Dieses Stylesheet heißt `<style amp-custom>`:

[sourcecode:html]
<style amp-custom>
  /* any custom style goes here */
  body {
    background-color: white;
  }
  amp-img {
    background-color: gray;
    border: 1px solid black;
  }
</style>
[/sourcecode]

Jede AMP-Seite darf nur über ein einziges eingebettetes Stylesheet verfügen und bestimmte Selektoren dürfen nicht verwendet werden. [Weitere Informationen zu Stylesheets](/docs/guides/responsive/style_pages.html)

## Layout anpassen

Für das Layout von Elementen auf der AMP-Seite gelten strengere Regeln. Auf einer normalen HTML-Seite verwenden Sie für das Layout von Elementen fast ausschließlich CSS. Aus Leistungsgründen müssen jedoch bei AMP alle Elemente von Anfang an eine eindeutige Größe besitzen.

Mehr über das Rendering und Layout von AMP-Seiten und darüber, wie Sie das Layout bearbeiten können, erfahren Sie [im Artikel zu den unterstützten Layouts](/docs/guides/responsive/control_layout.html).

<a class="button go-button" href="/de/docs/get_started/create/preview_and_validate.html">Weiter mit Schritt 4</a>

---

## File: content/docs/get_started/create/presentation_layout@es.md

---
$title: Modificar la presentación y el diseño
---

## Modificar la presentación

Las AMP son páginas web; el diseño de estas y de sus elementos se realiza a través de propiedades CSS comunes. Da estilo a los elementos con selectores de clase o elemento en una hoja de estilo en línea en el `<head>` llamada `<style amp-custom>`:

[sourcecode:html]
<style amp-custom>
  /* Cualquier estilo personalizado va aquí */
  body {
    background-color: white;
  }
  amp-img {
    background-color: gray;
    border: 1px solid black;
  }
</style>
[/sourcecode]

Las páginas AMP pueden tener solo una hoja de estilo integrada y hay ciertos selectores que no puedes usar. [Aprende todo acerca del estilo](/docs/guides/responsive/style_pages.html).

## Controla el diseño

AMP sigue reglas estrictas al distribuir elementos en la página. En una página HTML normal, CSS se usa casi exclusivamente para distribuir elementos. Sin embargo, por motivos de rendimiento, AMP requiere que todos los elementos tengan un tamaño explícito configurado desde el principio.

Aprende todo acerca de cómo AMP representa y diseña una página y cómo puedes modificar el diseño en [Cómo controlar el diseño](/docs/guides/responsive/control_layout.html).

<a class="go-button button" href="/es/docs/get_started/create/preview_and_validate.html">Continuar con el paso 4</a>