text:
#region Copyright notice and license
// Protocol Buffers - Google's data interchange format
// Copyright 2015 Google Inc.  All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#endregion

using System;
using Google.Protobuf.TestProtos;
using Proto2 = Google.Protobuf.TestProtos.Proto2;

using static Google.Protobuf.TestProtos.Proto2.UnittestExtensions;

namespace Google.Protobuf
{
    /// <summary>
    /// Helper methods to create sample instances of types generated from unit test messages.
    /// </summary>
    public class SampleMessages
    {
        /// <summary>
        /// Creates a new sample TestAllTypes message with all fields populated.
        /// The "oneof" field is populated with the string property (OneofString).
        /// </summary>
        public static TestAllTypes CreateFullTestAllTypes()
        {
            return new TestAllTypes
            {
                SingleBool = true,
                SingleBytes = ByteString.CopyFrom(1, 2, 3, 4),
                SingleDouble = 23.5,
                SingleFixed32 = 23,
                SingleFixed64 = 1234567890123,
                SingleFloat = 12.25f,
                SingleForeignEnum = ForeignEnum.ForeignBar,
                SingleForeignMessage = new ForeignMessage { C = 10 },
                SingleImportEnum = ImportEnum.ImportBaz,
                SingleImportMessage = new ImportMessage { D = 20 },
                SingleInt32 = 100,
                SingleInt64 = 3210987654321,
                SingleNestedEnum = TestProtos.TestAllTypes.Types.NestedEnum.Foo,
                SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 35 },
                SinglePublicImportMessage = new PublicImportMessage { E = 54 },
                SingleSfixed32 = -123,
                SingleSfixed64 = -12345678901234,
                SingleSint32 = -456,
                SingleSint64 = -12345678901235,
                SingleString = "test",
                SingleUint32 = UInt32.MaxValue,
                SingleUint64 = UInt64.MaxValue,
                RepeatedBool = { true, false },
                RepeatedBytes = { ByteString.CopyFrom(1, 2, 3, 4), ByteString.CopyFrom(5, 6), ByteString.CopyFrom(new byte[1000]) },
                RepeatedDouble = { -12.25, 23.5 },
                RepeatedFixed32 = { UInt32.MaxValue, 23 },
                RepeatedFixed64 = { UInt64.MaxValue, 1234567890123 },
                RepeatedFloat = { 100f, 12.25f },
                RepeatedForeignEnum = { ForeignEnum.ForeignFoo, ForeignEnum.ForeignBar },
                RepeatedForeignMessage = { new ForeignMessage(), new ForeignMessage { C = 10 } },
                RepeatedImportEnum = { ImportEnum.ImportBaz, ImportEnum.Unspecified },
                RepeatedImportMessage = { new ImportMessage { D = 20 }, new ImportMessage { D = 25 } },
                RepeatedInt32 = { 100, 200 },
                RepeatedInt64 = { 3210987654321, Int64.MaxValue },
                RepeatedNestedEnum = { TestProtos.TestAllTypes.Types.NestedEnum.Foo, TestProtos.TestAllTypes.Types.NestedEnum.Neg },
                RepeatedNestedMessage = { new TestAllTypes.Types.NestedMessage { Bb = 35 }, new TestAllTypes.Types.NestedMessage { Bb = 10 } },
                RepeatedPublicImportMessage = { new PublicImportMessage { E = 54 }, new PublicImportMessage { E = -1 } },
                RepeatedSfixed32 = { -123, 123 },
                RepeatedSfixed64 = { -12345678901234, 12345678901234 },
                RepeatedSint32 = { -456, 100 },
                RepeatedSint64 = { -12345678901235, 123 },
                RepeatedString = { "foo", "bar" },
                RepeatedUint32 = { UInt32.MaxValue, UInt32.MinValue },
                RepeatedUint64 = { UInt64.MaxValue, UInt32.MinValue },
                OneofString = "Oneof string"
            };
        }

        public static Proto2.TestAllTypes CreateFullTestAllTypesProto2()
        {
            return new Proto2.TestAllTypes
            {
                OptionalBool = true,
                OptionalBytes = ByteString.CopyFrom(1, 2, 3, 4),
                OptionalDouble = 23.5,
                OptionalFixed32 = 23,
                OptionalFixed64 = 1234567890123,
                OptionalFloat = 12.25f,
                OptionalForeignEnum = Proto2.ForeignEnum.ForeignBar,
                OptionalForeignMessage = new Proto2.ForeignMessage { C = 10 },
                OptionalImportEnum = Proto2.ImportEnum.ImportBaz,
                OptionalImportMessage = new Proto2.ImportMessage { D = 20 },
                OptionalInt32 = 100,
                OptionalInt64 = 3210987654321,
                OptionalNestedEnum = Proto2.TestAllTypes.Types.NestedEnum.Foo,
                OptionalNestedMessage = new Proto2.TestAllTypes.Types.NestedMessage { Bb = 35 },
                OptionalPublicImportMessage = new Proto2.PublicImportMessage { E = 54 },
                OptionalSfixed32 = -123,
                OptionalSfixed64 = -12345678901234,
                OptionalSint32 = -456,
                OptionalSint64 = -12345678901235,
                OptionalString = "test",
                OptionalUint32 = UInt32.MaxValue,
                OptionalUint64 = UInt64.MaxValue,
                OptionalGroup = new Proto2.TestAllTypes.Types.OptionalGroup { A = 10 },
                RepeatedBool = { true, false },
                RepeatedBytes = { ByteString.CopyFrom(1, 2, 3, 4), ByteString.CopyFrom(5, 6), ByteString.CopyFrom(new byte[1000]) },
                RepeatedDouble = { -12.25, 23.5 },
                RepeatedFixed32 = { UInt32.MaxValue, 23 },
                RepeatedFixed64 = { UInt64.MaxValue, 1234567890123 },
                RepeatedFloat = { 100f, 12.25f },
                RepeatedForeignEnum = { Proto2.ForeignEnum.ForeignFoo, Proto2.ForeignEnum.ForeignBar },
                RepeatedForeignMessage = { new Proto2.ForeignMessage(), new Proto2.ForeignMessage { C = 10 } },
                RepeatedImportEnum = { Proto2.ImportEnum.ImportBaz, Proto2.ImportEnum.ImportFoo },
                RepeatedImportMessage = { new Proto2.ImportMessage { D = 20 }, new Proto2.ImportMessage { D = 25 } },
                RepeatedInt32 = { 100, 200 },
                RepeatedInt64 = { 3210987654321, Int64.MaxValue },
                RepeatedNestedEnum = { Proto2.TestAllTypes.Types.NestedEnum.Foo, Proto2.TestAllTypes.Types.NestedEnum.Neg },
                RepeatedNestedMessage = { new Proto2.TestAllTypes.Types.NestedMessage { Bb = 35 }, new Proto2.TestAllTypes.Types.NestedMessage { Bb = 10 } },
                RepeatedSfixed32 = { -123, 123 },
                RepeatedSfixed64 = { -12345678901234, 12345678901234 },
                RepeatedSint32 = { -456, 100 },
                RepeatedSint64 = { -12345678901235, 123 },
                RepeatedString = { "foo", "bar" },
                RepeatedUint32 = { UInt32.MaxValue, UInt32.MinValue },
                RepeatedUint64 = { UInt64.MaxValue, UInt32.MinValue },
                RepeatedGroup = { new Proto2.TestAllTypes.Types.RepeatedGroup { A = 10 }, new Proto2.TestAllTypes.Types.RepeatedGroup { A = 20 } },
                OneofString = "Oneof string"
            };
        }

        public static Proto2.TestAllExtensions CreateFullTestAllExtensions()
        {
            var message = new Proto2.TestAllExtensions();
            message.SetExtension(OptionalBoolExtension, true);
            message.SetExtension(OptionalBytesExtension, ByteString.CopyFrom(1, 2, 3, 4));
            message.SetExtension(OptionalDoubleExtension, 23.5);
            message.SetExtension(OptionalFixed32Extension, 23u);
            message.SetExtension(OptionalFixed64Extension, 1234567890123u);
            message.SetExtension(OptionalFloatExtension, 12.25f);
            message.SetExtension(OptionalForeignEnumExtension, Proto2.ForeignEnum.ForeignBar);
            message.SetExtension(OptionalForeignMessageExtension, new Proto2.ForeignMessage { C = 10 });
            message.SetExtension(OptionalImportEnumExtension, Proto2.ImportEnum.ImportBaz);
            message.SetExtension(OptionalImportMessageExtension, new Proto2.ImportMessage { D = 20 });
            message.SetExtension(OptionalInt32Extension, 100);
            message.SetExtension(OptionalInt64Extension, 3210987654321);
            message.SetExtension(OptionalNestedEnumExtension, Proto2.TestAllTypes.Types.NestedEnum.Foo);
            message.SetExtension(OptionalNestedMessageExtension, new Proto2.TestAllTypes.Types.NestedMessage { Bb = 35 });
            message.SetExtension(OptionalPublicImportMessageExtension, new Proto2.PublicImportMessage { E = 54 });
            message.SetExtension(OptionalSfixed32Extension, -123);
            message.SetExtension(OptionalSfixed64Extension, -12345678901234);
            message.SetExtension(OptionalSint32Extension, -456);
            message.SetExtension(OptionalSint64Extension, -12345678901235);
            message.SetExtension(OptionalStringExtension, "test");
            message.SetExtension(OptionalUint32Extension, UInt32.MaxValue);
            message.SetExtension(OptionalUint64Extension, UInt64.MaxValue);
            message.SetExtension(OptionalGroupExtension, new Proto2.OptionalGroup_extension { A = 10 });
            message.GetOrInitializeExtension(RepeatedBoolExtension).AddRange(new[] { true, false });
            message.GetOrInitializeExtension(RepeatedBytesExtension).AddRange(new[] { ByteString.CopyFrom(1, 2, 3, 4), ByteString.CopyFrom(5, 6), ByteString.CopyFrom(new byte[1000]) });
            message.GetOrInitializeExtension(RepeatedDoubleExtension).AddRange(new[] { -12.25, 23.5 });
            message.GetOrInitializeExtension(RepeatedFixed32Extension).AddRange(new[] { UInt32.MaxValue, 23u });
            message.GetOrInitializeExtension(RepeatedFixed64Extension).AddRange(new[] { UInt64.MaxValue, 1234567890123ul });
            message.GetOrInitializeExtension(RepeatedFloatExtension).AddRange(new[] { 100f, 12.25f });
            message.GetOrInitializeExtension(RepeatedForeignEnumExtension).AddRange(new[] { Proto2.ForeignEnum.ForeignFoo, Proto2.ForeignEnum.ForeignBar });
            message.GetOrInitializeExtension(RepeatedForeignMessageExtension).AddRange(new[] { new Proto2.ForeignMessage(), new Proto2.ForeignMessage { C = 10 } });
            message.GetOrInitializeExtension(RepeatedImportEnumExtension).AddRange(new[] { Proto2.ImportEnum.ImportBaz, Proto2.ImportEnum.ImportFoo });
            message.GetOrInitializeExtension(RepeatedImportMessageExtension).AddRange(new[] { new Proto2.ImportMessage { D = 20 }, new Proto2.ImportMessage { D = 25 } });
            message.GetOrInitializeExtension(RepeatedInt32Extension).AddRange(new[] { 100, 200 });
            message.GetOrInitializeExtension(RepeatedInt64Extension).AddRange(new[] { 3210987654321, Int64.MaxValue });
            message.GetOrInitializeExtension(RepeatedNestedEnumExtension).AddRange(new[] { Proto2.TestAllTypes.Types.NestedEnum.Foo, Proto2.TestAllTypes.Types.NestedEnum.Neg });
            message.GetOrInitializeExtension(RepeatedNestedMessageExtension).AddRange(new[] { new Proto2.TestAllTypes.Types.NestedMessage { Bb = 35 }, new Proto2.TestAllTypes.Types.NestedMessage { Bb = 10 } });
            message.GetOrInitializeExtension(RepeatedSfixed32Extension).AddRange(new[] { -123, 123 });
            message.GetOrInitializeExtension(RepeatedSfixed64Extension).AddRange(new[] { -12345678901234, 12345678901234 });
            message.GetOrInitializeExtension(RepeatedSint32Extension).AddRange(new[] { -456, 100 });
            message.GetOrInitializeExtension(RepeatedSint64Extension).AddRange(new[] { -12345678901235, 123 });
            message.GetOrInitializeExtension(RepeatedStringExtension).AddRange(new[] { "foo", "bar" });
            message.GetOrInitializeExtension(RepeatedUint32Extension).AddRange(new[] { UInt32.MaxValue, UInt32.MinValue });
            message.GetOrInitializeExtension(RepeatedUint64Extension).AddRange(new[] { UInt64.MaxValue, UInt32.MinValue });
            message.GetOrInitializeExtension(RepeatedGroupExtension).AddRange(new[] { new Proto2.RepeatedGroup_extension { A = 10 }, new Proto2.RepeatedGroup_extension { A = 20 } });
            message.SetExtension(OneofStringExtension, "Oneof string");
            return message;
        }
    }
}


text:
int main () {
  using namespace std;

  string stringToReverse;

  cout << "Enter a string to reverse! The string should only include special characters and alphabet characters." << endl;
  cin >> stringToReverse;

  // two pointers to the string that start from opposite ends
  // skip special characters, swap alpha characters
  int i = 0;
  int z = stringToReverse.length() - 1;

  while (i < z) {
    char entryChar = stringToReverse[i];
    char exitChar = stringToReverse[z];

    if (!isalpha(entryChar)) {
      i++;
    } else if (!isalpha(exitChar)) {
      z--;
    } else {
      // swap
      stringToReverse[i] = exitChar;
      stringToReverse[z] = entryChar;
      i++;
      z--;
    }
  }

  cout << stringToReverse << endl;

  return 0;
}

redpajama_set_name: RedPajamaGithub


text:
require 'spec_helper'

describe DocumentationController do

  describe 'view documentation index' do
    before do
      get :index
    end
    it { should respond_with(:success) }
    it { should render_template(:index) }
    it { should_not set_the_flash }
  end
end


text:
package com.kolich.spray.auth

import scala.concurrent.{ Promise, ExecutionContext, Future }

import spray.routing._
import spray.routing.authentication._

import spray.util._
import spray.http._
import spray.http.HttpHeaders._

package object cookie {
  type CookieAuthenticator[T] = Option[SessionCookie] => Future[Option[T]]
}

case class SessionCookie(token: String = "") {
  lazy val value = token
  override def toString = value
}

object SessionCookie {

  // The name of the "session" cookie sent down to the client,
  // usually a browser.
  private val sessionCookieName = "SESSION"

  // Incoming cookie looks like SESSION="foobar" (with quotes)
  // We only want the "foobar" part, no quotes.
  private val sessionCookieRegex = """SESSION="([^"]+)"""".r

  def apply(cookie: HttpCookie): SessionCookie =
    sessionCookieRegex.findFirstMatchIn(cookie.value) match {
      // Cookie was found, return the value contained in the first
	  // capturing group.
      case Some(m) => apply(token = m.group(1))
      // Input string value did not match regex, no cookie or malformed
      // cookie header? Returns a new cookie with an empty "" token (will
      // never match any session).
      case _ => apply()
    }

  def getSessionCookieHeader(content: String = "",
    expires: Option[DateTime] = None,
    maxAge: Option[Long] = None): `Set-Cookie` =
      `Set-Cookie`(HttpCookie(name = sessionCookieName,
      	content = content,
      	expires = expires,
      	maxAge = maxAge,
      	// Set "secure = true" if you want the "Secure" flag set on
      	// outgoing cookies, meaning the cookie will only be accepted
      	// over HTTPS (secure) connections.
      	secure = false,
      	httpOnly = true))

  def getUnsetSessionCookieHeader = getSessionCookieHeader(maxAge = Some(0L))

}

class UserAuthenticator[T](val authenticator: cookie.CookieAuthenticator[T])
	(implicit val ec: ExecutionContext) extends WebAppAuthenticator[T] {

  override def authenticate(cookies: Option[Seq[HttpCookie]], ctx: RequestContext) = {
    authenticator {
      cookies match {
        // NOTE: Only returns the _first_ matched session cookie from the
        // request.  If the request contains more than one session cookie
        // (hack attack?), headOption ensures that only the first one is ever
        // processed and we totally ignore the others.
        case Some(cookie) => cookie.map(SessionCookie(_)).headOption
        case _ => None
      }
    }
  }

}


text:
seibun
======

CanJS components


text:
  <title>Testing default 'border-color' on table (with 'color' set), in quirks mode</title>
  <meta charset="utf-8">
  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
  <link rel="help" href="https://html.spec.whatwg.org/multipage/rendering.html#tables-2">
  <link rel="match" href="table-border-3-ref.html">


text:
define({
  "common": {
    "apply": "Käytä",
    "ok": "OK",
    "cancel": "Peruuta",
    "yes": "Kyllä",
    "no": "Ei",
    "next": "Seuraava",
    "previous": "Edellinen",
    "back": "Takaisin",
    "selected": "valitut",
    "selectAll": "Valitse kaikki",
    "name": "Nimi",
    "usage": "Käyttö",
    "settings": "Asetukset",
    "home": "Koti",
    "link": "Linkki",
    "messages": "Viestit",
    "outputs": "Tulosaineistot",
    "title": "Otsikko",
    "thumbnail": "Pikkukuva",
    "url": "URL-osoite",
    "actions": "Toimet",
    "layer": "Karttataso",
    "action": "Toimi",
    "input": "Lähtöaineisto",
    "output": "Tulosaineisto",
    "type": "Tyyppi",
    "required": "Pakollinen",
    "disabled": "Poistettu käytöstä",
    "options": "Asetukset",
    "label": "Tunnusteksti",
    "tooltip": "Työkalun ohje",
    "visible": "Näkyvä",
    "symbol": "Symboli",
    "popup": "Ponnahdusikkuna",
    "upload": "Lähetä",
    "execute": "Suorita",
    "run": "Suorita",
    "help": "Ohje",
    "executing": "Suorittaa",
    "clear": "Tyhjennä",
    "error": "Virhe",
    "zoomTo": "Tarkenna kohteeseen",
    "attribute": "Ominaisuustieto",
    "exports": "Vie",
    "check": "Valitse",
    "save": "Tallenna",
    "close": "Sulje",
    "deleteText": "Poista",
    "map": "Kartta",
    "mapArea": "Kartta-alue",
    "scene": "Maisema",
    "reset": "Palauta",
    "icon": "Kuvake",
    "folder": "Kansio",
    "share": "Jaa",
    "view": "Näytä",
    "newText": "Uusi",
    "edit": "Muokkaa",
    "wkid": "WKID",
    "table": "Taulukko",
    "zoomIn": "Lähennä",
    "zoomOut": "Loitonna",
    "continue1": "Jatka",
    "longitude": "Pituusaste",
    "latitude": "Leveysaste",
    "custom": "Mukautettu",
    "image": "Kuva",
    "font": "Fontti",
    "text": "Teksti",
    "all": "Kaikki",
    "number": "Numero",
    "percentage": "Prosenttiosuus",
    "unit": "Yksikkö",
    "thousand": "Tuhannet",
    "billion": "Miljardit",
    "million": "Miljoonat",
    "none": "Ei mitään",
    "field": "Kenttä",
    "operation": "Toiminto",
    "disableUpdateGeometry": "Poista käytöstä geometrian päivitys",
    "updateGeometry": "Päivitä geometria",
    "preview": "Esikatselu",
    "date": "Päivämäärä",
    "time": "Kellonaika",
    "show": "Näytä",
    "hide": "Piilota",
    "format": "Muoto",
    "defaults": "Oletusarvo",
    "add": "Lisää",
    "done": "Valmis",
    "remove": "Poista",
    "leave": "Poistu",
    "stay": "Jää",
    "search": "Hae",
    "searchMore": "Hae lisää",
    "tooltipText": "Työkaluvihjeen teksti",
    "findAddressOrPlace": "Etsi osoite tai paikka",
    "expand": "Laajenna ${value}",
    "collapse": "Kutista ${value}"
  },
  "errorCode": "Koodi",
  "errorMessage": "Viesti",
  "errorDetail": "Yksityiskohta",
  "widgetPlaceholderTooltip": "Kun haluat asettaa tähän pienoisohjelman, mene Pienoisohjelmat-välilehdelle ja napsauta vastaavaa paikkamerkkiä",
  "skips": {
    "skips": "Ohita linkit",
    "skipTo": "Siirry kohteeseen ${value}",
    "headerController": "Siirry ylätunnisteen hallintaan",
    "map": "Siirry karttaan",
    "sidePanel": "Siirry sivupaneeliin",
    "attributeTable": "Siirry ominaisuustietotauluun",
    "tabAway": "Jatka painamalla sarkainta ja poistu sovelluksesta tai siirry takaisin kohteeseen ${value} seuraavan ajan kuluessa painamalla vaihtonäppäintä ja sarkainta:"
  },
  "panelHeader": {
    "foldWindow": "Kutista ikkuna",
    "unfoldWindow": "Laajenna ikkuna",
    "maxWindow": "Suurenna ikkuna enimmäiskokoon",
    "restoreWindow": "Palauta ikkuna oletuskokoonsa",
    "closeWindow": "Sulje ikkuna",
    "expanded": "${value} pienoisohjelma laajennettu",
    "collapsed": "${value} pienoisohjelma kutistettu",
    "pressToFocus": "kohdista kohteen ${value} sisään painamalla ENTER-näppäintä"
  },
  "toggleButton": {
    "toggleOn": "Ota se käyttöön napsauttamalla vaihtopainiketta",
    "toggleOff": "Poista se käytöstä napsauttamalla vaihtopainiketta",
    "toggleOnTimePicker": "Ota ajan valitsin käyttöön",
    "toggleOffTimePicker": "Poista ajan valitsin käytöstä"
  },
  "fieldStatistics": {
    "selectField": "Valitse kenttä",
    "statistics": "Tilastotiedot",
    "field": "Kenttä",
    "count": "Arvojen määrä",
    "sum": "Arvojen summa",
    "min": "Minimi",
    "max": "Maksimi",
    "ave": "Keskiarvo",
    "stddev": "Keskihajonta"
  },
  "symbolChooser": {
    "preview": "Esikatselu",
    "markerCategory": "Merkintäluokka",
    "basic": "Perus",
    "arrows": "Nuolet",
    "business": "Yritystoiminta",
    "cartographic": "Kartografinen",
    "damage": "Vahinko",
    "disasters": "Katastrofit",
    "emergencyManagement": "Hätätilanteiden hallinta",
    "generalInfrastructure": "Yleinen infrastruktuuri",
    "localGovernment": "Paikallishallinto",
    "nationalParkService": "Kansallispuisto",
    "numbers": "Numerot",
    "outdoorRecreation": "Virkistysalue",
    "peoplePlaces": "Ihmiset ja paikat",
    "pointsOfInterest": "Kiinnostuksenkohteet",
    "safetyHealth": "Turv., terveys",
    "stateGovernment": "Valtionhallinto",
    "shapes": "Muodot",
    "transportation": "Kuljetus",
    "symbolSize": "Symbolin koko",
    "color": "Väri",
    "alpha": "Alfa",
    "outlineColor": "Reunaviivan väri",
    "outlineWidth": "Ääriviivan leveys",
    "style": "Tyyli",
    "width": "Leveys",
    "text": "Teksti",
    "fontColor": "Fontin väri",
    "fontSize": "Fontin koko",
    "transparency": "Läpinäkyvyys",
    "solid": "Yhtenäinen",
    "dash": "Viiva",
    "dot": "Piste",
    "dashDot": "Viiva-piste",
    "dashDotDot": "Viiva-piste-piste",
    "customImage": "Mukautettu kuva",
    "chooseFile": "Valitse tiedosto",
    "noFileChoosen": "Tiedostoa ei ole valittu."
  },
  "transparency": {
    "opaque": "Läpinäkymätön",
    "transparent": "Läpinäkyvä",
    "transparency": "Läpinäkyvyys"
  },
  "rendererChooser": {
    "domain": "Arvoalue",
    "use": "Käytä",
    "singleSymbol": "Yksi symboli",
    "uniqueSymbol": "Yksilölliset symbolit",
    "duplicatedValue": "Arvo ${value} on jo olemassa.",
    "color": "Väri",
    "size": "Koko",
    "toShow": "Näyttäminen",
    "colors": "Värit",
    "classes": "Luokkaa",
    "symbolSize": "Symbolin koko",
    "addValue": "Lisää arvo",
    "setDefaultSymbol": "Aseta oletussymboli",
    "defaultSymbol": "Oletussymboli",
    "selectedSymbol": "Valittu symboli",
    "value": "Arvo",
    "label": "Tunnusteksti",
    "range": "Vaihteluväli",
    "othersSymbol": "Muut",
    "othersSymbolTip": "Näytä tai piilota paikantamattomien arvojen symboli."
  },
  "drawBox": {
    "point": "Piste",
    "arrow": "Nuoli",
    "line": "Viiva",
    "polyline": "Taiteviiva",
    "freehandPolyline": "Viivan piirto vapaalla kädellä",
    "triangle": "Kolmio",
    "extent": "Laajuus",
    "circle": "Ympyrä",
    "ellipse": "Ellipsi",
    "polygon": "Alue",
    "freehandPolygon": "Alueen piirto vapaalla kädellä",
    "text": "Teksti",
    "clear": "Tyhjennä"
  },
  "popupConfig": {
    "title": "Otsikko",
    "add": "Lisää",
    "fields": "Kentät",
    "noField": "Ei kenttää",
    "visibility": "Näkyvä",
    "name": "Nimi",
    "alias": "Alias",
    "actions": "Toimet"
  },
  "includeButton": {
    "include": "Sisällytä"
  },
  "loadingShelter": {
    "loading": "Ladataan"
  },
  "basicServiceBrowser": {
    "noServicesFound": "Palvelua ei löytynyt.",
    "unableConnectTo": "Yhteyttä kohteeseen ei voi muodostaa.",
    "invalidUrlTip": "Syötetty URL on virheellinen, tai se ei ole käytettävissä."
  },
  "serviceBrowser": {
    "noGpFound": "Geoprosessointipalvelua ei löytynyt.",
    "unableConnectTo": "Yhteyttä kohteeseen ei voi muodostaa"
  },
  "layerServiceBrowser": {
    "noServicesFound": "Karttapalvelua tai kohdepalvelua ei löytynyt.",
    "unableConnectTo": "Yhteyttä kohteeseen ei voi muodostaa"
  },
  "basicServiceChooser": {
    "validate": "Vahvista",
    "example": "Esimerkki",
    "set": "Aseta"
  },
  "urlInput": {
    "invalidUrl": "Virheellinen URL-osoite."
  },
  "urlComboBox": {
    "invalidUrl": "Virheellinen URL-osoite."
  },
  "filterBuilder": {
    "inputSearchKey": "Etsi tai luo arvo",
    "createValue": "Luo arvo: ${value}",
    "addAnotherExpression": "Lisää lauseke",
    "addSet": "Lisää sarja",
    "matchMsg": "Nouda sellaiset karttatason kohteet, jotka vastaavat ${any_or_all} seuraavia ehtolausekkeita",
    "matchMsgSet": "${any_or_all} seuraavista ehtolausekkeista ovat tosia",
    "oneOrZeroMsg": "Näytä ne karttatason kohteet, jotka vastaavat seuraavaa ehtolauseketta",
    "matchMsgAny": "Näytä sellaiset karttatason kohteet, jotka vastaavat mitä tahansa seuraavista ehtolausekkeista",
    "matchMsgAll": "Näytä sellaiset karttatason kohteet, jotka vastaavat kaikkia seuraavia ehtolausekkeita",
    "matchMsgSetAny": "Mitkä tahansa seuraavista tämän joukon ehtolausekkeista ovat tosia",
    "matchMsgSetAll": "Kaikki tämän joukon ehtolausekkeet ovat tosia",
    "all": "Kaikki",
    "any": "Mikä tahansa",
    "value": "Arvo",
    "values": "Arvot",
    "field": "Kenttä",
    "unique": "Yksilöllinen",
    "uniquePredefined": "Yksilöllinen (ennalta määritetty)",
    "multiple": "Useita",
    "multiplePredefined": "Useita (ennalta määritetty)",
    "predefinedUniqueTips": "Ennalta määritetyt yksilölliset arvot",
    "predefinedMultipleTips": "Useita ennalta määritettyjä arvoja",
    "displayAs": "Näytä muodossa",
    "aDrowdownList": "avattava luettelo",
    "aExpandedList": "laajennettu luettelo",
    "addValuePlaceHolder": "Määritä arvo kaksoisnapsauttamalla",
    "addLabelPlaceHolder": "Määritä tunnusteksti kaksoisnapsauttamalla",
    "emptyValueTips": "Näytä tai piilota tyhjä arvo tässä luettelossa.",
    "showAll": "Näytä kaikki",
    "showSelected": "Näytä vain valitut",
    "unCheckAll": "Poista kaikkien valinta",
    "noData": "Aineistoa ei ole.",
    "none": "Ei mitään",
    "and": "ja",
    "valueTooltip": "Syötä arvo",
    "fieldTooltip": "Poimi olemassa olevasta kentästä",
    "uniqueValueTooltip": "Poimi valitun kentän yksilöllisistä arvoista",
    "stringOperatorIs": "on",
    "stringOperatorIsNot": "ei ole",
    "stringOperatorStartsWith": "alkaa merkillä",
    "stringOperatorEndsWith": "päättyy merkkiin",
    "stringOperatorContains": "sisältää",
    "stringOperatorDoesNotContain": "ei sisällä",
    "stringOperatorIsIn": "sisältyy luetteloon",
    "stringOperatorIsNotIn": "ei sisälly luetteloon",
    "stringOperatorIsAnyOf": "on jokin seuraavista",
    "stringOperatorIsNoneOf": "ei ole mikään seuraavista",
    "stringOperatorIsBlank": "on tyhjä",
    "stringOperatorIsNotBlank": "ei ole tyhjä",
    "dateOperatorIsOn": "on päällä",
    "dateOperatorIsIn": "sisältyy luetteloon",
    "dateOperatorIsNotIn": "ei sisälly luetteloon",
    "dateOperatorIsNotOn": "ei ole päällä",
    "dateOperatorIsBefore": "on ennen",
    "dateOperatorIsAfter": "on jälkeen",
    "dateOperatorIsOnOrBefore": "on sama tai ennen",
    "dateOperatorIsOnOrAfter": "on sama tai jälkeen",
    "dateOperatorMinutes": "minuuttia",
    "dateOperatorHours": "tuntia",
    "dateOperatorDays": "päivää",
    "dateOperatorWeeks": "viikkoa",
    "dateOperatorMonths": "kuukautta",
    "dateOperatorYears": "vuotta",
    "dateOperatorInTheLast": "viimeisessä",
    "dateOperatorNotInTheLast": "ei viimeisessä",
    "dateOperatorIsBetween": "on välillä",
    "dateOperatorIsNotBetween": "ei ole välillä",
    "dateOperatorIsBlank": "on tyhjä",
    "dateOperatorIsNotBlank": "ei ole tyhjä",
    "numberOperatorIs": "on",
    "numberOperatorIsNot": "ei ole",
    "numberOperatorIsAtLeast": "on vähintään",
    "numberOperatorIsLessThan": "on vähemmän kuin",
    "numberOperatorIsAtMost": "on enintään",
    "numberOperatorIsGreaterThan": "on suurempi kuin",
    "numberOperatorIsAnyOf": "on jokin seuraavista",
    "numberOperatorIsNoneOf": "ei ole mikään seuraavista",
    "numberOperatorIsBetween": "on välillä",
    "numberOperatorIsNotBetween": "ei ole välillä",
    "numberOperatorIsBlank": "on tyhjä",
    "numberOperatorIsNotBlank": "ei ole tyhjä",
    "string": "Merkkijono",
    "number": "Numero",
    "date": "Päivämäärä",
    "askForValues": "Pyydä arvoja",
    "prompt": "Kehote",
    "hint": "Vihje",
    "error": {
      "invalidParams": "Virheelliset parametrit.",
      "invalidUrl": "Virheellinen URL-osoite.",
      "noFilterFields": "Karttatasossa ei ole suodattimien luontiin soveltuvia kenttiä.",
      "invalidSQL": "Virheellinen SQL-lauseke.",
      "cantParseSQL": "SQL-lauseketta ei voi jäsentää."
    },
    "caseSensitive": "Kirjainkoolla on merkitystä",
    "notSupportCaseSensitiveTip": "ArcGIS Onlinen isännöidyt palvelut eivät tue kirjainkoon tunnistavaa kyselyä.",
    "setFilterTip": "Määritä suodattimet oikein.",
    "noFilterValueTip": "Määritetyssä kentässä ei ole arvoja.",
    "listValues": "Luettelon arvot",
    "cascadeFilterTip": "Näytä vain aiempien lausekkeiden suodattamat arvot",
    "noneCascadeFilterTip": "Kaikki tämän kentän yksilölliset arvot",
    "previousCascadeFilterTip": "Aiempien lausekkeiden suodattamat arvot",
    "allCascadeFilterTip": "Kaikkien muiden lausekkeiden suodattamat arvot",
    "dateOptions": "Päivämääräasetukset",
    "startDateOptions": "Aloituspäivämääräasetukset",
    "endDateOptions": "Lopetuspäivämääräasetukset",
    "custom": "päivämäärä...",
    "today": "tänään",
    "yesterday": "eilen",
    "tomorrow": "huomenna",
    "atLeastOne": "Vähintään yksi päivämääräasetus on valittava.",
    "notUncheckedCurrent": "Valitun päivämääräasetuksen valintaa ei voi poistaa.",
    "theseDays": "näinä päivinä",
    "thisWeek": "tällä viikolla",
    "thisMonth": "tässä kuussa",
    "thisQuarter": "tässä neljänneksessä",
    "thisYear": "tänä vuonna",
    "inputType": "Lähtöaineiston tyyppi",
    "setInputType": "Määritä lähtöaineiston tyyppi"
  },
  "featureLayerSource": {
    "layer": "Karttataso",
    "browse": "Selaa",
    "selectFromMap": "Kartta",
    "selectFromPortal": "Portal for ArcGIS",
    "addServiceUrl": "Palvelun URL",
    "inputLayerUrl": "Lähtöaineiston karttatason URL-osoite",
    "selectLayer": "Valitse kohteen karttataso nykyisestä kartasta.",
    "chooseItem": "Valitse kohteen karttataso",
    "setServiceUrl": "Anna kohdepalvelun tai karttapalvelun URL-osoite.",
    "selectFromOnline": "ArcGIS Online",
    "chooseLayer": "Valitse kohdekarttataso."
  },
  "queryableLayerSource": {
    "layer": "Karttataso",
    "browse": "Selaa",
    "selectFromMap": "Kartta",
    "selectFromPortal": "Portal for ArcGIS",
    "addServiceUrl": "Palvelun URL",
    "inputLayerUrl": "Lähtöaineiston karttatason URL-osoite",
    "selectLayer": "Valitse karttataso nykyisestä kartasta.",
    "chooseItem": "Valitse kohde.",
    "setServiceUrl": "Anna palvelun URL-osoite.",
    "selectFromOnline": "ArcGIS Online",
    "chooseLayer": "Valitse karttataso."
  },
  "gpSource": {
    "selectFromPortal": "Portal for ArcGIS",
    "addServiceUrl": "Palvelun URL",
    "selectFromOnline": "ArcGIS Online",
    "setServiceUrl": "Anna geoprosessointipalvelun URL-osoite.",
    "chooseItem": "Valitse geoprosessointipalvelun kohde.",
    "chooseTask": "Valitse geoprosessointipalvelun tehtävä."
  },
  "itemSelector": {
    "map": "Kartta",
    "selectWebMap": "Valitse Web-kartta",
    "addMapFromOnlineOrPortal": "Etsi ja lisää sovelluksen Web-kartta ArcGIS Onlinen julkisista lähteistä tai ArcGIS Onlinen tai portaalin yksityisestä sisällöstäsi.",
    "searchMapName": "Hae kartan nimellä...",
    "searchNone": "Etsimääsi ei löytynyt. Yritä uudelleen.",
    "groups": "Ryhmät",
    "noneGroups": "Ei ryhmiä",
    "signInTip": "Istuntosi on vanhentunut. Päivitä selain ja kirjaudu uudelleen portaaliin.",
    "signIn": "Kirjaudu sisään",
    "publicMap": "Julkinen",
    "myOrganization": "Organisaationi",
    "myGroup": "Omat ryhmät",
    "myContent": "Oma sisältö",
    "count": "Lukumäärä",
    "fromPortal": "Portaalista",
    "fromOnline": "ArcGIS.comista",
    "noneThumbnail": "Pienkuvake ei ole käytettävissä",
    "owner": "omistaja",
    "signInTo": "Kirjaudu palveluun",
    "lastModified": "Viimeksi muokattu",
    "moreDetails": "Lisää tietoja",
    "mostRecent": "Uusin",
    "mostViewed": "Tarkastelluin",
    "highestRated": "Parhaan arvion saanut",
    "viewItemDetails": "Näytä kohteen yksityiskohdat"
  },
  "featureLayerChooserFromPortal": {
    "notSupportQuery": "Palvelu ei tue kyselyä."
  },
  "basicLayerChooserFromMap": {
    "noLayersTip": "Kartassa ei ole käytettävissä soveltuvaa karttatasoa."
  },
  "layerInfosMenu": {
    "titleBasemap": "Taustakartat",
    "titleLayers": "Toiminnalliset karttatasot",
    "labelLayer": "Karttatason nimi",
    "itemZoomTo": "Tarkenna kohteeseen",
    "itemTransparency": "Läpinäkyvyys",
    "itemTransparent": "Läpinäkyvä",
    "itemOpaque": "Läpinäkymätön",
    "itemMoveUp": "Siirrä ylös",
    "itemMoveDown": "Siirrä alas",
    "itemDesc": "Kuvaus",
    "itemDownload": "Lataa",
    "itemToAttributeTable": "Näytä ominaisuustaulukossa"
  },
  "imageChooser": {
    "unsupportReaderAPI": "Tehtävä: selain ei tue tiedoston lukuohjelman ohjelmointirajapintaa",
    "readError": "Tiedoston luku epäonnistui.",
    "unknowError": "toimintoja ei voi suorittaa loppuun",
    "invalidType": "Virheellinen tiedostotyyppi.",
    "cropImage": "Rajaa kuva",
    "exceed": "Tiedoston koko ei saa ylittää 1024 kt",
    "enableFlash": "Ota käyttöön Adobe Flash ennen kuvaan selaamista.",
    "cropWaining": "Valitse valokuva, joka on kooltaan vähintään ${width} x ${height} pikseliä.",
    "toolTip": "Parhaan tuloksen saamiseksi kuvan tulisi olla leveydeltään ${width} pikseliä ja korkeudeltaan ${height} pikseliä. Muut koot säädetään sopivaksi. Hyväksyttyjä kuvamuotoja ovat PNG, GIF ja JPEG."
  },
  "simpleTable": {
    "moveUp": "Siirrä ylös",
    "moveDown": "Siirrä alas",
    "deleteRow": "Poista",
    "edit": "Muokkaa"
  },
  "urlParams": {
    "invalidToken": "Virheellinen tunnus",
    "validateTokenError": "Virheellinen tunnus tai verkkovirhe"
  },
  "exportTo": {
    "exportTo": "Vie",
    "toCSV": "Vie CSV-tiedostoksi",
    "toFeatureCollection": "Vie kohdekokoelmaan",
    "toGeoJSON": "Vie GeoJSON-muotoon"
  },
  "appState": {
    "title": "Sovelluksen tila",
    "restoreMap": "Palauta karttalaajuus ja karttatasojen näkyvyys tilaan, jossa ne olivat alun perin."
  },
  "featureActions": {
    "featureActions": "Kohdetoiminnot",
    "ZoomTo": "Tarkenna kohteeseen",
    "PanTo": "Vieritä kohteeseen",
    "Flash": "Flash",
    "ShowPopup": "Näytä ponnahdusikkuna",
    "CreateLayer": "Luo karttataso",
    "ShowStatistics": "Tilastotiedot...",
    "ClearSelection": "Tyhjennä valinnat",
    "ExportToCSV": "Vie CSV-tiedostoksi",
    "ShowSelectedFeature": "Näytä valitut kohteet",
    "ExportToFeatureCollection": "Vie kohdekokoelmaan",
    "ExportToGeoJSON": "Vie GeoJSON-muotoon",
    "EditAttributes": "Muokkaa ominaisuuksia",
    "AddMarker": "Lisää merkintä",
    "RemoveMarker": "Poista merkintä",
    "SaveToMyContent": "Tallenna omaan sisältöön"
  },
  "spatialFilterByFeatures": {
    "relatedLayer": "Liittyvä karttataso",
    "selectedFeatures": "Käytä valittuja kohteita",
    "drawShapesTip": "Valitse kohteita piirtämällä muotoja",
    "pleaseDrawShapesTip": "Valitse kohteita piirtämällä muotoja",
    "allFeaturesTip": "Kaikki karttatason kohteet",
    "selectFeaturesOrDrawShapesTip": "Käytä valikoituja tämän karttatason kohteita tai piirrä kartalle muotoja kohteiden rajaamiseksi."
  },
  "searchDistance": {
    "applySearchDistance": "Käytä hakuetäisyyttä",
    "applySearchDistanceToFeatures": "Käytä hakuetäisyyttä valittuihin kohteisiin"
  },
  "units": {
    "miles": "Mailia",
    "milesAbbr": "mailia",
    "kilometers": "Kilometriä",
    "kilometersAbbr": "km",
    "feet": "Jalkaa",
    "feetAbbr": "ft",
    "meters": "Metriä",
    "metersAbbr": "m",
    "yards": "Jaardia",
    "yardsAbbr": "yd",
    "acres": "Eekkeriä",
    "acresAbbr": "eekkeriä",
    "nauticalMiles": "Meripeninkulmaa",
    "nauticalMilesAbbr": "nmi",
    "uSSurveyFeet": "jalkaa (US Survey)",
    "uSSurveyFeetAbbr": "jalkaa (US)",
    "centimeters": "Senttimetriä",
    "centimetersAbbr": "cm",
    "inches": "Tuumaa",
    "inchesAbbr": "tuuma",
    "decimalDegree": "Desimaaliasteet",
    "decimalDegreeAbbr": "pp",
    "degreeMinuteSeconds": "Astetta minuuttia sekuntia",
    "degreeMinuteSecondsAbbr": "a-m-s",
    "degrees": "Asteet",
    "degreeMS": "Astetta-minuuttia-sekuntia",
    "degreesAbbr": "pp",
    "degreeMSAbbr": "dms",
    "squareMiles": "Neliömailia",
    "squareMilesAbbr": "mi2",
    "squareKilometer": "Neliökilometriä",
    "squareKilometerAbbr": "km2",
    "squareFeet": "Neliöjalkaa",
    "squareFeetAbbr": "ft2",
    "squareMeters": "Neliömetriä",
    "squareMetersAbbr": "m2",
    "squareYards": "Neliöjaardia",
    "squareYardsAbbr": "yd2",
    "squareUSSurveyFeet": "neliöjalkaa (US Survey)",
    "squareUSSurveyFeetAbbr": "neliöjalkaa (US)"
  },
  "timeUnit": {
    "year": "Vuosi",
    "years": "Vuotta",
    "quarter": "Neljännes",
    "month": "Kuukausi",
    "months": "Kuukautta",
    "week": "Viikko",
    "weeks": "Viikkoa",
    "day": "Päivä",
    "days": "Päivää",
    "hour": "Tunti",
    "hours": "Tuntia",
    "minute": "Minuutti",
    "minutes": "Minuuttia",
    "second": "Sekunti",
    "seconds": "Sekuntia",
    "milliSecond": "Millisekuntia",
    "milliSeconds": "Millisekunnit"
  },
  "featureSetChooser": {
    "select": "Valitse",
    "dragBox": "Vedä",
    "dragMouse": "Vedä hiirellä",
    "selectByRectangle": "Valitse suorakulmiolla",
    "selectFeaturesTip": "Valitse kohteet vetämällä ruutu niiden ympärille kartalle",
    "newSelectionTip": "Luo uusi valinta",
    "addSelectionTip": "Lisää valinta",
    "removeSelectionTip": "Remove from selection",
    "selectFromCurrentSelectionTip": "Valitse nykyisestä valinnasta",
    "unselectAllSelectionTip": "Poista kaikkien tällä hetkellä valittujen kohteiden valinta",
    "selectByPoint": "Valitse pisteen perusteella",
    "selectByPolygon": "Valitse alueella",
    "selectByCircle": "Valitse ympyrällä",
    "selectByLine": "Valitse viivalla",
    "selectByFreehandPolygon": "Valitse lassolla",
    "chooseSelectingTools": "Valitse valintatyökalut",
    "darw": "Piirrä",
    "drawShap": "Piirrä muoto"
  },
  "widgetManager": {
    "createWidgetError": "Pienoisohjelman luontivirhe",
    "createWidgetSettingPageError": "Pienoisohjelman asetussivun luontivirhe",
    "loadWidgetResourceError": "Pienoisohjelman resurssin latausvirhe"
  },
  "shareOptions": {
    "shareMap": "Valitse, ketkä voivat tarkastella tätä sovellusta",
    "shareMapTips": "Sovelluksesi on jaettu näiden ihmisten kanssa",
    "everyone": "Jokainen",
    "theseGroups": "Nämä ryhmät"
  },
  "shareLink": {
    "email": "sähköposti",
    "shareEmail": "Sähköposti",
    "facebook": "facebook",
    "shareFacebook": "Facebook",
    "twitter": "twitter",
    "shareTwitter": "Twitter",
    "googlePlus": "google+",
    "shareGooglePlus": "Google+",
    "EmbedTips": "Upota tämä sovellus Web-sivustoon",
    "shareEmailSubject": "Web-sovelluksen jakaminen:",
    "shareEmailTxt1": "Tässä on web-sovellus, joka jaetaan kanssasi käyttämällä Web AppBuilder for ArcGIS -sovellusta.",
    "shareEmailTxt2": "Voit luoda ja jakaa oman web-sovelluksesi Esri Web AppBuilder for ArcGIS -sovelluksella.",
    "shareEmailTxt3": "Saat lisätietoja osoitteesta http://www.esri.com/software/web-appbuilder.",
    "smallSize": "Pieni",
    "mediumSize": "Keskisuuri",
    "largeSize": "Suuri",
    "customSize": "Virhe yhteyden muodostuksessa taustakarttapalveluun. Varmista, että SSL (HTTPS) -suojaus on käytössä palvelussa. Mahdolliset lisätiedot näkyvät alla.",
    "embed": "Upota tämä sovellus Web-sivustoon",
    "more": "Upotusasetukset",
    "changeShareSettings": "Muuta jakamisasetuksia",
    "shareLinkText": "Jaa linkki tähän sovellukseen",
    "linkOptions": "Linkkiasetukset",
    "linkOptionsUrlParameters": "Valitse linkkiin sisältyvät URL-parametrit",
    "currentMapExtent": "Nykyinen kartan laajuus",
    "chooseCenterWithLevel": "Määritä kartan keskikohta zoomaustasolla napsauttamalla karttaa",
    "chooseCenterWithScale": "Määritä kartan keskikohta kartan mittakaavalla napsauttamalla karttaa",
    "findLocation": "Etsi sijainti tai kohde ja tarkenna siihen",
    "findLocation_inputPlaceholder": "Paikkasi tai kohteesi",
    "queryFeature": "Tee kysely kohteesta ja tarkenna siihen",
    "addMarker": "Lisää merkitsin karttaan",
    "addMarker_titlePlaceholder": "Merkitsimen ponnahdusikkunan otsikko",
    "addMarker_symbolURL": "Merkitsinsymbolin URL-osoite",
    "addMarker_label": "Merkitsimen selite",
    "popupTitle": "Popup-otsikko",
    "zoomLevel": "Zoomaustaso",
    "overwirteMobileLayout": "Korvaa mobiiliasettelun oletusnäyttökoko",
    "language": "Aseta sovelluksen näyttökieli",
    "auth": "Todenna käyttäjä automaattisesti",
    "useOrg": "Käytä organisaation URL-osoitetta",
    "layerVisibility": "Muista karttatason näkyvyys",
    "linkPreview": "Linkin esikatselu",
    "useShortenLink": "Lyhyt linkki",
    "shareMapUrlExtent": "Jaa nykyisen kartan laajuus",
    "shareToWebTips": "Tätä sovellusta ei jaeta julkisesti. Ihmiset eivät ehkä voi katsella sitä.",
    "urlEncodedTips": "Karttatason tunnukset on koodattu hajautusalgoritmilla URL-osoitteen lyhentämiseksi, koska karttatason näkyvyystietoja on liian paljon. Lisätietoja on Jaa-pienoisohjelman ohjeessa.",
    "urlTooLongTips": "Nykyinen URL-osoite on ylipitkä, eikä palvelin osaa välttämättä tulkita sitä. Voit ohittaa näkyvyystiedot lyhentääksesi URL-osoitetta. Lisätietoja on Jaa-pienoisohjelman ohjeessa."
  },
  "webSceneLoader": {
    "webglSupportTip": "Selaimesi ei tue 3D-web-sovelluksia."
  },
  "map": {
    "basemapNotAvailable": "Taustakartta ei ole käytettävissä.",
    "displayDefaultBasemap": "Näytetään oletustaustakartta sen sijaan.",
    "layerLoadedError": "Karttatasoa ${layers} ei voi lisätä karttaan."
  },
  "popup": {
    "relatedTables": "Liittyvät taulut:",
    "relatedRecords": "Liittyvät tietueet:",
    "noRelatedRecotds": "Liittyviä tietueita ei löytynyt.",
    "chooseFieldTip": "Tuo luettelo näkyviin valitsemalla ominaisuustieto",
    "saveAsPopupTitle": "Vastaa ponnahdusikkunan otsikkoa",
    "leaveConfirm": "Haluatko poistua tallentamatta muokkauksia?"
  },
  "queryFeatures": {
    "tooManyFeaturesTip": "Valinnassa on liikaa kohteita. Niiden noutaminen ja näyttäminen kartalla voi kestää kauan.",
    "askForContinue": "Haluatko jatkaa?"
  },
  "colorPalette": {
    "transparent": "Läpinäkyvä",
    "custom": "Mukautettu"
  },
  "temperature": {
    "celsius": "Celsius",
    "fahrenheit": "Fahrenheit"
  },
  "report": {
    "printButtonLabel": "Tulosta",
    "reportDimensionsMsg": "Tämä raportti on suunniteltu koon ${paperSize} paperille tulostamista varten",
    "unableToPrintMapMsg": "On ilmennyt virhe tulostettaessa karttaa tai karttoja.",
    "notesHint": "Kirjoita kommentit tähän",
    "landscape": "Maisema",
    "portrait": "Pysty",
    "mapOnly": "MAP_ONLY",
    "a0": "A0",
    "a1": "A1",
    "a2": "A2",
    "a3": "A3",
    "a4": "A4",
    "a5": "A5",
    "letterANSIA": "Letter ANSI A",
    "tabloidANSIB": "Tabloid ANSI B",
    "letter": "Letter",
    "legal": "Legal",
    "tabloid": "Tabloidi",
    "ansi_a": "ANSI A",
    "ansi_b": "ANSI B",
    "ansi_c": "ANSI C",
    "ansi_d": "ANSI D",
    "ansi_e": "ANSI E"
  },
  "snapping": {
    "pressStr": "Paina ",
    "ctrlStr": " CTRL ",
    "snapStr": " tartunnan käyttöön ottamiseksi"
  },
  "snapshot": {
    "snapshot_complete": "Tilannevedoksen luonti onnistui.",
    "snapshot_failed": "Tilannevedoksen luonti epäonnistui.",
    "snapshot_append": "Tilannevedos",
    "utc": "UTC"
  },
  "statisticsChart": {
    "enlarge": "Laajenna",
    "setting": "Asetus",
    "count": "Lukumäärä",
    "horizontalAxis": "Vaaka-akseli",
    "verticalAxis": "Pystyakseli",
    "dataLabels": "Aineiston tunnustekstit",
    "color": "Väri",
    "fieldDisplayChartTip": "Kaavion näyttäminen ei onnistunut. Luokkia on liian monta.",
    "legend": "Selite",
    "columnChart": "Pylväskaavio",
    "pieChart": "Ympyräkaavio",
    "barChart": "Palkkikaavio",
    "lineChart": "Viivakaavio"
  },
  "frameworkDatasource": {
    "setDataSource": "Määritä aineistolähde",
    "customDataSource": "Ylimääräinen aineistolähde",
    "selectCustomDataTip": "Valitse aineistolähde tästä sovelluksesta.",
    "widgetOutputs": "Pienoisohjelman tulosteet",
    "noExtraDsAvailable": "Ylimääräisiä tietolähteitä ei ole saatavissa.",
    "addExtraDsTip": "Siirry luontitoiminnon Ominaisuustieto-välilehteen ja lisää tietoja napsauttamalla ylimääräistä aineistolähdettä.",
    "widgetOutpusListTip": "Tässä luetellaan myös pienoisohjelman (mahdolliset) tulosaineistot."
  },
  "gridLayout": {
    "addWidgetTip": "Lisää pienoisohjelmat tähän Pienoisohjelma-välilehden kautta",
    "modifyLayout": "Muokkaa asettelua",
    "dragToAdd": "Lisää vetämällä",
    "mapArea": "KARTTA-ALUE",
    "sceneArea": "MAISEMA-ALUE"
  },
  "coordinateControl": {
    "notations": {
      "DD": "DD",
      "DDM": "DDM",
      "DMS": "DMS",
      "DDRev": "DDRev",
      "DDMRev": "DDMRev",
      "DMSRev": "DMSRev",
      "USNG": "USNG",
      "MGRS": "MGRS",
      "UTM_H": "UTM (H)",
      "UTM": "UTM",
      "GARS": "GARS",
      "GEOREF": "GEOREF"
    },
    "DDLatLongNotation": "Desimaaliasteet – leveys-/pituusaste",
    "DDLongLatNotation": "Desimaaliasteet – pituus-/leveysaste",
    "DDMLatLongNotation": "Asteet, desimaaliminuutit – leveys-/pituusaste",
    "DDMLongLatNotation": "Asteet, desimaaliminuutit – pituus-/leveysaste",
    "DMSLatLongNotation": "Asteet, minuutit, sekunnit – leveys-/pituusaste",
    "DMSLongLatNotation": "Asteet, minuutit, sekunnit – pituus-/leveysaste",
    "GARSNotation": "GARS",
    "GEOREFNotation": "GEOREF",
    "MGRSNotation": "MGRS",
    "USNGNotation": "USNG",
    "UTMBandNotation": "UTM – kaistan kirjain",
    "UTMHemNotation": "UTM – pallonpuolisko (P/E)",
    "formatInput": "Muodon lähtöaineisto",
    "copyAll": "Kopioi kaikki",
    "copySuccessful": "Kopiointi onnistui",
    "copyFailed": "Kopiointi ei onnistu. Käytä vaihtoehtoisesti näppäinyhdistelmää Ctrl+C.",
    "parseCoordinatesError": "Koordinaatteja ei voida jäsentää. Tarkista syötteesi.",
    "comfirmInputNotation": "Vahvista lähtöaineiston esitysmuoto",
    "latLongWarningMessage": "Lähtöaineiston koordinaatissa on havaittu olevan pituusasteen tai leveysasteen sekä etu- että jälkiliite. Palautettu koordinaatti perustuu etuliitteeseen.",
    "cancelButtonLabel": "Peruuta",
    "applyButtonLabel": "Käytä",
    "posNegPrefixLabel": "Lisää etuliite +/- positiivisiin ja negatiivisiin numeroihin",
    "editCoordinateDialogTitle": "Määritä koordinaatin muotomerkkijono",
    "rememberDecisionLabel": "Muista valintani äläkä kysy tietoja uudelleen.<br/>",
    "coordinateInputLabel": "Anna koordinaatit tai napsauta karttaa",
    "zoomLabel": "Tarkennus",
    "addPointLabel": "Lisää piste kartan napsautuksesta",
    "multipleNotationLabel": "lähtöaineistoasi vastaavia esitystapoja on löytynyt. Vahvista, mitä haluat käyttää:",
    "copyToClipboard": "Kopioi leikepöydälle",
    "formatOutput": "Muodon tulosaineisto",
    "notationAddedMessage": "Uusi esitystapa lisätty",
    "removeCoordinate": "Poista koordinaatti",
    "expandOutput": "Laajenna tulosaineisto",
    "tooltip": "Lisää piste napsauttamalla karttaa"
  },
  "noEditPrivileges": "Tililläsi ei ole tietojen luonti- tai muokkausoikeuksia.",
  "noEditableLayers": "Tilisi käyttöoikeudet eivät riitä aineiston luontiin tai muokkaamiseen. Vaihtoehtoisesti tämä web-kartta ei sisällä muokattavia karttatasoja.",
  "invalidConfiguration": "Pienoisohjelmaa ei ole joko määritetty tai määrityksen karttatasoja ei ole enää kartassa. Avaa sovellus luontitilassa ja määritä pienoisohjelma uudelleen.",
  "essentialAppsLicenseErrorForApp": "Tiliäsi ei ole lisensoitu käyttämään sovellusta, joka ei ole julkinen. Pyydä organisaatiosi pääkäyttäjää määrittämään sinulle käyttäjätyyppi, joka sisältää keskeiset sovellukset tai keskeisten sovellusten lisäosan lisenssin.",
  "essentialAppsLicenseErrorForBuilder": "Tiliäsi ei ole lisensoitu Web AppBuilderille. Pyydä organisaatiosi pääkäyttäjää määrittämään sinulle käyttäjätyyppi, joka sisältää keskeiset sovellukset tai keskeisten sovellusten lisäosan lisenssin."
});


text:
define(
	 ({
		viewer: {
			common: {
				close: "Stäng"
			},
			loading: {
				step1: "Läser in applikation",
				step2: "Läser in data",
				step3: "Initierar",
				loadBuilder: "Växlar till byggverktyget",
				long: "Kartjournalen initieras",
				long2: "Tack för att du väntar",
				failButton: "Läs in applikationen igen"
			},
			signin: {
				title: "Autentisering krävs",
				explainViewer: "Logga in med ett konto på %PORTAL_LINK% om du vill få åtkomst till applikationen.",
				explainBuilder: "Logga in med ett konto på %PORTAL_LINK% om du vill konfigurera applikationen."
			},
			errors: {
				boxTitle: "Ett fel har inträffat",
				invalidConfig: "Ogiltig konfiguration",
				invalidConfigNoApp: "Webbkartapplikationens identifierare anges inte i index.html.",
				unspecifiedConfigOwner: "Ingen auktoriserad ägare har konfigurerats.",
				invalidConfigOwner: "Applikationens ägare är inte auktoriserad.",
				createMap: "Det gick inte att skapa kartan",
				invalidApp: "%TPL_NAME% finns inte eller går inte att komma åt.",
				appLoadingFail: "Något gick fel, %TPL_NAME% lästes inte in korrekt.",
				notConfiguredDesktop: "Applikationen har inte konfigurerats ännu.",
				notConfiguredMobile: "%TPL_NAME%-byggverktyget går inte att använda med den här skärmupplösningen.",
				notAuthorized: "Du är inte behörig att konfigurera det här programmet",
				noBuilderIE: "Byggverktyget kan inte användas med Internet Explorer tidigare än version %VERSION%. %UPGRADE%",
				noViewerIE: "Det här programmet kan inte användas med Internet Explorer tidigare än version %VERSION%. %UPGRADE%",
				upgradeBrowser: "Uppdatera din webbläsare.",
				mapLoadingFail: "Något gick fel, kartan lästes inte in på rätt sätt.",
				signOut: "Logga ut"
			},
			mobileView: {
				tapForDetails: "Peka för information",
				clickForDetails: "Läs mer",
				swipeToExplore: "Svep för att utforska",
				tapForMap: "Peka för att återgå till kartan",
				clickForMap: "TILLBAKA TILL KARTAN"
			},
			floatLayout: {
				scroll: "Bläddra"
			},
			sideLayout: {
				scroll: "Bläddra nedåt för att visa mer"
			},
			mainStage: {
				back: "Bakåt"
			},
			headerFromCommon: {
				storymapsText: "En berättelsekarta",
				builderButton: "Redigera",
				bitlyTooltip: "Hämta en kort länk till applikationen",
				templateTitle: "Ange malltitel",
				templateSubtitle: "Ange underrubrik för mallen",
				share: "Dela"
			},
			overviewFromCommon: {
				title: "Översiktskarta"
			},
			legendFromCommon: {
				title: "Teckenförklaring"
			},
			shareFromCommon: {
				copy: "Kopiera",
				copied: "Kopierad",
				open: "Öppna",
				embed: "Bädda in på webbplats",
				embedExplain: "Använd följande HTML-kod om du vill bädda in journalen på en webbplats.",
				size: "Storlek (bredd/höjd):"
			}
        }
    })
);


text:
package org.apache.commons.jcs3.engine.behavior;

import java.io.IOException;
import java.util.Map;
import java.util.Set;

import org.apache.commons.jcs3.engine.CacheStatus;
import org.apache.commons.jcs3.engine.match.behavior.IKeyMatcher;

/**
 * This is the top level interface for all cache like structures. It defines the methods used
 * internally by JCS to access, modify, and instrument such structures.
 *
 * This allows for a suite of reusable components for accessing such structures, for example
 * asynchronous access via an event queue.
 */
public interface ICache<K, V>
    extends ICacheType
{
    /** Delimiter of a cache name component. This is used for hierarchical deletion */
    String NAME_COMPONENT_DELIMITER = ":";

    /**
     * Puts an item to the cache.
     *
     * @param element
     * @throws IOException
     */
    void update( ICacheElement<K, V> element )
        throws IOException;

    /**
     * Gets an item from the cache.
     *
     * @param key
     * @return a cache element, or null if there is no data in cache for this key
     * @throws IOException
     */
    ICacheElement<K, V> get( K key )
        throws IOException;

    /**
     * Gets multiple items from the cache based on the given set of keys.
     *
     * @param keys
     * @return a map of K key to ICacheElement<K, V> element, or an empty map if there is no data in cache for any of these keys
     * @throws IOException
     */
    Map<K, ICacheElement<K, V>> getMultiple(Set<K> keys)
        throws IOException;

    /**
     * Gets items from the cache matching the given pattern.  Items from memory will replace those from remote sources.
     *
     * This only works with string keys.  It's too expensive to do a toString on every key.
     *
     * Auxiliaries will do their best to handle simple expressions.  For instance, the JDBC disk cache will convert * to % and . to _
     *
     * @param pattern
     * @return a map of K key to ICacheElement<K, V> element, or an empty map if there is no data matching the pattern.
     * @throws IOException
     */
    Map<K, ICacheElement<K, V>> getMatching(String pattern)
        throws IOException;

    /**
     * Removes an item from the cache.
     *
     * @param key
     * @return false if there was an error in removal
     * @throws IOException
     */
    boolean remove( K key )
        throws IOException;

    /**
     * Removes all cached items from the cache.
     *
     * @throws IOException
     */
    void removeAll()
        throws IOException;

    /**
     * Prepares for shutdown.
     * @throws IOException
     */
    void dispose()
        throws IOException;

    /**
     * Returns the current cache size in number of elements.
     *
     * @return number of elements
     */
    int getSize();

    /**
     * Returns the cache status.
     *
     * @return Alive or Error
     */
    CacheStatus getStatus();

    /**
     * Returns the cache stats.
     *
     * @return String of important historical information.
     */
    String getStats();

    /**
     * Returns the cache name.
     *
     * @return usually the region name.
     */
    String getCacheName();

    /**
     * Sets the key matcher used by get matching.
     *
     * @param keyMatcher
     */
    void setKeyMatcher( IKeyMatcher<K> keyMatcher );
}


text:
package com.discounty;

public class Barcode {
    public String Type;
    public String Info;

    public Barcode(String type, String info) {
        Type = type;
        Info = info;
    }

    public String getType() {
        return Type;
    }

    public void setType(String type) {
        Type = type;
    }

    public String getInfo() {
        return Info;
    }

    public void setInfo(String info) {
        Info = info;
    }
}


text:
/** @module reiter/compose */

import reiter from "./reiter.js";

/**
 * Composes a list of functions, piping the output of the previous into
 * the next. An empty function list will create the identity function (x => x).
 *
 * @since 0.0.5
 * @function compose
 * @param {ForOfIterable<function>} fns The function list.
 * @returns {function} The functional composition.
 * @example
 *
 * reiter.compose([(x, y) => x + y, x => 2 * x])(1, 2)
 * // => 6
 */
export default fns => {
  const reiterableFns = reiter(fns);
  return (...args) => {
    for (const fn of reiterableFns) {
      args = [fn(...args)];
    }
    return args[0];
  };
};


text:
set -o errexit -o pipefail

usage()
{ # Show usage information.
  echo "$(basename "$(test -L "$0" && readlink "$0" || echo "$0")") <installation-path> <dcos-url>"
}

check_pip_version()
{
    PIP_INFO=$(pip -V);
    REGEX="([0-9]+)\.([0-9]+)";
    [[ $PIP_INFO =~ $REGEX ]];
    MAJOR_PIP_VERSION="${BASH_REMATCH[1]}";
    MINOR_PIP_VERSION="${BASH_REMATCH[2]}";
    if [ "$MAJOR_PIP_VERSION" -lt 1 ] || ([ "$MAJOR_PIP_VERSION" -eq 1 ] && [ "$MINOR_PIP_VERSION" -le 4 ]);
        then echo "Pip version must be greater than 1.4. Aborting.";
        exit 1;
    fi
}

if [ "$#" -lt 2 ]; then
  usage;
  exit 1;
fi

check_pip_version;

ARGS=( "$@" );

VIRTUAL_ENV_PATH=$(python -c "import os; print(os.path.realpath('"${ARGS[0]}"'))")
if [[ $VIRTUAL_ENV_PATH =~ \  ]];
	then echo "Spaces are not permitted in the installation path. Please try again with another path.";
    exit 1;
fi
DCOS_URL=${ARGS[1]}

command -v virtualenv >/dev/null 2>&1 || { echo "Cannot find virtualenv. Aborting."; exit 1; }

VIRTUALENV_VERSION=$(virtualenv --version)
VERSION_REGEX="s#[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)#\1#"

eval MAJOR=`echo $VIRTUALENV_VERSION | sed -e $VERSION_REGEX`
if [ $MAJOR -lt 12 ];
	then echo "Virtualenv version must be 12 or greater. Aborting.";
	exit 1;
fi

echo "Installing DCOS CLI from PyPI...";
echo "";

# Let's first setup a virtualenv: we are assuming that the path is absolute
mkdir -p "$VIRTUAL_ENV_PATH"
virtualenv "$VIRTUAL_ENV_PATH"

# Install the DCOS CLI package, using version if set
if [ -z "$DCOS_CLI_VERSION" ]; then
    "$VIRTUAL_ENV_PATH/bin/pip" install --quiet "dcoscli"
else
    "$VIRTUAL_ENV_PATH/bin/pip" install --quiet "dcoscli==$DCOS_CLI_VERSION"
fi

ENV_SETUP="$VIRTUAL_ENV_PATH/bin/env-setup"
source "$ENV_SETUP"
dcos config set core.reporting true
dcos config set core.dcos_url $DCOS_URL
dcos config set core.timeout 5
dcos config set package.cache ~/.dcos/cache
dcos config set package.sources '["https://github.com/mesosphere/universe/archive/version-1.x.zip"]'
dcos package update

echo 'Finished installing and configuring DCOS CLI.'
echo ''
echo 'Run this command to set up your environment and to get started:'
echo "source $ENV_SETUP && dcos help"


text:
/* =============================================================

	Smooth Scroll 2.16
	Animate scrolling to anchor links, by Chris Ferdinandi.
	https://gomakethings.com

	Easing support contributed by Willem Liu.
	https://github.com/willemliu

	Easing functions forked from Gaëtan Renaudeau.
	https://gist.github.com/gre/1650294

	URL history support contributed by Robert Pate.
	https://github.com/robertpateii

	Fixed header support contributed by Arndt von Lucadou.
	https://github.com/a-v-l

	Free to use under the MIT License.
	https://gomakethings.com/mit/

 * ============================================================= */

(function() {

	'use strict';

	// Feature Test
	if ( 'querySelector' in document && 'addEventListener' in window && Array.prototype.forEach ) {

		// Function to animate the scroll
		var smoothScroll = function (anchor, duration, easing, url) {

			// Functions to control easing
			var easingPattern = function (type, time) {
				if ( type == 'easeInQuad' ) return time * time; // accelerating from zero velocity
				if ( type == 'easeOutQuad' ) return time * (2 - time); // decelerating to zero velocity
				if ( type == 'easeInOutQuad' ) return time < 0.5 ? 2 * time * time : -1 + (4 - 2 * time) * time; // acceleration until halfway, then deceleration
				if ( type == 'easeInCubic' ) return time * time * time; // accelerating from zero velocity
				if ( type == 'easeOutCubic' ) return (--time) * time * time + 1; // decelerating to zero velocity
				if ( type == 'easeInOutCubic' ) return time < 0.5 ? 4 * time * time * time : (time - 1) * (2 * time - 2) * (2 * time - 2) + 1; // acceleration until halfway, then deceleration
				if ( type == 'easeInQuart' ) return time * time * time * time; // accelerating from zero velocity
				if ( type == 'easeOutQuart' ) return 1 - (--time) * time * time * time; // decelerating to zero velocity
				if ( type == 'easeInOutQuart' ) return time < 0.5 ? 8 * time * time * time * time : 1 - 8 * (--time) * time * time * time; // acceleration until halfway, then deceleration
				if ( type == 'easeInQuint' ) return time * time * time * time * time; // accelerating from zero velocity
				if ( type == 'easeOutQuint' ) return 1 + (--time) * time * time * time * time; // decelerating to zero velocity
				if ( type == 'easeInOutQuint' ) return time < 0.5 ? 16 * time * time * time * time * time : 1 + 16 * (--time) * time * time * time * time; // acceleration until halfway, then deceleration
				return time; // no easing, no acceleration
			};

			// Function to update URL
			var updateURL = function (url, anchor) {
				if ( url === 'true' && history.pushState ) {
					history.pushState(null, null, '#' + anchor.id);
				}
			};

			// Get the height of a fixed header if one exists
			var scrollHeader = document.querySelector('.scroll-header');
			var headerHeight = scrollHeader === null ? 0 : scrollHeader.offsetHeight;

			// Calculate how far to scroll
			var startLocation = window.pageYOffset;
			var getEndLocation = function (anchor) {
				var location = 0;
				if (anchor.offsetParent) {
					do {
						location += anchor.offsetTop;
						anchor = anchor.offsetParent;
					} while (anchor);
				}
				location = location - headerHeight;
				if ( location >= 0 ) {
					return location;
				} else {
					return 0;
				}
			};
			var endLocation = getEndLocation(anchor);
			var distance = endLocation - startLocation;

			// Function to stop the scrolling animation
			var stopAnimation = function () {
				var currentLocation = window.pageYOffset;
				if ( currentLocation == endLocation || ( (window.innerHeight + currentLocation) >= document.body.scrollHeight ) ) {
					clearInterval(runAnimation);
					updateURL(url, anchor);
				}
			};

			// Set the animation variables to 0/undefined.
			var timeLapsed = 0;
			var percentage, position;

			// Scroll the page by an increment, and check if it's time to stop
			var animateScroll = function () {
				timeLapsed += 16;
				percentage = ( timeLapsed / duration );
				percentage = ( percentage > 1 ) ? 1 : percentage;
				position = startLocation + ( distance * easingPattern(easing, percentage) );
				window.scrollTo( 0, position );
				stopAnimation();
			};

			// Loop the animation function
			var runAnimation = setInterval(animateScroll, 16);

		};

		// For each smooth scroll link
		var scrollToggle = document.querySelectorAll('.scroll');
		[].forEach.call(scrollToggle, function (toggle) {

			// When the smooth scroll link is clicked
			toggle.addEventListener('click', function(e) {

				// Prevent the default link behavior
				e.preventDefault();

				// Get anchor link and calculate distance from the top
				var dataID = toggle.getAttribute('href');
				var dataTarget = document.querySelector(dataID);
				var dataSpeed = toggle.getAttribute('data-speed');
				var dataEasing = toggle.getAttribute('data-easing');
				var dataURL = toggle.getAttribute('data-url');

				// If the anchor exists, scroll to it
				if (dataTarget) {
					smoothScroll( dataTarget, dataSpeed || 500, dataEasing || 'easeInOutCubic', dataURL || 'false' );
				}

			}, false);

		});

	}

})();