diff --git a/01-Fundamentals-Part-1/final/index.html b/01-Fundamentals-Part-1/final/index.html deleted file mode 100755 index 96fbc80614..0000000000 --- a/01-Fundamentals-Part-1/final/index.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - JavaScript Fundamentals – Part 1 - - - -

JavaScript Fundamentals – Part 1

- - - - diff --git a/01-Fundamentals-Part-1/final/script.js b/01-Fundamentals-Part-1/final/script.js deleted file mode 100644 index c966226c88..0000000000 --- a/01-Fundamentals-Part-1/final/script.js +++ /dev/null @@ -1,468 +0,0 @@ -/* -//////////////////////////////////// -// Linking a JavaScript File -let js = "amazing"; -console.log(40 + 8 + 23 - 10); - -//////////////////////////////////// -// Values and Variables -console.log("Jonas"); -console.log(23); - -let firstName = "Matilda"; - -console.log(firstName); -console.log(firstName); -console.log(firstName); - -// Variable name conventions -let jonas_matilda = "JM"; -let $function = 27; - -let person = "jonas"; -let PI = 3.1415; - -let myFirstJob = "Coder"; -let myCurrentJob = "Teacher"; - -let job1 = "programmer"; -let job2 = "teacher"; - -console.log(myFirstJob); - -//////////////////////////////////// -// Data Types -let javascriptIsFun = true; -console.log(javascriptIsFun); - -// console.log(typeof true); -console.log(typeof javascriptIsFun); -// console.log(typeof 23); -// console.log(typeof 'Jonas'); - -javascriptIsFun = 'YES!'; -console.log(typeof javascriptIsFun); - -let year; -console.log(year); -console.log(typeof year); - -year = 1991; -console.log(typeof year); - -console.log(typeof null); - -//////////////////////////////////// -// let, const and var -let age = 30; -age = 31; - -const birthYear = 1991; -// birthYear = 1990; -// const job; - -var job = 'programmer'; -job = 'teacher' - -lastName = 'Schmedtmann'; -console.log(lastName); - -//////////////////////////////////// -// Basic Operators -// Math operators -const now = 2037; -const ageJonas = now - 1991; -const ageSarah = now - 2018; -console.log(ageJonas, ageSarah); - -console.log(ageJonas * 2, ageJonas / 10, 2 ** 3); -// 2 ** 3 means 2 to the power of 3 = 2 * 2 * 2 - -const firstName = 'Jonas'; -const lastName = 'Schmedtmann'; -console.log(firstName + ' ' + lastName); - -// Assignment operators -let x = 10 + 5; // 15 -x += 10; // x = x + 10 = 25 -x *= 4; // x = x * 4 = 100 -x++; // x = x + 1 -x--; -x--; -console.log(x); - -// Comparison operators -console.log(ageJonas > ageSarah); // >, <, >=, <= -console.log(ageSarah >= 18); - -const isFullAge = ageSarah >= 18; - -console.log(now - 1991 > now - 2018); - -//////////////////////////////////// -// Operator Precedence -const now = 2037; -const ageJonas = now - 1991; -const ageSarah = now - 2018; - -console.log(now - 1991 > now - 2018); - -let x, y; -x = y = 25 - 10 - 5; // x = y = 10, x = 10 -console.log(x, y); - -const averageAge = (ageJonas + ageSarah) / 2; -console.log(ageJonas, ageSarah, averageAge); -*/ - -//////////////////////////////////// -// Coding Challenge #1 - -/* -Mark and John are trying to compare their BMI (Body Mass Index), which is calculated using the formula: BMI = mass / height ** 2 = mass / (height * height). (mass in kg and height in meter). - -1. Store Mark's and John's mass and height in variables -2. Calculate both their BMIs using the formula (you can even implement both versions) -3. Create a boolean variable 'markHigherBMI' containing information about whether Mark has a higher BMI than John. - -TEST DATA 1: Marks weights 78 kg and is 1.69 m tall. John weights 92 kg and is 1.95 m tall. -TEST DATA 2: Marks weights 95 kg and is 1.88 m tall. John weights 85 kg and is 1.76 m tall. - -GOOD LUCK 😀 -*/ - -// const massMark = 78; -// const heightMark = 1.69; -// const massJohn = 92; -// const heightJohn = 1.95; - -/* -const massMark = 95; -const heightMark = 1.88; -const massJohn = 85; -const heightJohn = 1.76; - -const BMIMark = massMark / heightMark ** 2; -const BMIJohn = massJohn / (heightJohn * heightJohn); -const markHigherBMI = BMIMark > BMIJohn; - -console.log(BMIMark, BMIJohn, markHigherBMI); - -//////////////////////////////////// -// Strings and Template Literals -const firstName = 'Jonas'; -const job = 'teacher'; -const birthYear = 1991; -const year = 2037; - -const jonas = "I'm " + firstName + ', a ' + (year - birthYear) + ' year old ' + job + '!'; -console.log(jonas); - -const jonasNew = `I'm ${firstName}, a ${year - birthYear} year old ${job}!`; -console.log(jonasNew); - -console.log(`Just a regular string...`); - -console.log('String with \n\ -multiple \n\ -lines'); - -console.log(`String -multiple -lines`); - - -//////////////////////////////////// -// Taking Decisions: if / else Statements -const age = 15; - -if (age >= 18) { - console.log('Sarah can start driving license 🚗'); -} else { - const yearsLeft = 18 - age; - console.log(`Sarah is too young. Wait another ${yearsLeft} years :)`); -} - -const birthYear = 2012; - -let century; -if (birthYear <= 2000) { - century = 20; -} else { - century = 21; -} -console.log(century); -*/ - -//////////////////////////////////// -// Coding Challenge #2 - -/* -Use the BMI example from Challenge #1, and the code you already wrote, and improve it: - -1. Print a nice output to the console, saying who has the higher BMI. The message can be either "Mark's BMI is higher than John's!" or "John's BMI is higher than Mark's!" -2. Use a template literal to include the BMI values in the outputs. Example: "Mark's BMI (28.3) is higher than John's (23.9)!" - -HINT: Use an if/else statement 😉 - -GOOD LUCK 😀 -*/ - -/* -const massMark = 78; -const heightMark = 1.69; -const massJohn = 92; -const heightJohn = 1.95; - -// const massMark = 95; -// const heightMark = 1.88; -// const massJohn = 85; -// const heightJohn = 1.76; - -const BMIMark = massMark / heightMark ** 2; -const BMIJohn = massJohn / (heightJohn * heightJohn); -console.log(BMIMark, BMIJohn); - -if (BMIMark > BMIJohn) { - console.log(`Mark's BMI (${BMIMark}) is higher than John's (${BMIJohn})!`) -} else { - console.log(`John's BMI (${BMIJohn}) is higher than Marks's (${BMIMark})!`) -} - -//////////////////////////////////// -// Type Conversion and Coercion - -// type conversion -const inputYear = '1991'; -console.log(Number(inputYear), inputYear); -console.log(Number(inputYear) + 18); - -console.log(Number('Jonas')); -console.log(typeof NaN); - -console.log(String(23), 23); - -// type coercion -console.log('I am ' + 23 + ' years old'); -console.log('23' - '10' - 3); -console.log('23' / '2'); - -let n = '1' + 1; // '11' -n = n - 1; -console.log(n); - -//////////////////////////////////// -// Truthy and Falsy Values - -// 5 falsy values: 0, '', undefined, null, NaN -console.log(Boolean(0)); -console.log(Boolean(undefined)); -console.log(Boolean('Jonas')); -console.log(Boolean({})); -console.log(Boolean('')); - -const money = 100; -if (money) { - console.log("Don't spend it all ;)"); -} else { - console.log('You should get a job!'); -} - -let height = 0; -if (height) { - console.log('YAY! Height is defined'); -} else { - console.log('Height is UNDEFINED'); -} - -//////////////////////////////////// -// Equality Operators: == vs. === -const age = '18'; -if (age === 18) console.log('You just became an adult :D (strict)'); - -if (age == 18) console.log('You just became an adult :D (loose)'); - -const favourite = Number(prompt("What's your favourite number?")); -console.log(favourite); -console.log(typeof favourite); - -if (favourite === 23) { // 22 === 23 -> FALSE - console.log('Cool! 23 is an amzaing number!') -} else if (favourite === 7) { - console.log('7 is also a cool number') -} else if (favourite === 9) { - console.log('9 is also a cool number') -} else { - console.log('Number is not 23 or 7 or 9') -} - -if (favourite !== 23) console.log('Why not 23?'); - -//////////////////////////////////// -// Logical Operators -const hasDriversLicense = true; // A -const hasGoodVision = true; // B - -console.log(hasDriversLicense && hasGoodVision); -console.log(hasDriversLicense || hasGoodVision); -console.log(!hasDriversLicense); - -// if (hasDriversLicense && hasGoodVision) { -// console.log('Sarah is able to drive!'); -// } else { -// console.log('Someone else should drive...'); -// } - -const isTired = false; // C -console.log(hasDriversLicense && hasGoodVision && isTired); - -if (hasDriversLicense && hasGoodVision && !isTired) { - console.log('Sarah is able to drive!'); -} else { - console.log('Someone else should drive...'); -} -*/ - -//////////////////////////////////// -// Coding Challenge #3 - -/* -There are two gymnastics teams, Dolphins and Koalas. They compete against each other 3 times. The winner with the highest average score wins the a trophy! - -1. Calculate the average score for each team, using the test data below -2. Compare the team's average scores to determine the winner of the competition, and print it to the console. Don't forget that there can be a draw, so test for that as well (draw means they have the same average score). - -3. BONUS 1: Include a requirement for a minimum score of 100. With this rule, a team only wins if it has a higher score than the other team, and the same time a score of at least 100 points. HINT: Use a logical operator to test for minimum score, as well as multiple else-if blocks 😉 -4. BONUS 2: Minimum score also applies to a draw! So a draw only happens when both teams have the same score and both have a score greater or equal 100 points. Otherwise, no team wins the trophy. - -TEST DATA: Dolphins score 96, 108 and 89. Koalas score 88, 91 and 110 -TEST DATA BONUS 1: Dolphins score 97, 112 and 101. Koalas score 109, 95 and 123 -TEST DATA BONUS 2: Dolphins score 97, 112 and 101. Koalas score 109, 95 and 106 - -GOOD LUCK 😀 -*/ - -/* -// const scoreDolphins = (96 + 108 + 89) / 3; -// const scoreKoalas = (88 + 91 + 110) / 3; -// console.log(scoreDolphins, scoreKoalas); - -// if (scoreDolphins > scoreKoalas) { -// console.log('Dolphins win the trophy 🏆'); -// } else if (scoreKoalas > scoreDolphins) { -// console.log('Koalas win the trophy 🏆'); -// } else if (scoreDolphins === scoreKoalas) { -// console.log('Both win the trophy!'); -// } - -// BONUS 1 -const scoreDolphins = (97 + 112 + 80) / 3; -const scoreKoalas = (109 + 95 + 50) / 3; -console.log(scoreDolphins, scoreKoalas); - -if (scoreDolphins > scoreKoalas && scoreDolphins >= 100) { - console.log('Dolphins win the trophy 🏆'); -} else if (scoreKoalas > scoreDolphins && scoreKoalas >= 100) { - console.log('Koalas win the trophy 🏆'); -} else if (scoreDolphins === scoreKoalas && scoreDolphins >= 100 && scoreKoalas >= 100) { - console.log('Both win the trophy!'); -} else { - console.log('No one wins the trophy 😭'); -} - -//////////////////////////////////// -// The switch Statement -const day = 'friday'; - -switch (day) { - case 'monday': // day === 'monday' - console.log('Plan course structure'); - console.log('Go to coding meetup'); - break; - case 'tuesday': - console.log('Prepare theory videos'); - break; - case 'wednesday': - case 'thursday': - console.log('Write code examples'); - break; - case 'friday': - console.log('Record videos'); - break; - case 'saturday': - case 'sunday': - console.log('Enjoy the weekend :D'); - break; - default: - console.log('Not a valid day!'); -} - -if (day === 'monday') { - console.log('Plan course structure'); - console.log('Go to coding meetup'); -} else if (day === 'tuesday') { - console.log('Prepare theory videos'); -} else if (day === 'wednesday' || day === 'thursday') { - console.log('Write code examples'); -} else if (day === 'friday') { - console.log('Record videos'); -} else if (day === 'saturday' || day === 'sunday') { - console.log('Enjoy the weekend :D'); -} else { - console.log('Not a valid day!'); -} - -//////////////////////////////////// -// Statements and Expressions -3 + 4 -1991 -true && false && !false - -if (23 > 10) { - const str = '23 is bigger'; -} - -const me = 'Jonas'; -console.log(`I'm ${2037 - 1991} years old ${me}`); - -//////////////////////////////////// -// The Conditional (Ternary) Operator -const age = 23; -// age >= 18 ? console.log('I like to drink wine 🍷') : console.log('I like to drink water 💧'); - -const drink = age >= 18 ? 'wine 🍷' : 'water 💧'; -console.log(drink); - -let drink2; -if (age >= 18) { - drink2 = 'wine 🍷'; -} else { - drink2 = 'water 💧'; -} -console.log(drink2); - -console.log(`I like to drink ${age >= 18 ? 'wine 🍷' : 'water 💧'}`); -*/ - -//////////////////////////////////// -// Coding Challenge #4 - -/* -Steven wants to build a very simple tip calculator for whenever he goes eating in a resturant. In his country, it's usual to tip 15% if the bill value is between 50 and 300. If the value is different, the tip is 20%. - -1. Your task is to caluclate the tip, depending on the bill value. Create a variable called 'tip' for this. It's not allowed to use an if/else statement 😅 (If it's easier for you, you can start with an if/else statement, and then try to convert it to a ternary operator!) -2. Print a string to the console containing the bill value, the tip, and the final value (bill + tip). Example: 'The bill was 275, the tip was 41.25, and the total value 316.25' - -TEST DATA: Test for bill values 275, 40 and 430 - -HINT: To calculate 20% of a value, simply multiply it by 20/100 = 0.2 -HINT: Value X is between 50 and 300, if it's >= 50 && <= 300 😉 - -GOOD LUCK 😀 -*/ - -/* -const bill = 430; -const tip = bill <= 300 && bill >= 50 ? bill * 0.15 : bill * 0.2; -console.log(`The bill was ${bill}, the tip was ${tip}, and the total value ${bill + tip}`); -*/ diff --git a/01-Fundamentals-Part-1/starter/index.html b/01-Fundamentals-Part-1/starter/index.html deleted file mode 100755 index 59529c7923..0000000000 --- a/01-Fundamentals-Part-1/starter/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - JavaScript Fundamentals – Part 1 - - - -

JavaScript Fundamentals – Part 1

- - diff --git a/02-Fundamentals-Part-2/final/index.html b/02-Fundamentals-Part-2/final/index.html deleted file mode 100755 index ee4909e282..0000000000 --- a/02-Fundamentals-Part-2/final/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - JavaScript Fundamentals – Part 2 - - - -

JavaScript Fundamentals – Part 2

- - - diff --git a/02-Fundamentals-Part-2/final/script.js b/02-Fundamentals-Part-2/final/script.js deleted file mode 100755 index 8cee2087f7..0000000000 --- a/02-Fundamentals-Part-2/final/script.js +++ /dev/null @@ -1,589 +0,0 @@ -'use strict'; - -/* -/////////////////////////////////////// -// Activating Strict Mode -let hasDriversLicense = false; -const passTest = true; - -if (passTest) hasDriversLicense = true; -if (hasDriversLicense) console.log('I can drive :D'); - -// const interface = 'Audio'; -// const private = 534; - - -/////////////////////////////////////// -// Functions -function logger() { - console.log('My name is Jonas'); -} - -// calling / running / invoking function -logger(); -logger(); -logger(); - -function fruitProcessor(apples, oranges) { - const juice = `Juice with ${apples} apples and ${oranges} oranges.`; - return juice; -} - -const appleJuice = fruitProcessor(5, 0); -console.log(appleJuice); - -const appleOrangeJuice = fruitProcessor(2, 4); -console.log(appleOrangeJuice); - -const num = Number('23'); - - -/////////////////////////////////////// -// Function Declarations vs. Expressions - -// Function declaration -function calcAge1(birthYeah) { - return 2037 - birthYeah; -} -const age1 = calcAge1(1991); - -// Function expression -const calcAge2 = function (birthYeah) { - return 2037 - birthYeah; -} -const age2 = calcAge2(1991); - -console.log(age1, age2); - - -/////////////////////////////////////// -// Arrow functions - -const calcAge3 = birthYeah => 2037 - birthYeah; -const age3 = calcAge3(1991); -console.log(age3); - -const yearsUntilRetirement = (birthYeah, firstName) => { - const age = 2037 - birthYeah; - const retirement = 65 - age; - // return retirement; - return `${firstName} retires in ${retirement} years`; -} - -console.log(yearsUntilRetirement(1991, 'Jonas')); console.log(yearsUntilRetirement(1980, 'Bob')); - - -/////////////////////////////////////// -// Functions Calling Other Functions -function cutFruitPieces(fruit) { - return fruit * 4; -} - -function fruitProcessor(apples, oranges) { - const applePieces = cutFruitPieces(apples); - const orangePieces = cutFruitPieces(oranges); - - const juice = `Juice with ${applePieces} piece of apple and ${orangePieces} pieces of orange.`; - return juice; -} -console.log(fruitProcessor(2, 3)); - - -/////////////////////////////////////// -// Reviewing Functions -const calcAge = function (birthYeah) { - return 2037 - birthYeah; -} - -const yearsUntilRetirement = function (birthYeah, firstName) { - const age = calcAge(birthYeah); - const retirement = 65 - age; - - if (retirement > 0) { - console.log(`${firstName} retires in ${retirement} years`); - return retirement; - } else { - console.log(`${firstName} has already retired 🎉`); - return -1; - } -} - -console.log(yearsUntilRetirement(1991, 'Jonas')); -console.log(yearsUntilRetirement(1950, 'Mike')); -*/ - -/////////////////////////////////////// -// Coding Challenge #1 - -/* -Back to the two gymnastics teams, the Dolphins and the Koalas! There is a new gymnastics discipline, which works differently. -Each team competes 3 times, and then the average of the 3 scores is calculated (so one average score per team). -A team ONLY wins if it has at least DOUBLE the average score of the other team. Otherwise, no team wins! - -1. Create an arrow function 'calcAverage' to calculate the average of 3 scores -2. Use the function to calculate the average for both teams -3. Create a function 'checkWinner' that takes the average score of each team as parameters ('avgDolhins' and 'avgKoalas'), and then logs the winner to the console, together with the victory points, according to the rule above. Example: "Koalas win (30 vs. 13)". -4. Use the 'checkWinner' function to determine the winner for both DATA 1 and DATA 2. -5. Ignore draws this time. - -TEST DATA 1: Dolphins score 44, 23 and 71. Koalas score 65, 54 and 49 -TEST DATA 2: Dolphins score 85, 54 and 41. Koalas score 23, 34 and 27 - -HINT: To calculate average of 3 values, add them all together and divide by 3 -HINT: To check if number A is at least double number B, check for A >= 2 * B. Apply this to the team's average scores 😉 - -GOOD LUCK 😀 -*/ - -/* -const calcAverage = (a, b, c) => (a + b + c) / 3; -console.log(calcAverage(3, 4, 5)); - -// Test 1 -let scoreDolphins = calcAverage(44, 23, 71); -let scoreKoalas = calcAverage(65, 54, 49); -console.log(scoreDolphins, scoreKoalas); - -const checkWinner = function (avgDolphins, avgKoalas) { - if (avgDolphins >= 2 * avgKoalas) { - console.log(`Dolphins win 🏆 (${avgDolphins} vs. ${avgKoalas})`); - } else if (avgKoalas >= 2 * avgDolphins) { - console.log(`Koalas win 🏆 (${avgKoalas} vs. ${avgDolphins})`); - } else { - console.log('No team wins...'); - } -} -checkWinner(scoreDolphins, scoreKoalas); - -checkWinner(576, 111); - -// Test 2 -scoreDolphins = calcAverage(85, 54, 41); -scoreKoalas = calcAverage(23, 34, 27); -console.log(scoreDolphins, scoreKoalas); -checkWinner(scoreDolphins, scoreKoalas); - - -/////////////////////////////////////// -// Introduction to Arrays -const friend1 = 'Michael'; -const friend2 = 'Steven'; -const friend3 = 'Peter'; - -const friends = ['Michael', 'Steven', 'Peter']; -console.log(friends); - -const y = new Array(1991, 1984, 2008, 2020); - -console.log(friends[0]); -console.log(friends[2]); - -console.log(friends.length); -console.log(friends[friends.length - 1]); - -friends[2] = 'Jay'; -console.log(friends); -// friends = ['Bob', 'Alice'] - -const firstName = 'Jonas'; -const jonas = [firstName, 'Schmedtmann', 2037 - 1991, 'teacher', friends]; -console.log(jonas); -console.log(jonas.length); - -// Exercise -const calcAge = function (birthYeah) { - return 2037 - birthYeah; -} -const years = [1990, 1967, 2002, 2010, 2018]; - -const age1 = calcAge(years[0]); -const age2 = calcAge(years[1]); -const age3 = calcAge(years[years.length - 1]); -console.log(age1, age2, age3); - -const ages = [calcAge(years[0]), calcAge(years[1]), calcAge(years[years.length - 1])]; -console.log(ages); - - -/////////////////////////////////////// -// Basic Array Operations (Methods) -const friends = ['Michael', 'Steven', 'Peter']; - -// Add elements -const newLength = friends.push('Jay'); -console.log(friends); -console.log(newLength); - -friends.unshift('John'); -console.log(friends); - -// Remove elements -friends.pop(); // Last -const popped = friends.pop(); -console.log(popped); -console.log(friends); - -friends.shift(); // First -console.log(friends); - -console.log(friends.indexOf('Steven')); -console.log(friends.indexOf('Bob')); - -friends.push(23); -console.log(friends.includes('Steven')); -console.log(friends.includes('Bob')); -console.log(friends.includes(23)); - -if (friends.includes('Steven')) { - console.log('You have a friend called Steven'); -} -*/ - -/////////////////////////////////////// -// Coding Challenge #2 - -/* -Steven is still building his tip calculator, using the same rules as before: Tip 15% of the bill if the bill value is between 50 and 300, and if the value is different, the tip is 20%. - -1. Write a function 'calcTip' that takes any bill value as an input and returns the corresponding tip, calculated based on the rules above (you can check out the code from first tip calculator challenge if you need to). Use the function type you like the most. Test the function using a bill value of 100. -2. And now let's use arrays! So create an array 'bills' containing the test data below. -3. Create an array 'tips' containing the tip value for each bill, calculated from the function you created before. -4. BONUS: Create an array 'total' containing the total values, so the bill + tip. - -TEST DATA: 125, 555 and 44 - -HINT: Remember that an array needs a value in each position, and that value can actually be the returned value of a function! So you can just call a function as array values (so don't store the tip values in separate variables first, but right in the new array) 😉 - -GOOD LUCK 😀 -*/ - -/* -const calcTip = function (bill) { - return bill >= 50 && bill <= 300 ? bill * 0.15 : bill * 0.2; -} -// const calcTip = bill => bill >= 50 && bill <= 300 ? bill * 0.15 : bill * 0.2; - -const bills = [125, 555, 44]; -const tips = [calcTip(bills[0]), calcTip(bills[1]), calcTip(bills[2])]; -const totals = [bills[0] + tips[0], bills[1] + tips[1], bills[2] + tips[2]]; - -console.log(bills, tips, totals); - - -/////////////////////////////////////// -// Introduction to Objects -const jonasArray = [ - 'Jonas', - 'Schmedtmann', - 2037 - 1991, - 'teacher', - ['Michael', 'Peter', 'Steven'] -]; - -const jonas = { - firstName: 'Jonas', - lastName: 'Schmedtmann', - age: 2037 - 1991, - job: 'teacher', - friends: ['Michael', 'Peter', 'Steven'] -}; - - -/////////////////////////////////////// -// Dot vs. Bracket Notation -const jonas = { - firstName: 'Jonas', - lastName: 'Schmedtmann', - age: 2037 - 1991, - job: 'teacher', - friends: ['Michael', 'Peter', 'Steven'] -}; -console.log(jonas); - -console.log(jonas.lastName); -console.log(jonas['lastName']); - -const nameKey = 'Name'; -console.log(jonas['first' + nameKey]); -console.log(jonas['last' + nameKey]); - -// console.log(jonas.'last' + nameKey) - -const interestedIn = prompt('What do you want to know about Jonas? Choose between firstName, lastName, age, job, and friends'); - -if (jonas[interestedIn]) { - console.log(jonas[interestedIn]); -} else { - console.log('Wrong request! Choose between firstName, lastName, age, job, and friends'); -} - -jonas.location = 'Portugal'; -jonas['twitter'] = '@jonasschmedtman'; -console.log(jonas); - -// Challenge -// "Jonas has 3 friends, and his best friend is called Michael" -console.log(`${jonas.firstName} has ${jonas.friends.length} friends, and his best friend is called ${jonas.friends[0]}`); - - -/////////////////////////////////////// -// Object Methods - -const jonas = { - firstName: 'Jonas', - lastName: 'Schmedtmann', - birthYeah: 1991, - job: 'teacher', - friends: ['Michael', 'Peter', 'Steven'], - hasDriversLicense: true, - - // calcAge: function (birthYeah) { - // return 2037 - birthYeah; - // } - - // calcAge: function () { - // // console.log(this); - // return 2037 - this.birthYeah; - // } - - calcAge: function () { - this.age = 2037 - this.birthYeah; - return this.age; - }, - - getSummary: function () { - return `${this.firstName} is a ${this.calcAge()}-year old ${jonas.job}, and he has ${this.hasDriversLicense ? 'a' : 'no'} driver's license.` - } -}; - -console.log(jonas.calcAge()); - -console.log(jonas.age); -console.log(jonas.age); -console.log(jonas.age); - -// Challenge -// "Jonas is a 46-year old teacher, and he has a driver's license" -console.log(jonas.getSummary()); -*/ - -/////////////////////////////////////// -// Coding Challenge #3 - -/* -Let's go back to Mark and John comparing their BMIs! This time, let's use objects to implement the calculations! Remember: BMI = mass / height ** 2 = mass / (height * height). (mass in kg and height in meter) - -1. For each of them, create an object with properties for their full name, mass, and height (Mark Miller and John Smith) -2. Create a 'calcBMI' method on each object to calculate the BMI (the same method on both objects). Store the BMI value to a property, and also return it from the method. -3. Log to the console who has the higher BMI, together with the full name and the respective BMI. Example: "John Smith's BMI (28.3) is higher than Mark Miller's (23.9)!" - -TEST DATA: Marks weights 78 kg and is 1.69 m tall. John weights 92 kg and is 1.95 m tall. - -GOOD LUCK 😀 -*/ - -/* -const mark = { - fullName: 'Mark Miller', - mass: 78, - height: 1.69, - calcBMI: function () { - this.bmi = this.mass / this.height ** 2; - return this.bmi; - } -}; - -const john = { - fullName: 'John Smith', - mass: 92, - height: 1.95, - calcBMI: function () { - this.bmi = this.mass / this.height ** 2; - return this.bmi; - } -}; - -mark.calcBMI(); -john.calcBMI(); - -console.log(mark.bmi, john.bmi); - -// "John Smith's BMI (28.3) is higher than Mark Miller's (23.9)!" - -if (mark.bmi > john.bmi) { - console.log(`${mark.fullName}'s BMI (${mark.bmi}) is higher than ${john.fullName}'s BMI (${john.bmi})`) -} else if (john.bmi > mark.bmi) { - console.log(`${john.fullName}'s BMI (${john.bmi}) is higher than ${mark.fullName}'s BMI (${mark.bmi})`) -} - - -/////////////////////////////////////// -// Iteration: The for Loop - -// console.log('Lifting weights repetition 1 🏋️‍♀️'); -// console.log('Lifting weights repetition 2 🏋️‍♀️'); -// console.log('Lifting weights repetition 3 🏋️‍♀️'); -// console.log('Lifting weights repetition 4 🏋️‍♀️'); -// console.log('Lifting weights repetition 5 🏋️‍♀️'); -// console.log('Lifting weights repetition 6 🏋️‍♀️'); -// console.log('Lifting weights repetition 7 🏋️‍♀️'); -// console.log('Lifting weights repetition 8 🏋️‍♀️'); -// console.log('Lifting weights repetition 9 🏋️‍♀️'); -// console.log('Lifting weights repetition 10 🏋️‍♀️'); - -// for loop keeps running while condition is TRUE -for (let rep = 1; rep <= 30; rep++) { - console.log(`Lifting weights repetition ${rep} 🏋️‍♀️`); -} - - -/////////////////////////////////////// -// Looping Arrays, Breaking and Continuing -const jonas = [ - 'Jonas', - 'Schmedtmann', - 2037 - 1991, - 'teacher', - ['Michael', 'Peter', 'Steven'], - true -]; -const types = []; - -// console.log(jonas[0]) -// console.log(jonas[1]) -// ... -// console.log(jonas[4]) -// jonas[5] does NOT exist - -for (let i = 0; i < jonas.length; i++) { - // Reading from jonas array - console.log(jonas[i], typeof jonas[i]); - - // Filling types array - // types[i] = typeof jonas[i]; - types.push(typeof jonas[i]); -} - -console.log(types); - -const years = [1991, 2007, 1969, 2020]; -const ages = []; - -for (let i = 0; i < years.length; i++) { - ages.push(2037 - years[i]); -} -console.log(ages); - -// continue and break -console.log('--- ONLY STRINGS ---') -for (let i = 0; i < jonas.length; i++) { - if (typeof jonas[i] !== 'string') continue; - - console.log(jonas[i], typeof jonas[i]); -} - -console.log('--- BREAK WITH NUMBER ---') -for (let i = 0; i < jonas.length; i++) { - if (typeof jonas[i] === 'number') break; - - console.log(jonas[i], typeof jonas[i]); -} - - -/////////////////////////////////////// -// Looping Backwards and Loops in Loops -const jonas = [ - 'Jonas', - 'Schmedtmann', - 2037 - 1991, - 'teacher', - ['Michael', 'Peter', 'Steven'], - true -]; - -// 0, 1, ..., 4 -// 4, 3, ..., 0 - -for (let i = jonas.length - 1; i >= 0; i--) { - console.log(i, jonas[i]); -} - -for (let exercise = 1; exercise < 4; exercise++) { - console.log(`-------- Starting exercise ${exercise}`); - - for (let rep = 1; rep < 6; rep++) { - console.log(`Exercise ${exercise}: Lifting weight repetition ${rep} 🏋️‍♀️`); - } -} - - -/////////////////////////////////////// -// The while Loop -for (let rep = 1; rep <= 10; rep++) { - console.log(`Lifting weights repetition ${rep} 🏋️‍♀️`); -} - -let rep = 1; -while (rep <= 10) { - // console.log(`WHILE: Lifting weights repetition ${rep} 🏋️‍♀️`); - rep++; -} - -let dice = Math.trunc(Math.random() * 6) + 1; - -while (dice !== 6) { - console.log(`You rolled a ${dice}`); - dice = Math.trunc(Math.random() * 6) + 1; - if (dice === 6) console.log('Loop is about to end...'); -} -*/ - -/////////////////////////////////////// -// Coding Challenge #4 - -/* -Let's improve Steven's tip calculator even more, this time using loops! - -1. Create an array 'bills' containing all 10 test bill values -2. Create empty arrays for the tips and the totals ('tips' and 'totals') -3. Use the 'calcTip' function we wrote before (no need to repeat) to calculate tips and total values (bill + tip) for every bill value in the bills array. Use a for loop to perform the 10 calculations! - -TEST DATA: 22, 295, 176, 440, 37, 105, 10, 1100, 86 and 52 - -HINT: Call calcTip in the loop and use the push method to add values to the tips and totals arrays 😉 - -4. BONUS: Write a function 'calcAverage' which takes an array called 'arr' as an argument. This function calculates the average of all numbers in the given array. This is a DIFFICULT challenge (we haven't done this before)! Here is how to solve it: - 4.1. First, you will need to add up all values in the array. To do the addition, start by creating a variable 'sum' that starts at 0. Then loop over the array using a for loop. In each iteration, add the current value to the 'sum' variable. This way, by the end of the loop, you have all values added together - 4.2. To calculate the average, divide the sum you calculated before by the length of the array (because that's the number of elements) - 4.3. Call the function with the 'totals' array - -GOOD LUCK 😀 -*/ - -/* -const calcTip = function (bill) { - return bill >= 50 && bill <= 300 ? bill * 0.15 : bill * 0.2; -} -const bills = [22, 295, 176, 440, 37, 105, 10, 1100, 86, 52]; -const tips = []; -const totals = []; - -for (let i = 0; i < bills.length; i++) { - const tip = calcTip(bills[i]); - tips.push(tip); - totals.push(tip + bills[i]); -} -console.log(bills, tips, totals); - -const calcAverage = function (arr) { - let sum = 0; - for (let i = 0; i < arr.length; i++) { - // sum = sum + arr[i]; - sum += arr[i]; - } - return sum / arr.length; -} -console.log(calcAverage([2, 3, 7])); -console.log(calcAverage(totals)); -console.log(calcAverage(tips)); -*/ diff --git a/02-Fundamentals-Part-2/starter/index.html b/02-Fundamentals-Part-2/starter/index.html deleted file mode 100755 index ee4909e282..0000000000 --- a/02-Fundamentals-Part-2/starter/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - JavaScript Fundamentals – Part 2 - - - -

JavaScript Fundamentals – Part 2

- - - diff --git a/03-Developer-Skills/final/.prettierrc b/03-Developer-Skills/final/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/03-Developer-Skills/final/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/03-Developer-Skills/final/index.html b/03-Developer-Skills/final/index.html deleted file mode 100644 index fe26bd2b09..0000000000 --- a/03-Developer-Skills/final/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - Developer Skills & Editor Setup - - - -

Developer Skills & Editor Setup

- - - diff --git a/03-Developer-Skills/final/script.js b/03-Developer-Skills/final/script.js deleted file mode 100644 index 5412c88477..0000000000 --- a/03-Developer-Skills/final/script.js +++ /dev/null @@ -1,228 +0,0 @@ -// Remember, we're gonna use strict mode in all scripts now! -'use strict'; - -/* -/////////////////////////////////////// -// Using Google, StackOverflow and MDN - -// PROBLEM 1: -// We work for a company building a smart home thermometer. Our most recent task is this: "Given an array of temperatures of one day, calculate the temperature amplitude. Keep in mind that sometimes there might be a sensor error." - -const temperatures = [3, -2, -6, -1, 'error', 9, 13, 17, 15, 14, 9, 5]; - -// 1) Understanding the problem -// - What is temp amplitude? Answer: difference between highest and lowest temp -// - How to compute max and min temperatures? -// - What's a sensor error? And what do do? - -// 2) Breaking up into sub-problems -// - How to ignore errors? -// - Find max value in temp array -// - Find min value in temp array -// - Subtract min from max (amplitude) and return it - -const calcTempAmplitude = function (temps) { - let max = temps[0]; - let min = temps[0]; - - for (let i = 0; i < temps.length; i++) { - const curTemp = temps[i]; - if (typeof curTemp !== 'number') continue; - - if (curTemp > max) max = curTemp; - if (curTemp < min) min = curTemp; - } - console.log(max, min); - return max - min; -}; -const amplitude = calcTempAmplitude(temperatures); -console.log(amplitude); - -// PROBLEM 2: -// Function should now receive 2 arrays of temps - -// 1) Understanding the problem -// - With 2 arrays, should we implement functionality twice? NO! Just merge two arrays - -// 2) Breaking up into sub-problems -// - Merge 2 arrays - -const calcTempAmplitudeNew = function (t1, t2) { - const temps = t1.concat(t2); - console.log(temps); - - let max = temps[0]; - let min = temps[0]; - - for (let i = 0; i < temps.length; i++) { - const curTemp = temps[i]; - if (typeof curTemp !== 'number') continue; - - if (curTemp > max) max = curTemp; - if (curTemp < min) min = curTemp; - } - console.log(max, min); - return max - min; -}; -const amplitudeNew = calcTempAmplitudeNew([3, 5, 1], [9, 0, 5]); -console.log(amplitudeNew); - - -/////////////////////////////////////// -// Debugging with the Console and Breakpoints -const measureKelvin = function () { - const measurement = { - type: 'temp', - unit: 'celsius', - - // C) FIX - // value: Number(prompt('Degrees celsius:')), - value: 10, - }; - - // B) FIND - console.table(measurement); - - // console.log(measurement.value); - // console.warn(measurement.value); - // console.error(measurement.value); - - const kelvin = measurement.value + 273; - return kelvin; -}; -// A) IDENTIFY -console.log(measureKelvin()); - -// Using a debugger -const calcTempAmplitudeBug = function (t1, t2) { - const temps = t1.concat(t2); - console.log(temps); - - let max = 0; - let min = 0; - - for (let i = 0; i < temps.length; i++) { - const curTemp = temps[i]; - if (typeof curTemp !== 'number') continue; - - if (curTemp > max) max = curTemp; - if (curTemp < min) min = curTemp; - } - console.log(max, min); - return max - min; -}; -const amplitudeBug = calcTempAmplitudeBug([3, 5, 1], [9, 4, 5]); -// A) IDENTIFY -console.log(amplitudeBug); -*/ - -/////////////////////////////////////// -// Coding Challenge #1 - -/* -Given an array of forecasted maximum temperatures, the thermometer displays a string with these temperatures. - -Example: [17, 21, 23] will print "... 17ºC in 1 days ... 21ºC in 2 days ... 23ºC in 3 days ..." - -Create a function 'printForecast' which takes in an array 'arr' and logs a string like the above to the console. - -Use the problem-solving framework: Understand the problem and break it up into sub-problems! - -TEST DATA 1: [17, 21, 23] -TEST DATA 2: [12, 5, -5, 0, 4] -*/ - -/* -// 1) Understanding the problem -// - Array transformed to string, separated by ... -// - What is the X days? Answer: index + 1 - -// 2) Breaking up into sub-problems -// - Transform array into string -// - Transform each element to string with ºC -// - Strings needs to contain day (index + 1) -// - Add ... between elements and start and end of string -// - Log string to console - -const data1 = [17, 21, 23]; -const data2 = [12, 5, -5, 0, 4]; - -console.log(`... ${data1[0]}ºC ... ${data1[1]}ºC ... ${data1[2]}ºC ...`); - -const printForecast = function (arr) { - let str = ''; - for (let i = 0; i < arr.length; i++) { - str += `${arr[i]}ºC in ${i + 1} days ... `; - } - console.log('...' + str); -}; -printForecast(data1); -*/ - -/////////////////////////////////////// -// Coding Challenge #2 With AI - -/* -Let's say you're building a time tracking application for freelancers. At some point in building this app, you need a function that receives daily work hours for a certain week, and returns: -1. Total hours worked -2. Average daily hours -3. The day with the most hours worked -4. Number of days worked -5. Whether the week was full-time (worked 35 hours or more) - -TEST DATA: [7.5, 8, 6.5, 0, 8.5, 4, 0] -*/ - -/* -// Written by ChatGPT -function analyzeWorkWeek(dailyHours) { - const daysOfWeek = [ - 'Monday', - 'Tuesday', - 'Wednesday', - 'Thursday', - 'Friday', - 'Saturday', - 'Sunday', - ]; - - // Validate that the input array has exactly 7 elements - if (!Array.isArray(dailyHours) || dailyHours.length !== 7) { - throw new Error('Input must be an array of exactly 7 daily work hours.'); - } - - // Calculate total hours worked - const totalHours = dailyHours.reduce((sum, hours) => sum + hours, 0); - - // Calculate average daily hours, rounded to one decimal place - const averageHours = Math.round((totalHours / dailyHours.length) * 10) / 10; - - // Find the day with the most hours worked - const maxHours = Math.max(...dailyHours); - const maxDayIndex = dailyHours.indexOf(maxHours); - const maxDay = daysOfWeek[maxDayIndex]; // Convert index to day name - - // Count the number of days worked - const daysWorked = dailyHours.filter(hours => hours > 0).length; - - // Check if the week was full-time (35 hours or more) - const isFullTime = totalHours >= 35; - - // Return the result object - return { - totalHours, - averageHours, - maxDay, // The name of the day with the most hours - daysWorked, - isFullTime, - }; -} - -const weeklyHours = [7.5, 8, 6.5, 0, 8.5, 5, 0]; -const analysis = analyzeWorkWeek(weeklyHours); -console.log(analysis); - -const weeklyHours2 = [7.5, 8, 6.5, 0, 8.5]; -const analysis2 = analyzeWorkWeek(weeklyHours2); -console.log(analysis2); -*/ diff --git a/03-Developer-Skills/starter/index.html b/03-Developer-Skills/starter/index.html deleted file mode 100644 index fe26bd2b09..0000000000 --- a/03-Developer-Skills/starter/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - Developer Skills & Editor Setup - - - -

Developer Skills & Editor Setup

- - - diff --git a/03-Developer-Skills/starter/script.js b/03-Developer-Skills/starter/script.js deleted file mode 100644 index 939b2a2446..0000000000 --- a/03-Developer-Skills/starter/script.js +++ /dev/null @@ -1,3 +0,0 @@ -// Remember, we're gonna use strict mode in all scripts now! -'use strict'; - diff --git a/04-HTML-CSS/final/index.html b/04-HTML-CSS/final/index.html deleted file mode 100644 index da7d3f055b..0000000000 --- a/04-HTML-CSS/final/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - Learning HTML & CSS - - -

JavaScript is fun, but so is HTML & CSS!

-

- You can learn JavaScript without HTML and CSS, but for DOM manipulation - it's useful to have some basic ideas of HTML & CSS. You can learn more - about it - on Udemy. -

- -

Another heading

-

- Just another paragraph -

- - - -
-

Your name here

-

Please fill in this form :)

- - - -
- - diff --git a/04-HTML-CSS/final/style.css b/04-HTML-CSS/final/style.css deleted file mode 100644 index d9730f2116..0000000000 --- a/04-HTML-CSS/final/style.css +++ /dev/null @@ -1,56 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -body { - background-color: rgb(255, 247, 201); - font-family: Arial; - font-size: 20px; - padding: 50px; -} - -h1 { - font-size: 35px; - margin-bottom: 25px; -} - -h2 { - margin-bottom: 20px; - text-align: center; -} - -p { - margin-bottom: 20px; -} - -.first { - color: red; -} - -#your-name { - background-color: rgb(255, 220, 105); - border: 5px solid #444; - width: 400px; - padding: 25px; - margin-top: 30px; -} - -input, -button { - padding: 10px; - font-size: 16px; -} - -a { - background-color: yellowgreen; -} - -#course-image { - width: 300px; -} - -#your-name h2 { - color: olivedrab; -} diff --git a/05-Guess-My-Number/final/.prettierrc b/05-Guess-My-Number/final/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/05-Guess-My-Number/final/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/05-Guess-My-Number/final/index.html b/05-Guess-My-Number/final/index.html deleted file mode 100644 index b25c17540a..0000000000 --- a/05-Guess-My-Number/final/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - Guess My Number! - - -
-

Guess My Number!

-

(Between 1 and 20)

- -
?
-
-
-
- - -
-
-

Start guessing...

-

💯 Score: 20

-

- 🥇 Highscore: 0 -

-
-
- - - diff --git a/05-Guess-My-Number/final/script.js b/05-Guess-My-Number/final/script.js deleted file mode 100644 index 8ca1e15c34..0000000000 --- a/05-Guess-My-Number/final/script.js +++ /dev/null @@ -1,110 +0,0 @@ -'use strict'; - -/* -console.log(document.querySelector('.message').textContent); -document.querySelector('.message').textContent = '🎉 Correct Number!'; - -document.querySelector('.number').textContent = 13; -document.querySelector('.score').textContent = 10; - -document.querySelector('.guess').value = 23; -console.log(document.querySelector('.guess').value); -*/ - -let secretNumber = Math.trunc(Math.random() * 20) + 1; -let score = 20; -let highscore = 0; - -const displayMessage = function (message) { - document.querySelector('.message').textContent = message; -}; - -document.querySelector('.check').addEventListener('click', function () { - const guess = Number(document.querySelector('.guess').value); - console.log(guess, typeof guess); - - // When there is no input - if (!guess) { - // document.querySelector('.message').textContent = '⛔️ No number!'; - displayMessage('⛔️ No number!'); - - // When player wins - } else if (guess === secretNumber) { - // document.querySelector('.message').textContent = '🎉 Correct Number!'; - displayMessage('🎉 Correct Number!'); - document.querySelector('.number').textContent = secretNumber; - - document.querySelector('body').style.backgroundColor = '#60b347'; - document.querySelector('.number').style.width = '30rem'; - - if (score > highscore) { - highscore = score; - document.querySelector('.highscore').textContent = highscore; - } - - // When guess is wrong - } else if (guess !== secretNumber) { - if (score > 1) { - // document.querySelector('.message').textContent = - // guess > secretNumber ? '📈 Too high!' : '📉 Too low!'; - displayMessage(guess > secretNumber ? '📈 Too high!' : '📉 Too low!'); - score--; - document.querySelector('.score').textContent = score; - } else { - // document.querySelector('.message').textContent = '💥 You lost the game!'; - displayMessage('💥 You lost the game!'); - document.querySelector('.score').textContent = 0; - } - } - - // // When guess is too high - // } else if (guess > secretNumber) { - // if (score > 1) { - // document.querySelector('.message').textContent = '📈 Too high!'; - // score--; - // document.querySelector('.score').textContent = score; - // } else { - // document.querySelector('.message').textContent = '💥 You lost the game!'; - // document.querySelector('.score').textContent = 0; - // } - - // // When guess is too low - // } else if (guess < secretNumber) { - // if (score > 1) { - // document.querySelector('.message').textContent = '📉 Too low!'; - // score--; - // document.querySelector('.score').textContent = score; - // } else { - // document.querySelector('.message').textContent = '💥 You lost the game!'; - // document.querySelector('.score').textContent = 0; - // } - // } -}); - -document.querySelector('.again').addEventListener('click', function () { - score = 20; - secretNumber = Math.trunc(Math.random() * 20) + 1; - - // document.querySelector('.message').textContent = 'Start guessing...'; - displayMessage('Start guessing...'); - document.querySelector('.score').textContent = score; - document.querySelector('.number').textContent = '?'; - document.querySelector('.guess').value = ''; - - document.querySelector('body').style.backgroundColor = '#222'; - document.querySelector('.number').style.width = '15rem'; -}); - -/////////////////////////////////////// -// Coding Challenge #1 - -/* -Implement a game rest functionality, so that the player can make a new guess! Here is how: - -1. Select the element with the 'again' class and attach a click event handler -2. In the handler function, restore initial values of the score and secretNumber variables -3. Restore the initial conditions of the message, number, score and guess input field -4. Also restore the original background color (#222) and number width (15rem) - -GOOD LUCK 😀 -*/ diff --git a/05-Guess-My-Number/final/style.css b/05-Guess-My-Number/final/style.css deleted file mode 100644 index dfed55a320..0000000000 --- a/05-Guess-My-Number/final/style.css +++ /dev/null @@ -1,119 +0,0 @@ -@import url('https://fonts.googleapis.com/css?family=Press+Start+2P&display=swap'); - -* { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -html { - font-size: 62.5%; - box-sizing: border-box; -} - -body { - font-family: 'Press Start 2P', sans-serif; - color: #eee; - background-color: #222; - /* background-color: #60b347; */ -} - -/* LAYOUT */ -header { - position: relative; - height: 35vh; - border-bottom: 7px solid #eee; -} - -main { - height: 65vh; - color: #eee; - display: flex; - align-items: center; - justify-content: space-around; -} - -.left { - width: 52rem; - display: flex; - flex-direction: column; - align-items: center; -} - -.right { - width: 52rem; - font-size: 2rem; -} - -/* ELEMENTS STYLE */ -h1 { - font-size: 4rem; - text-align: center; - position: absolute; - width: 100%; - top: 52%; - left: 50%; - transform: translate(-50%, -50%); -} - -.number { - background: #eee; - color: #333; - font-size: 6rem; - width: 15rem; - padding: 3rem 0rem; - text-align: center; - position: absolute; - bottom: 0; - left: 50%; - transform: translate(-50%, 50%); -} - -.between { - font-size: 1.4rem; - position: absolute; - top: 2rem; - right: 2rem; -} - -.again { - position: absolute; - top: 2rem; - left: 2rem; -} - -.guess { - background: none; - border: 4px solid #eee; - font-family: inherit; - color: inherit; - font-size: 5rem; - padding: 2.5rem; - width: 25rem; - text-align: center; - display: block; - margin-bottom: 3rem; -} - -.btn { - border: none; - background-color: #eee; - color: #222; - font-size: 2rem; - font-family: inherit; - padding: 2rem 3rem; - cursor: pointer; -} - -.btn:hover { - background-color: #ccc; -} - -.message { - margin-bottom: 8rem; - height: 3rem; -} - -.label-score { - margin-bottom: 2rem; -} diff --git a/05-Guess-My-Number/starter/.prettierrc b/05-Guess-My-Number/starter/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/05-Guess-My-Number/starter/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/05-Guess-My-Number/starter/index.html b/05-Guess-My-Number/starter/index.html deleted file mode 100644 index b25c17540a..0000000000 --- a/05-Guess-My-Number/starter/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - Guess My Number! - - -
-

Guess My Number!

-

(Between 1 and 20)

- -
?
-
-
-
- - -
-
-

Start guessing...

-

💯 Score: 20

-

- 🥇 Highscore: 0 -

-
-
- - - diff --git a/05-Guess-My-Number/starter/script.js b/05-Guess-My-Number/starter/script.js deleted file mode 100644 index ad9a93a7c1..0000000000 --- a/05-Guess-My-Number/starter/script.js +++ /dev/null @@ -1 +0,0 @@ -'use strict'; diff --git a/05-Guess-My-Number/starter/style.css b/05-Guess-My-Number/starter/style.css deleted file mode 100644 index dfed55a320..0000000000 --- a/05-Guess-My-Number/starter/style.css +++ /dev/null @@ -1,119 +0,0 @@ -@import url('https://fonts.googleapis.com/css?family=Press+Start+2P&display=swap'); - -* { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -html { - font-size: 62.5%; - box-sizing: border-box; -} - -body { - font-family: 'Press Start 2P', sans-serif; - color: #eee; - background-color: #222; - /* background-color: #60b347; */ -} - -/* LAYOUT */ -header { - position: relative; - height: 35vh; - border-bottom: 7px solid #eee; -} - -main { - height: 65vh; - color: #eee; - display: flex; - align-items: center; - justify-content: space-around; -} - -.left { - width: 52rem; - display: flex; - flex-direction: column; - align-items: center; -} - -.right { - width: 52rem; - font-size: 2rem; -} - -/* ELEMENTS STYLE */ -h1 { - font-size: 4rem; - text-align: center; - position: absolute; - width: 100%; - top: 52%; - left: 50%; - transform: translate(-50%, -50%); -} - -.number { - background: #eee; - color: #333; - font-size: 6rem; - width: 15rem; - padding: 3rem 0rem; - text-align: center; - position: absolute; - bottom: 0; - left: 50%; - transform: translate(-50%, 50%); -} - -.between { - font-size: 1.4rem; - position: absolute; - top: 2rem; - right: 2rem; -} - -.again { - position: absolute; - top: 2rem; - left: 2rem; -} - -.guess { - background: none; - border: 4px solid #eee; - font-family: inherit; - color: inherit; - font-size: 5rem; - padding: 2.5rem; - width: 25rem; - text-align: center; - display: block; - margin-bottom: 3rem; -} - -.btn { - border: none; - background-color: #eee; - color: #222; - font-size: 2rem; - font-family: inherit; - padding: 2rem 3rem; - cursor: pointer; -} - -.btn:hover { - background-color: #ccc; -} - -.message { - margin-bottom: 8rem; - height: 3rem; -} - -.label-score { - margin-bottom: 2rem; -} diff --git a/06-Modal/final/.prettierrc b/06-Modal/final/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/06-Modal/final/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/06-Modal/final/index.html b/06-Modal/final/index.html deleted file mode 100644 index cb0458612b..0000000000 --- a/06-Modal/final/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - Modal window - - - - - - - - - - - - diff --git a/06-Modal/final/script.js b/06-Modal/final/script.js deleted file mode 100644 index bc4028350e..0000000000 --- a/06-Modal/final/script.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -const modal = document.querySelector('.modal'); -const overlay = document.querySelector('.overlay'); -const btnCloseModal = document.querySelector('.close-modal'); -const btnsOpenModal = document.querySelectorAll('.show-modal'); - -const openModal = function () { - modal.classList.remove('hidden'); - overlay.classList.remove('hidden'); -}; - -const closeModal = function () { - modal.classList.add('hidden'); - overlay.classList.add('hidden'); -}; - -for (let i = 0; i < btnsOpenModal.length; i++) - btnsOpenModal[i].addEventListener('click', openModal); - -btnCloseModal.addEventListener('click', closeModal); -overlay.addEventListener('click', closeModal); - -document.addEventListener('keydown', function (e) { - // console.log(e.key); - - if (e.key === 'Escape' && !modal.classList.contains('hidden')) { - closeModal(); - } -}); diff --git a/06-Modal/final/style.css b/06-Modal/final/style.css deleted file mode 100644 index 47c6861f1e..0000000000 --- a/06-Modal/final/style.css +++ /dev/null @@ -1,85 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -html { - font-size: 62.5%; - box-sizing: border-box; -} - -body { - font-family: sans-serif; - color: #333; - line-height: 1.5; - height: 100vh; - position: relative; - display: flex; - align-items: flex-start; - justify-content: center; - background: linear-gradient(to top left, #28b487, #7dd56f); -} - -.show-modal { - font-size: 2rem; - font-weight: 600; - padding: 1.75rem 3.5rem; - margin: 5rem 2rem; - border: none; - background-color: #fff; - color: #444; - border-radius: 10rem; - cursor: pointer; -} - -.close-modal { - position: absolute; - top: 1.2rem; - right: 2rem; - font-size: 5rem; - color: #333; - cursor: pointer; - border: none; - background: none; -} - -h1 { - font-size: 2.5rem; - margin-bottom: 2rem; -} - -p { - font-size: 1.8rem; -} - -/* -------------------------- */ -/* CLASSES TO MAKE MODAL WORK */ -.hidden { - display: none; -} - -.modal { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 70%; - - background-color: white; - padding: 6rem; - border-radius: 5px; - box-shadow: 0 3rem 5rem rgba(0, 0, 0, 0.3); - z-index: 10; -} - -.overlay { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.6); - backdrop-filter: blur(3px); - z-index: 5; -} diff --git a/06-Modal/starter/.prettierrc b/06-Modal/starter/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/06-Modal/starter/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/06-Modal/starter/index.html b/06-Modal/starter/index.html deleted file mode 100644 index cb0458612b..0000000000 --- a/06-Modal/starter/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - Modal window - - - - - - - - - - - - diff --git a/06-Modal/starter/script.js b/06-Modal/starter/script.js deleted file mode 100644 index ad9a93a7c1..0000000000 --- a/06-Modal/starter/script.js +++ /dev/null @@ -1 +0,0 @@ -'use strict'; diff --git a/06-Modal/starter/style.css b/06-Modal/starter/style.css deleted file mode 100644 index 47c6861f1e..0000000000 --- a/06-Modal/starter/style.css +++ /dev/null @@ -1,85 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -html { - font-size: 62.5%; - box-sizing: border-box; -} - -body { - font-family: sans-serif; - color: #333; - line-height: 1.5; - height: 100vh; - position: relative; - display: flex; - align-items: flex-start; - justify-content: center; - background: linear-gradient(to top left, #28b487, #7dd56f); -} - -.show-modal { - font-size: 2rem; - font-weight: 600; - padding: 1.75rem 3.5rem; - margin: 5rem 2rem; - border: none; - background-color: #fff; - color: #444; - border-radius: 10rem; - cursor: pointer; -} - -.close-modal { - position: absolute; - top: 1.2rem; - right: 2rem; - font-size: 5rem; - color: #333; - cursor: pointer; - border: none; - background: none; -} - -h1 { - font-size: 2.5rem; - margin-bottom: 2rem; -} - -p { - font-size: 1.8rem; -} - -/* -------------------------- */ -/* CLASSES TO MAKE MODAL WORK */ -.hidden { - display: none; -} - -.modal { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 70%; - - background-color: white; - padding: 6rem; - border-radius: 5px; - box-shadow: 0 3rem 5rem rgba(0, 0, 0, 0.3); - z-index: 10; -} - -.overlay { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.6); - backdrop-filter: blur(3px); - z-index: 5; -} diff --git a/07-Pig-Game/final/.prettierrc b/07-Pig-Game/final/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/07-Pig-Game/final/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/07-Pig-Game/final/index.html b/07-Pig-Game/final/index.html deleted file mode 100644 index f72c8f4e92..0000000000 --- a/07-Pig-Game/final/index.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - Pig Game - - -
-
-

Player 1

-

43

-
-

Current

-

0

-
-
-
-

Player 2

-

24

-
-

Current

-

0

-
-
- - Playing dice - - - -
- - - diff --git a/07-Pig-Game/final/pig-game-flowchart.png b/07-Pig-Game/final/pig-game-flowchart.png deleted file mode 100644 index d807a5d40e..0000000000 Binary files a/07-Pig-Game/final/pig-game-flowchart.png and /dev/null differ diff --git a/07-Pig-Game/final/script.js b/07-Pig-Game/final/script.js deleted file mode 100644 index aa191032be..0000000000 --- a/07-Pig-Game/final/script.js +++ /dev/null @@ -1,98 +0,0 @@ -'use strict'; - -// Selecting elements -const player0El = document.querySelector('.player--0'); -const player1El = document.querySelector('.player--1'); -const score0El = document.querySelector('#score--0'); -const score1El = document.getElementById('score--1'); -const current0El = document.getElementById('current--0'); -const current1El = document.getElementById('current--1'); - -const diceEl = document.querySelector('.dice'); -const btnNew = document.querySelector('.btn--new'); -const btnRoll = document.querySelector('.btn--roll'); -const btnHold = document.querySelector('.btn--hold'); - -let scores, currentScore, activePlayer, playing; - -// Starting conditions -const init = function () { - scores = [0, 0]; - currentScore = 0; - activePlayer = 0; - playing = true; - - score0El.textContent = 0; - score1El.textContent = 0; - current0El.textContent = 0; - current1El.textContent = 0; - - diceEl.classList.add('hidden'); - player0El.classList.remove('player--winner'); - player1El.classList.remove('player--winner'); - player0El.classList.add('player--active'); - player1El.classList.remove('player--active'); -}; -init(); - -const switchPlayer = function () { - document.getElementById(`current--${activePlayer}`).textContent = 0; - currentScore = 0; - activePlayer = activePlayer === 0 ? 1 : 0; - player0El.classList.toggle('player--active'); - player1El.classList.toggle('player--active'); -}; - -// Rolling dice functionality -btnRoll.addEventListener('click', function () { - if (playing) { - // 1. Generating a random dice roll - const dice = Math.trunc(Math.random() * 6) + 1; - - // 2. Display dice - diceEl.classList.remove('hidden'); - diceEl.src = `dice-${dice}.png`; - - // 3. Check for rolled 1 - if (dice !== 1) { - // Add dice to current score - currentScore += dice; - document.getElementById( - `current--${activePlayer}` - ).textContent = currentScore; - } else { - // Switch to next player - switchPlayer(); - } - } -}); - -btnHold.addEventListener('click', function () { - if (playing) { - // 1. Add current score to active player's score - scores[activePlayer] += currentScore; - // scores[1] = scores[1] + currentScore - - document.getElementById(`score--${activePlayer}`).textContent = - scores[activePlayer]; - - // 2. Check if player's score is >= 100 - if (scores[activePlayer] >= 100) { - // Finish the game - playing = false; - diceEl.classList.add('hidden'); - - document - .querySelector(`.player--${activePlayer}`) - .classList.add('player--winner'); - document - .querySelector(`.player--${activePlayer}`) - .classList.remove('player--active'); - } else { - // Switch to the next player - switchPlayer(); - } - } -}); - -btnNew.addEventListener('click', init); diff --git a/07-Pig-Game/final/style.css b/07-Pig-Game/final/style.css deleted file mode 100644 index 555ea263e0..0000000000 --- a/07-Pig-Game/final/style.css +++ /dev/null @@ -1,171 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=Nunito&display=swap'); - -* { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -html { - font-size: 62.5%; - box-sizing: border-box; -} - -body { - font-family: 'Nunito', sans-serif; - font-weight: 400; - height: 100vh; - color: #333; - background-image: linear-gradient(to top left, #753682 0%, #bf2e34 100%); - display: flex; - align-items: center; - justify-content: center; -} - -/* LAYOUT */ -main { - position: relative; - width: 100rem; - height: 60rem; - background-color: rgba(255, 255, 255, 0.35); - backdrop-filter: blur(200px); - filter: blur(); - box-shadow: 0 3rem 5rem rgba(0, 0, 0, 0.25); - border-radius: 9px; - overflow: hidden; - display: flex; -} - -.player { - flex: 50%; - padding: 9rem; - display: flex; - flex-direction: column; - align-items: center; - transition: all 0.75s; -} - -/* ELEMENTS */ -.name { - position: relative; - font-size: 4rem; - text-transform: uppercase; - letter-spacing: 1px; - word-spacing: 2px; - font-weight: 300; - margin-bottom: 1rem; -} - -.score { - font-size: 8rem; - font-weight: 300; - color: #c7365f; - margin-bottom: auto; -} - -.player--active { - background-color: rgba(255, 255, 255, 0.4); -} -.player--active .name { - font-weight: 700; -} -.player--active .score { - font-weight: 400; -} - -.player--active .current { - opacity: 1; -} - -.current { - background-color: #c7365f; - opacity: 0.8; - border-radius: 9px; - color: #fff; - width: 65%; - padding: 2rem; - text-align: center; - transition: all 0.75s; -} - -.current-label { - text-transform: uppercase; - margin-bottom: 1rem; - font-size: 1.7rem; - color: #ddd; -} - -.current-score { - font-size: 3.5rem; -} - -/* ABSOLUTE POSITIONED ELEMENTS */ -.btn { - position: absolute; - left: 50%; - transform: translateX(-50%); - color: #444; - background: none; - border: none; - font-family: inherit; - font-size: 1.8rem; - text-transform: uppercase; - cursor: pointer; - font-weight: 400; - transition: all 0.2s; - - background-color: white; - background-color: rgba(255, 255, 255, 0.6); - backdrop-filter: blur(10px); - - padding: 0.7rem 2.5rem; - border-radius: 50rem; - box-shadow: 0 1.75rem 3.5rem rgba(0, 0, 0, 0.1); -} - -.btn::first-letter { - font-size: 2.4rem; - display: inline-block; - margin-right: 0.7rem; -} - -.btn--new { - top: 4rem; -} -.btn--roll { - top: 39.3rem; -} -.btn--hold { - top: 46.1rem; -} - -.btn:active { - transform: translate(-50%, 3px); - box-shadow: 0 1rem 2rem rgba(0, 0, 0, 0.15); -} - -.btn:focus { - outline: none; -} - -.dice { - position: absolute; - left: 50%; - top: 16.5rem; - transform: translateX(-50%); - height: 10rem; - box-shadow: 0 2rem 5rem rgba(0, 0, 0, 0.2); -} - -.player--winner { - background-color: #2f2f2f; -} - -.player--winner .name { - font-weight: 700; - color: #c7365f; -} - -.hidden { - display: none; -} diff --git a/07-Pig-Game/starter/.prettierrc b/07-Pig-Game/starter/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/07-Pig-Game/starter/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/07-Pig-Game/starter/index.html b/07-Pig-Game/starter/index.html deleted file mode 100644 index f72c8f4e92..0000000000 --- a/07-Pig-Game/starter/index.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - Pig Game - - -
-
-

Player 1

-

43

-
-

Current

-

0

-
-
-
-

Player 2

-

24

-
-

Current

-

0

-
-
- - Playing dice - - - -
- - - diff --git a/07-Pig-Game/starter/pig-game-flowchart.png b/07-Pig-Game/starter/pig-game-flowchart.png deleted file mode 100644 index 2e51a84f36..0000000000 Binary files a/07-Pig-Game/starter/pig-game-flowchart.png and /dev/null differ diff --git a/07-Pig-Game/starter/script.js b/07-Pig-Game/starter/script.js deleted file mode 100644 index ad9a93a7c1..0000000000 --- a/07-Pig-Game/starter/script.js +++ /dev/null @@ -1 +0,0 @@ -'use strict'; diff --git a/07-Pig-Game/starter/style.css b/07-Pig-Game/starter/style.css deleted file mode 100644 index dcf788f011..0000000000 --- a/07-Pig-Game/starter/style.css +++ /dev/null @@ -1,167 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=Nunito&display=swap'); - -* { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -html { - font-size: 62.5%; - box-sizing: border-box; -} - -body { - font-family: 'Nunito', sans-serif; - font-weight: 400; - height: 100vh; - color: #333; - background-image: linear-gradient(to top left, #753682 0%, #bf2e34 100%); - display: flex; - align-items: center; - justify-content: center; -} - -/* LAYOUT */ -main { - position: relative; - width: 100rem; - height: 60rem; - background-color: rgba(255, 255, 255, 0.35); - backdrop-filter: blur(200px); - filter: blur(); - box-shadow: 0 3rem 5rem rgba(0, 0, 0, 0.25); - border-radius: 9px; - overflow: hidden; - display: flex; -} - -.player { - flex: 50%; - padding: 9rem; - display: flex; - flex-direction: column; - align-items: center; - transition: all 0.75s; -} - -/* ELEMENTS */ -.name { - position: relative; - font-size: 4rem; - text-transform: uppercase; - letter-spacing: 1px; - word-spacing: 2px; - font-weight: 300; - margin-bottom: 1rem; -} - -.score { - font-size: 8rem; - font-weight: 300; - color: #c7365f; - margin-bottom: auto; -} - -.player--active { - background-color: rgba(255, 255, 255, 0.4); -} -.player--active .name { - font-weight: 700; -} -.player--active .score { - font-weight: 400; -} - -.player--active .current { - opacity: 1; -} - -.current { - background-color: #c7365f; - opacity: 0.8; - border-radius: 9px; - color: #fff; - width: 65%; - padding: 2rem; - text-align: center; - transition: all 0.75s; -} - -.current-label { - text-transform: uppercase; - margin-bottom: 1rem; - font-size: 1.7rem; - color: #ddd; -} - -.current-score { - font-size: 3.5rem; -} - -/* ABSOLUTE POSITIONED ELEMENTS */ -.btn { - position: absolute; - left: 50%; - transform: translateX(-50%); - color: #444; - background: none; - border: none; - font-family: inherit; - font-size: 1.8rem; - text-transform: uppercase; - cursor: pointer; - font-weight: 400; - transition: all 0.2s; - - background-color: white; - background-color: rgba(255, 255, 255, 0.6); - backdrop-filter: blur(10px); - - padding: 0.7rem 2.5rem; - border-radius: 50rem; - box-shadow: 0 1.75rem 3.5rem rgba(0, 0, 0, 0.1); -} - -.btn::first-letter { - font-size: 2.4rem; - display: inline-block; - margin-right: 0.7rem; -} - -.btn--new { - top: 4rem; -} -.btn--roll { - top: 39.3rem; -} -.btn--hold { - top: 46.1rem; -} - -.btn:active { - transform: translate(-50%, 3px); - box-shadow: 0 1rem 2rem rgba(0, 0, 0, 0.15); -} - -.btn:focus { - outline: none; -} - -.dice { - position: absolute; - left: 50%; - top: 16.5rem; - transform: translateX(-50%); - height: 10rem; - box-shadow: 0 2rem 5rem rgba(0, 0, 0, 0.2); -} - -.player--winner { - background-color: #2f2f2f; -} - -.player--winner .name { - font-weight: 700; - color: #c7365f; -} diff --git a/08-Behind-the-Scenes/final/.prettierrc b/08-Behind-the-Scenes/final/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/08-Behind-the-Scenes/final/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/08-Behind-the-Scenes/final/index.html b/08-Behind-the-Scenes/final/index.html deleted file mode 100644 index 7bd55f4ef0..0000000000 --- a/08-Behind-the-Scenes/final/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - How JavaScript Works Behind the Scenes - - - -

How JavaScript Works Behind the Scenes

- - - diff --git a/08-Behind-the-Scenes/final/script.js b/08-Behind-the-Scenes/final/script.js deleted file mode 100644 index d64bee3d39..0000000000 --- a/08-Behind-the-Scenes/final/script.js +++ /dev/null @@ -1,223 +0,0 @@ -'use strict'; - -/////////////////////////////////////// -// Scoping in Practice - -/* -function calcAge(birthYear) { - const age = 2037 - birthYear; - - function printAge() { - let output = `${firstName}, you are ${age}, born in ${birthYear}`; - console.log(output); - - if (birthYear >= 1981 && birthYear <= 1996) { - var millenial = true; - // Creating NEW variable with same name as outer scope's variable - const firstName = 'Steven'; - - // Reasssigning outer scope's variable - output = 'NEW OUTPUT!'; - - const str = `Oh, and you're a millenial, ${firstName}`; - console.log(str); - - function add(a, b) { - return a + b; - } - } - // console.log(str); - console.log(millenial); - // console.log(add(2, 3)); - console.log(output); - } - printAge(); - - return age; -} - -const firstName = 'Jonas'; -calcAge(1991); -// console.log(age); -// printAge(); - - -/////////////////////////////////////// -// Hoisting and TDZ in Practice - -// Variables -console.log(me); -// console.log(job); -// console.log(year); - -var me = 'Jonas'; -let job = 'teacher'; -const year = 1991; - -// Functions -console.log(addDecl(2, 3)); -// console.log(addExpr(2, 3)); -console.log(addArrow); -// console.log(addArrow(2, 3)); - -function addDecl(a, b) { - return a + b; -} - -const addExpr = function (a, b) { - return a + b; -}; - -var addArrow = (a, b) => a + b; - -// Example -console.log(undefined); -if (!numProducts) deleteShoppingCart(); - -var numProducts = 10; - -function deleteShoppingCart() { - console.log('All products deleted!'); -} - -var x = 1; -let y = 2; -const z = 3; - -console.log(x === window.x); -console.log(y === window.y); -console.log(z === window.z); - - -/////////////////////////////////////// -// The this Keyword in Practice -console.log(this); - -const calcAge = function (birthYear) { - console.log(2037 - birthYear); - console.log(this); -}; -calcAge(1991); - -const calcAgeArrow = birthYear => { - console.log(2037 - birthYear); - console.log(this); -}; -calcAgeArrow(1980); - -const jonas = { - year: 1991, - calcAge: function () { - console.log(this); - console.log(2037 - this.year); - }, -}; -jonas.calcAge(); - -const matilda = { - year: 2017, -}; - -matilda.calcAge = jonas.calcAge; -matilda.calcAge(); - -const f = jonas.calcAge; -f(); - - -/////////////////////////////////////// -// Regular Functions vs. Arrow Functions -// var firstName = 'Matilda'; - -const jonas = { - firstName: 'Jonas', - year: 1991, - calcAge: function () { - // console.log(this); - console.log(2037 - this.year); - - // Solution 1 - // const self = this; // self or that - // const isMillenial = function () { - // console.log(self); - // console.log(self.year >= 1981 && self.year <= 1996); - // }; - - // Solution 2 - const isMillenial = () => { - console.log(this); - console.log(this.year >= 1981 && this.year <= 1996); - }; - isMillenial(); - }, - - greet: () => { - console.log(this); - console.log(`Hey ${this.firstName}`); - }, -}; -jonas.greet(); -jonas.calcAge(); - -// arguments keyword -const addExpr = function (a, b) { - console.log(arguments); - return a + b; -}; -addExpr(2, 5); -addExpr(2, 5, 8, 12); - -var addArrow = (a, b) => { - console.log(arguments); - return a + b; -}; -addArrow(2, 5, 8); - - -/////////////////////////////////////// -// Object References in Practice (Shallow vs. Deep Copies) - -const jessica1 = { - firstName: 'Jessica', - lastName: 'Williams', - age: 27, -}; - -function marryPerson(originalPerson, newLastName) { - originalPerson.lastName = newLastName; - return originalPerson; -} - -const marriedJessica = marryPerson(jessica1, 'Davis'); - -// const marriedJessica = jessica1; -// marriedJessica.lastName = 'Davis'; - -console.log('Before:', jessica1); -console.log('After:', marriedJessica); - -const jessica = { - firstName: 'Jessica', - lastName: 'Williams', - age: 27, - familiy: ['Alice', 'Bob'], -}; - -// Shallow copy -const jessicaCopy = { ...jessica }; -jessicaCopy.lastName = 'Davis'; - -// jessicaCopy.familiy.push('Mary'); -// jessicaCopy.familiy.push('John'); - -// console.log('Before:', jessica); -// console.log('After:', jessicaCopy); - -// Deep copy/clone -const jessicaClone = structuredClone(jessica); -jessicaClone.familiy.push('Mary'); -jessicaClone.familiy.push('John'); - -console.log('Original:', jessica); -console.log('Clone:', jessicaClone); -*/ diff --git a/08-Behind-the-Scenes/starter/.prettierrc b/08-Behind-the-Scenes/starter/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/08-Behind-the-Scenes/starter/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/08-Behind-the-Scenes/starter/index.html b/08-Behind-the-Scenes/starter/index.html deleted file mode 100644 index 7bd55f4ef0..0000000000 --- a/08-Behind-the-Scenes/starter/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - How JavaScript Works Behind the Scenes - - - -

How JavaScript Works Behind the Scenes

- - - diff --git a/08-Behind-the-Scenes/starter/script.js b/08-Behind-the-Scenes/starter/script.js deleted file mode 100644 index ad9a93a7c1..0000000000 --- a/08-Behind-the-Scenes/starter/script.js +++ /dev/null @@ -1 +0,0 @@ -'use strict'; diff --git a/09-Data-Structures-Operators/final/.prettierrc b/09-Data-Structures-Operators/final/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/09-Data-Structures-Operators/final/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/09-Data-Structures-Operators/final/index.html b/09-Data-Structures-Operators/final/index.html deleted file mode 100644 index 7d248b95f5..0000000000 --- a/09-Data-Structures-Operators/final/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - Data Structures and Modern Operators - - - -

Data Structures and Modern Operators

- - - diff --git a/09-Data-Structures-Operators/final/script.js b/09-Data-Structures-Operators/final/script.js deleted file mode 100644 index 9ed9538bbb..0000000000 --- a/09-Data-Structures-Operators/final/script.js +++ /dev/null @@ -1,965 +0,0 @@ -'use strict'; - -const weekdays = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']; -const openingHours = { - [weekdays[3]]: { - open: 12, - close: 22, - }, - [weekdays[4]]: { - open: 11, - close: 23, - }, - [weekdays[5]]: { - open: 0, // Open 24 hours - close: 24, - }, -}; - -const restaurant = { - name: 'Classico Italiano', - location: 'Via Angelo Tavanti 23, Firenze, Italy', - categories: ['Italian', 'Pizzeria', 'Vegetarian', 'Organic'], - starterMenu: ['Focaccia', 'Bruschetta', 'Garlic Bread', 'Caprese Salad'], - mainMenu: ['Pizza', 'Pasta', 'Risotto'], - - // ES6 enhanced object literals - openingHours, - - order(starterIndex, mainIndex) { - return [this.starterMenu[starterIndex], this.mainMenu[mainIndex]]; - }, - - orderDelivery({ starterIndex = 1, mainIndex = 0, time = '20:00', address }) { - console.log( - `Order received! ${this.starterMenu[starterIndex]} and ${this.mainMenu[mainIndex]} will be delivered to ${address} at ${time}` - ); - }, - - orderPasta(ing1, ing2, ing3) { - console.log( - `Here is your declicious pasta with ${ing1}, ${ing2} and ${ing3}` - ); - }, - - orderPizza(mainIngredient, ...otherIngredients) { - console.log(mainIngredient); - console.log(otherIngredients); - }, -}; - -/* -/////////////////////////////////////// -// String Methods Practice - -const flights = - '_Delayed_Departure;fao93766109;txl2133758440;11:25+_Arrival;bru0943384722;fao93766109;11:45+_Delayed_Arrival;hel7439299980;fao93766109;12:05+_Departure;fao93766109;lis2323639855;12:30'; - -// 🔴 Delayed Departure from FAO to TXL (11h25) -// Arrival from BRU to FAO (11h45) -// 🔴 Delayed Arrival from HEL to FAO (12h05) -// Departure from FAO to LIS (12h30) - -const getCode = str => str.slice(0, 3).toUpperCase(); - -for (const flight of flights.split('+')) { - const [type, from, to, time] = flight.split(';'); - const output = `${type.startsWith('_Delayed') ? '🔴' : ''}${type.replaceAll( - '_', - ' ' - )} ${getCode(from)} ${getCode(to)} (${time.replace(':', 'h')})`.padStart(36); - console.log(output); -} - -/////////////////////////////////////// -// Coding Challenge #4 - - -Write a program that receives a list of variable names written in underscore_case and convert them to camelCase. - -The input will come from a textarea inserted into the DOM (see code below), and conversion will happen when the button is pressed. - -THIS TEST DATA (pasted to textarea) -underscore_case - first_name -Some_Variable - calculate_AGE -delayed_departure - -SHOULD PRODUCE THIS OUTPUT (5 separate console.log outputs) -underscoreCase ✅ -firstName ✅✅ -someVariable ✅✅✅ -calculateAge ✅✅✅✅ -delayedDeparture ✅✅✅✅✅ - -HINT 1: Remember which character defines a new line in the textarea 😉 -HINT 2: The solution only needs to work for a variable made out of 2 words, like a_b -HINT 3: Start without worrying about the ✅. Tackle that only after you have the variable name conversion working 😉 -HINT 4: This challenge is difficult on purpose, so start watching the solution in case you're stuck. Then pause and continue! - -Afterwards, test with your own test data! - -GOOD LUCK 😀 -*/ - -/* -document.body.append(document.createElement('textarea')); -document.body.append(document.createElement('button')); - -document.querySelector('button').addEventListener('click', function () { - const text = document.querySelector('textarea').value; - const rows = text.split('\n'); - - for (const [i, row] of rows.entries()) { - const [first, second] = row.toLowerCase().trim().split('_'); - - const output = `${first}${second.replace( - second[0], - second[0].toUpperCase() - )}`; - console.log(`${output.padEnd(20)}${'✅'.repeat(i + 1)}`); - } -}); -*/ - -/* -/////////////////////////////////////// -// Working With Strings - Part 3 - -// Split and join -console.log('a+very+nice+string'.split('+')); -console.log('Jonas Schmedtmann'.split(' ')); - -const [firstName, lastName] = 'Jonas Schmedtmann'.split(' '); - -const newName = ['Mr.', firstName, lastName.toUpperCase()].join(' '); -console.log(newName); - -const capitalizeName = function (name) { - const names = name.split(' '); - const namesUpper = []; - - for (const n of names) { - // namesUpper.push(n[0].toUpperCase() + n.slice(1)); - namesUpper.push(n.replace(n[0], n[0].toUpperCase())); - } - console.log(namesUpper.join(' ')); -}; - -capitalizeName('jessica ann smith davis'); -capitalizeName('jonas schmedtmann'); - -// Padding -const message = 'Go to gate 23!'; -console.log(message.padStart(20, '+').padEnd(30, '+')); -console.log('Jonas'.padStart(20, '+').padEnd(30, '+')); - -const maskCreditCard = function (number) { - const str = number + ''; - const last = str.slice(-4); - return last.padStart(str.length, '*'); -}; - -console.log(maskCreditCard(64637836)); -console.log(maskCreditCard(43378463864647384)); -console.log(maskCreditCard('334859493847755774747')); - -// Repeat -const message2 = 'Bad waether... All Departues Delayed... '; -console.log(message2.repeat(5)); - -const planesInLine = function (n) { - console.log(`There are ${n} planes in line ${'🛩'.repeat(n)}`); -}; -planesInLine(5); -planesInLine(3); -planesInLine(12); - - -/////////////////////////////////////// -// Working With Strings - Part 2 - -const airline = 'TAP Air Portugal'; - -console.log(airline.toLowerCase()); -console.log(airline.toUpperCase()); - -// Fix capitalization in name -const passenger = 'jOnAS'; // Jonas -const passengerLower = passenger.toLowerCase(); -const passengerCorrect = - passengerLower[0].toUpperCase() + passengerLower.slice(1); -console.log(passengerCorrect); - -// Comparing emails -const email = 'hello@jonas.io'; -const loginEmail = ' Hello@Jonas.Io \n'; - -// const lowerEmail = loginEmail.toLowerCase(); -// const trimmedEmail = lowerEmail.trim(); -const normalizedEmail = loginEmail.toLowerCase().trim(); -console.log(normalizedEmail); -console.log(email === normalizedEmail); - -// replacing -const priceGB = '288,97£'; -const priceUS = priceGB.replace('£', '$').replace(',', '.'); -console.log(priceUS); - -const announcement = - 'All passengers come to boarding door 23. Boarding door 23!'; - -console.log(announcement.replace('door', 'gate')); -console.log(announcement.replaceAll('door', 'gate')); - -// Alternative solution to replaceAll with regular expression -console.log(announcement.replace(/door/g, 'gate')); - -// Booleans -const plane = 'Airbus A320neo'; -console.log(plane.includes('A320')); -console.log(plane.includes('Boeing')); -console.log(plane.startsWith('Airb')); - -if (plane.startsWith('Airbus') && plane.endsWith('neo')) { - console.log('Part of the NEW ARirbus family'); -} - -// Practice exercise -const checkBaggage = function (items) { - const baggage = items.toLowerCase(); - - if (baggage.includes('knife') || baggage.includes('gun')) { - console.log('You are NOT allowed on board'); - } else { - console.log('Welcome aboard!'); - } -}; - -checkBaggage('I have a laptop, some Food and a pocket Knife'); -checkBaggage('Socks and camera'); -checkBaggage('Got some snacks and a gun for protection'); - - -/////////////////////////////////////// -// Working With Strings - Part 1 -const airline = 'TAP Air Portugal'; -const plane = 'A320'; - -console.log(plane[0]); -console.log(plane[1]); -console.log(plane[2]); -console.log('B737'[0]); - -console.log(airline.length); -console.log('B737'.length); - -console.log(airline.indexOf('r')); -console.log(airline.lastIndexOf('r')); -console.log(airline.indexOf('portugal')); - -console.log(airline.slice(4)); -console.log(airline.slice(4, 7)); - -console.log(airline.slice(0, airline.indexOf(' '))); -console.log(airline.slice(airline.lastIndexOf(' ') + 1)); - -console.log(airline.slice(-2)); -console.log(airline.slice(1, -1)); - -const checkMiddleSeat = function (seat) { - // B and E are middle seats - const s = seat.slice(-1); - if (s === 'B' || s === 'E') console.log('You got the middle seat 😬'); - else console.log('You got lucky 😎'); -}; - -checkMiddleSeat('11B'); -checkMiddleSeat('23C'); -checkMiddleSeat('3E'); - -console.log(new String('jonas')); -console.log(typeof new String('jonas')); - -console.log(typeof new String('jonas').slice(1)); -*/ - -/////////////////////////////////////// -// Coding Challenge #3 - -/* -Let's continue with our football betting app! This time, we have a map with a log of the events that happened during the game. The values are the events themselves, and the keys are the minutes in which each event happened (a football game has 90 minutes plus some extra time). - -1. Create an array 'events' of the different game events that happened (no duplicates) -2. After the game has finished, is was found that the yellow card from minute 64 was unfair. So remove this event from the game events log. -3. Print the following string to the console: "An event happened, on average, every 9 minutes" (keep in mind that a game has 90 minutes) -4. Loop over the events and log them to the console, marking whether it's in the first half or second half (after 45 min) of the game, like this: - [FIRST HALF] 17: ⚽️ GOAL - -GOOD LUCK 😀 -*/ - -const gameEvents = new Map([ - [17, '⚽️ GOAL'], - [36, '🔁 Substitution'], - [47, '⚽️ GOAL'], - [61, '🔁 Substitution'], - [64, '🔶 Yellow card'], - [69, '🔴 Red card'], - [70, '🔁 Substitution'], - [72, '🔁 Substitution'], - [76, '⚽️ GOAL'], - [80, '⚽️ GOAL'], - [92, '🔶 Yellow card'], -]); - -/* -// 1. -const events = [...new Set(gameEvents.values())]; -console.log(events); - -// 2. -gameEvents.delete(64); - -// 3. -console.log( - `An event happened, on average, every ${90 / gameEvents.size} minutes` -); -const time = [...gameEvents.keys()].pop(); -console.log(time); -console.log( - `An event happened, on average, every ${time / gameEvents.size} minutes` -); - -// 4. -for (const [min, event] of gameEvents) { - const half = min <= 45 ? 'FIRST' : 'SECOND'; - console.log(`[${half} HALF] ${min}: ${event}`); -} -*/ - -/* -/////////////////////////////////////// -// Maps: Iteration -const question = new Map([ - ['question', 'What is the best programming language in the world?'], - [1, 'C'], - [2, 'Java'], - [3, 'JavaScript'], - ['correct', 3], - [true, 'Correct 🎉'], - [false, 'Try again!'], -]); -console.log(question); - -// Convert object to map -console.log(Object.entries(openingHours)); -const hoursMap = new Map(Object.entries(openingHours)); -console.log(hoursMap); - -// Quiz app -console.log(question.get('question')); -for (const [key, value] of question) { - if (typeof key === 'number') console.log(`Answer ${key}: ${value}`); -} -// const answer = Number(prompt('Your answer')); -const answer = 3; -console.log(answer); - -console.log(question.get(question.get('correct') === answer)); - -// Convert map to array -console.log([...question]); -// console.log(question.entries()); -console.log([...question.keys()]); -console.log([...question.values()]); - - -/////////////////////////////////////// -// Maps: Fundamentals -const rest = new Map(); -rest.set('name', 'Classico Italiano'); -rest.set(1, 'Firenze, Italy'); -console.log(rest.set(2, 'Lisbon, Portugal')); - -rest - .set('categories', ['Italian', 'Pizzeria', 'Vegetarian', 'Organic']) - .set('open', 11) - .set('close', 23) - .set(true, 'We are open :D') - .set(false, 'We are closed :('); - -console.log(rest.get('name')); -console.log(rest.get(true)); -console.log(rest.get(1)); - -const time = 8; -console.log(rest.get(time > rest.get('open') && time < rest.get('close'))); - -console.log(rest.has('categories')); -rest.delete(2); -// rest.clear(); - -const arr = [1, 2]; -rest.set(arr, 'Test'); -rest.set(document.querySelector('h1'), 'Heading'); -console.log(rest); -console.log(rest.size); - -console.log(rest.get(arr)); - - -/////////////////////////////////////// -// New Operations to Make Sets Useful! - -const italianFoods = new Set([ - 'pasta', - 'gnocchi', - 'tomatoes', - 'olive oil', - 'garlic', - 'basil', -]); - -const mexicanFoods = new Set([ - 'tortillas', - 'beans', - 'rice', - 'tomatoes', - 'avocado', - 'garlic', -]); - -const commonFoods = italianFoods.intersection(mexicanFoods); -console.log('Intersection:', commonFoods); -console.log([...commonFoods]); - -const italianMexicanFusion = italianFoods.union(mexicanFoods); -console.log('Union:', italianMexicanFusion); - -console.log([...new Set([...italianFoods, ...mexicanFoods])]); - -const uniqueItalianFoods = italianFoods.difference(mexicanFoods); -console.log('Difference italian', uniqueItalianFoods); - -const uniqueMexicanFoods = mexicanFoods.difference(italianFoods); -console.log('Difference mexican', uniqueMexicanFoods); - -const uniqueItalianAndMexicanFoods = - italianFoods.symmetricDifference(mexicanFoods); -console.log(uniqueItalianAndMexicanFoods); - -console.log(italianFoods.isDisjointFrom(mexicanFoods)); - - -/////////////////////////////////////// -// Sets -const ordersSet = new Set([ - 'Pasta', - 'Pizza', - 'Pizza', - 'Risotto', - 'Pasta', - 'Pizza', -]); -console.log(ordersSet); - -console.log(new Set('Jonas')); - -console.log(ordersSet.size); -console.log(ordersSet.has('Pizza')); -console.log(ordersSet.has('Bread')); -ordersSet.add('Garlic Bread'); -ordersSet.add('Garlic Bread'); -ordersSet.delete('Risotto'); -// ordersSet.clear(); -console.log(ordersSet); - -for (const order of ordersSet) console.log(order); - -// Example -const staff = ['Waiter', 'Chef', 'Waiter', 'Manager', 'Chef', 'Waiter']; -const staffUnique = [...new Set(staff)]; -console.log(staffUnique); - -console.log( - new Set(['Waiter', 'Chef', 'Waiter', 'Manager', 'Chef', 'Waiter']).size -); - -console.log(new Set('jonasschmedtmann').size); -*/ - -/////////////////////////////////////// -// Coding Challenge #2 - -/* -Let's continue with our football betting app! - -1. Loop over the game.scored array and print each player name to the console, along with the goal number (Example: "Goal 1: Lewandowski") -2. Use a loop to calculate the average odd and log it to the console (We already studied how to calculate averages, you can go check if you don't remember) -3. Print the 3 odds to the console, but in a nice formatted way, exaclty like this: - Odd of victory Bayern Munich: 1.33 - Odd of draw: 3.25 - Odd of victory Borrussia Dortmund: 6.5 -Get the team names directly from the game object, don't hardcode them (except for "draw"). HINT: Note how the odds and the game objects have the same property names 😉 - -BONUS: Create an object called 'scorers' which contains the names of the players who scored as properties, and the number of goals as the value. In this game, it will look like this: - { - Gnarby: 1, - Hummels: 1, - Lewandowski: 2 - } - -GOOD LUCK 😀 -*/ - -const game = { - team1: 'Bayern Munich', - team2: 'Borrussia Dortmund', - players: [ - [ - 'Neuer', - 'Pavard', - 'Martinez', - 'Alaba', - 'Davies', - 'Kimmich', - 'Goretzka', - 'Coman', - 'Muller', - 'Gnarby', - 'Lewandowski', - ], - [ - 'Burki', - 'Schulz', - 'Hummels', - 'Akanji', - 'Hakimi', - 'Weigl', - 'Witsel', - 'Hazard', - 'Brandt', - 'Sancho', - 'Gotze', - ], - ], - score: '4:0', - scored: ['Lewandowski', 'Gnarby', 'Lewandowski', 'Hummels'], - date: 'Nov 9th, 2037', - odds: { - team1: 1.33, - x: 3.25, - team2: 6.5, - }, -}; - -/* -// 1. -for (const [i, player] of game.scored.entries()) - console.log(`Goal ${i + 1}: ${player}`); - -// 2. -const odds = Object.values(game.odds); -let average = 0; -for (const odd of odds) average += odd; -average /= odds.length; -console.log(average); - -// 3. -for (const [team, odd] of Object.entries(game.odds)) { - const teamStr = team === 'x' ? 'draw' : `victory ${game[team]}`; - console.log(`Odd of ${teamStr} ${odd}`); -} - -// Odd of victory Bayern Munich: 1.33 -// Odd of draw: 3.25 -// Odd of victory Borrussia Dortmund: 6.5 - -// BONUS -// So the solution is to loop over the array, and add the array elements as object properties, and then increase the count as we encounter a new occurence of a certain element -const scorers = {}; -for (const player of game.scored) { - scorers[player] ? scorers[player]++ : (scorers[player] = 1); -} -*/ - -/* -/////////////////////////////////////// -// Looping Objects: Object Keys, Values, and Entries - -// Property NAMES -const properties = Object.keys(openingHours); -console.log(properties); - -let openStr = `We are open on ${properties.length} days: `; -for (const day of properties) { - openStr += `${day}, `; -} -console.log(openStr); - -// Property VALUES -const values = Object.values(openingHours); -console.log(values); - -// Entire object -const entries = Object.entries(openingHours); -// console.log(entries); - -// [key, value] -for (const [day, { open, close }] of entries) { - console.log(`On ${day} we open at ${open} and close at ${close}`); -} - - -/////////////////////////////////////// -// Optional Chaining -if (restaurant.openingHours && restaurant.openingHours.mon) - console.log(restaurant.openingHours.mon.open); - -// console.log(restaurant.openingHours.mon.open); - -// WITH optional chaining -console.log(restaurant.openingHours.mon?.open); -console.log(restaurant.openingHours?.mon?.open); - -// Example -const days = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']; - -for (const day of days) { - const open = restaurant.openingHours[day]?.open ?? 'closed'; - console.log(`On ${day}, we open at ${open}`); -} - -// Methods -console.log(restaurant.order?.(0, 1) ?? 'Method does not exist'); -console.log(restaurant.orderRisotto?.(0, 1) ?? 'Method does not exist'); - -// Arrays -const users = [{ name: 'Jonas', email: 'hello@jonas.io' }]; -// const users = []; - -console.log(users[0]?.name ?? 'User array empty'); - -if (users.length > 0) console.log(users[0].name); -else console.log('user array empty'); - - -/////////////////////////////////////// -// The for-of Loop -const menu = [...restaurant.starterMenu, ...restaurant.mainMenu]; - -for (const item of menu) console.log(item); - -for (const [i, el] of menu.entries()) { - console.log(`${i + 1}: ${el}`); -} - -// console.log([...menu.entries()]); -*/ - -/////////////////////////////////////// -// Coding Challenge #1 - -/* -We're building a football betting app (soccer for my American friends 😅)! - -Suppose we get data from a web service about a certain game (below). In this challenge we're gonna work with the data. So here are your tasks: - -1. Create one player array for each team (variables 'players1' and 'players2') -2. The first player in any player array is the goalkeeper and the others are field players. For Bayern Munich (team 1) create one variable ('gk') with the goalkeeper's name, and one array ('fieldPlayers') with all the remaining 10 field players -3. Create an array 'allPlayers' containing all players of both teams (22 players) -4. During the game, Bayern Munich (team 1) used 3 substitute players. So create a new array ('players1Final') containing all the original team1 players plus 'Thiago', 'Coutinho' and 'Perisic' -5. Based on the game.odds object, create one variable for each odd (called 'team1', 'draw' and 'team2') -6. Write a function ('printGoals') that receives an arbitrary number of player names (NOT an array) and prints each of them to the console, along with the number of goals that were scored in total (number of player names passed in) -7. The team with the lower odd is more likely to win. Print to the console which team is more likely to win, WITHOUT using an if/else statement or the ternary operator. - -TEST DATA FOR 6: Use players 'Davies', 'Muller', 'Lewandowski' and 'Kimmich'. Then, call the function again with players from game.scored - -GOOD LUCK 😀 -*/ - -/* -// 1. -const [players1, players2] = game.players; -console.log(players1, players2); - -// 2. -const [gk, ...fieldPlayers] = players1; -console.log(gk, fieldPlayers); - -// 3. -const allPlayers = [...players1, ...players2]; -console.log(allPlayers); - -// 4. -const players1Final = [...players1, 'Thiago', 'Coutinho', 'Periscic']; - -// 5. -const { - odds: { team1, x: draw, team2 }, -} = game; -console.log(team1, draw, team2); - -// 6. -const printGoals = function (...players) { - console.log(players); - console.log(`${players.length} goals were scored`); -}; - -// printGoals('Davies', 'Muller', 'Lewandowski', 'Kimmich'); -// printGoals('Davies', 'Muller'); -printGoals(...game.scored); - -// 7. -team1 < team2 && console.log('Team 1 is more likely to win'); -team1 > team2 && console.log('Team 2 is more likely to win'); - - -/////////////////////////////////////// -// Logical Assignment Operators -const rest1 = { - name: 'Capri', - // numGuests: 20, - numGuests: 0, -}; - -const rest2 = { - name: 'La Piazza', - owner: 'Giovanni Rossi', -}; - -// OR assignment operator -// rest1.numGuests = rest1.numGuests || 10; -// rest2.numGuests = rest2.numGuests || 10; -// rest1.numGuests ||= 10; -// rest2.numGuests ||= 10; - -// nullish assignment operator (null or undefined) -rest1.numGuests ??= 10; -rest2.numGuests ??= 10; - -// AND assignment operator -// rest1.owner = rest1.owner && ''; -// rest2.owner = rest2.owner && ''; -rest1.owner &&= ''; -rest2.owner &&= ''; - -console.log(rest1); -console.log(rest2); - - -/////////////////////////////////////// -// The Nullish Coalescing Operator -restaurant.numGuests = 0; -const guests = restaurant.numGuests || 10; -console.log(guests); - -// Nullish: null and undefined (NOT 0 or '') -const guestCorrect = restaurant.numGuests ?? 10; -console.log(guestCorrect); - - -/////////////////////////////////////// -// Short Circuiting (&& and ||) - -console.log('---- OR ----'); -// Use ANY data type, return ANY data type, short-circuiting -console.log(3 || 'Jonas'); -console.log('' || 'Jonas'); -console.log(true || 0); -console.log(undefined || null); - -console.log(undefined || 0 || '' || 'Hello' || 23 || null); - -restaurant.numGuests = 0; -const guests1 = restaurant.numGuests ? restaurant.numGuests : 10; -console.log(guests1); - -const guests2 = restaurant.numGuests || 10; -console.log(guests2); - -console.log('---- AND ----'); -console.log(0 && 'Jonas'); -console.log(7 && 'Jonas'); - -console.log('Hello' && 23 && null && 'jonas'); - -// Practical example -if (restaurant.orderPizza) { - restaurant.orderPizza('mushrooms', 'spinach'); -} - -restaurant.orderPizza && restaurant.orderPizza('mushrooms', 'spinach'); - - -/////////////////////////////////////// -// Rest Pattern and Parameters -// 1) Destructuring - -// SPREAD, because on RIGHT side of = -const arr = [1, 2, ...[3, 4]]; - -// REST, because on LEFT side of = -const [a, b, ...others] = [1, 2, 3, 4, 5]; -console.log(a, b, others); - -const [pizza, , risotto, ...otherFood] = [ - ...restaurant.mainMenu, - ...restaurant.starterMenu, -]; -console.log(pizza, risotto, otherFood); - -// Objects -const { sat, ...weekdays } = restaurant.openingHours; -console.log(weekdays); - -// 2) Functions -const add = function (...numbers) { - let sum = 0; - for (let i = 0; i < numbers.length; i++) sum += numbers[i]; - console.log(sum); -}; - -add(2, 3); -add(5, 3, 7, 2); -add(8, 2, 5, 3, 2, 1, 4); - -const x = [23, 5, 7]; -add(...x); - -restaurant.orderPizza('mushrooms', 'onion', 'olives', 'spinach'); -restaurant.orderPizza('mushrooms'); - - -/////////////////////////////////////// -// The Spread Operator (...) - -const arr = [7, 8, 9]; -const badNewArr = [1, 2, arr[0], arr[1], arr[2]]; -console.log(badNewArr); - -const newArr = [1, 2, ...arr]; -console.log(newArr); - -console.log(...newArr); -console.log(1, 2, 7, 8, 9); - -const newMenu = [...restaurant.mainMenu, 'Gnocci']; -console.log(newMenu); - -// Copy array -const mainMenuCopy = [...restaurant.mainMenu]; - -// Join 2 arrays -const menu = [...restaurant.starterMenu, ...restaurant.mainMenu]; -console.log(menu); - -// Iterables: arrays, strings, maps, sets. NOT objects -const str = 'Jonas'; -const letters = [...str, ' ', 'S.']; -console.log(letters); -console.log(...str); -// console.log(`${...str} Schmedtmann`); - -// Real-world example -const ingredients = [ - // prompt("Let's make pasta! Ingredient 1?"), - // prompt('Ingredient 2?'), - // prompt('Ingredient 3'), -]; -console.log(ingredients); - -restaurant.orderPasta(ingredients[0], ingredients[1], ingredients[2]); -restaurant.orderPasta(...ingredients); - -// Objects -const newRestaurant = { foundedIn: 1998, ...restaurant, founder: 'Guiseppe' }; -console.log(newRestaurant); - -const restaurantCopy = { ...restaurant }; -restaurantCopy.name = 'Ristorante Roma'; -console.log(restaurantCopy.name); -console.log(restaurant.name); - - -/////////////////////////////////////// -// Destructuring Objects -restaurant.orderDelivery({ - time: '22:30', - address: 'Via del Sole, 21', - mainIndex: 2, - starterIndex: 2, -}); - -restaurant.orderDelivery({ - address: 'Via del Sole, 21', - starterIndex: 1, -}); - -const { name, openingHours, categories } = restaurant; -console.log(name, openingHours, categories); - -const { - name: restaurantName, - openingHours: hours, - categories: tags, -} = restaurant; -console.log(restaurantName, hours, tags); - -// Default values -const { menu = [], starterMenu: starters = [] } = restaurant; -console.log(menu, starters); - -// Mutating variables -let a = 111; -let b = 999; -const obj = { a: 23, b: 7, c: 14 }; -({ a, b } = obj); -console.log(a, b); - -// Nested objects -const { - fri: { open: o, close: c }, -} = openingHours; -console.log(o, c); - - -/////////////////////////////////////// -// Destructuring Arrays -const arr = [2, 3, 4]; -const a = arr[0]; -const b = arr[1]; -const c = arr[2]; - -const [x, y, z] = arr; -console.log(x, y, z); -console.log(arr); - -let [main, , secondary] = restaurant.categories; -console.log(main, secondary); - -// Switching variables -// const temp = main; -// main = secondary; -// secondary = temp; -// console.log(main, secondary); - -[main, secondary] = [secondary, main]; -console.log(main, secondary); - -// Receive 2 return values from a function -const [starter, mainCourse] = restaurant.order(2, 0); -console.log(starter, mainCourse); - -// Nested destructuring -const nested = [2, 4, [5, 6]]; -// const [i, , j] = nested; -const [i, , [j, k]] = nested; -console.log(i, j, k); - -// Default values -const [p = 1, q = 1, r = 1] = [8, 9]; -console.log(p, q, r); -*/ diff --git a/09-Data-Structures-Operators/starter/.prettierrc b/09-Data-Structures-Operators/starter/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/09-Data-Structures-Operators/starter/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/09-Data-Structures-Operators/starter/index.html b/09-Data-Structures-Operators/starter/index.html deleted file mode 100644 index 7d248b95f5..0000000000 --- a/09-Data-Structures-Operators/starter/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - Data Structures and Modern Operators - - - -

Data Structures and Modern Operators

- - - diff --git a/09-Data-Structures-Operators/starter/script.js b/09-Data-Structures-Operators/starter/script.js deleted file mode 100644 index e2dcc670b6..0000000000 --- a/09-Data-Structures-Operators/starter/script.js +++ /dev/null @@ -1,47 +0,0 @@ -'use strict'; - -// Data needed for a later exercise -const flights = - '_Delayed_Departure;fao93766109;txl2133758440;11:25+_Arrival;bru0943384722;fao93766109;11:45+_Delayed_Arrival;hel7439299980;fao93766109;12:05+_Departure;fao93766109;lis2323639855;12:30'; - -const italianFoods = new Set([ - 'pasta', - 'gnocchi', - 'tomatoes', - 'olive oil', - 'garlic', - 'basil', -]); - -const mexicanFoods = new Set([ - 'tortillas', - 'beans', - 'rice', - 'tomatoes', - 'avocado', - 'garlic', -]); - -// Data needed for first part of the section -const restaurant = { - name: 'Classico Italiano', - location: 'Via Angelo Tavanti 23, Firenze, Italy', - categories: ['Italian', 'Pizzeria', 'Vegetarian', 'Organic'], - starterMenu: ['Focaccia', 'Bruschetta', 'Garlic Bread', 'Caprese Salad'], - mainMenu: ['Pizza', 'Pasta', 'Risotto'], - - openingHours: { - thu: { - open: 12, - close: 22, - }, - fri: { - open: 11, - close: 23, - }, - sat: { - open: 0, // Open 24 hours - close: 24, - }, - }, -}; diff --git a/10-Functions/final/.prettierrc b/10-Functions/final/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/10-Functions/final/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/10-Functions/final/index.html b/10-Functions/final/index.html deleted file mode 100644 index 5555734b8a..0000000000 --- a/10-Functions/final/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - A Closer Look at Functions - - - -

A Closer Look at Functions

- - - - - diff --git a/10-Functions/final/script.js b/10-Functions/final/script.js deleted file mode 100644 index aa2292ad30..0000000000 --- a/10-Functions/final/script.js +++ /dev/null @@ -1,410 +0,0 @@ -'use strict'; - -/* -/////////////////////////////////////// -// Default Parameters -const bookings = []; - -const createBooking = function ( - flightNum, - numPassengers = 1, - price = 199 * numPassengers -) { - // ES5 - // numPassengers = numPassengers || 1; - // price = price || 199; - - const booking = { - flightNum, - numPassengers, - price, - }; - console.log(booking); - bookings.push(booking); -}; - -createBooking('LH123'); -createBooking('LH123', 2, 800); -createBooking('LH123', 2); -createBooking('LH123', 5); - -createBooking('LH123', undefined, 1000); - - -/////////////////////////////////////// -// How Passing Arguments Works: Values vs. Reference -const flight = 'LH234'; -const jonas = { - name: 'Jonas Schmedtmann', - passport: 24739479284, -}; - -const checkIn = function (flightNum, passenger) { - flightNum = 'LH999'; - passenger.name = 'Mr. ' + passenger.name; - - if (passenger.passport === 24739479284) { - alert('Checked in'); - } else { - alert('Wrong passport!'); - } -}; - -// checkIn(flight, jonas); -// console.log(flight); -// console.log(jonas); - -// Is the same as doing... -// const flightNum = flight; -// const passenger = jonas; - -const newPassport = function (person) { - person.passport = Math.trunc(Math.random() * 100000000000); -}; - -newPassport(jonas); -checkIn(flight, jonas); - - -/////////////////////////////////////// -// Functions Accepting Callback Functions -const oneWord = function (str) { - return str.replace(/ /g, '').toLowerCase(); -}; - -const upperFirstWord = function (str) { - const [first, ...others] = str.split(' '); - return [first.toUpperCase(), ...others].join(' '); -}; - -// Higher-order function -const transformer = function (str, fn) { - console.log(`Original string: ${str}`); - console.log(`Transformed string: ${fn(str)}`); - - console.log(`Transformed by: ${fn.name}`); -}; - -transformer('JavaScript is the best!', upperFirstWord); -transformer('JavaScript is the best!', oneWord); - -// JS uses callbacks all the time -const high5 = function () { - console.log('👋'); -}; -document.body.addEventListener('click', high5); -['Jonas', 'Martha', 'Adam'].forEach(high5); - - -/////////////////////////////////////// -// Functions Returning Functions -const greet = function (greeting) { - return function (name) { - console.log(`${greeting} ${name}`); - }; -}; - -const greeterHey = greet('Hey'); -greeterHey('Jonas'); -greeterHey('Steven'); - -greet('Hello')('Jonas'); - -// Challenge -const greetArr = greeting => name => console.log(`${greeting} ${name}`); - -greetArr('Hi')('Jonas'); - - -/////////////////////////////////////// -// The call and apply Methods -const lufthansa = { - airline: 'Lufthansa', - iataCode: 'LH', - bookings: [], - // book: function() {} - book(flightNum, name) { - console.log( - `${name} booked a seat on ${this.airline} flight ${this.iataCode}${flightNum}` - ); - this.bookings.push({ flight: `${this.iataCode}${flightNum}`, name }); - }, -}; - -lufthansa.book(239, 'Jonas Schmedtmann'); -lufthansa.book(635, 'John Smith'); - -const eurowings = { - airline: 'Eurowings', - iataCode: 'EW', - bookings: [], -}; - -const book = lufthansa.book; - -// Does NOT work -// book(23, 'Sarah Williams'); - -// Call method -book.call(eurowings, 23, 'Sarah Williams'); -console.log(eurowings); - -book.call(lufthansa, 239, 'Mary Cooper'); -console.log(lufthansa); - -const swiss = { - airline: 'Swiss Air Lines', - iataCode: 'LX', - bookings: [], -}; - -book.call(swiss, 583, 'Mary Cooper'); - -// Apply method -const flightData = [583, 'George Cooper']; -book.apply(swiss, flightData); -console.log(swiss); - -book.call(swiss, ...flightData); - -/////////////////////////////////////// -// The bind Method -// book.call(eurowings, 23, 'Sarah Williams'); - -const bookEW = book.bind(eurowings); -const bookLH = book.bind(lufthansa); -const bookLX = book.bind(swiss); - -bookEW(23, 'Steven Williams'); - -const bookEW23 = book.bind(eurowings, 23); -bookEW23('Jonas Schmedtmann'); -bookEW23('Martha Cooper'); - -// With Event Listeners -lufthansa.planes = 300; -lufthansa.buyPlane = function () { - console.log(this); - - this.planes++; - console.log(this.planes); -}; -// lufthansa.buyPlane(); - -document - .querySelector('.buy') - .addEventListener('click', lufthansa.buyPlane.bind(lufthansa)); - -// Partial application -const addTax = (rate, value) => value + value * rate; -console.log(addTax(0.1, 200)); - -const addVAT = addTax.bind(null, 0.23); -// addVAT = value => value + value * 0.23; - -console.log(addVAT(100)); -console.log(addVAT(23)); - -const addTaxRate = function (rate) { - return function (value) { - return value + value * rate; - }; -}; -const addVAT2 = addTaxRate(0.23); -console.log(addVAT2(100)); -console.log(addVAT2(23)); -*/ - -/////////////////////////////////////// -// Coding Challenge #1 - -/* -Let's build a simple poll app! - -A poll has a question, an array of options from which people can choose, and an array with the number of replies for each option. This data is stored in the starter object below. - -Here are your tasks: - -1. Create a method called 'registerNewAnswer' on the 'poll' object. The method does 2 things: - 1.1. Display a prompt window for the user to input the number of the selected option. The prompt should look like this: - What is your favourite programming language? - 0: JavaScript - 1: Python - 2: Rust - 3: C++ - (Write option number) - - 1.2. Based on the input number, update the answers array. For example, if the option is 3, increase the value AT POSITION 3 of the array by 1. Make sure to check if the input is a number and if the number makes sense (e.g answer 52 wouldn't make sense, right?) -2. Call this method whenever the user clicks the "Answer poll" button. -3. Create a method 'displayResults' which displays the poll results. The method takes a string as an input (called 'type'), which can be either 'string' or 'array'. If type is 'array', simply display the results array as it is, using console.log(). This should be the default option. If type is 'string', display a string like "Poll results are 13, 2, 4, 1". -4. Run the 'displayResults' method at the end of each 'registerNewAnswer' method call. - -HINT: Use many of the tools you learned about in this and the last section 😉 - -BONUS: Use the 'displayResults' method to display the 2 arrays in the test data. Use both the 'array' and the 'string' option. Do NOT put the arrays in the poll object! So what shoud the this keyword look like in this situation? - -BONUS TEST DATA 1: [5, 2, 3] -BONUS TEST DATA 2: [1, 5, 3, 9, 6, 1] - -GOOD LUCK 😀 -*/ - -/* -const poll = { - question: 'What is your favourite programming language?', - options: ['0: JavaScript', '1: Python', '2: Rust', '3: C++'], - // This generates [0, 0, 0, 0]. More in the next section 😃 - answers: new Array(4).fill(0), - registerNewAnswer() { - // Get answer - const answer = Number( - prompt( - `${this.question}\n${this.options.join('\n')}\n(Write option number)` - ) - ); - console.log(answer); - - // Register answer - typeof answer === 'number' && - answer < this.answers.length && - this.answers[answer]++; - - this.displayResults(); - this.displayResults('string'); - }, - - displayResults(type = 'array') { - if (type === 'array') { - console.log(this.answers); - } else if (type === 'string') { - // Poll results are 13, 2, 4, 1 - console.log(`Poll results are ${this.answers.join(', ')}`); - } - }, -}; - -document - .querySelector('.poll') - .addEventListener('click', poll.registerNewAnswer.bind(poll)); - -poll.displayResults.call({ answers: [5, 2, 3] }, 'string'); -poll.displayResults.call({ answers: [1, 5, 3, 9, 6, 1] }, 'string'); -poll.displayResults.call({ answers: [1, 5, 3, 9, 6, 1] }); - -// [5, 2, 3] -// [1, 5, 3, 9, 6, 1] - - -/////////////////////////////////////// -// Immediately Invoked Function Expressions (IIFE) -const runOnce = function () { - console.log('This will never run again'); -}; -runOnce(); - -// IIFE -(function () { - console.log('This will never run again'); - const isPrivate = 23; -})(); - -// console.log(isPrivate); - -(() => console.log('This will ALSO never run again'))(); - -{ - const isPrivate = 23; - var notPrivate = 46; -} -// console.log(isPrivate); -console.log(notPrivate); - - -/////////////////////////////////////// -// Closures -const secureBooking = function () { - let passengerCount = 0; - - return function () { - passengerCount++; - console.log(`${passengerCount} passengers`); - }; -}; - -const booker = secureBooking(); - -booker(); -booker(); -booker(); - -console.dir(booker); - - -/////////////////////////////////////// -// More Closure Examples -// Example 1 -let f; - -const g = function () { - const a = 23; - f = function () { - console.log(a * 2); - }; -}; - -const h = function () { - const b = 777; - f = function () { - console.log(b * 2); - }; -}; - -g(); -f(); -console.dir(f); - -// Re-assigning f function -h(); -f(); -console.dir(f); - -// Example 2 -const boardPassengers = function (n, wait) { - const perGroup = n / 3; - - setTimeout(function () { - console.log(`We are now boarding all ${n} passengers`); - console.log(`There are 3 groups, each with ${perGroup} passengers`); - }, wait * 1000); - - console.log(`Will start boarding in ${wait} seconds`); -}; - -const perGroup = 1000; -boardPassengers(180, 3); -*/ - -/////////////////////////////////////// -// Coding Challenge #2 - -/* -This is more of a thinking challenge than a coding challenge 🤓 - -Take the IIFE below and at the end of the function, attach an event listener that changes the color of the selected h1 element ('header') to blue, each time the BODY element is clicked. Do NOT select the h1 element again! - -And now explain to YOURSELF (or someone around you) WHY this worked! Take all the time you need. Think about WHEN exactly the callback function is executed, and what that means for the variables involved in this example. - -GOOD LUCK 😀 -*/ - -/* -(function () { - const header = document.querySelector('h1'); - header.style.color = 'red'; - - document.querySelector('body').addEventListener('click', function () { - header.style.color = 'blue'; - }); -})(); -*/ - diff --git a/10-Functions/starter/.prettierrc b/10-Functions/starter/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/10-Functions/starter/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/10-Functions/starter/index.html b/10-Functions/starter/index.html deleted file mode 100644 index 5555734b8a..0000000000 --- a/10-Functions/starter/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - A Closer Look at Functions - - - -

A Closer Look at Functions

- - - - - diff --git a/10-Functions/starter/script.js b/10-Functions/starter/script.js deleted file mode 100644 index ad9a93a7c1..0000000000 --- a/10-Functions/starter/script.js +++ /dev/null @@ -1 +0,0 @@ -'use strict'; diff --git a/11-Arrays-Bankist/final/.prettierrc b/11-Arrays-Bankist/final/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/11-Arrays-Bankist/final/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/11-Arrays-Bankist/final/Bankist-flowchart.png b/11-Arrays-Bankist/final/Bankist-flowchart.png deleted file mode 100644 index 7c4923c3ef..0000000000 Binary files a/11-Arrays-Bankist/final/Bankist-flowchart.png and /dev/null differ diff --git a/11-Arrays-Bankist/final/icon.png b/11-Arrays-Bankist/final/icon.png deleted file mode 100644 index d00606eab8..0000000000 Binary files a/11-Arrays-Bankist/final/icon.png and /dev/null differ diff --git a/11-Arrays-Bankist/final/index.html b/11-Arrays-Bankist/final/index.html deleted file mode 100644 index 6a46971703..0000000000 --- a/11-Arrays-Bankist/final/index.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - Bankist - - - - - -
- -
-
-

Current balance

-

- As of 05/03/2037 -

-
-

0000€

-
- - -
-
-
2 deposit
-
3 days ago
-
4 000€
-
-
-
- 1 withdrawal -
-
24/01/2037
-
-378€
-
-
- - -
-

In

-

0000€

-

Out

-

0000€

-

Interest

-

0000€

- -
- - -
-

Transfer money

-
- - - - - -
-
- - -
-

Request loan

-
- - - -
-
- - -
-

Close account

-
- - - - - -
-
- - -

- You will be logged out in 05:00 -

-
- - - - - - diff --git a/11-Arrays-Bankist/final/logo.png b/11-Arrays-Bankist/final/logo.png deleted file mode 100644 index f437ac24f3..0000000000 Binary files a/11-Arrays-Bankist/final/logo.png and /dev/null differ diff --git a/11-Arrays-Bankist/final/script.js b/11-Arrays-Bankist/final/script.js deleted file mode 100644 index e03b7da8a1..0000000000 --- a/11-Arrays-Bankist/final/script.js +++ /dev/null @@ -1,997 +0,0 @@ -'use strict'; - -///////////////////////////////////////////////// -///////////////////////////////////////////////// -// BANKIST APP - -///////////////////////////////////////////////// -// Data -const account1 = { - owner: 'Jonas Schmedtmann', - movements: [200, 450, -400, 3000, -650, -130, 70, 1300], - interestRate: 1.2, // % - pin: 1111, - type: 'premium', -}; - -const account2 = { - owner: 'Jessica Davis', - movements: [5000, 3400, -150, -790, -3210, -1000, 8500, -30], - interestRate: 1.5, - pin: 2222, - type: 'standard', -}; - -const account3 = { - owner: 'Steven Thomas Williams', - movements: [200, -200, 340, -300, -20, 50, 400, -460], - interestRate: 0.7, - pin: 3333, - type: 'premium', -}; - -const account4 = { - owner: 'Sarah Smith', - movements: [430, 1000, 700, 50, 90], - interestRate: 1, - pin: 4444, - type: 'basic', -}; - -const accounts = [account1, account2, account3, account4]; - -///////////////////////////////////////////////// -// Elements -const labelWelcome = document.querySelector('.welcome'); -const labelDate = document.querySelector('.date'); -const labelBalance = document.querySelector('.balance__value'); -const labelSumIn = document.querySelector('.summary__value--in'); -const labelSumOut = document.querySelector('.summary__value--out'); -const labelSumInterest = document.querySelector('.summary__value--interest'); -const labelTimer = document.querySelector('.timer'); - -const containerApp = document.querySelector('.app'); -const containerMovements = document.querySelector('.movements'); - -const btnLogin = document.querySelector('.login__btn'); -const btnTransfer = document.querySelector('.form__btn--transfer'); -const btnLoan = document.querySelector('.form__btn--loan'); -const btnClose = document.querySelector('.form__btn--close'); -const btnSort = document.querySelector('.btn--sort'); - -const inputLoginUsername = document.querySelector('.login__input--user'); -const inputLoginPin = document.querySelector('.login__input--pin'); -const inputTransferTo = document.querySelector('.form__input--to'); -const inputTransferAmount = document.querySelector('.form__input--amount'); -const inputLoanAmount = document.querySelector('.form__input--loan-amount'); -const inputCloseUsername = document.querySelector('.form__input--user'); -const inputClosePin = document.querySelector('.form__input--pin'); - -///////////////////////////////////////////////// -// Functions - -const displayMovements = function (movements, sort = false) { - containerMovements.innerHTML = ''; - - const movs = sort ? movements.slice().sort((a, b) => a - b) : movements; - - movs.forEach(function (mov, i) { - const type = mov > 0 ? 'deposit' : 'withdrawal'; - - const html = ` -
-
${ - i + 1 - } ${type}
-
${mov}€
-
- `; - - containerMovements.insertAdjacentHTML('afterbegin', html); - }); -}; - -const calcDisplayBalance = function (acc) { - acc.balance = acc.movements.reduce((acc, mov) => acc + mov, 0); - labelBalance.textContent = `${acc.balance}€`; -}; - -const calcDisplaySummary = function (acc) { - const incomes = acc.movements - .filter(mov => mov > 0) - .reduce((acc, mov) => acc + mov, 0); - labelSumIn.textContent = `${incomes}€`; - - const out = acc.movements - .filter(mov => mov < 0) - .reduce((acc, mov) => acc + mov, 0); - labelSumOut.textContent = `${Math.abs(out)}€`; - - const interest = acc.movements - .filter(mov => mov > 0) - .map(deposit => (deposit * acc.interestRate) / 100) - .filter((int, i, arr) => { - // console.log(arr); - return int >= 1; - }) - .reduce((acc, int) => acc + int, 0); - labelSumInterest.textContent = `${interest}€`; -}; - -const createUsernames = function (accs) { - accs.forEach(function (acc) { - acc.username = acc.owner - .toLowerCase() - .split(' ') - .map(name => name[0]) - .join(''); - }); -}; -createUsernames(accounts); - -const updateUI = function (acc) { - // Display movements - displayMovements(acc.movements); - - // Display balance - calcDisplayBalance(acc); - - // Display summary - calcDisplaySummary(acc); -}; - -/////////////////////////////////////// -// Event handlers -let currentAccount; - -btnLogin.addEventListener('click', function (e) { - // Prevent form from submitting - e.preventDefault(); - - currentAccount = accounts.find( - acc => acc.username === inputLoginUsername.value - ); - console.log(currentAccount); - - if (currentAccount?.pin === Number(inputLoginPin.value)) { - // Display UI and message - labelWelcome.textContent = `Welcome back, ${ - currentAccount.owner.split(' ')[0] - }`; - containerApp.style.opacity = 1; - - // Clear input fields - inputLoginUsername.value = inputLoginPin.value = ''; - inputLoginPin.blur(); - - // Update UI - updateUI(currentAccount); - } -}); - -btnTransfer.addEventListener('click', function (e) { - e.preventDefault(); - const amount = Number(inputTransferAmount.value); - const receiverAcc = accounts.find( - acc => acc.username === inputTransferTo.value - ); - inputTransferAmount.value = inputTransferTo.value = ''; - - if ( - amount > 0 && - receiverAcc && - currentAccount.balance >= amount && - receiverAcc?.username !== currentAccount.username - ) { - // Doing the transfer - currentAccount.movements.push(-amount); - receiverAcc.movements.push(amount); - - // Update UI - updateUI(currentAccount); - } -}); - -btnLoan.addEventListener('click', function (e) { - e.preventDefault(); - - const amount = Number(inputLoanAmount.value); - - if (amount > 0 && currentAccount.movements.some(mov => mov >= amount * 0.1)) { - // Add movement - currentAccount.movements.push(amount); - - // Update UI - updateUI(currentAccount); - } - inputLoanAmount.value = ''; -}); - -btnClose.addEventListener('click', function (e) { - e.preventDefault(); - - if ( - inputCloseUsername.value === currentAccount.username && - Number(inputClosePin.value) === currentAccount.pin - ) { - const index = accounts.findIndex( - acc => acc.username === currentAccount.username - ); - console.log(index); - // .indexOf(23) - - // Delete account - accounts.splice(index, 1); - - // Hide UI - containerApp.style.opacity = 0; - } - - inputCloseUsername.value = inputClosePin.value = ''; -}); - -let sorted = false; -btnSort.addEventListener('click', function (e) { - e.preventDefault(); - displayMovements(currentAccount.movements, !sorted); - sorted = !sorted; -}); - -///////////////////////////////////////////////// -///////////////////////////////////////////////// -// LECTURES - -const movements = [200, 450, -400, 3000, -650, -130, 70, 1300]; - -/* -///////////////////////////////////////////////// -// Simple Array Methods -let arr = ['a', 'b', 'c', 'd', 'e']; - -// SLICE -console.log(arr.slice(2)); -console.log(arr.slice(2, 4)); -console.log(arr.slice(-2)); -console.log(arr.slice(-1)); -console.log(arr.slice(1, -2)); -console.log(arr.slice()); -console.log([...arr]); - -// SPLICE -// console.log(arr.splice(2)); -arr.splice(-1); -console.log(arr); -arr.splice(1, 2); -console.log(arr); - -// REVERSE -arr = ['a', 'b', 'c', 'd', 'e']; -const arr2 = ['j', 'i', 'h', 'g', 'f']; -console.log(arr2.reverse()); -console.log(arr2); - -// CONCAT -const letters = arr.concat(arr2); -console.log(letters); -console.log([...arr, ...arr2]); - -// JOIN -console.log(letters.join(' - ')); - - -/////////////////////////////////////// -// The new at Method -const arr = [23, 11, 64]; -console.log(arr[0]); -console.log(arr.at(0)); - -// getting last array element -console.log(arr[arr.length - 1]); -console.log(arr.slice(-1)[0]); -console.log(arr.at(-1)); - -console.log('jonas'.at(0)); -console.log('jonas'.at(-1)); - - -/////////////////////////////////////// -// Looping Arrays: forEach -const movements = [200, 450, -400, 3000, -650, -130, 70, 1300]; - -// for (const movement of movements) { -for (const [i, movement] of movements.entries()) { - if (movement > 0) { - console.log(`Movement ${i + 1}: You deposited ${movement}`); - } else { - console.log(`Movement ${i + 1}: You withdrew ${Math.abs(movement)}`); - } -} - -console.log('---- FOREACH ----'); -movements.forEach(function (mov, i, arr) { - if (mov > 0) { - console.log(`Movement ${i + 1}: You deposited ${mov}`); - } else { - console.log(`Movement ${i + 1}: You withdrew ${Math.abs(mov)}`); - } -}); -// 0: function(200) -// 1: function(450) -// 2: function(400) -// ... - - -/////////////////////////////////////// -// forEach With Maps and Sets -// Map -const currencies = new Map([ - ['USD', 'United States dollar'], - ['EUR', 'Euro'], - ['GBP', 'Pound sterling'], -]); - -currencies.forEach(function (value, key, map) { - console.log(`${key}: ${value}`); -}); - -// Set -const currenciesUnique = new Set(['USD', 'GBP', 'USD', 'EUR', 'EUR']); -console.log(currenciesUnique); -currenciesUnique.forEach(function (value, _, map) { - console.log(`${value}: ${value}`); -}); -*/ - -/////////////////////////////////////// -// Coding Challenge #1 - -/* -Julia and Kate are doing a study on dogs. So each of them asked 5 dog owners about their dog's age, and stored the data into an array (one array for each). For now, they are just interested in knowing whether a dog is an adult or a puppy. A dog is an adult if it is at least 3 years old, and it's a puppy if it's less than 3 years old. - -Create a function 'checkDogs', which accepts 2 arrays of dog's ages ('dogsJulia' and 'dogsKate'), and does the following things: - -1. Julia found out that the owners of the FIRST and the LAST TWO dogs actually have cats, not dogs! So create a shallow copy of Julia's array, and remove the cat ages from that copied array (because it's a bad practice to mutate function parameters) -2. Create an array with both Julia's (corrected) and Kate's data -3. For each remaining dog, log to the console whether it's an adult ("Dog number 1 is an adult, and is 5 years old") or a puppy ("Dog number 2 is still a puppy 🐶") -4. Run the function for both test datasets - -HINT: Use tools from all lectures in this section so far 😉 - -TEST DATA 1: Julia's data [3, 5, 2, 12, 7], Kate's data [4, 1, 15, 8, 3] -TEST DATA 2: Julia's data [9, 16, 6, 8, 3], Kate's data [10, 5, 6, 1, 4] - -GOOD LUCK 😀 -*/ - -/* -const checkDogs = function (dogsJulia, dogsKate) { - const dogsJuliaCorrected = dogsJulia.slice(); - dogsJuliaCorrected.splice(0, 1); - dogsJuliaCorrected.splice(-2); - // dogsJulia.slice(1, 3); - const dogs = dogsJuliaCorrected.concat(dogsKate); - console.log(dogs); - - dogs.forEach(function (dog, i) { - if (dog >= 3) { - console.log(`Dog number ${i + 1} is an adult, and is ${dog} years old`); - } else { - console.log(`Dog number ${i + 1} is still a puppy 🐶`); - } - }); -}; -// checkDogs([3, 5, 2, 12, 7], [4, 1, 15, 8, 3]); -checkDogs([9, 16, 6, 8, 3], [10, 5, 6, 1, 4]); - - -/////////////////////////////////////// -// The map Method -const eurToUsd = 1.1; - -// const movementsUSD = movements.map(function (mov) { -// return mov * eurToUsd; -// }); - -const movementsUSD = movements.map(mov => mov * eurToUsd); - -console.log(movements); -console.log(movementsUSD); - -const movementsUSDfor = []; -for (const mov of movements) movementsUSDfor.push(mov * eurToUsd); -console.log(movementsUSDfor); - -const movementsDescriptions = movements.map( - (mov, i) => - `Movement ${i + 1}: You ${mov > 0 ? 'deposited' : 'withdrew'} ${Math.abs( - mov - )}` -); -console.log(movementsDescriptions); - - -/////////////////////////////////////// -// The filter Method -const deposits = movements.filter(function (mov, i, arr) { - return mov > 0; -}); -console.log(movements); -console.log(deposits); - -const depositsFor = []; -for (const mov of movements) if (mov > 0) depositsFor.push(mov); -console.log(depositsFor); - -const withdrawals = movements.filter(mov => mov < 0); -console.log(withdrawals); - - -/////////////////////////////////////// -// The reduce Method -console.log(movements); - -// accumulator -> SNOWBALL -// const balance = movements.reduce(function (acc, cur, i, arr) { -// console.log(`Iteration ${i}: ${acc}`); -// return acc + cur; -// }, 0); -const balance = movements.reduce((acc, cur) => acc + cur, 0); -console.log(balance); - -let balance2 = 0; -for (const mov of movements) balance2 += mov; -console.log(balance2); - -// Maximum value -const max = movements.reduce((acc, mov) => { - if (acc > mov) return acc; - else return mov; -}, movements[0]); -console.log(max); -*/ - -/////////////////////////////////////// -// Coding Challenge #2 - -/* -Let's go back to Julia and Kate's study about dogs. This time, they want to convert dog ages to human ages and calculate the average age of the dogs in their study. - -Create a function 'calcAverageHumanAge', which accepts an arrays of dog's ages ('ages'), and does the following things in order: - -1. Calculate the dog age in human years using the following formula: if the dog is <= 2 years old, humanAge = 2 * dogAge. If the dog is > 2 years old, humanAge = 16 + dogAge * 4. -2. Exclude all dogs that are less than 18 human years old (which is the same as keeping dogs that are at least 18 years old) -3. Calculate the average human age of all adult dogs (you should already know from other challenges how we calculate averages 😉) -4. Run the function for both test datasets - -TEST DATA 1: [5, 2, 4, 1, 15, 8, 3] -TEST DATA 2: [16, 6, 10, 5, 6, 1, 4] - -GOOD LUCK 😀 -*/ - -/* -const calcAverageHumanAge = function (ages) { - const humanAges = ages.map(age => (age <= 2 ? 2 * age : 16 + age * 4)); - const adults = humanAges.filter(age => age >= 18); - console.log(humanAges); - console.log(adults); - - // const average = adults.reduce((acc, age) => acc + age, 0) / adults.length; - - const average = adults.reduce( - (acc, age, i, arr) => acc + age / arr.length, - 0 - ); - - // 2 3. (2+3)/2 = 2.5 === 2/2+3/2 = 2.5 - - return average; -}; -const avg1 = calcAverageHumanAge([5, 2, 4, 1, 15, 8, 3]); -const avg2 = calcAverageHumanAge([16, 6, 10, 5, 6, 1, 4]); -console.log(avg1, avg2); - - -/////////////////////////////////////// -// The Magic of Chaining Methods -const eurToUsd = 1.1; -console.log(movements); - -// PIPELINE -const totalDepositsUSD = movements - .filter(mov => mov > 0) - .map((mov, i, arr) => { - // console.log(arr); - return mov * eurToUsd; - }) - // .map(mov => mov * eurToUsd) - .reduce((acc, mov) => acc + mov, 0); -console.log(totalDepositsUSD); -*/ - -/////////////////////////////////////// -// Coding Challenge #3 - -/* -Rewrite the 'calcAverageHumanAge' function from the previous challenge, but this time as an arrow function, and using chaining! - -TEST DATA 1: [5, 2, 4, 1, 15, 8, 3] -TEST DATA 2: [16, 6, 10, 5, 6, 1, 4] - -GOOD LUCK 😀 -*/ - -/* -const calcAverageHumanAge = ages => - ages - .map(age => (age <= 2 ? 2 * age : 16 + age * 4)) - .filter(age => age >= 18) - .reduce((acc, age, i, arr) => acc + age / arr.length, 0); -// adults.length - -const avg1 = calcAverageHumanAge([5, 2, 4, 1, 15, 8, 3]); -const avg2 = calcAverageHumanAge([16, 6, 10, 5, 6, 1, 4]); -console.log(avg1, avg2); - - -/////////////////////////////////////// -// The find Method -const firstWithdrawal = movements.find(mov => mov < 0); -console.log(movements); -console.log(firstWithdrawal); - -console.log(accounts); - -const account = accounts.find(acc => acc.owner === 'Jessica Davis'); -console.log(account); - - -/////////////////////////////////////// -// The New findLast and findLastIndex Methods - -console.log(movements); -const lastWithdrawal = movements.findLast(mov => mov < 0); -console.log(lastWithdrawal); - -// 'Your latest large movement was X movements ago' - -const latestLargeMovementIndex = movements.findLastIndex( - mov => Math.abs(mov) > 1000 -); -console.log(latestLargeMovementIndex); -console.log( - `Your latest large movement was ${ - movements.length - latestLargeMovementIndex - } movements ago` -); - - -/////////////////////////////////////// -// some and every -console.log(movements); - -// EQUALITY -console.log(movements.includes(-130)); - -// SOME: CONDITION -console.log(movements.some(mov => mov === -130)); - -const anyDeposits = movements.some(mov => mov > 0); -console.log(anyDeposits); - -// EVERY -console.log(movements.every(mov => mov > 0)); -console.log(account4.movements.every(mov => mov > 0)); - -// Separate callback -const deposit = mov => mov > 0; -console.log(movements.some(deposit)); -console.log(movements.every(deposit)); -console.log(movements.filter(deposit)); - - -/////////////////////////////////////// -// flat and flatMap -const arr = [[1, 2, 3], [4, 5, 6], 7, 8]; -console.log(arr.flat()); - -const arrDeep = [[[1, 2], 3], [4, [5, 6]], 7, 8]; -console.log(arrDeep.flat(2)); - -// flat -const overalBalance = accounts - .map(acc => acc.movements) - .flat() - .reduce((acc, mov) => acc + mov, 0); -console.log(overalBalance); - -// flatMap -const overalBalance2 = accounts - .flatMap(acc => acc.movements) - .reduce((acc, mov) => acc + mov, 0); -console.log(overalBalance2); -*/ - -/////////////////////////////////////// -// Coding Challenge #4 - -/* -This time, Julia and Kate are studying the activity levels of different dog breeds. - -YOUR TASKS: -1. Store the the average weight of a "Husky" in a variable "huskyWeight" -2. Find the name of the only breed that likes both "running" and "fetch" ("dogBothActivities" variable) -3. Create an array "allActivities" of all the activities of all the dog breeds -4. Create an array "uniqueActivities" that contains only the unique activities (no activity repetitions). HINT: Use a technique with a special data structure that we studied a few sections ago. -5. Many dog breeds like to swim. What other activities do these dogs like? Store all the OTHER activities these breeds like to do, in a unique array called "swimmingAdjacent". -6. Do all the breeds have an average weight of 10kg or more? Log to the console whether "true" or "false". -7. Are there any breeds that are "active"? "Active" means that the dog has 3 or more activities. Log to the console whether "true" or "false". - -BONUS: What's the average weight of the heaviest breed that likes to fetch? HINT: Use the "Math.max" method along with the ... operator. - -TEST DATA: -*/ - -/* -const breeds = [ - { - breed: 'German Shepherd', - averageWeight: 32, - activities: ['fetch', 'swimming'], - }, - { - breed: 'Dalmatian', - averageWeight: 24, - activities: ['running', 'fetch', 'agility'], - }, - { - breed: 'Labrador', - averageWeight: 28, - activities: ['swimming', 'fetch'], - }, - { - breed: 'Beagle', - averageWeight: 12, - activities: ['digging', 'fetch'], - }, - { - breed: 'Husky', - averageWeight: 26, - activities: ['running', 'agility', 'swimming'], - }, - { - breed: 'Bulldog', - averageWeight: 36, - activities: ['sleeping'], - }, - { - breed: 'Poodle', - averageWeight: 18, - activities: ['agility', 'fetch'], - }, -]; - -// 1. -const huskyWeight = breeds.find(breed => breed.breed === 'Husky').averageWeight; -console.log(huskyWeight); - -// 2. -const dogBothActivities = breeds.find( - breed => - breed.activities.includes('fetch') && breed.activities.includes('running') -).breed; -console.log(dogBothActivities); - -// 3. -// const allActivities = breeds.map(breed => breed.activities).flat(); -const allActivities = breeds.flatMap(breed => breed.activities); -console.log(allActivities); - -// 4. -const uniqueActivities = [...new Set(allActivities)]; -console.log(uniqueActivities); - -// 5. -const swimmingAdjacent = [ - ...new Set( - breeds - .filter(breed => breed.activities.includes('swimming')) - .flatMap(breed => breed.activities) - .filter(activity => activity !== 'swimming') - ), -]; -console.log(swimmingAdjacent); - -// 6. -console.log(breeds.every(breed => breed.averageWeight > 10)); - -// 7. -console.log(breeds.some(breed => breed.activities.length >= 3)); - -// BONUS -const fetchWeights = breeds - .filter(breed => breed.activities.includes('fetch')) - .map(breed => breed.averageWeight); -const heaviestFetchBreed = Math.max(...fetchWeights); - -console.log(fetchWeights); -console.log(heaviestFetchBreed); - - -/////////////////////////////////////// -// Sorting Arrays - -// Strings -const owners = ['Jonas', 'Zach', 'Adam', 'Martha']; -console.log(owners.sort()); -console.log(owners); - -// Numbers -console.log(movements); - -// return < 0, A, B (keep order) -// return > 0, B, A (switch order) - -// Ascending -// movements.sort((a, b) => { -// if (a > b) return 1; -// if (a < b) return -1; -// }); -movements.sort((a, b) => a - b); -console.log(movements); - -// Descending -// movements.sort((a, b) => { -// if (a > b) return -1; -// if (a < b) return 1; -// }); -movements.sort((a, b) => b - a); -console.log(movements); - - -/////////////////////////////////////// -// Array Grouping - -console.log(movements); - -const groupedMovements = Object.groupBy(movements, movement => - movement > 0 ? 'deposits' : 'withdrawals' -); -console.log(groupedMovements); - -const groupedByActivity = Object.groupBy(accounts, account => { - const movementCount = account.movements.length; - - if (movementCount >= 8) return 'very active'; - if (movementCount >= 4) return 'active'; - if (movementCount >= 1) return 'moderate'; - return 'inactive'; -}); -console.log(groupedByActivity); - -// const groupedAccounts = Object.groupBy(accounts, account => account.type); -const groupedAccounts = Object.groupBy(accounts, ({ type }) => type); -console.log(groupedAccounts); - - -/////////////////////////////////////// -// More Ways of Creating and Filling Arrays -const arr = [1, 2, 3, 4, 5, 6, 7]; -console.log(new Array(1, 2, 3, 4, 5, 6, 7)); - -// Empty arrays + fill method -const x = new Array(7); -console.log(x); -// console.log(x.map(() => 5)); -x.fill(1, 3, 5); -x.fill(1); -console.log(x); - -arr.fill(23, 2, 6); -console.log(arr); - -// Array.from -const y = Array.from({ length: 7 }, () => 1); -console.log(y); - -const z = Array.from({ length: 7 }, (_, i) => i + 1); -console.log(z); - -labelBalance.addEventListener('click', function () { - const movementsUI = Array.from( - document.querySelectorAll('.movements__value'), - el => Number(el.textContent.replace('€', '')) - ); - console.log(movementsUI); - - const movementsUI2 = [...document.querySelectorAll('.movements__value')]; -}); - - -/////////////////////////////////////// -// Non-Destructive Alternatives: toReversed, toSorted, toSpliced, with - -console.log(movements); -const reversedMov = movements.toReversed(); -console.log(reversedMov); - -// toSorted (sort), toSpliced (splice) - -// movements[1] = 2000; -const newMovements = movements.with(1, 2000); -console.log(newMovements); - -console.log(movements); - - -/////////////////////////////////////// -// Array Methods Practice - -// 1. -const bankDepositSum = accounts - .flatMap(acc => acc.movements) - .filter(mov => mov > 0) - .reduce((sum, cur) => sum + cur, 0); - -console.log(bankDepositSum); - -// 2. -// const numDeposits1000 = accounts -// .flatMap(acc => acc.movements) -// .filter(mov => mov >= 1000).length; - -const numDeposits1000 = accounts - .flatMap(acc => acc.movements) - .reduce((count, cur) => (cur >= 1000 ? ++count : count), 0); - -console.log(numDeposits1000); - -// Prefixed ++ operator -let a = 10; -console.log(++a); -console.log(a); - -// 3. -const { deposits, withdrawals } = accounts - .flatMap(acc => acc.movements) - .reduce( - (sums, cur) => { - // cur > 0 ? (sums.deposits += cur) : (sums.withdrawals += cur); - sums[cur > 0 ? 'deposits' : 'withdrawals'] += cur; - return sums; - }, - { deposits: 0, withdrawals: 0 }, - ); - -console.log(deposits, withdrawals); - -// 4. -// this is a nice title -> This Is a Nice Title -const convertTitleCase = function (title) { - const capitalize = str => str[0].toUpperCase() + str.slice(1); - - const exceptions = ['a', 'an', 'and', 'the', 'but', 'or', 'on', 'in', 'with']; - - const titleCase = title - .toLowerCase() - .split(' ') - .map(word => (exceptions.includes(word) ? word : capitalize(word))) - .join(' '); - - return capitalize(titleCase); -}; - -console.log(convertTitleCase('this is a nice title')); -console.log(convertTitleCase('this is a LONG title but not too long')); -console.log(convertTitleCase('and here is another title with an EXAMPLE')); -*/ - -/////////////////////////////////////// -// Coding Challenge #5 - -/* -Julia and Kate are still studying dogs. This time they are want to figure out if the dogs in their are eating too much or too little food. - -- Formula for calculating recommended food portion: recommendedFood = weight ** 0.75 * 28. (The result is in grams of food, and the weight needs to be in kg) -- Eating too much means the dog's current food portion is larger than the recommended portion, and eating too little is the opposite. -- Eating an okay amount means the dog's current food portion is within a range 10% above and below the recommended portion (see hint). - -YOUR TASKS: -1. Loop over the array containing dog objects, and for each dog, calculate the recommended food portion (recFood) and add it to the object as a new property. Do NOT create a new array, simply loop over the array (We never did this before, so think about how you can do this without creating a new array). -2. Find Sarah's dog and log to the console whether it's eating too much or too little. HINT: Some dogs have multiple users, so you first need to find Sarah in the owners array, and so this one is a bit tricky (on purpose) 🤓 -3. Create an array containing all owners of dogs who eat too much (ownersTooMuch) and an array with all owners of dogs who eat too little (ownersTooLittle). -4. Log a string to the console for each array created in 3., like this: "Matilda and Alice and Bob's dogs eat too much!" and "Sarah and John and Michael's dogs eat too little!" -5. Log to the console whether there is ANY dog eating EXACTLY the amount of food that is recommended (just true or false) -6. Log to the console whether ALL of the dogs are eating an OKAY amount of food (just true or false) -7. Create an array containing the dogs that are eating an OKAY amount of food (try to reuse the condition used in 6.) -8. Group the dogs into the following 3 groups: 'exact', 'too-much' and 'too-little', based on whether they are eating too much, too little or the exact amount of food, based on the recommended food portion. -9. Group the dogs by the number of owners they have -10. Sort the dogs array by recommended food portion in an ascending order. Make sure to NOT mutate the original array! - -HINT 1: Use many different tools to solve these challenges, you can use the summary lecture to choose between them 😉 -HINT 2: Being within a range 10% above and below the recommended portion means: current > (recommended * 0.90) && current < (recommended * 1.10). Basically, the current portion should be between 90% and 110% of the recommended portion. - -TEST DATA: -const dogs = [ - { weight: 22, curFood: 250, owners: ['Alice', 'Bob'] }, - { weight: 8, curFood: 200, owners: ['Matilda'] }, - { weight: 13, curFood: 275, owners: ['Sarah', 'John', 'Leo'] }, - { weight: 18, curFood: 244, owners: ['Joe'] }, - { weight: 32, curFood: 340, owners: ['Michael'] }, -]; - -GOOD LUCK 😀 -*/ - -/* -const dogs = [ - { weight: 22, curFood: 250, owners: ['Alice', 'Bob'] }, - { weight: 8, curFood: 200, owners: ['Matilda'] }, - { weight: 13, curFood: 275, owners: ['Sarah', 'John', 'Leo'] }, - { weight: 18, curFood: 244, owners: ['Joe'] }, - { weight: 32, curFood: 340, owners: ['Michael'] }, -]; - -// 1. -dogs.forEach(dog => (dog.recFood = Math.floor(dog.weight ** 0.75 * 28))); -console.log(dogs); - -// 2. -const dogSarah = dogs.find(dog => dog.owners.includes('Sarah')); -console.log( - `Sarah's dog eats too ${ - dogSarah.curFood > dogSarah.recFood ? 'much' : 'little' - }` -); - -// 3. -const ownersTooMuch = dogs - .filter(dog => dog.curFood > dog.recFood) - .flatMap(dog => dog.owners); -const ownersTooLittle = dogs - .filter(dog => dog.curFood < dog.recFood) - .flatMap(dog => dog.owners); - -console.log(ownersTooMuch); -console.log(ownersTooLittle); - -// 4. -console.log(`${ownersTooMuch.join(' and ')}'s dogs are eating too much`); -console.log(`${ownersTooLittle.join(' and ')}'s dogs are eating too little`); - -// 5. -console.log(dogs.some(dog => dog.curFood === dog.recFood)); - -// 6. -const checkEatingOkay = dog => - dog.curFood < dog.recFood * 1.1 && dog.curFood > dog.recFood * 0.9; - -console.log(dogs.every(checkEatingOkay)); - -// 7. -const dogsEatingOkay = dogs.filter(checkEatingOkay); -console.log(dogsEatingOkay); - -// 8. -const dogsGroupedByPortion = Object.groupBy(dogs, dog => { - if (dog.curFood > dog.recFood) { - return 'too-much'; - } else if (dog.curFood < dog.recFood) { - return 'too-little'; - } else { - return 'exact'; - } -}); -console.log(dogsGroupedByPortion); - -// 9. -const dogsGroupedByOwners = Object.groupBy( - dogs, - dog => `${dog.owners.length}-owners` -); -console.log(dogsGroupedByOwners); - -// 10. -const dogsSorted = dogs.toSorted((a, b) => a.recFood - b.recFood); -console.log(dogsSorted); -*/ diff --git a/11-Arrays-Bankist/final/style.css b/11-Arrays-Bankist/final/style.css deleted file mode 100644 index b047de3f76..0000000000 --- a/11-Arrays-Bankist/final/style.css +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Use this CSS to learn some intersting techniques, - * in case you're wondering how I built the UI. - * Have fun! 😁 - */ - -* { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -html { - font-size: 62.5%; - box-sizing: border-box; -} - -body { - font-family: 'Poppins', sans-serif; - color: #444; - background-color: #f3f3f3; - height: 100vh; - padding: 2rem; -} - -nav { - display: flex; - justify-content: space-between; - align-items: center; - padding: 0 2rem; -} - -.welcome { - font-size: 1.9rem; - font-weight: 500; -} - -.logo { - height: 5.25rem; -} - -.login { - display: flex; -} - -.login__input { - border: none; - padding: 0.5rem 2rem; - font-size: 1.6rem; - font-family: inherit; - text-align: center; - width: 12rem; - border-radius: 10rem; - margin-right: 1rem; - color: inherit; - border: 1px solid #fff; - transition: all 0.3s; -} - -.login__input:focus { - outline: none; - border: 1px solid #ccc; -} - -.login__input::placeholder { - color: #bbb; -} - -.login__btn { - border: none; - background: none; - font-size: 2.2rem; - color: inherit; - cursor: pointer; - transition: all 0.3s; -} - -.login__btn:hover, -.login__btn:focus, -.btn--sort:hover, -.btn--sort:focus { - outline: none; - color: #777; -} - -/* MAIN */ -.app { - position: relative; - max-width: 100rem; - margin: 4rem auto; - display: grid; - grid-template-columns: 4fr 3fr; - grid-template-rows: auto repeat(3, 15rem) auto; - gap: 2rem; - - /* NOTE This creates the fade in/out anumation */ - opacity: 0; - transition: all 1s; -} - -.balance { - grid-column: 1 / span 2; - display: flex; - align-items: flex-end; - justify-content: space-between; - margin-bottom: 2rem; -} - -.balance__label { - font-size: 2.2rem; - font-weight: 500; - margin-bottom: -0.2rem; -} - -.balance__date { - font-size: 1.4rem; - color: #888; -} - -.balance__value { - font-size: 4.5rem; - font-weight: 400; -} - -/* MOVEMENTS */ -.movements { - grid-row: 2 / span 3; - background-color: #fff; - border-radius: 1rem; - overflow: scroll; -} - -.movements__row { - padding: 2.25rem 4rem; - display: flex; - align-items: center; - border-bottom: 1px solid #eee; -} - -.movements__type { - font-size: 1.1rem; - text-transform: uppercase; - font-weight: 500; - color: #fff; - padding: 0.1rem 1rem; - border-radius: 10rem; - margin-right: 2rem; -} - -.movements__date { - font-size: 1.1rem; - text-transform: uppercase; - font-weight: 500; - color: #666; -} - -.movements__type--deposit { - background-image: linear-gradient(to top left, #39b385, #9be15d); -} - -.movements__type--withdrawal { - background-image: linear-gradient(to top left, #e52a5a, #ff585f); -} - -.movements__value { - font-size: 1.7rem; - margin-left: auto; -} - -/* SUMMARY */ -.summary { - grid-row: 5 / 6; - display: flex; - align-items: baseline; - padding: 0 0.3rem; - margin-top: 1rem; -} - -.summary__label { - font-size: 1.2rem; - font-weight: 500; - text-transform: uppercase; - margin-right: 0.8rem; -} - -.summary__value { - font-size: 2.2rem; - margin-right: 2.5rem; -} - -.summary__value--in, -.summary__value--interest { - color: #66c873; -} - -.summary__value--out { - color: #f5465d; -} - -.btn--sort { - margin-left: auto; - border: none; - background: none; - font-size: 1.3rem; - font-weight: 500; - cursor: pointer; -} - -/* OPERATIONS */ -.operation { - border-radius: 1rem; - padding: 3rem 4rem; - color: #333; -} - -.operation--transfer { - background-image: linear-gradient(to top left, #ffb003, #ffcb03); -} - -.operation--loan { - background-image: linear-gradient(to top left, #39b385, #9be15d); -} - -.operation--close { - background-image: linear-gradient(to top left, #e52a5a, #ff585f); -} - -h2 { - margin-bottom: 1.5rem; - font-size: 1.7rem; - font-weight: 600; - color: #333; -} - -.form { - display: grid; - grid-template-columns: 2.5fr 2.5fr 1fr; - grid-template-rows: auto auto; - gap: 0.4rem 1rem; -} - -/* Exceptions for interst */ -.form.form--loan { - grid-template-columns: 2.5fr 1fr 2.5fr; -} -.form__label--loan { - grid-row: 2; -} -/* End exceptions */ - -.form__input { - width: 100%; - border: none; - background-color: rgba(255, 255, 255, 0.4); - font-family: inherit; - font-size: 1.5rem; - text-align: center; - color: #333; - padding: 0.3rem 1rem; - border-radius: 0.7rem; - transition: all 0.3s; -} - -.form__input:focus { - outline: none; - background-color: rgba(255, 255, 255, 0.6); -} - -.form__label { - font-size: 1.3rem; - text-align: center; -} - -.form__btn { - border: none; - border-radius: 0.7rem; - font-size: 1.8rem; - background-color: #fff; - cursor: pointer; - transition: all 0.3s; -} - -.form__btn:focus { - outline: none; - background-color: rgba(255, 255, 255, 0.8); -} - -.logout-timer { - padding: 0 0.3rem; - margin-top: 1.9rem; - text-align: right; - font-size: 1.25rem; -} - -.timer { - font-weight: 600; -} diff --git a/11-Arrays-Bankist/starter/.prettierrc b/11-Arrays-Bankist/starter/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/11-Arrays-Bankist/starter/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/11-Arrays-Bankist/starter/Bankist-flowchart.png b/11-Arrays-Bankist/starter/Bankist-flowchart.png deleted file mode 100644 index 6b4bfd48b1..0000000000 Binary files a/11-Arrays-Bankist/starter/Bankist-flowchart.png and /dev/null differ diff --git a/11-Arrays-Bankist/starter/icon.png b/11-Arrays-Bankist/starter/icon.png deleted file mode 100644 index d00606eab8..0000000000 Binary files a/11-Arrays-Bankist/starter/icon.png and /dev/null differ diff --git a/11-Arrays-Bankist/starter/index.html b/11-Arrays-Bankist/starter/index.html deleted file mode 100644 index 6a46971703..0000000000 --- a/11-Arrays-Bankist/starter/index.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - Bankist - - - - - -
- -
-
-

Current balance

-

- As of 05/03/2037 -

-
-

0000€

-
- - -
-
-
2 deposit
-
3 days ago
-
4 000€
-
-
-
- 1 withdrawal -
-
24/01/2037
-
-378€
-
-
- - -
-

In

-

0000€

-

Out

-

0000€

-

Interest

-

0000€

- -
- - -
-

Transfer money

-
- - - - - -
-
- - -
-

Request loan

-
- - - -
-
- - -
-

Close account

-
- - - - - -
-
- - -

- You will be logged out in 05:00 -

-
- - - - - - diff --git a/11-Arrays-Bankist/starter/logo.png b/11-Arrays-Bankist/starter/logo.png deleted file mode 100644 index f437ac24f3..0000000000 Binary files a/11-Arrays-Bankist/starter/logo.png and /dev/null differ diff --git a/11-Arrays-Bankist/starter/script.js b/11-Arrays-Bankist/starter/script.js deleted file mode 100644 index 05b54ddf31..0000000000 --- a/11-Arrays-Bankist/starter/script.js +++ /dev/null @@ -1,76 +0,0 @@ -'use strict'; - -///////////////////////////////////////////////// -///////////////////////////////////////////////// -// BANKIST APP - -// Data -const account1 = { - owner: 'Jonas Schmedtmann', - movements: [200, 450, -400, 3000, -650, -130, 70, 1300], - interestRate: 1.2, // % - pin: 1111, -}; - -const account2 = { - owner: 'Jessica Davis', - movements: [5000, 3400, -150, -790, -3210, -1000, 8500, -30], - interestRate: 1.5, - pin: 2222, -}; - -const account3 = { - owner: 'Steven Thomas Williams', - movements: [200, -200, 340, -300, -20, 50, 400, -460], - interestRate: 0.7, - pin: 3333, -}; - -const account4 = { - owner: 'Sarah Smith', - movements: [430, 1000, 700, 50, 90], - interestRate: 1, - pin: 4444, -}; - -const accounts = [account1, account2, account3, account4]; - -// Elements -const labelWelcome = document.querySelector('.welcome'); -const labelDate = document.querySelector('.date'); -const labelBalance = document.querySelector('.balance__value'); -const labelSumIn = document.querySelector('.summary__value--in'); -const labelSumOut = document.querySelector('.summary__value--out'); -const labelSumInterest = document.querySelector('.summary__value--interest'); -const labelTimer = document.querySelector('.timer'); - -const containerApp = document.querySelector('.app'); -const containerMovements = document.querySelector('.movements'); - -const btnLogin = document.querySelector('.login__btn'); -const btnTransfer = document.querySelector('.form__btn--transfer'); -const btnLoan = document.querySelector('.form__btn--loan'); -const btnClose = document.querySelector('.form__btn--close'); -const btnSort = document.querySelector('.btn--sort'); - -const inputLoginUsername = document.querySelector('.login__input--user'); -const inputLoginPin = document.querySelector('.login__input--pin'); -const inputTransferTo = document.querySelector('.form__input--to'); -const inputTransferAmount = document.querySelector('.form__input--amount'); -const inputLoanAmount = document.querySelector('.form__input--loan-amount'); -const inputCloseUsername = document.querySelector('.form__input--user'); -const inputClosePin = document.querySelector('.form__input--pin'); - -///////////////////////////////////////////////// -///////////////////////////////////////////////// -// LECTURES - -const currencies = new Map([ - ['USD', 'United States dollar'], - ['EUR', 'Euro'], - ['GBP', 'Pound sterling'], -]); - -const movements = [200, 450, -400, 3000, -650, -130, 70, 1300]; - -///////////////////////////////////////////////// diff --git a/11-Arrays-Bankist/starter/style.css b/11-Arrays-Bankist/starter/style.css deleted file mode 100644 index 05dcf39618..0000000000 --- a/11-Arrays-Bankist/starter/style.css +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Use this CSS to learn some intersting techniques, - * in case you're wondering how I built the UI. - * Have fun! 😁 - */ - -* { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -html { - font-size: 62.5%; - box-sizing: border-box; -} - -body { - font-family: "Poppins", sans-serif; - color: #444; - background-color: #f3f3f3; - height: 100vh; - padding: 2rem; -} - -nav { - display: flex; - justify-content: space-between; - align-items: center; - padding: 0 2rem; -} - -.welcome { - font-size: 1.9rem; - font-weight: 500; -} - -.logo { - height: 5.25rem; -} - -.login { - display: flex; -} - -.login__input { - border: none; - padding: 0.5rem 2rem; - font-size: 1.6rem; - font-family: inherit; - text-align: center; - width: 12rem; - border-radius: 10rem; - margin-right: 1rem; - color: inherit; - border: 1px solid #fff; - transition: all 0.3s; -} - -.login__input:focus { - outline: none; - border: 1px solid #ccc; -} - -.login__input::placeholder { - color: #bbb; -} - -.login__btn { - border: none; - background: none; - font-size: 2.2rem; - color: inherit; - cursor: pointer; - transition: all 0.3s; -} - -.login__btn:hover, -.login__btn:focus, -.btn--sort:hover, -.btn--sort:focus { - outline: none; - color: #777; -} - -/* MAIN */ -.app { - position: relative; - max-width: 100rem; - margin: 4rem auto; - display: grid; - grid-template-columns: 4fr 3fr; - grid-template-rows: auto repeat(3, 15rem) auto; - gap: 2rem; - - /* NOTE This creates the fade in/out anumation */ - opacity: 0; - transition: all 1s; -} - -.balance { - grid-column: 1 / span 2; - display: flex; - align-items: flex-end; - justify-content: space-between; - margin-bottom: 2rem; -} - -.balance__label { - font-size: 2.2rem; - font-weight: 500; - margin-bottom: -0.2rem; -} - -.balance__date { - font-size: 1.4rem; - color: #888; -} - -.balance__value { - font-size: 4.5rem; - font-weight: 400; -} - -/* MOVEMENTS */ -.movements { - grid-row: 2 / span 3; - background-color: #fff; - border-radius: 1rem; - overflow: scroll; -} - -.movements__row { - padding: 2.25rem 4rem; - display: flex; - align-items: center; - border-bottom: 1px solid #eee; -} - -.movements__type { - font-size: 1.1rem; - text-transform: uppercase; - font-weight: 500; - color: #fff; - padding: 0.1rem 1rem; - border-radius: 10rem; - margin-right: 2rem; -} - -.movements__date { - font-size: 1.1rem; - text-transform: uppercase; - font-weight: 500; - color: #666; -} - -.movements__type--deposit { - background-image: linear-gradient(to top left, #39b385, #9be15d); -} - -.movements__type--withdrawal { - background-image: linear-gradient(to top left, #e52a5a, #ff585f); -} - -.movements__value { - font-size: 1.7rem; - margin-left: auto; -} - -/* SUMMARY */ -.summary { - grid-row: 5 / 6; - display: flex; - align-items: baseline; - padding: 0 0.3rem; - margin-top: 1rem; -} - -.summary__label { - font-size: 1.2rem; - font-weight: 500; - text-transform: uppercase; - margin-right: 0.8rem; -} - -.summary__value { - font-size: 2.2rem; - margin-right: 2.5rem; -} - -.summary__value--in, -.summary__value--interest { - color: #66c873; -} - -.summary__value--out { - color: #f5465d; -} - -.btn--sort { - margin-left: auto; - border: none; - background: none; - font-size: 1.3rem; - font-weight: 500; - cursor: pointer; -} - -/* OPERATIONS */ -.operation { - border-radius: 1rem; - padding: 3rem 4rem; - color: #333; -} - -.operation--transfer { - background-image: linear-gradient(to top left, #ffb003, #ffcb03); -} - -.operation--loan { - background-image: linear-gradient(to top left, #39b385, #9be15d); -} - -.operation--close { - background-image: linear-gradient(to top left, #e52a5a, #ff585f); -} - -h2 { - margin-bottom: 1.5rem; - font-size: 1.7rem; - font-weight: 600; - color: #333; -} - -.form { - display: grid; - grid-template-columns: 2.5fr 2.5fr 1fr; - grid-template-rows: auto auto; - gap: 0.4rem 1rem; -} - -/* Exceptions for interst */ -.form.form--loan { - grid-template-columns: 2.5fr 1fr 2.5fr; -} -.form__label--loan { - grid-row: 2; -} -/* End exceptions */ - -.form__input { - width: 100%; - border: none; - background-color: rgba(255, 255, 255, 0.4); - font-family: inherit; - font-size: 1.5rem; - text-align: center; - color: #333; - padding: 0.3rem 1rem; - border-radius: 0.7rem; - transition: all 0.3s; -} - -.form__input:focus { - outline: none; - background-color: rgba(255, 255, 255, 0.6); -} - -.form__label { - font-size: 1.3rem; - text-align: center; -} - -.form__btn { - border: none; - border-radius: 0.7rem; - font-size: 1.8rem; - background-color: #fff; - cursor: pointer; - transition: all 0.3s; -} - -.form__btn:focus { - outline: none; - background-color: rgba(255, 255, 255, 0.8); -} - -.logout-timer { - padding: 0 0.3rem; - margin-top: 1.9rem; - text-align: right; - font-size: 1.25rem; -} - -.timer { - font-weight: 600; -} diff --git a/12-Numbers-Dates-Timers-Bankist/final/.prettierrc b/12-Numbers-Dates-Timers-Bankist/final/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/12-Numbers-Dates-Timers-Bankist/final/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/12-Numbers-Dates-Timers-Bankist/final/Bankist-flowchart.png b/12-Numbers-Dates-Timers-Bankist/final/Bankist-flowchart.png deleted file mode 100644 index 7c4923c3ef..0000000000 Binary files a/12-Numbers-Dates-Timers-Bankist/final/Bankist-flowchart.png and /dev/null differ diff --git a/12-Numbers-Dates-Timers-Bankist/final/icon.png b/12-Numbers-Dates-Timers-Bankist/final/icon.png deleted file mode 100644 index d00606eab8..0000000000 Binary files a/12-Numbers-Dates-Timers-Bankist/final/icon.png and /dev/null differ diff --git a/12-Numbers-Dates-Timers-Bankist/final/index.html b/12-Numbers-Dates-Timers-Bankist/final/index.html deleted file mode 100644 index 6a46971703..0000000000 --- a/12-Numbers-Dates-Timers-Bankist/final/index.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - Bankist - - - - - -
- -
-
-

Current balance

-

- As of 05/03/2037 -

-
-

0000€

-
- - -
-
-
2 deposit
-
3 days ago
-
4 000€
-
-
-
- 1 withdrawal -
-
24/01/2037
-
-378€
-
-
- - -
-

In

-

0000€

-

Out

-

0000€

-

Interest

-

0000€

- -
- - -
-

Transfer money

-
- - - - - -
-
- - -
-

Request loan

-
- - - -
-
- - -
-

Close account

-
- - - - - -
-
- - -

- You will be logged out in 05:00 -

-
- - - - - - diff --git a/12-Numbers-Dates-Timers-Bankist/final/logo.png b/12-Numbers-Dates-Timers-Bankist/final/logo.png deleted file mode 100644 index f437ac24f3..0000000000 Binary files a/12-Numbers-Dates-Timers-Bankist/final/logo.png and /dev/null differ diff --git a/12-Numbers-Dates-Timers-Bankist/final/script.js b/12-Numbers-Dates-Timers-Bankist/final/script.js deleted file mode 100644 index 1411c36cc0..0000000000 --- a/12-Numbers-Dates-Timers-Bankist/final/script.js +++ /dev/null @@ -1,636 +0,0 @@ -'use strict'; - -///////////////////////////////////////////////// -///////////////////////////////////////////////// -// BANKIST APP - -///////////////////////////////////////////////// -// Data - -// DIFFERENT DATA! Contains movement dates, currency and locale - -const account1 = { - owner: 'Jonas Schmedtmann', - movements: [200, 455.23, -306.5, 25000, -642.21, -133.9, 79.97, 1300], - interestRate: 1.2, // % - pin: 1111, - - movementsDates: [ - '2019-11-18T21:31:17.178Z', - '2019-12-23T07:42:02.383Z', - '2020-01-28T09:15:04.904Z', - '2020-04-01T10:17:24.185Z', - '2020-05-08T14:11:59.604Z', - '2020-07-26T17:01:17.194Z', - '2020-07-28T23:36:17.929Z', - '2020-08-01T10:51:36.790Z', - ], - currency: 'EUR', - locale: 'pt-PT', // de-DE -}; - -const account2 = { - owner: 'Jessica Davis', - movements: [5000, 3400, -150, -790, -3210, -1000, 8500, -30], - interestRate: 1.5, - pin: 2222, - - movementsDates: [ - '2019-11-01T13:15:33.035Z', - '2019-11-30T09:48:16.867Z', - '2019-12-25T06:04:23.907Z', - '2020-01-25T14:18:46.235Z', - '2020-02-05T16:33:06.386Z', - '2020-04-10T14:43:26.374Z', - '2020-06-25T18:49:59.371Z', - '2020-07-26T12:01:20.894Z', - ], - currency: 'USD', - locale: 'en-US', -}; - -const accounts = [account1, account2]; - -///////////////////////////////////////////////// -// Elements -const labelWelcome = document.querySelector('.welcome'); -const labelDate = document.querySelector('.date'); -const labelBalance = document.querySelector('.balance__value'); -const labelSumIn = document.querySelector('.summary__value--in'); -const labelSumOut = document.querySelector('.summary__value--out'); -const labelSumInterest = document.querySelector('.summary__value--interest'); -const labelTimer = document.querySelector('.timer'); - -const containerApp = document.querySelector('.app'); -const containerMovements = document.querySelector('.movements'); - -const btnLogin = document.querySelector('.login__btn'); -const btnTransfer = document.querySelector('.form__btn--transfer'); -const btnLoan = document.querySelector('.form__btn--loan'); -const btnClose = document.querySelector('.form__btn--close'); -const btnSort = document.querySelector('.btn--sort'); - -const inputLoginUsername = document.querySelector('.login__input--user'); -const inputLoginPin = document.querySelector('.login__input--pin'); -const inputTransferTo = document.querySelector('.form__input--to'); -const inputTransferAmount = document.querySelector('.form__input--amount'); -const inputLoanAmount = document.querySelector('.form__input--loan-amount'); -const inputCloseUsername = document.querySelector('.form__input--user'); -const inputClosePin = document.querySelector('.form__input--pin'); - -///////////////////////////////////////////////// -// Functions - -const formatMovementDate = function (date, locale) { - const calcDaysPassed = (date1, date2) => - Math.round(Math.abs(date2 - date1) / (1000 * 60 * 60 * 24)); - - const daysPassed = calcDaysPassed(new Date(), date); - console.log(daysPassed); - - if (daysPassed === 0) return 'Today'; - if (daysPassed === 1) return 'Yesterday'; - if (daysPassed <= 7) return `${daysPassed} days ago`; - - // const day = `${date.getDate()}`.padStart(2, 0); - // const month = `${date.getMonth() + 1}`.padStart(2, 0); - // const year = date.getFullYear(); - // return `${day}/${month}/${year}`; - return new Intl.DateTimeFormat(locale).format(date); -}; - -const formatCur = function (value, locale, currency) { - return new Intl.NumberFormat(locale, { - style: 'currency', - currency: currency, - }).format(value); -}; - -const displayMovements = function (acc, sort = false) { - containerMovements.innerHTML = ''; - - const combinedMovsDates = acc.movements.map((mov, i) => ({ - movement: mov, - movementDate: acc.movementsDates.at(i), - })); - - if (sort) combinedMovsDates.sort((a, b) => a.movement - b.movement); - - combinedMovsDates.forEach(function (obj, i) { - const { movement, movementDate } = obj; - const type = movement > 0 ? 'deposit' : 'withdrawal'; - - const date = new Date(movementDate); - const displayDate = formatMovementDate(date, acc.locale); - - const formattedMov = formatCur(movement, acc.locale, acc.currency); - - const html = ` -
-
${ - i + 1 - } ${type}
-
${displayDate}
-
${formattedMov}
-
- `; - - containerMovements.insertAdjacentHTML('afterbegin', html); - }); -}; - -const calcDisplayBalance = function (acc) { - acc.balance = acc.movements.reduce((acc, mov) => acc + mov, 0); - labelBalance.textContent = formatCur(acc.balance, acc.locale, acc.currency); -}; - -const calcDisplaySummary = function (acc) { - const incomes = acc.movements - .filter(mov => mov > 0) - .reduce((acc, mov) => acc + mov, 0); - labelSumIn.textContent = formatCur(incomes, acc.locale, acc.currency); - - const out = acc.movements - .filter(mov => mov < 0) - .reduce((acc, mov) => acc + mov, 0); - labelSumOut.textContent = formatCur(Math.abs(out), acc.locale, acc.currency); - - const interest = acc.movements - .filter(mov => mov > 0) - .map(deposit => (deposit * acc.interestRate) / 100) - .filter((int, i, arr) => { - // console.log(arr); - return int >= 1; - }) - .reduce((acc, int) => acc + int, 0); - labelSumInterest.textContent = formatCur(interest, acc.locale, acc.currency); -}; - -const createUsernames = function (accs) { - accs.forEach(function (acc) { - acc.username = acc.owner - .toLowerCase() - .split(' ') - .map(name => name[0]) - .join(''); - }); -}; -createUsernames(accounts); - -const updateUI = function (acc) { - // Display movements - displayMovements(acc); - - // Display balance - calcDisplayBalance(acc); - - // Display summary - calcDisplaySummary(acc); -}; - -const startLogOutTimer = function () { - const tick = function () { - const min = String(Math.trunc(time / 60)).padStart(2, 0); - const sec = String(time % 60).padStart(2, 0); - - // In each call, print the remaining time to UI - labelTimer.textContent = `${min}:${sec}`; - - // When 0 seconds, stop timer and log out user - if (time === 0) { - clearInterval(timer); - labelWelcome.textContent = 'Log in to get started'; - containerApp.style.opacity = 0; - } - - // Decrease 1s - time--; - }; - - // Set time to 5 minutes - let time = 120; - - // Call the timer every second - tick(); - const timer = setInterval(tick, 1000); - - return timer; -}; - -/////////////////////////////////////// -// Event handlers -let currentAccount, timer; - -// FAKE ALWAYS LOGGED IN -// currentAccount = account1; -// updateUI(currentAccount); -// containerApp.style.opacity = 100; - -btnLogin.addEventListener('click', function (e) { - // Prevent form from submitting - e.preventDefault(); - - currentAccount = accounts.find( - acc => acc.username === inputLoginUsername.value - ); - console.log(currentAccount); - - if (currentAccount?.pin === +inputLoginPin.value) { - // Display UI and message - labelWelcome.textContent = `Welcome back, ${ - currentAccount.owner.split(' ')[0] - }`; - containerApp.style.opacity = 100; - - // Create current date and time - const now = new Date(); - const options = { - hour: 'numeric', - minute: 'numeric', - day: 'numeric', - month: 'numeric', - year: 'numeric', - // weekday: 'long', - }; - // const locale = navigator.language; - // console.log(locale); - - labelDate.textContent = new Intl.DateTimeFormat( - currentAccount.locale, - options - ).format(now); - - // const day = `${now.getDate()}`.padStart(2, 0); - // const month = `${now.getMonth() + 1}`.padStart(2, 0); - // const year = now.getFullYear(); - // const hour = `${now.getHours()}`.padStart(2, 0); - // const min = `${now.getMinutes()}`.padStart(2, 0); - // labelDate.textContent = `${day}/${month}/${year}, ${hour}:${min}`; - - // Clear input fields - inputLoginUsername.value = inputLoginPin.value = ''; - inputLoginPin.blur(); - - // Timer - if (timer) clearInterval(timer); - timer = startLogOutTimer(); - - // Update UI - updateUI(currentAccount); - } -}); - -btnTransfer.addEventListener('click', function (e) { - e.preventDefault(); - const amount = +inputTransferAmount.value; - const receiverAcc = accounts.find( - acc => acc.username === inputTransferTo.value - ); - inputTransferAmount.value = inputTransferTo.value = ''; - - if ( - amount > 0 && - receiverAcc && - currentAccount.balance >= amount && - receiverAcc?.username !== currentAccount.username - ) { - // Doing the transfer - currentAccount.movements.push(-amount); - receiverAcc.movements.push(amount); - - // Add transfer date - currentAccount.movementsDates.push(new Date().toISOString()); - receiverAcc.movementsDates.push(new Date().toISOString()); - - // Update UI - updateUI(currentAccount); - - // Reset timer - clearInterval(timer); - timer = startLogOutTimer(); - } -}); - -btnLoan.addEventListener('click', function (e) { - e.preventDefault(); - - const amount = Math.floor(inputLoanAmount.value); - - if (amount > 0 && currentAccount.movements.some(mov => mov >= amount * 0.1)) { - setTimeout(function () { - // Add movement - currentAccount.movements.push(amount); - - // Add loan date - currentAccount.movementsDates.push(new Date().toISOString()); - - // Update UI - updateUI(currentAccount); - - // Reset timer - clearInterval(timer); - timer = startLogOutTimer(); - }, 2500); - } - inputLoanAmount.value = ''; -}); - -btnClose.addEventListener('click', function (e) { - e.preventDefault(); - - if ( - inputCloseUsername.value === currentAccount.username && - +inputClosePin.value === currentAccount.pin - ) { - const index = accounts.findIndex( - acc => acc.username === currentAccount.username - ); - console.log(index); - // .indexOf(23) - - // Delete account - accounts.splice(index, 1); - - // Hide UI - containerApp.style.opacity = 0; - } - - inputCloseUsername.value = inputClosePin.value = ''; -}); - -let sorted = false; -btnSort.addEventListener('click', function (e) { - e.preventDefault(); - // BUG in video: - // displayMovements(currentAccount.movements, !sorted); - - // FIX: - displayMovements(currentAccount, !sorted); - sorted = !sorted; -}); - -///////////////////////////////////////////////// -///////////////////////////////////////////////// -// LECTURES - -/* -/////////////////////////////////////// -// Converting and Checking Numbers -console.log(23 === 23.0); - -// Base 10 - 0 to 9. 1/10 = 0.1. 3/10 = 3.3333333 -// Binary base 2 - 0 1 -console.log(0.1 + 0.2); -console.log(0.1 + 0.2 === 0.3); - -// Conversion -console.log(Number('23')); -console.log(+'23'); - -// Parsing -console.log(Number.parseInt('30px', 10)); -console.log(Number.parseInt('e23', 10)); - -console.log(Number.parseInt(' 2.5rem ')); -console.log(Number.parseFloat(' 2.5rem ')); - -// console.log(parseFloat(' 2.5rem ')); - -// Check if value is NaN -console.log(Number.isNaN(20)); -console.log(Number.isNaN('20')); -console.log(Number.isNaN(+'20X')); -console.log(Number.isNaN(23 / 0)); - -// Checking if value is number -console.log(Number.isFinite(20)); -console.log(Number.isFinite('20')); -console.log(Number.isFinite(+'20X')); -console.log(Number.isFinite(23 / 0)); - -console.log(Number.isInteger(23)); -console.log(Number.isInteger(23.0)); -console.log(Number.isInteger(23 / 0)); - - - -/////////////////////////////////////// -// Math and Rounding - -console.log(Math.sqrt(25)); -console.log(25 ** (1 / 2)); -console.log(8 ** (1 / 3)); - -console.log(Math.max(5, 18, 23, 11, 2)); -console.log(Math.max(5, 18, '23', 11, 2)); -console.log(Math.max(5, 18, '23px', 11, 2)); - -console.log(Math.min(5, 18, 23, 11, 2)); - -console.log(Math.PI * Number.parseFloat('10px') ** 2); - -console.log(Math.trunc(Math.random() * 6) + 1); - -const randomInt = (min, max) => - Math.floor(Math.random() * (max - min + 1)) + min; - -console.log(randomInt(10, 20)); -console.log(randomInt(0, 3)); - -// Rounding integers -console.log(Math.round(23.3)); -console.log(Math.round(23.9)); - -console.log(Math.ceil(23.3)); -console.log(Math.ceil(23.9)); - -console.log(Math.floor(23.3)); -console.log(Math.floor('23.9')); - -console.log(Math.trunc(23.3)); - -console.log(Math.trunc(-23.3)); -console.log(Math.floor(-23.3)); - -// Rounding decimals -console.log((2.7).toFixed(0)); -console.log((2.7).toFixed(3)); -console.log((2.345).toFixed(2)); -console.log(+(2.345).toFixed(2)); - - -/////////////////////////////////////// -// The Remainder Operator -console.log(5 % 2); -console.log(5 / 2); // 5 = 2 * 2 + 1 - -console.log(8 % 3); -console.log(8 / 3); // 8 = 2 * 3 + 2 - -console.log(6 % 2); -console.log(6 / 2); - -console.log(7 % 2); -console.log(7 / 2); - -const isEven = n => n % 2 === 0; -console.log(isEven(8)); -console.log(isEven(23)); -console.log(isEven(514)); - -labelBalance.addEventListener('click', function () { - [...document.querySelectorAll('.movements__row')].forEach(function (row, i) { - // 0, 2, 4, 6 - if (i % 2 === 0) row.style.backgroundColor = 'orangered'; - // 0, 3, 6, 9 - if (i % 3 === 0) row.style.backgroundColor = 'blue'; - }); -}); - - -/////////////////////////////////////// -// Numeric Separators - -// 287,460,000,000 -const diameter = 287_460_000_000; -console.log(diameter); - -const price = 345_99; -console.log(price); - -const transferFee1 = 15_00; -const transferFee2 = 1_500; - -const PI = 3.1415; -console.log(PI); - -console.log(Number('230_000')); -console.log(parseInt('230_000')); - - -/////////////////////////////////////// -// Working with BigInt -console.log(2 ** 53 - 1); -console.log(Number.MAX_SAFE_INTEGER); -console.log(2 ** 53 + 1); -console.log(2 ** 53 + 2); -console.log(2 ** 53 + 3); -console.log(2 ** 53 + 4); - -console.log(4838430248342043823408394839483204n); -console.log(BigInt(48384302)); - -// Operations -console.log(10000n + 10000n); -console.log(36286372637263726376237263726372632n * 10000000n); -// console.log(Math.sqrt(16n)); - -const huge = 20289830237283728378237n; -const num = 23; -console.log(huge * BigInt(num)); - -// Exceptions -console.log(20n > 15); -console.log(20n === 20); -console.log(typeof 20n); -console.log(20n == '20'); - -console.log(huge + ' is REALLY big!!!'); - -// Divisions -console.log(11n / 3n); -console.log(10 / 3); - - -/////////////////////////////////////// -// Creating Dates - -// Create a date - -const now = new Date(); -console.log(now); - -console.log(new Date('Aug 02 2020 18:05:41')); -console.log(new Date('December 24, 2015')); -console.log(new Date(account1.movementsDates[0])); - -console.log(new Date(2037, 10, 19, 15, 23, 5)); -console.log(new Date(2037, 10, 31)); - -console.log(new Date(0)); -console.log(new Date(3 * 24 * 60 * 60 * 1000)); - - -// Working with dates -const future = new Date(2037, 10, 19, 15, 23); -console.log(future); -console.log(future.getFullYear()); -console.log(future.getMonth()); -console.log(future.getDate()); -console.log(future.getDay()); -console.log(future.getHours()); -console.log(future.getMinutes()); -console.log(future.getSeconds()); -console.log(future.toISOString()); -console.log(future.getTime()); - -console.log(new Date(2142256980000)); - -console.log(Date.now()); - -future.setFullYear(2040); -console.log(future); - - -/////////////////////////////////////// -// Operations With Dates -const future = new Date(2037, 10, 19, 15, 23); -console.log(+future); - -const calcDaysPassed = (date1, date2) => - Math.abs(date2 - date1) / (1000 * 60 * 60 * 24); - -const days1 = calcDaysPassed(new Date(2037, 3, 4), new Date(2037, 3, 14)); -console.log(days1); - - -/////////////////////////////////////// -// Internationalizing Numbers (Intl) -const num = 3884764.23; - -const options = { - style: 'currency', - unit: 'celsius', - currency: 'EUR', - // useGrouping: false, -}; - -console.log('US: ', new Intl.NumberFormat('en-US', options).format(num)); -console.log('Germany: ', new Intl.NumberFormat('de-DE', options).format(num)); -console.log('Syria: ', new Intl.NumberFormat('ar-SY', options).format(num)); -console.log( - navigator.language, - new Intl.NumberFormat(navigator.language, options).format(num) -); - - -/////////////////////////////////////// -// Timers - -// setTimeout -const ingredients = ['olives', 'spinach']; -const pizzaTimer = setTimeout( - (ing1, ing2) => console.log(`Here is your pizza with ${ing1} and ${ing2} 🍕`), - 3000, - ...ingredients -); -console.log('Waiting...'); - -if (ingredients.includes('spinach')) clearTimeout(pizzaTimer); - -// setInterval -setInterval(function () { - const now = new Date(); - console.log(now); -}, 1000); -*/ diff --git a/12-Numbers-Dates-Timers-Bankist/final/style.css b/12-Numbers-Dates-Timers-Bankist/final/style.css deleted file mode 100644 index b047de3f76..0000000000 --- a/12-Numbers-Dates-Timers-Bankist/final/style.css +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Use this CSS to learn some intersting techniques, - * in case you're wondering how I built the UI. - * Have fun! 😁 - */ - -* { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -html { - font-size: 62.5%; - box-sizing: border-box; -} - -body { - font-family: 'Poppins', sans-serif; - color: #444; - background-color: #f3f3f3; - height: 100vh; - padding: 2rem; -} - -nav { - display: flex; - justify-content: space-between; - align-items: center; - padding: 0 2rem; -} - -.welcome { - font-size: 1.9rem; - font-weight: 500; -} - -.logo { - height: 5.25rem; -} - -.login { - display: flex; -} - -.login__input { - border: none; - padding: 0.5rem 2rem; - font-size: 1.6rem; - font-family: inherit; - text-align: center; - width: 12rem; - border-radius: 10rem; - margin-right: 1rem; - color: inherit; - border: 1px solid #fff; - transition: all 0.3s; -} - -.login__input:focus { - outline: none; - border: 1px solid #ccc; -} - -.login__input::placeholder { - color: #bbb; -} - -.login__btn { - border: none; - background: none; - font-size: 2.2rem; - color: inherit; - cursor: pointer; - transition: all 0.3s; -} - -.login__btn:hover, -.login__btn:focus, -.btn--sort:hover, -.btn--sort:focus { - outline: none; - color: #777; -} - -/* MAIN */ -.app { - position: relative; - max-width: 100rem; - margin: 4rem auto; - display: grid; - grid-template-columns: 4fr 3fr; - grid-template-rows: auto repeat(3, 15rem) auto; - gap: 2rem; - - /* NOTE This creates the fade in/out anumation */ - opacity: 0; - transition: all 1s; -} - -.balance { - grid-column: 1 / span 2; - display: flex; - align-items: flex-end; - justify-content: space-between; - margin-bottom: 2rem; -} - -.balance__label { - font-size: 2.2rem; - font-weight: 500; - margin-bottom: -0.2rem; -} - -.balance__date { - font-size: 1.4rem; - color: #888; -} - -.balance__value { - font-size: 4.5rem; - font-weight: 400; -} - -/* MOVEMENTS */ -.movements { - grid-row: 2 / span 3; - background-color: #fff; - border-radius: 1rem; - overflow: scroll; -} - -.movements__row { - padding: 2.25rem 4rem; - display: flex; - align-items: center; - border-bottom: 1px solid #eee; -} - -.movements__type { - font-size: 1.1rem; - text-transform: uppercase; - font-weight: 500; - color: #fff; - padding: 0.1rem 1rem; - border-radius: 10rem; - margin-right: 2rem; -} - -.movements__date { - font-size: 1.1rem; - text-transform: uppercase; - font-weight: 500; - color: #666; -} - -.movements__type--deposit { - background-image: linear-gradient(to top left, #39b385, #9be15d); -} - -.movements__type--withdrawal { - background-image: linear-gradient(to top left, #e52a5a, #ff585f); -} - -.movements__value { - font-size: 1.7rem; - margin-left: auto; -} - -/* SUMMARY */ -.summary { - grid-row: 5 / 6; - display: flex; - align-items: baseline; - padding: 0 0.3rem; - margin-top: 1rem; -} - -.summary__label { - font-size: 1.2rem; - font-weight: 500; - text-transform: uppercase; - margin-right: 0.8rem; -} - -.summary__value { - font-size: 2.2rem; - margin-right: 2.5rem; -} - -.summary__value--in, -.summary__value--interest { - color: #66c873; -} - -.summary__value--out { - color: #f5465d; -} - -.btn--sort { - margin-left: auto; - border: none; - background: none; - font-size: 1.3rem; - font-weight: 500; - cursor: pointer; -} - -/* OPERATIONS */ -.operation { - border-radius: 1rem; - padding: 3rem 4rem; - color: #333; -} - -.operation--transfer { - background-image: linear-gradient(to top left, #ffb003, #ffcb03); -} - -.operation--loan { - background-image: linear-gradient(to top left, #39b385, #9be15d); -} - -.operation--close { - background-image: linear-gradient(to top left, #e52a5a, #ff585f); -} - -h2 { - margin-bottom: 1.5rem; - font-size: 1.7rem; - font-weight: 600; - color: #333; -} - -.form { - display: grid; - grid-template-columns: 2.5fr 2.5fr 1fr; - grid-template-rows: auto auto; - gap: 0.4rem 1rem; -} - -/* Exceptions for interst */ -.form.form--loan { - grid-template-columns: 2.5fr 1fr 2.5fr; -} -.form__label--loan { - grid-row: 2; -} -/* End exceptions */ - -.form__input { - width: 100%; - border: none; - background-color: rgba(255, 255, 255, 0.4); - font-family: inherit; - font-size: 1.5rem; - text-align: center; - color: #333; - padding: 0.3rem 1rem; - border-radius: 0.7rem; - transition: all 0.3s; -} - -.form__input:focus { - outline: none; - background-color: rgba(255, 255, 255, 0.6); -} - -.form__label { - font-size: 1.3rem; - text-align: center; -} - -.form__btn { - border: none; - border-radius: 0.7rem; - font-size: 1.8rem; - background-color: #fff; - cursor: pointer; - transition: all 0.3s; -} - -.form__btn:focus { - outline: none; - background-color: rgba(255, 255, 255, 0.8); -} - -.logout-timer { - padding: 0 0.3rem; - margin-top: 1.9rem; - text-align: right; - font-size: 1.25rem; -} - -.timer { - font-weight: 600; -} diff --git a/12-Numbers-Dates-Timers-Bankist/starter/.prettierrc b/12-Numbers-Dates-Timers-Bankist/starter/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/12-Numbers-Dates-Timers-Bankist/starter/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/12-Numbers-Dates-Timers-Bankist/starter/Bankist-flowchart.png b/12-Numbers-Dates-Timers-Bankist/starter/Bankist-flowchart.png deleted file mode 100644 index 6b4bfd48b1..0000000000 Binary files a/12-Numbers-Dates-Timers-Bankist/starter/Bankist-flowchart.png and /dev/null differ diff --git a/12-Numbers-Dates-Timers-Bankist/starter/icon.png b/12-Numbers-Dates-Timers-Bankist/starter/icon.png deleted file mode 100644 index d00606eab8..0000000000 Binary files a/12-Numbers-Dates-Timers-Bankist/starter/icon.png and /dev/null differ diff --git a/12-Numbers-Dates-Timers-Bankist/starter/index.html b/12-Numbers-Dates-Timers-Bankist/starter/index.html deleted file mode 100644 index 6a46971703..0000000000 --- a/12-Numbers-Dates-Timers-Bankist/starter/index.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - Bankist - - - - - -
- -
-
-

Current balance

-

- As of 05/03/2037 -

-
-

0000€

-
- - -
-
-
2 deposit
-
3 days ago
-
4 000€
-
-
-
- 1 withdrawal -
-
24/01/2037
-
-378€
-
-
- - -
-

In

-

0000€

-

Out

-

0000€

-

Interest

-

0000€

- -
- - -
-

Transfer money

-
- - - - - -
-
- - -
-

Request loan

-
- - - -
-
- - -
-

Close account

-
- - - - - -
-
- - -

- You will be logged out in 05:00 -

-
- - - - - - diff --git a/12-Numbers-Dates-Timers-Bankist/starter/logo.png b/12-Numbers-Dates-Timers-Bankist/starter/logo.png deleted file mode 100644 index f437ac24f3..0000000000 Binary files a/12-Numbers-Dates-Timers-Bankist/starter/logo.png and /dev/null differ diff --git a/12-Numbers-Dates-Timers-Bankist/starter/script.js b/12-Numbers-Dates-Timers-Bankist/starter/script.js deleted file mode 100644 index 7fd35920a2..0000000000 --- a/12-Numbers-Dates-Timers-Bankist/starter/script.js +++ /dev/null @@ -1,253 +0,0 @@ -'use strict'; - -///////////////////////////////////////////////// -///////////////////////////////////////////////// -// BANKIST APP - -///////////////////////////////////////////////// -// Data - -// DIFFERENT DATA! Contains movement dates, currency and locale - -const account1 = { - owner: 'Jonas Schmedtmann', - movements: [200, 455.23, -306.5, 25000, -642.21, -133.9, 79.97, 1300], - interestRate: 1.2, // % - pin: 1111, - - movementsDates: [ - '2019-11-18T21:31:17.178Z', - '2019-12-23T07:42:02.383Z', - '2020-01-28T09:15:04.904Z', - '2020-04-01T10:17:24.185Z', - '2020-05-08T14:11:59.604Z', - '2020-05-27T17:01:17.194Z', - '2020-07-11T23:36:17.929Z', - '2020-07-12T10:51:36.790Z', - ], - currency: 'EUR', - locale: 'pt-PT', // de-DE -}; - -const account2 = { - owner: 'Jessica Davis', - movements: [5000, 3400, -150, -790, -3210, -1000, 8500, -30], - interestRate: 1.5, - pin: 2222, - - movementsDates: [ - '2019-11-01T13:15:33.035Z', - '2019-11-30T09:48:16.867Z', - '2019-12-25T06:04:23.907Z', - '2020-01-25T14:18:46.235Z', - '2020-02-05T16:33:06.386Z', - '2020-04-10T14:43:26.374Z', - '2020-06-25T18:49:59.371Z', - '2020-07-26T12:01:20.894Z', - ], - currency: 'USD', - locale: 'en-US', -}; - -const accounts = [account1, account2]; - -///////////////////////////////////////////////// -// Elements -const labelWelcome = document.querySelector('.welcome'); -const labelDate = document.querySelector('.date'); -const labelBalance = document.querySelector('.balance__value'); -const labelSumIn = document.querySelector('.summary__value--in'); -const labelSumOut = document.querySelector('.summary__value--out'); -const labelSumInterest = document.querySelector('.summary__value--interest'); -const labelTimer = document.querySelector('.timer'); - -const containerApp = document.querySelector('.app'); -const containerMovements = document.querySelector('.movements'); - -const btnLogin = document.querySelector('.login__btn'); -const btnTransfer = document.querySelector('.form__btn--transfer'); -const btnLoan = document.querySelector('.form__btn--loan'); -const btnClose = document.querySelector('.form__btn--close'); -const btnSort = document.querySelector('.btn--sort'); - -const inputLoginUsername = document.querySelector('.login__input--user'); -const inputLoginPin = document.querySelector('.login__input--pin'); -const inputTransferTo = document.querySelector('.form__input--to'); -const inputTransferAmount = document.querySelector('.form__input--amount'); -const inputLoanAmount = document.querySelector('.form__input--loan-amount'); -const inputCloseUsername = document.querySelector('.form__input--user'); -const inputClosePin = document.querySelector('.form__input--pin'); - -///////////////////////////////////////////////// -// Functions - -const displayMovements = function (movements, sort = false) { - containerMovements.innerHTML = ''; - - const movs = sort ? movements.slice().sort((a, b) => a - b) : movements; - - movs.forEach(function (mov, i) { - const type = mov > 0 ? 'deposit' : 'withdrawal'; - - const html = ` -
-
${ - i + 1 - } ${type}
-
${mov}€
-
- `; - - containerMovements.insertAdjacentHTML('afterbegin', html); - }); -}; - -const calcDisplayBalance = function (acc) { - acc.balance = acc.movements.reduce((acc, mov) => acc + mov, 0); - labelBalance.textContent = `${acc.balance}€`; -}; - -const calcDisplaySummary = function (acc) { - const incomes = acc.movements - .filter(mov => mov > 0) - .reduce((acc, mov) => acc + mov, 0); - labelSumIn.textContent = `${incomes}€`; - - const out = acc.movements - .filter(mov => mov < 0) - .reduce((acc, mov) => acc + mov, 0); - labelSumOut.textContent = `${Math.abs(out)}€`; - - const interest = acc.movements - .filter(mov => mov > 0) - .map(deposit => (deposit * acc.interestRate) / 100) - .filter((int, i, arr) => { - // console.log(arr); - return int >= 1; - }) - .reduce((acc, int) => acc + int, 0); - labelSumInterest.textContent = `${interest}€`; -}; - -const createUsernames = function (accs) { - accs.forEach(function (acc) { - acc.username = acc.owner - .toLowerCase() - .split(' ') - .map(name => name[0]) - .join(''); - }); -}; -createUsernames(accounts); - -const updateUI = function (acc) { - // Display movements - displayMovements(acc.movements); - - // Display balance - calcDisplayBalance(acc); - - // Display summary - calcDisplaySummary(acc); -}; - -/////////////////////////////////////// -// Event handlers -let currentAccount; - -btnLogin.addEventListener('click', function (e) { - // Prevent form from submitting - e.preventDefault(); - - currentAccount = accounts.find( - acc => acc.username === inputLoginUsername.value - ); - console.log(currentAccount); - - if (currentAccount?.pin === Number(inputLoginPin.value)) { - // Display UI and message - labelWelcome.textContent = `Welcome back, ${ - currentAccount.owner.split(' ')[0] - }`; - containerApp.style.opacity = 100; - - // Clear input fields - inputLoginUsername.value = inputLoginPin.value = ''; - inputLoginPin.blur(); - - // Update UI - updateUI(currentAccount); - } -}); - -btnTransfer.addEventListener('click', function (e) { - e.preventDefault(); - const amount = Number(inputTransferAmount.value); - const receiverAcc = accounts.find( - acc => acc.username === inputTransferTo.value - ); - inputTransferAmount.value = inputTransferTo.value = ''; - - if ( - amount > 0 && - receiverAcc && - currentAccount.balance >= amount && - receiverAcc?.username !== currentAccount.username - ) { - // Doing the transfer - currentAccount.movements.push(-amount); - receiverAcc.movements.push(amount); - - // Update UI - updateUI(currentAccount); - } -}); - -btnLoan.addEventListener('click', function (e) { - e.preventDefault(); - - const amount = Number(inputLoanAmount.value); - - if (amount > 0 && currentAccount.movements.some(mov => mov >= amount * 0.1)) { - // Add movement - currentAccount.movements.push(amount); - - // Update UI - updateUI(currentAccount); - } - inputLoanAmount.value = ''; -}); - -btnClose.addEventListener('click', function (e) { - e.preventDefault(); - - if ( - inputCloseUsername.value === currentAccount.username && - Number(inputClosePin.value) === currentAccount.pin - ) { - const index = accounts.findIndex( - acc => acc.username === currentAccount.username - ); - console.log(index); - // .indexOf(23) - - // Delete account - accounts.splice(index, 1); - - // Hide UI - containerApp.style.opacity = 0; - } - - inputCloseUsername.value = inputClosePin.value = ''; -}); - -let sorted = false; -btnSort.addEventListener('click', function (e) { - e.preventDefault(); - displayMovements(currentAccount.movements, !sorted); - sorted = !sorted; -}); - -///////////////////////////////////////////////// -///////////////////////////////////////////////// -// LECTURES diff --git a/12-Numbers-Dates-Timers-Bankist/starter/style.css b/12-Numbers-Dates-Timers-Bankist/starter/style.css deleted file mode 100644 index b047de3f76..0000000000 --- a/12-Numbers-Dates-Timers-Bankist/starter/style.css +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Use this CSS to learn some intersting techniques, - * in case you're wondering how I built the UI. - * Have fun! 😁 - */ - -* { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -html { - font-size: 62.5%; - box-sizing: border-box; -} - -body { - font-family: 'Poppins', sans-serif; - color: #444; - background-color: #f3f3f3; - height: 100vh; - padding: 2rem; -} - -nav { - display: flex; - justify-content: space-between; - align-items: center; - padding: 0 2rem; -} - -.welcome { - font-size: 1.9rem; - font-weight: 500; -} - -.logo { - height: 5.25rem; -} - -.login { - display: flex; -} - -.login__input { - border: none; - padding: 0.5rem 2rem; - font-size: 1.6rem; - font-family: inherit; - text-align: center; - width: 12rem; - border-radius: 10rem; - margin-right: 1rem; - color: inherit; - border: 1px solid #fff; - transition: all 0.3s; -} - -.login__input:focus { - outline: none; - border: 1px solid #ccc; -} - -.login__input::placeholder { - color: #bbb; -} - -.login__btn { - border: none; - background: none; - font-size: 2.2rem; - color: inherit; - cursor: pointer; - transition: all 0.3s; -} - -.login__btn:hover, -.login__btn:focus, -.btn--sort:hover, -.btn--sort:focus { - outline: none; - color: #777; -} - -/* MAIN */ -.app { - position: relative; - max-width: 100rem; - margin: 4rem auto; - display: grid; - grid-template-columns: 4fr 3fr; - grid-template-rows: auto repeat(3, 15rem) auto; - gap: 2rem; - - /* NOTE This creates the fade in/out anumation */ - opacity: 0; - transition: all 1s; -} - -.balance { - grid-column: 1 / span 2; - display: flex; - align-items: flex-end; - justify-content: space-between; - margin-bottom: 2rem; -} - -.balance__label { - font-size: 2.2rem; - font-weight: 500; - margin-bottom: -0.2rem; -} - -.balance__date { - font-size: 1.4rem; - color: #888; -} - -.balance__value { - font-size: 4.5rem; - font-weight: 400; -} - -/* MOVEMENTS */ -.movements { - grid-row: 2 / span 3; - background-color: #fff; - border-radius: 1rem; - overflow: scroll; -} - -.movements__row { - padding: 2.25rem 4rem; - display: flex; - align-items: center; - border-bottom: 1px solid #eee; -} - -.movements__type { - font-size: 1.1rem; - text-transform: uppercase; - font-weight: 500; - color: #fff; - padding: 0.1rem 1rem; - border-radius: 10rem; - margin-right: 2rem; -} - -.movements__date { - font-size: 1.1rem; - text-transform: uppercase; - font-weight: 500; - color: #666; -} - -.movements__type--deposit { - background-image: linear-gradient(to top left, #39b385, #9be15d); -} - -.movements__type--withdrawal { - background-image: linear-gradient(to top left, #e52a5a, #ff585f); -} - -.movements__value { - font-size: 1.7rem; - margin-left: auto; -} - -/* SUMMARY */ -.summary { - grid-row: 5 / 6; - display: flex; - align-items: baseline; - padding: 0 0.3rem; - margin-top: 1rem; -} - -.summary__label { - font-size: 1.2rem; - font-weight: 500; - text-transform: uppercase; - margin-right: 0.8rem; -} - -.summary__value { - font-size: 2.2rem; - margin-right: 2.5rem; -} - -.summary__value--in, -.summary__value--interest { - color: #66c873; -} - -.summary__value--out { - color: #f5465d; -} - -.btn--sort { - margin-left: auto; - border: none; - background: none; - font-size: 1.3rem; - font-weight: 500; - cursor: pointer; -} - -/* OPERATIONS */ -.operation { - border-radius: 1rem; - padding: 3rem 4rem; - color: #333; -} - -.operation--transfer { - background-image: linear-gradient(to top left, #ffb003, #ffcb03); -} - -.operation--loan { - background-image: linear-gradient(to top left, #39b385, #9be15d); -} - -.operation--close { - background-image: linear-gradient(to top left, #e52a5a, #ff585f); -} - -h2 { - margin-bottom: 1.5rem; - font-size: 1.7rem; - font-weight: 600; - color: #333; -} - -.form { - display: grid; - grid-template-columns: 2.5fr 2.5fr 1fr; - grid-template-rows: auto auto; - gap: 0.4rem 1rem; -} - -/* Exceptions for interst */ -.form.form--loan { - grid-template-columns: 2.5fr 1fr 2.5fr; -} -.form__label--loan { - grid-row: 2; -} -/* End exceptions */ - -.form__input { - width: 100%; - border: none; - background-color: rgba(255, 255, 255, 0.4); - font-family: inherit; - font-size: 1.5rem; - text-align: center; - color: #333; - padding: 0.3rem 1rem; - border-radius: 0.7rem; - transition: all 0.3s; -} - -.form__input:focus { - outline: none; - background-color: rgba(255, 255, 255, 0.6); -} - -.form__label { - font-size: 1.3rem; - text-align: center; -} - -.form__btn { - border: none; - border-radius: 0.7rem; - font-size: 1.8rem; - background-color: #fff; - cursor: pointer; - transition: all 0.3s; -} - -.form__btn:focus { - outline: none; - background-color: rgba(255, 255, 255, 0.8); -} - -.logout-timer { - padding: 0 0.3rem; - margin-top: 1.9rem; - text-align: right; - font-size: 1.25rem; -} - -.timer { - font-weight: 600; -} diff --git a/13-Advanced-DOM-Bankist/final/.prettierrc b/13-Advanced-DOM-Bankist/final/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/13-Advanced-DOM-Bankist/final/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/13-Advanced-DOM-Bankist/final/img/card-lazy.jpg b/13-Advanced-DOM-Bankist/final/img/card-lazy.jpg deleted file mode 100644 index 367e2f9256..0000000000 Binary files a/13-Advanced-DOM-Bankist/final/img/card-lazy.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/final/img/card.jpg b/13-Advanced-DOM-Bankist/final/img/card.jpg deleted file mode 100644 index 5f8c606314..0000000000 Binary files a/13-Advanced-DOM-Bankist/final/img/card.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/final/img/digital-lazy.jpg b/13-Advanced-DOM-Bankist/final/img/digital-lazy.jpg deleted file mode 100644 index fa78f86756..0000000000 Binary files a/13-Advanced-DOM-Bankist/final/img/digital-lazy.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/final/img/digital.jpg b/13-Advanced-DOM-Bankist/final/img/digital.jpg deleted file mode 100644 index 87a319b6f3..0000000000 Binary files a/13-Advanced-DOM-Bankist/final/img/digital.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/final/img/grow-lazy.jpg b/13-Advanced-DOM-Bankist/final/img/grow-lazy.jpg deleted file mode 100644 index 6055cdc1f7..0000000000 Binary files a/13-Advanced-DOM-Bankist/final/img/grow-lazy.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/final/img/grow.jpg b/13-Advanced-DOM-Bankist/final/img/grow.jpg deleted file mode 100644 index 19e7f85dbf..0000000000 Binary files a/13-Advanced-DOM-Bankist/final/img/grow.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/final/img/hero.png b/13-Advanced-DOM-Bankist/final/img/hero.png deleted file mode 100644 index 964f65ba62..0000000000 Binary files a/13-Advanced-DOM-Bankist/final/img/hero.png and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/final/img/icon.png b/13-Advanced-DOM-Bankist/final/img/icon.png deleted file mode 100644 index d00606eab8..0000000000 Binary files a/13-Advanced-DOM-Bankist/final/img/icon.png and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/final/img/icons.svg b/13-Advanced-DOM-Bankist/final/img/icons.svg deleted file mode 100644 index 9076bfd8b1..0000000000 --- a/13-Advanced-DOM-Bankist/final/img/icons.svg +++ /dev/null @@ -1,1324 +0,0 @@ - diff --git a/13-Advanced-DOM-Bankist/final/img/img-1.jpg b/13-Advanced-DOM-Bankist/final/img/img-1.jpg deleted file mode 100644 index af42481ce0..0000000000 Binary files a/13-Advanced-DOM-Bankist/final/img/img-1.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/final/img/img-2.jpg b/13-Advanced-DOM-Bankist/final/img/img-2.jpg deleted file mode 100644 index 56b1f167e8..0000000000 Binary files a/13-Advanced-DOM-Bankist/final/img/img-2.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/final/img/img-3.jpg b/13-Advanced-DOM-Bankist/final/img/img-3.jpg deleted file mode 100644 index 475c40d05c..0000000000 Binary files a/13-Advanced-DOM-Bankist/final/img/img-3.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/final/img/img-4.jpg b/13-Advanced-DOM-Bankist/final/img/img-4.jpg deleted file mode 100644 index beb70d6f77..0000000000 Binary files a/13-Advanced-DOM-Bankist/final/img/img-4.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/final/img/logo.png b/13-Advanced-DOM-Bankist/final/img/logo.png deleted file mode 100644 index 39b5de76f4..0000000000 Binary files a/13-Advanced-DOM-Bankist/final/img/logo.png and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/final/img/user-1.jpg b/13-Advanced-DOM-Bankist/final/img/user-1.jpg deleted file mode 100644 index 3fd68e3bdc..0000000000 Binary files a/13-Advanced-DOM-Bankist/final/img/user-1.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/final/img/user-2.jpg b/13-Advanced-DOM-Bankist/final/img/user-2.jpg deleted file mode 100644 index a6b47fd123..0000000000 Binary files a/13-Advanced-DOM-Bankist/final/img/user-2.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/final/img/user-3.jpg b/13-Advanced-DOM-Bankist/final/img/user-3.jpg deleted file mode 100644 index d0754c3640..0000000000 Binary files a/13-Advanced-DOM-Bankist/final/img/user-3.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/final/index.html b/13-Advanced-DOM-Bankist/final/index.html deleted file mode 100644 index 7dc87c7d9b..0000000000 --- a/13-Advanced-DOM-Bankist/final/index.html +++ /dev/null @@ -1,356 +0,0 @@ - - - - - - - - - - - Bankist | When Banking meets Minimalist - - - - -
- - -
- -

- When - - banking - meets
- minimalist -

-

A simpler banking experience for a simpler life.

- - Minimalist bank items -
-
- -
-
-

Features

-

- Everything you need in a modern bank and more. -

-
- -
- Computer -
-
- - - -
-
100% digital bank
-

- Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde alias - sint quos? Accusantium a fugiat porro reiciendis saepe quibusdam - debitis ducimus. -

-
- -
-
- - - -
-
Watch your money grow
-

- Nesciunt quos autem dolorum voluptates cum dolores dicta fuga - inventore ab? Nulla incidunt eius numquam sequi iste pariatur - quibusdam! -

-
- Plant - - Credit card -
-
- - - -
-
Free debit card included
-

- Quasi, fugit in cumque cupiditate reprehenderit debitis animi enim - eveniet consequatur odit quam quos possimus assumenda dicta fuga - inventore ab. -

-
-
-
- -
-
-

Operations

-

- Everything as simple as possible, but no simpler. -

-
- -
-
- - - -
-
-
- - - -
-
- Tranfser money to anyone, instantly! No fees, no BS. -
-

- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut - aliquip ex ea commodo consequat. -

-
- -
-
- - - -
-
- Buy a home or make your dreams come true, with instant loans. -
-

- Duis aute irure dolor in reprehenderit in voluptate velit esse - cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat - cupidatat non proident, sunt in culpa qui officia deserunt mollit - anim id est laborum. -

-
-
-
- - - -
-
- No longer need your account? No problem! Close it instantly. -
-

- Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. Ut enim ad minim - veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex - ea commodo consequat. -

-
-
-
- -
-
-

Not sure yet?

-

- Millions of Bankists are already making their lifes simpler. -

-
- -
-
-
-
Best financial decision ever!
-
- Lorem ipsum dolor sit, amet consectetur adipisicing elit. - Accusantium quas quisquam non? Quas voluptate nulla minima - deleniti optio ullam nesciunt, numquam corporis et asperiores - laboriosam sunt, praesentium suscipit blanditiis. Necessitatibus - id alias reiciendis, perferendis facere pariatur dolore veniam - autem esse non voluptatem saepe provident nihil molestiae. -
-
- -
Aarav Lynn
-

San Francisco, USA

-
-
-
- -
-
-
- The last step to becoming a complete minimalist -
-
- Quisquam itaque deserunt ullam, quia ea repellendus provident, - ducimus neque ipsam modi voluptatibus doloremque, corrupti - laborum. Incidunt numquam perferendis veritatis neque repellendus. - Lorem, ipsum dolor sit amet consectetur adipisicing elit. Illo - deserunt exercitationem deleniti. -
-
- -
Miyah Miles
-

London, UK

-
-
-
- -
-
-
- Finally free from old-school banks -
-
- Debitis, nihil sit minus suscipit magni aperiam vel tenetur - incidunt commodi architecto numquam omnis nulla autem, - necessitatibus blanditiis modi similique quidem. Odio aliquam - culpa dicta beatae quod maiores ipsa minus consequatur error sunt, - deleniti saepe aliquid quos inventore sequi. Necessitatibus id - alias reiciendis, perferendis facere. -
-
- -
Francisco Gomes
-

Lisbon, Portugal

-
-
-
- - - -
-
-
- - - - - - - - - - - diff --git a/13-Advanced-DOM-Bankist/final/script.js b/13-Advanced-DOM-Bankist/final/script.js deleted file mode 100644 index 1516043fdb..0000000000 --- a/13-Advanced-DOM-Bankist/final/script.js +++ /dev/null @@ -1,512 +0,0 @@ -'use strict'; - -const modal = document.querySelector('.modal'); -const overlay = document.querySelector('.overlay'); -const btnCloseModal = document.querySelector('.btn--close-modal'); -const btnsOpenModal = document.querySelectorAll('.btn--show-modal'); -const btnScrollTo = document.querySelector('.btn--scroll-to'); -const section1 = document.querySelector('#section--1'); -const nav = document.querySelector('.nav'); -const tabs = document.querySelectorAll('.operations__tab'); -const tabsContainer = document.querySelector('.operations__tab-container'); -const tabsContent = document.querySelectorAll('.operations__content'); - -/////////////////////////////////////// -// Modal window - -const openModal = function (e) { - e.preventDefault(); - modal.classList.remove('hidden'); - overlay.classList.remove('hidden'); -}; - -const closeModal = function () { - modal.classList.add('hidden'); - overlay.classList.add('hidden'); -}; - -btnsOpenModal.forEach(btn => btn.addEventListener('click', openModal)); - -btnCloseModal.addEventListener('click', closeModal); -overlay.addEventListener('click', closeModal); - -document.addEventListener('keydown', function (e) { - if (e.key === 'Escape' && !modal.classList.contains('hidden')) { - closeModal(); - } -}); - -/////////////////////////////////////// -// Button scrolling -btnScrollTo.addEventListener('click', function (e) { - const s1coords = section1.getBoundingClientRect(); - console.log(s1coords); - - console.log(e.target.getBoundingClientRect()); - - console.log('Current scroll (X/Y)', window.pageXOffset, window.pageYOffset); - - console.log( - 'height/width viewport', - document.documentElement.clientHeight, - document.documentElement.clientWidth - ); - - // Scrolling - // window.scrollTo( - // s1coords.left + window.pageXOffset, - // s1coords.top + window.pageYOffset - // ); - - // window.scrollTo({ - // left: s1coords.left + window.pageXOffset, - // top: s1coords.top + window.pageYOffset, - // behavior: 'smooth', - // }); - - section1.scrollIntoView({ behavior: 'smooth' }); -}); - -/////////////////////////////////////// -// Page navigation - -// document.querySelectorAll('.nav__link').forEach(function (el) { -// el.addEventListener('click', function (e) { -// e.preventDefault(); -// const id = this.getAttribute('href'); -// console.log(id); -// document.querySelector(id).scrollIntoView({ behavior: 'smooth' }); -// }); -// }); - -// 1. Add event listener to common parent element -// 2. Determine what element originated the event - -document.querySelector('.nav__links').addEventListener('click', function (e) { - e.preventDefault(); - - // Matching strategy - if (e.target.classList.contains('nav__link')) { - const id = e.target.getAttribute('href'); - document.querySelector(id).scrollIntoView({ behavior: 'smooth' }); - } -}); - -/////////////////////////////////////// -// Tabbed component - -tabsContainer.addEventListener('click', function (e) { - const clicked = e.target.closest('.operations__tab'); - - // Guard clause - if (!clicked) return; - - // Remove active classes - tabs.forEach(t => t.classList.remove('operations__tab--active')); - tabsContent.forEach(c => c.classList.remove('operations__content--active')); - - // Activate tab - clicked.classList.add('operations__tab--active'); - - // Activate content area - document - .querySelector(`.operations__content--${clicked.dataset.tab}`) - .classList.add('operations__content--active'); -}); - -/////////////////////////////////////// -// Menu fade animation -const handleHover = function (e) { - if (e.target.classList.contains('nav__link')) { - const link = e.target; - const siblings = link.closest('.nav').querySelectorAll('.nav__link'); - const logo = link.closest('.nav').querySelector('img'); - - siblings.forEach(el => { - if (el !== link) el.style.opacity = this; - }); - logo.style.opacity = this; - } -}; - -// Passing "argument" into handler -nav.addEventListener('mouseover', handleHover.bind(0.5)); -nav.addEventListener('mouseout', handleHover.bind(1)); - -/////////////////////////////////////// -// Sticky navigation: Intersection Observer API - -const header = document.querySelector('.header'); -const navHeight = nav.getBoundingClientRect().height; - -const stickyNav = function (entries) { - const [entry] = entries; - // console.log(entry); - - if (!entry.isIntersecting) nav.classList.add('sticky'); - else nav.classList.remove('sticky'); -}; - -const headerObserver = new IntersectionObserver(stickyNav, { - root: null, - threshold: 0, - rootMargin: `-${navHeight}px`, -}); - -headerObserver.observe(header); - -/////////////////////////////////////// -// Reveal sections -const allSections = document.querySelectorAll('.section'); - -const revealSection = function (entries, observer) { - entries.forEach(entry => { - if (!entry.isIntersecting) return; - - entry.target.classList.remove('section--hidden'); - observer.unobserve(entry.target); - }); -}; - -const sectionObserver = new IntersectionObserver(revealSection, { - root: null, - threshold: 0.15, -}); - -allSections.forEach(function (section) { - sectionObserver.observe(section); - section.classList.add('section--hidden'); -}); - -// Lazy loading images -const imgTargets = document.querySelectorAll('img[data-src]'); - -const loadImg = function (entries, observer) { - const [entry] = entries; - - if (!entry.isIntersecting) return; - - // Replace src with data-src - entry.target.src = entry.target.dataset.src; - - entry.target.addEventListener('load', function () { - entry.target.classList.remove('lazy-img'); - }); - - observer.unobserve(entry.target); -}; - -const imgObserver = new IntersectionObserver(loadImg, { - root: null, - threshold: 0, - rootMargin: '200px', -}); - -imgTargets.forEach(img => imgObserver.observe(img)); - -/////////////////////////////////////// -// Slider -const slider = function () { - const slides = document.querySelectorAll('.slide'); - const btnLeft = document.querySelector('.slider__btn--left'); - const btnRight = document.querySelector('.slider__btn--right'); - const dotContainer = document.querySelector('.dots'); - - let curSlide = 0; - const maxSlide = slides.length; - - // Functions - const createDots = function () { - slides.forEach(function (_, i) { - dotContainer.insertAdjacentHTML( - 'beforeend', - `` - ); - }); - }; - - const activateDot = function (slide) { - document - .querySelectorAll('.dots__dot') - .forEach(dot => dot.classList.remove('dots__dot--active')); - - document - .querySelector(`.dots__dot[data-slide="${slide}"]`) - .classList.add('dots__dot--active'); - }; - - const goToSlide = function (slide) { - slides.forEach( - (s, i) => (s.style.transform = `translateX(${100 * (i - slide)}%)`) - ); - }; - - // Next slide - const nextSlide = function () { - if (curSlide === maxSlide - 1) { - curSlide = 0; - } else { - curSlide++; - } - - goToSlide(curSlide); - activateDot(curSlide); - }; - - const prevSlide = function () { - if (curSlide === 0) { - curSlide = maxSlide - 1; - } else { - curSlide--; - } - goToSlide(curSlide); - activateDot(curSlide); - }; - - const init = function () { - goToSlide(0); - createDots(); - - activateDot(0); - }; - init(); - - // Event handlers - btnRight.addEventListener('click', nextSlide); - btnLeft.addEventListener('click', prevSlide); - - document.addEventListener('keydown', function (e) { - if (e.key === 'ArrowLeft') prevSlide(); - e.key === 'ArrowRight' && nextSlide(); - }); - - dotContainer.addEventListener('click', function (e) { - if (e.target.classList.contains('dots__dot')) { - // BUG in v2: This way, we're not keeping track of the current slide when clicking on a slide - // const { slide } = e.target.dataset; - - curSlide = Number(e.target.dataset.slide); - goToSlide(curSlide); - activateDot(curSlide); - } - }); -}; -slider(); - -/////////////////////////////////////// -/////////////////////////////////////// -/////////////////////////////////////// - -/* -/////////////////////////////////////// -// Selecting, Creating, and Deleting Elements - -// Selecting elements -console.log(document.documentElement); -console.log(document.head); -console.log(document.body); - -const header = document.querySelector('.header'); -const allSections = document.querySelectorAll('.section'); -console.log(allSections); - -document.getElementById('section--1'); -const allButtons = document.getElementsByTagName('button'); -console.log(allButtons); - -console.log(document.getElementsByClassName('btn')); - -// Creating and inserting elements -const message = document.createElement('div'); -message.classList.add('cookie-message'); -// message.textContent = 'We use cookied for improved functionality and analytics.'; -message.innerHTML = - 'We use cookied for improved functionality and analytics. '; - -// header.prepend(message); -header.append(message); -// header.append(message.cloneNode(true)); - -// header.before(message); -// header.after(message); - -// Delete elements -document - .querySelector('.btn--close-cookie') - .addEventListener('click', function () { - // message.remove(); - message.parentElement.removeChild(message); - }); - - -/////////////////////////////////////// -// Styles, Attributes and Classes - -// Styles -message.style.backgroundColor = '#37383d'; -message.style.width = '120%'; - -console.log(message.style.color); -console.log(message.style.backgroundColor); - -console.log(getComputedStyle(message).color); -console.log(getComputedStyle(message).height); - -message.style.height = - Number.parseFloat(getComputedStyle(message).height, 10) + 30 + 'px'; - -document.documentElement.style.setProperty('--color-primary', 'orangered'); - -// Attributes -const logo = document.querySelector('.nav__logo'); -console.log(logo.alt); -console.log(logo.className); - -logo.alt = 'Beautiful minimalist logo'; - -// Non-standard -console.log(logo.designer); -console.log(logo.getAttribute('designer')); -logo.setAttribute('company', 'Bankist'); - -console.log(logo.src); -console.log(logo.getAttribute('src')); - -const link = document.querySelector('.nav__link--btn'); -console.log(link.href); -console.log(link.getAttribute('href')); - -// Data attributes -console.log(logo.dataset.versionNumber); - -// Classes -logo.classList.add('c', 'j'); -logo.classList.remove('c', 'j'); -logo.classList.toggle('c'); -logo.classList.contains('c'); // not includes - -// Don't use -logo.clasName = 'jonas'; - - -/////////////////////////////////////// -// Types of Events and Event Handlers -const h1 = document.querySelector('h1'); - -const alertH1 = function (e) { - alert('addEventListener: Great! You are reading the heading :D'); -}; - -h1.addEventListener('mouseenter', alertH1); - -setTimeout(() => h1.removeEventListener('mouseenter', alertH1), 3000); - -// h1.onmouseenter = function (e) { -// alert('onmouseenter: Great! You are reading the heading :D'); -// }; - - -/////////////////////////////////////// -// Event Propagation in Practice -const randomInt = (min, max) => - Math.floor(Math.random() * (max - min + 1) + min); -const randomColor = () => - `rgb(${randomInt(0, 255)},${randomInt(0, 255)},${randomInt(0, 255)})`; - -document.querySelector('.nav__link').addEventListener('click', function (e) { - this.style.backgroundColor = randomColor(); - console.log('LINK', e.target, e.currentTarget); - console.log(e.currentTarget === this); - - // Stop propagation - // e.stopPropagation(); -}); - -document.querySelector('.nav__links').addEventListener('click', function (e) { - this.style.backgroundColor = randomColor(); - console.log('CONTAINER', e.target, e.currentTarget); -}); - -document.querySelector('.nav').addEventListener('click', function (e) { - this.style.backgroundColor = randomColor(); - console.log('NAV', e.target, e.currentTarget); -}); - - -/////////////////////////////////////// -// DOM Traversing -const h1 = document.querySelector('h1'); - -// Going downwards: child -console.log(h1.querySelectorAll('.highlight')); -console.log(h1.childNodes); -console.log(h1.children); -h1.firstElementChild.style.color = 'white'; -h1.lastElementChild.style.color = 'orangered'; - -// Going upwards: parents -console.log(h1.parentNode); -console.log(h1.parentElement); - -h1.closest('.header').style.background = 'var(--gradient-secondary)'; - -h1.closest('h1').style.background = 'var(--gradient-primary)'; - -// Going sideways: siblings -console.log(h1.previousElementSibling); -console.log(h1.nextElementSibling); - -console.log(h1.previousSibling); -console.log(h1.nextSibling); - -console.log(h1.parentElement.children); -[...h1.parentElement.children].forEach(function (el) { - if (el !== h1) el.style.transform = 'scale(0.5)'; -}); - -/////////////////////////////////////// -// Sticky navigation -const initialCoords = section1.getBoundingClientRect(); -console.log(initialCoords); - -window.addEventListener('scroll', function () { - console.log(window.scrollY); - - if (window.scrollY > initialCoords.top) nav.classList.add('sticky'); - else nav.classList.remove('sticky'); -}); - -/////////////////////////////////////// -// Sticky navigation: Intersection Observer API - -const obsCallback = function (entries, observer) { - entries.forEach(entry => { - console.log(entry); - }); -}; - -const obsOptions = { - root: null, - threshold: [0, 0.2], -}; - -const observer = new IntersectionObserver(obsCallback, obsOptions); -observer.observe(section1); - - -/////////////////////////////////////// -// Lifecycle DOM Events -document.addEventListener('DOMContentLoaded', function (e) { - console.log('HTML parsed and DOM tree built!', e); -}); - -window.addEventListener('load', function (e) { - console.log('Page fully loaded', e); -}); - -window.addEventListener('beforeunload', function (e) { - e.preventDefault(); - console.log(e); - e.returnValue = ''; -}); -*/ diff --git a/13-Advanced-DOM-Bankist/final/style.css b/13-Advanced-DOM-Bankist/final/style.css deleted file mode 100644 index caf3a4a635..0000000000 --- a/13-Advanced-DOM-Bankist/final/style.css +++ /dev/null @@ -1,674 +0,0 @@ -/* The page is NOT responsive. You can implement responsiveness yourself if you wanna have some fun 😃 */ - -:root { - --color-primary: #5ec576; - --color-secondary: #ffcb03; - --color-tertiary: #ff585f; - --color-primary-darker: #4bbb7d; - --color-secondary-darker: #ffbb00; - --color-tertiary-darker: #fd424b; - --color-primary-opacity: #5ec5763a; - --color-secondary-opacity: #ffcd0331; - --color-tertiary-opacity: #ff58602d; - --gradient-primary: linear-gradient(to top left, #39b385, #9be15d); - --gradient-secondary: linear-gradient(to top left, #ffb003, #ffcb03); -} - -* { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -html { - font-size: 62.5%; - box-sizing: border-box; -} - -body { - font-family: 'Poppins', sans-serif; - font-weight: 300; - color: #444; - line-height: 1.9; - background-color: #f3f3f3; -} - -/* GENERAL ELEMENTS */ -.section { - padding: 15rem 3rem; - border-top: 1px solid #ddd; - - transition: transform 1s, opacity 1s; -} - -.section--hidden { - opacity: 0; - transform: translateY(8rem); -} - -.section__title { - max-width: 80rem; - margin: 0 auto 8rem auto; -} - -.section__description { - font-size: 1.8rem; - font-weight: 600; - text-transform: uppercase; - color: var(--color-primary); - margin-bottom: 1rem; -} - -.section__header { - font-size: 4rem; - line-height: 1.3; - font-weight: 500; -} - -.btn { - display: inline-block; - background-color: var(--color-primary); - font-size: 1.6rem; - font-family: inherit; - font-weight: 500; - border: none; - padding: 1.25rem 4.5rem; - border-radius: 10rem; - cursor: pointer; - transition: all 0.3s; -} - -.btn:hover { - background-color: var(--color-primary-darker); -} - -.btn--text { - display: inline-block; - background: none; - font-size: 1.7rem; - font-family: inherit; - font-weight: 500; - color: var(--color-primary); - border: none; - border-bottom: 1px solid currentColor; - padding-bottom: 2px; - cursor: pointer; - transition: all 0.3s; -} - -p { - color: #666; -} - -/* This is BAD for accessibility! Don't do in the real world! */ -button:focus { - outline: none; -} - -img { - transition: filter 0.5s; -} - -.lazy-img { - filter: blur(20px); -} - -/* NAVIGATION */ -.nav { - display: flex; - justify-content: space-between; - align-items: center; - height: 9rem; - width: 100%; - padding: 0 6rem; - z-index: 100; -} - -/* nav and stickly class at the same time */ -.nav.sticky { - position: fixed; - background-color: rgba(255, 255, 255, 0.95); -} - -.nav__logo { - height: 4.5rem; - transition: all 0.3s; -} - -.nav__links { - display: flex; - align-items: center; - list-style: none; -} - -.nav__item { - margin-left: 4rem; -} - -.nav__link:link, -.nav__link:visited { - font-size: 1.7rem; - font-weight: 400; - color: inherit; - text-decoration: none; - display: block; - transition: all 0.3s; -} - -.nav__link--btn:link, -.nav__link--btn:visited { - padding: 0.8rem 2.5rem; - border-radius: 3rem; - background-color: var(--color-primary); - color: #222; -} - -.nav__link--btn:hover, -.nav__link--btn:active { - color: inherit; - background-color: var(--color-primary-darker); - color: #333; -} - -/* HEADER */ -.header { - padding: 0 3rem; - height: 100vh; - display: flex; - flex-direction: column; - align-items: center; -} - -.header__title { - flex: 1; - - max-width: 115rem; - display: grid; - grid-template-columns: 3fr 2fr; - row-gap: 3rem; - align-content: center; - justify-content: center; - - align-items: start; - justify-items: start; -} - -h1 { - font-size: 5.5rem; - line-height: 1.35; -} - -h4 { - font-size: 2.4rem; - font-weight: 500; -} - -.header__img { - width: 100%; - grid-column: 2 / 3; - grid-row: 1 / span 4; - transform: translateY(-6rem); -} - -.highlight { - position: relative; -} - -.highlight::after { - display: block; - content: ''; - position: absolute; - bottom: 0; - left: 0; - height: 100%; - width: 100%; - z-index: -1; - opacity: 0.7; - transform: scale(1.07, 1.05) skewX(-15deg); - background-image: var(--gradient-primary); -} - -/* FEATURES */ -.features { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 4rem; - margin: 0 12rem; -} - -.features__img { - width: 100%; -} - -.features__feature { - align-self: center; - justify-self: center; - width: 70%; - font-size: 1.5rem; -} - -.features__icon { - display: flex; - align-items: center; - justify-content: center; - background-color: var(--color-primary-opacity); - height: 5.5rem; - width: 5.5rem; - border-radius: 50%; - margin-bottom: 2rem; -} - -.features__icon svg { - height: 2.5rem; - width: 2.5rem; - fill: var(--color-primary); -} - -.features__header { - font-size: 2rem; - margin-bottom: 1rem; -} - -/* OPERATIONS */ -.operations { - max-width: 100rem; - margin: 12rem auto 0 auto; - - background-color: #fff; -} - -.operations__tab-container { - display: flex; - justify-content: center; -} - -.operations__tab { - margin-right: 2.5rem; - transform: translateY(-50%); -} - -.operations__tab span { - margin-right: 1rem; - font-weight: 600; - display: inline-block; -} - -.operations__tab--1 { - background-color: var(--color-secondary); -} - -.operations__tab--1:hover { - background-color: var(--color-secondary-darker); -} - -.operations__tab--3 { - background-color: var(--color-tertiary); - margin: 0; -} - -.operations__tab--3:hover { - background-color: var(--color-tertiary-darker); -} - -.operations__tab--active { - transform: translateY(-66%); -} - -.operations__content { - display: none; - - /* JUST PRESENTATIONAL */ - font-size: 1.7rem; - padding: 2.5rem 7rem 6.5rem 7rem; -} - -.operations__content--active { - display: grid; - grid-template-columns: 7rem 1fr; - column-gap: 3rem; - row-gap: 0.5rem; -} - -.operations__header { - font-size: 2.25rem; - font-weight: 500; - align-self: center; -} - -.operations__icon { - display: flex; - align-items: center; - justify-content: center; - height: 7rem; - width: 7rem; - border-radius: 50%; -} - -.operations__icon svg { - height: 2.75rem; - width: 2.75rem; -} - -.operations__content p { - grid-column: 2; -} - -.operations__icon--1 { - background-color: var(--color-secondary-opacity); -} -.operations__icon--2 { - background-color: var(--color-primary-opacity); -} -.operations__icon--3 { - background-color: var(--color-tertiary-opacity); -} -.operations__icon--1 svg { - fill: var(--color-secondary-darker); -} -.operations__icon--2 svg { - fill: var(--color-primary); -} -.operations__icon--3 svg { - fill: var(--color-tertiary); -} - -/* SLIDER */ -.slider { - max-width: 100rem; - height: 50rem; - margin: 0 auto; - position: relative; - - /* IN THE END */ - overflow: hidden; -} - -.slide { - position: absolute; - top: 0; - width: 100%; - height: 50rem; - - display: flex; - align-items: center; - justify-content: center; - - /* THIS creates the animation! */ - transition: transform 1s; -} - -.slide > img { - /* Only for images that have different size than slide */ - width: 100%; - height: 100%; - object-fit: cover; -} - -.slider__btn { - position: absolute; - top: 50%; - z-index: 10; - - border: none; - background: rgba(255, 255, 255, 0.7); - font-family: inherit; - color: #333; - border-radius: 50%; - height: 5.5rem; - width: 5.5rem; - font-size: 3.25rem; - cursor: pointer; -} - -.slider__btn--left { - left: 6%; - transform: translate(-50%, -50%); -} - -.slider__btn--right { - right: 6%; - transform: translate(50%, -50%); -} - -.dots { - position: absolute; - bottom: 5%; - left: 50%; - transform: translateX(-50%); - display: flex; -} - -.dots__dot { - border: none; - background-color: #b9b9b9; - opacity: 0.7; - height: 1rem; - width: 1rem; - border-radius: 50%; - margin-right: 1.75rem; - cursor: pointer; - transition: all 0.5s; - - /* Only necessary when overlying images */ - /* box-shadow: 0 0.6rem 1.5rem rgba(0, 0, 0, 0.7); */ -} - -.dots__dot:last-child { - margin: 0; -} - -.dots__dot--active { - /* background-color: #fff; */ - background-color: #888; - opacity: 1; -} - -/* TESTIMONIALS */ -.testimonial { - width: 65%; - position: relative; -} - -.testimonial::before { - content: '\201C'; - position: absolute; - top: -5.7rem; - left: -6.8rem; - line-height: 1; - font-size: 20rem; - font-family: inherit; - color: var(--color-primary); - z-index: -1; -} - -.testimonial__header { - font-size: 2.25rem; - font-weight: 500; - margin-bottom: 1.5rem; -} - -.testimonial__text { - font-size: 1.7rem; - margin-bottom: 3.5rem; - color: #666; -} - -.testimonial__author { - margin-left: 3rem; - font-style: normal; - - display: grid; - grid-template-columns: 6.5rem 1fr; - column-gap: 2rem; -} - -.testimonial__photo { - grid-row: 1 / span 2; - width: 6.5rem; - border-radius: 50%; -} - -.testimonial__name { - font-size: 1.7rem; - font-weight: 500; - align-self: end; - margin: 0; -} - -.testimonial__location { - font-size: 1.5rem; -} - -.section__title--testimonials { - margin-bottom: 4rem; -} - -/* SIGNUP */ -.section--sign-up { - background-color: #37383d; - border-top: none; - border-bottom: 1px solid #444; - text-align: center; - padding: 10rem 3rem; -} - -.section--sign-up .section__header { - color: #fff; - text-align: center; -} - -.section--sign-up .section__title { - margin-bottom: 6rem; -} - -.section--sign-up .btn { - font-size: 1.9rem; - padding: 2rem 5rem; -} - -/* FOOTER */ -.footer { - padding: 10rem 3rem; - background-color: #37383d; -} - -.footer__nav { - list-style: none; - display: flex; - justify-content: center; - margin-bottom: 5rem; -} - -.footer__item { - margin-right: 4rem; -} - -.footer__link { - font-size: 1.6rem; - color: #eee; - text-decoration: none; -} - -.footer__logo { - height: 5rem; - display: block; - margin: 0 auto; - margin-bottom: 5rem; -} - -.footer__copyright { - font-size: 1.4rem; - color: #aaa; - text-align: center; -} - -.footer__copyright .footer__link { - font-size: 1.4rem; -} - -/* MODAL WINDOW */ -.modal { - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - max-width: 60rem; - background-color: #f3f3f3; - padding: 5rem 6rem; - box-shadow: 0 4rem 6rem rgba(0, 0, 0, 0.3); - z-index: 1000; - transition: all 0.5s; -} - -.overlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.5); - backdrop-filter: blur(4px); - z-index: 100; - transition: all 0.5s; -} - -.modal__header { - font-size: 3.25rem; - margin-bottom: 4.5rem; - line-height: 1.5; -} - -.modal__form { - margin: 0 3rem; - display: grid; - grid-template-columns: 1fr 2fr; - align-items: center; - gap: 2.5rem; -} - -.modal__form label { - font-size: 1.7rem; - font-weight: 500; -} - -.modal__form input { - font-size: 1.7rem; - padding: 1rem 1.5rem; - border: 1px solid #ddd; - border-radius: 0.5rem; -} - -.modal__form button { - grid-column: 1 / span 2; - justify-self: center; - margin-top: 1rem; -} - -.btn--close-modal { - font-family: inherit; - color: inherit; - position: absolute; - top: 0.5rem; - right: 2rem; - font-size: 4rem; - cursor: pointer; - border: none; - background: none; -} - -.hidden { - visibility: hidden; - opacity: 0; -} - -/* COOKIE MESSAGE */ -.cookie-message { - display: flex; - align-items: center; - justify-content: space-evenly; - width: 100%; - background-color: white; - color: #bbb; - font-size: 1.5rem; - font-weight: 400; -} diff --git a/13-Advanced-DOM-Bankist/starter/.prettierrc b/13-Advanced-DOM-Bankist/starter/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/13-Advanced-DOM-Bankist/starter/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/13-Advanced-DOM-Bankist/starter/img/card-lazy.jpg b/13-Advanced-DOM-Bankist/starter/img/card-lazy.jpg deleted file mode 100644 index 367e2f9256..0000000000 Binary files a/13-Advanced-DOM-Bankist/starter/img/card-lazy.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/starter/img/card.jpg b/13-Advanced-DOM-Bankist/starter/img/card.jpg deleted file mode 100644 index 5f8c606314..0000000000 Binary files a/13-Advanced-DOM-Bankist/starter/img/card.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/starter/img/digital-lazy.jpg b/13-Advanced-DOM-Bankist/starter/img/digital-lazy.jpg deleted file mode 100644 index fa78f86756..0000000000 Binary files a/13-Advanced-DOM-Bankist/starter/img/digital-lazy.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/starter/img/digital.jpg b/13-Advanced-DOM-Bankist/starter/img/digital.jpg deleted file mode 100644 index 87a319b6f3..0000000000 Binary files a/13-Advanced-DOM-Bankist/starter/img/digital.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/starter/img/grow-lazy.jpg b/13-Advanced-DOM-Bankist/starter/img/grow-lazy.jpg deleted file mode 100644 index 6055cdc1f7..0000000000 Binary files a/13-Advanced-DOM-Bankist/starter/img/grow-lazy.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/starter/img/grow.jpg b/13-Advanced-DOM-Bankist/starter/img/grow.jpg deleted file mode 100644 index 19e7f85dbf..0000000000 Binary files a/13-Advanced-DOM-Bankist/starter/img/grow.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/starter/img/hero.png b/13-Advanced-DOM-Bankist/starter/img/hero.png deleted file mode 100644 index 964f65ba62..0000000000 Binary files a/13-Advanced-DOM-Bankist/starter/img/hero.png and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/starter/img/icon.png b/13-Advanced-DOM-Bankist/starter/img/icon.png deleted file mode 100644 index d00606eab8..0000000000 Binary files a/13-Advanced-DOM-Bankist/starter/img/icon.png and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/starter/img/icons.svg b/13-Advanced-DOM-Bankist/starter/img/icons.svg deleted file mode 100644 index 9076bfd8b1..0000000000 --- a/13-Advanced-DOM-Bankist/starter/img/icons.svg +++ /dev/null @@ -1,1324 +0,0 @@ - diff --git a/13-Advanced-DOM-Bankist/starter/img/img-1.jpg b/13-Advanced-DOM-Bankist/starter/img/img-1.jpg deleted file mode 100644 index af42481ce0..0000000000 Binary files a/13-Advanced-DOM-Bankist/starter/img/img-1.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/starter/img/img-2.jpg b/13-Advanced-DOM-Bankist/starter/img/img-2.jpg deleted file mode 100644 index 56b1f167e8..0000000000 Binary files a/13-Advanced-DOM-Bankist/starter/img/img-2.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/starter/img/img-3.jpg b/13-Advanced-DOM-Bankist/starter/img/img-3.jpg deleted file mode 100644 index 475c40d05c..0000000000 Binary files a/13-Advanced-DOM-Bankist/starter/img/img-3.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/starter/img/img-4.jpg b/13-Advanced-DOM-Bankist/starter/img/img-4.jpg deleted file mode 100644 index beb70d6f77..0000000000 Binary files a/13-Advanced-DOM-Bankist/starter/img/img-4.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/starter/img/logo.png b/13-Advanced-DOM-Bankist/starter/img/logo.png deleted file mode 100644 index 39b5de76f4..0000000000 Binary files a/13-Advanced-DOM-Bankist/starter/img/logo.png and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/starter/img/user-1.jpg b/13-Advanced-DOM-Bankist/starter/img/user-1.jpg deleted file mode 100644 index 3fd68e3bdc..0000000000 Binary files a/13-Advanced-DOM-Bankist/starter/img/user-1.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/starter/img/user-2.jpg b/13-Advanced-DOM-Bankist/starter/img/user-2.jpg deleted file mode 100644 index a6b47fd123..0000000000 Binary files a/13-Advanced-DOM-Bankist/starter/img/user-2.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/starter/img/user-3.jpg b/13-Advanced-DOM-Bankist/starter/img/user-3.jpg deleted file mode 100644 index d0754c3640..0000000000 Binary files a/13-Advanced-DOM-Bankist/starter/img/user-3.jpg and /dev/null differ diff --git a/13-Advanced-DOM-Bankist/starter/index.html b/13-Advanced-DOM-Bankist/starter/index.html deleted file mode 100644 index 6999b1ccef..0000000000 --- a/13-Advanced-DOM-Bankist/starter/index.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - - - - - - Bankist | When Banking meets Minimalist - - -
- - -
-

- When - - banking - meets
- minimalist -

-

A simpler banking experience for a simpler life.

- - Minimalist bank items -
-
- -
-
-

Features

-

- Everything you need in a modern bank and more. -

-
- -
- Computer -
-
- - - -
-
100% digital bank
-

- Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde alias - sint quos? Accusantium a fugiat porro reiciendis saepe quibusdam - debitis ducimus. -

-
- -
-
- - - -
-
Watch your money grow
-

- Nesciunt quos autem dolorum voluptates cum dolores dicta fuga - inventore ab? Nulla incidunt eius numquam sequi iste pariatur - quibusdam! -

-
- Plant - - Credit card -
-
- - - -
-
Free debit card included
-

- Quasi, fugit in cumque cupiditate reprehenderit debitis animi enim - eveniet consequatur odit quam quos possimus assumenda dicta fuga - inventore ab. -

-
-
-
- -
-
-

Operations

-

- Everything as simple as possible, but no simpler. -

-
- -
-
- - - -
-
-
- - - -
-
- Tranfser money to anyone, instantly! No fees, no BS. -
-

- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut - aliquip ex ea commodo consequat. -

-
- -
-
- - - -
-
- Buy a home or make your dreams come true, with instant loans. -
-

- Duis aute irure dolor in reprehenderit in voluptate velit esse - cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat - cupidatat non proident, sunt in culpa qui officia deserunt mollit - anim id est laborum. -

-
-
-
- - - -
-
- No longer need your account? No problem! Close it instantly. -
-

- Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. Ut enim ad minim - veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex - ea commodo consequat. -

-
-
-
- -
-
-

Not sure yet?

-

- Millions of Bankists are already making their lifes simpler. -

-
- -
-
-
-
Best financial decision ever!
-
- Lorem ipsum dolor sit, amet consectetur adipisicing elit. - Accusantium quas quisquam non? Quas voluptate nulla minima - deleniti optio ullam nesciunt, numquam corporis et asperiores - laboriosam sunt, praesentium suscipit blanditiis. Necessitatibus - id alias reiciendis, perferendis facere pariatur dolore veniam - autem esse non voluptatem saepe provident nihil molestiae. -
-
- -
Aarav Lynn
-

San Francisco, USA

-
-
-
- -
-
-
- The last step to becoming a complete minimalist -
-
- Quisquam itaque deserunt ullam, quia ea repellendus provident, - ducimus neque ipsam modi voluptatibus doloremque, corrupti - laborum. Incidunt numquam perferendis veritatis neque repellendus. - Lorem, ipsum dolor sit amet consectetur adipisicing elit. Illo - deserunt exercitationem deleniti. -
-
- -
Miyah Miles
-

London, UK

-
-
-
- -
-
-
- Finally free from old-school banks -
-
- Debitis, nihil sit minus suscipit magni aperiam vel tenetur - incidunt commodi architecto numquam omnis nulla autem, - necessitatibus blanditiis modi similique quidem. Odio aliquam - culpa dicta beatae quod maiores ipsa minus consequatur error sunt, - deleniti saepe aliquid quos inventore sequi. Necessitatibus id - alias reiciendis, perferendis facere. -
-
- -
Francisco Gomes
-

Lisbon, Portugal

-
-
-
- - - - -
-
-
- - - - - - - - - - - diff --git a/13-Advanced-DOM-Bankist/starter/script.js b/13-Advanced-DOM-Bankist/starter/script.js deleted file mode 100644 index c51ec0afbe..0000000000 --- a/13-Advanced-DOM-Bankist/starter/script.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict'; - -/////////////////////////////////////// -// Modal window - -const modal = document.querySelector('.modal'); -const overlay = document.querySelector('.overlay'); -const btnCloseModal = document.querySelector('.btn--close-modal'); -const btnsOpenModal = document.querySelectorAll('.btn--show-modal'); - -const openModal = function () { - modal.classList.remove('hidden'); - overlay.classList.remove('hidden'); -}; - -const closeModal = function () { - modal.classList.add('hidden'); - overlay.classList.add('hidden'); -}; - -for (let i = 0; i < btnsOpenModal.length; i++) - btnsOpenModal[i].addEventListener('click', openModal); - -btnCloseModal.addEventListener('click', closeModal); -overlay.addEventListener('click', closeModal); - -document.addEventListener('keydown', function (e) { - if (e.key === 'Escape' && !modal.classList.contains('hidden')) { - closeModal(); - } -}); diff --git a/13-Advanced-DOM-Bankist/starter/style.css b/13-Advanced-DOM-Bankist/starter/style.css deleted file mode 100644 index caf3a4a635..0000000000 --- a/13-Advanced-DOM-Bankist/starter/style.css +++ /dev/null @@ -1,674 +0,0 @@ -/* The page is NOT responsive. You can implement responsiveness yourself if you wanna have some fun 😃 */ - -:root { - --color-primary: #5ec576; - --color-secondary: #ffcb03; - --color-tertiary: #ff585f; - --color-primary-darker: #4bbb7d; - --color-secondary-darker: #ffbb00; - --color-tertiary-darker: #fd424b; - --color-primary-opacity: #5ec5763a; - --color-secondary-opacity: #ffcd0331; - --color-tertiary-opacity: #ff58602d; - --gradient-primary: linear-gradient(to top left, #39b385, #9be15d); - --gradient-secondary: linear-gradient(to top left, #ffb003, #ffcb03); -} - -* { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -html { - font-size: 62.5%; - box-sizing: border-box; -} - -body { - font-family: 'Poppins', sans-serif; - font-weight: 300; - color: #444; - line-height: 1.9; - background-color: #f3f3f3; -} - -/* GENERAL ELEMENTS */ -.section { - padding: 15rem 3rem; - border-top: 1px solid #ddd; - - transition: transform 1s, opacity 1s; -} - -.section--hidden { - opacity: 0; - transform: translateY(8rem); -} - -.section__title { - max-width: 80rem; - margin: 0 auto 8rem auto; -} - -.section__description { - font-size: 1.8rem; - font-weight: 600; - text-transform: uppercase; - color: var(--color-primary); - margin-bottom: 1rem; -} - -.section__header { - font-size: 4rem; - line-height: 1.3; - font-weight: 500; -} - -.btn { - display: inline-block; - background-color: var(--color-primary); - font-size: 1.6rem; - font-family: inherit; - font-weight: 500; - border: none; - padding: 1.25rem 4.5rem; - border-radius: 10rem; - cursor: pointer; - transition: all 0.3s; -} - -.btn:hover { - background-color: var(--color-primary-darker); -} - -.btn--text { - display: inline-block; - background: none; - font-size: 1.7rem; - font-family: inherit; - font-weight: 500; - color: var(--color-primary); - border: none; - border-bottom: 1px solid currentColor; - padding-bottom: 2px; - cursor: pointer; - transition: all 0.3s; -} - -p { - color: #666; -} - -/* This is BAD for accessibility! Don't do in the real world! */ -button:focus { - outline: none; -} - -img { - transition: filter 0.5s; -} - -.lazy-img { - filter: blur(20px); -} - -/* NAVIGATION */ -.nav { - display: flex; - justify-content: space-between; - align-items: center; - height: 9rem; - width: 100%; - padding: 0 6rem; - z-index: 100; -} - -/* nav and stickly class at the same time */ -.nav.sticky { - position: fixed; - background-color: rgba(255, 255, 255, 0.95); -} - -.nav__logo { - height: 4.5rem; - transition: all 0.3s; -} - -.nav__links { - display: flex; - align-items: center; - list-style: none; -} - -.nav__item { - margin-left: 4rem; -} - -.nav__link:link, -.nav__link:visited { - font-size: 1.7rem; - font-weight: 400; - color: inherit; - text-decoration: none; - display: block; - transition: all 0.3s; -} - -.nav__link--btn:link, -.nav__link--btn:visited { - padding: 0.8rem 2.5rem; - border-radius: 3rem; - background-color: var(--color-primary); - color: #222; -} - -.nav__link--btn:hover, -.nav__link--btn:active { - color: inherit; - background-color: var(--color-primary-darker); - color: #333; -} - -/* HEADER */ -.header { - padding: 0 3rem; - height: 100vh; - display: flex; - flex-direction: column; - align-items: center; -} - -.header__title { - flex: 1; - - max-width: 115rem; - display: grid; - grid-template-columns: 3fr 2fr; - row-gap: 3rem; - align-content: center; - justify-content: center; - - align-items: start; - justify-items: start; -} - -h1 { - font-size: 5.5rem; - line-height: 1.35; -} - -h4 { - font-size: 2.4rem; - font-weight: 500; -} - -.header__img { - width: 100%; - grid-column: 2 / 3; - grid-row: 1 / span 4; - transform: translateY(-6rem); -} - -.highlight { - position: relative; -} - -.highlight::after { - display: block; - content: ''; - position: absolute; - bottom: 0; - left: 0; - height: 100%; - width: 100%; - z-index: -1; - opacity: 0.7; - transform: scale(1.07, 1.05) skewX(-15deg); - background-image: var(--gradient-primary); -} - -/* FEATURES */ -.features { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 4rem; - margin: 0 12rem; -} - -.features__img { - width: 100%; -} - -.features__feature { - align-self: center; - justify-self: center; - width: 70%; - font-size: 1.5rem; -} - -.features__icon { - display: flex; - align-items: center; - justify-content: center; - background-color: var(--color-primary-opacity); - height: 5.5rem; - width: 5.5rem; - border-radius: 50%; - margin-bottom: 2rem; -} - -.features__icon svg { - height: 2.5rem; - width: 2.5rem; - fill: var(--color-primary); -} - -.features__header { - font-size: 2rem; - margin-bottom: 1rem; -} - -/* OPERATIONS */ -.operations { - max-width: 100rem; - margin: 12rem auto 0 auto; - - background-color: #fff; -} - -.operations__tab-container { - display: flex; - justify-content: center; -} - -.operations__tab { - margin-right: 2.5rem; - transform: translateY(-50%); -} - -.operations__tab span { - margin-right: 1rem; - font-weight: 600; - display: inline-block; -} - -.operations__tab--1 { - background-color: var(--color-secondary); -} - -.operations__tab--1:hover { - background-color: var(--color-secondary-darker); -} - -.operations__tab--3 { - background-color: var(--color-tertiary); - margin: 0; -} - -.operations__tab--3:hover { - background-color: var(--color-tertiary-darker); -} - -.operations__tab--active { - transform: translateY(-66%); -} - -.operations__content { - display: none; - - /* JUST PRESENTATIONAL */ - font-size: 1.7rem; - padding: 2.5rem 7rem 6.5rem 7rem; -} - -.operations__content--active { - display: grid; - grid-template-columns: 7rem 1fr; - column-gap: 3rem; - row-gap: 0.5rem; -} - -.operations__header { - font-size: 2.25rem; - font-weight: 500; - align-self: center; -} - -.operations__icon { - display: flex; - align-items: center; - justify-content: center; - height: 7rem; - width: 7rem; - border-radius: 50%; -} - -.operations__icon svg { - height: 2.75rem; - width: 2.75rem; -} - -.operations__content p { - grid-column: 2; -} - -.operations__icon--1 { - background-color: var(--color-secondary-opacity); -} -.operations__icon--2 { - background-color: var(--color-primary-opacity); -} -.operations__icon--3 { - background-color: var(--color-tertiary-opacity); -} -.operations__icon--1 svg { - fill: var(--color-secondary-darker); -} -.operations__icon--2 svg { - fill: var(--color-primary); -} -.operations__icon--3 svg { - fill: var(--color-tertiary); -} - -/* SLIDER */ -.slider { - max-width: 100rem; - height: 50rem; - margin: 0 auto; - position: relative; - - /* IN THE END */ - overflow: hidden; -} - -.slide { - position: absolute; - top: 0; - width: 100%; - height: 50rem; - - display: flex; - align-items: center; - justify-content: center; - - /* THIS creates the animation! */ - transition: transform 1s; -} - -.slide > img { - /* Only for images that have different size than slide */ - width: 100%; - height: 100%; - object-fit: cover; -} - -.slider__btn { - position: absolute; - top: 50%; - z-index: 10; - - border: none; - background: rgba(255, 255, 255, 0.7); - font-family: inherit; - color: #333; - border-radius: 50%; - height: 5.5rem; - width: 5.5rem; - font-size: 3.25rem; - cursor: pointer; -} - -.slider__btn--left { - left: 6%; - transform: translate(-50%, -50%); -} - -.slider__btn--right { - right: 6%; - transform: translate(50%, -50%); -} - -.dots { - position: absolute; - bottom: 5%; - left: 50%; - transform: translateX(-50%); - display: flex; -} - -.dots__dot { - border: none; - background-color: #b9b9b9; - opacity: 0.7; - height: 1rem; - width: 1rem; - border-radius: 50%; - margin-right: 1.75rem; - cursor: pointer; - transition: all 0.5s; - - /* Only necessary when overlying images */ - /* box-shadow: 0 0.6rem 1.5rem rgba(0, 0, 0, 0.7); */ -} - -.dots__dot:last-child { - margin: 0; -} - -.dots__dot--active { - /* background-color: #fff; */ - background-color: #888; - opacity: 1; -} - -/* TESTIMONIALS */ -.testimonial { - width: 65%; - position: relative; -} - -.testimonial::before { - content: '\201C'; - position: absolute; - top: -5.7rem; - left: -6.8rem; - line-height: 1; - font-size: 20rem; - font-family: inherit; - color: var(--color-primary); - z-index: -1; -} - -.testimonial__header { - font-size: 2.25rem; - font-weight: 500; - margin-bottom: 1.5rem; -} - -.testimonial__text { - font-size: 1.7rem; - margin-bottom: 3.5rem; - color: #666; -} - -.testimonial__author { - margin-left: 3rem; - font-style: normal; - - display: grid; - grid-template-columns: 6.5rem 1fr; - column-gap: 2rem; -} - -.testimonial__photo { - grid-row: 1 / span 2; - width: 6.5rem; - border-radius: 50%; -} - -.testimonial__name { - font-size: 1.7rem; - font-weight: 500; - align-self: end; - margin: 0; -} - -.testimonial__location { - font-size: 1.5rem; -} - -.section__title--testimonials { - margin-bottom: 4rem; -} - -/* SIGNUP */ -.section--sign-up { - background-color: #37383d; - border-top: none; - border-bottom: 1px solid #444; - text-align: center; - padding: 10rem 3rem; -} - -.section--sign-up .section__header { - color: #fff; - text-align: center; -} - -.section--sign-up .section__title { - margin-bottom: 6rem; -} - -.section--sign-up .btn { - font-size: 1.9rem; - padding: 2rem 5rem; -} - -/* FOOTER */ -.footer { - padding: 10rem 3rem; - background-color: #37383d; -} - -.footer__nav { - list-style: none; - display: flex; - justify-content: center; - margin-bottom: 5rem; -} - -.footer__item { - margin-right: 4rem; -} - -.footer__link { - font-size: 1.6rem; - color: #eee; - text-decoration: none; -} - -.footer__logo { - height: 5rem; - display: block; - margin: 0 auto; - margin-bottom: 5rem; -} - -.footer__copyright { - font-size: 1.4rem; - color: #aaa; - text-align: center; -} - -.footer__copyright .footer__link { - font-size: 1.4rem; -} - -/* MODAL WINDOW */ -.modal { - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - max-width: 60rem; - background-color: #f3f3f3; - padding: 5rem 6rem; - box-shadow: 0 4rem 6rem rgba(0, 0, 0, 0.3); - z-index: 1000; - transition: all 0.5s; -} - -.overlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.5); - backdrop-filter: blur(4px); - z-index: 100; - transition: all 0.5s; -} - -.modal__header { - font-size: 3.25rem; - margin-bottom: 4.5rem; - line-height: 1.5; -} - -.modal__form { - margin: 0 3rem; - display: grid; - grid-template-columns: 1fr 2fr; - align-items: center; - gap: 2.5rem; -} - -.modal__form label { - font-size: 1.7rem; - font-weight: 500; -} - -.modal__form input { - font-size: 1.7rem; - padding: 1rem 1.5rem; - border: 1px solid #ddd; - border-radius: 0.5rem; -} - -.modal__form button { - grid-column: 1 / span 2; - justify-self: center; - margin-top: 1rem; -} - -.btn--close-modal { - font-family: inherit; - color: inherit; - position: absolute; - top: 0.5rem; - right: 2rem; - font-size: 4rem; - cursor: pointer; - border: none; - background: none; -} - -.hidden { - visibility: hidden; - opacity: 0; -} - -/* COOKIE MESSAGE */ -.cookie-message { - display: flex; - align-items: center; - justify-content: space-evenly; - width: 100%; - background-color: white; - color: #bbb; - font-size: 1.5rem; - font-weight: 400; -} diff --git a/14-OOP/final/.prettierrc b/14-OOP/final/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/14-OOP/final/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/14-OOP/final/index.html b/14-OOP/final/index.html deleted file mode 100644 index 1d3f550d6d..0000000000 --- a/14-OOP/final/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - Object Oriented Programming (OOP) With JavaScript - - - - -

Object Oriented Programming (OOP) With JavaScript

- - diff --git a/14-OOP/final/script.js b/14-OOP/final/script.js deleted file mode 100644 index 62fa919309..0000000000 --- a/14-OOP/final/script.js +++ /dev/null @@ -1,682 +0,0 @@ -'use strict'; - -/* -/////////////////////////////////////// -// Constructor Functions and the new Operator -const Person = function (firstName, birthYear) { - // Instance properties - this.firstName = firstName; - this.birthYear = birthYear; - - // Never to this! - // this.calcAge = function () { - // console.log(2037 - this.birthYear); - // }; -}; - -const jonas = new Person('Jonas', 1991); -console.log(jonas); - -// 1. New {} is created -// 2. function is called, this = {} -// 3. {} linked to prototype -// 4. function automatically return {} - -const matilda = new Person('Matilda', 2017); -const jack = new Person('Jack', 1975); - -console.log(jonas instanceof Person); - -Person.hey = function () { - console.log('Hey there 👋'); - console.log(this); -}; -Person.hey(); - -/////////////////////////////////////// -// Prototypes -console.log(Person.prototype); - -Person.prototype.calcAge = function () { - console.log(2037 - this.birthYear); -}; - -jonas.calcAge(); -matilda.calcAge(); - -console.log(jonas.__proto__); -console.log(jonas.__proto__ === Person.prototype); - -console.log(Person.prototype.isPrototypeOf(jonas)); -console.log(Person.prototype.isPrototypeOf(matilda)); -console.log(Person.prototype.isPrototypeOf(Person)); - -// .prototyeOfLinkedObjects - -Person.prototype.species = 'Homo Sapiens'; -console.log(jonas.species, matilda.species); - -console.log(jonas.hasOwnProperty('firstName')); -console.log(jonas.hasOwnProperty('species')); - - -/////////////////////////////////////// -// Prototypal Inheritance on Built-In Objects -console.log(jonas.__proto__); -// Object.prototype (top of prototype chain) -console.log(jonas.__proto__.__proto__); -console.log(jonas.__proto__.__proto__.__proto__); - -console.dir(Person.prototype.constructor); - -const arr = [3, 6, 6, 5, 6, 9, 9]; // new Array === [] -console.log(arr.__proto__); -console.log(arr.__proto__ === Array.prototype); - -console.log(arr.__proto__.__proto__); - -Array.prototype.unique = function () { - return [...new Set(this)]; -}; - -console.log(arr.unique()); - -const h1 = document.querySelector('h1'); -console.dir(x => x + 1); -*/ - -/////////////////////////////////////// -// Coding Challenge #1 - -/* -1. Use a constructor function to implement a Car. A car has a make and a speed property. The speed property is the current speed of the car in km/h; -2. Implement an 'accelerate' method that will increase the car's speed by 10, and log the new speed to the console; -3. Implement a 'brake' method that will decrease the car's speed by 5, and log the new speed to the console; -4. Create 2 car objects and experiment with calling 'accelerate' and 'brake' multiple times on each of them. - -DATA CAR 1: 'BMW' going at 120 km/h -DATA CAR 2: 'Mercedes' going at 95 km/h - -GOOD LUCK 😀 -*/ - -/* -const Car = function (make, speed) { - this.make = make; - this.speed = speed; -}; - -Car.prototype.accelerate = function () { - this.speed += 10; - console.log(`${this.make} is going at ${this.speed} km/h`); -}; - -Car.prototype.brake = function () { - this.speed -= 5; - console.log(`${this.make} is going at ${this.speed} km/h`); -}; - -const bmw = new Car('BMW', 120); -const mercedes = new Car('Mercedes', 95); - -bmw.accelerate(); -bmw.accelerate(); -bmw.brake(); -bmw.accelerate(); - - -/////////////////////////////////////// -// ES6 Classes - -// Class expression -// const PersonCl = class {} - -// Class declaration -class PersonCl { - constructor(fullName, birthYear) { - this.fullName = fullName; - this.birthYear = birthYear; - } - - // Instance methods - // Methods will be added to .prototype property - calcAge() { - console.log(2037 - this.birthYear); - } - - greet() { - console.log(`Hey ${this.fullName}`); - } - - get age() { - return 2037 - this.birthYear; - } - - // Set a property that already exists - set fullName(name) { - if (name.includes(' ')) this._fullName = name; - else alert(`${name} is not a full name!`); - } - - get fullName() { - return this._fullName; - } - - // Static method - static hey() { - console.log('Hey there 👋'); - console.log(this); - } -} - -const jessica = new PersonCl('Jessica Davis', 1996); -console.log(jessica); -jessica.calcAge(); -console.log(jessica.age); - -console.log(jessica.__proto__ === PersonCl.prototype); - -// PersonCl.prototype.greet = function () { -// console.log(`Hey ${this.firstName}`); -// }; -jessica.greet(); - -// 1. Classes are NOT hoisted -// 2. Classes are first-class citizens -// 3. Classes are executed in strict mode - -const walter = new PersonCl('Walter White', 1965); -// PersonCl.hey(); - - -/////////////////////////////////////// -// Setters and Getters -const account = { - owner: 'Jonas', - movements: [200, 530, 120, 300], - - get latest() { - return this.movements.slice(-1).pop(); - }, - - set latest(mov) { - this.movements.push(mov); - }, -}; - -console.log(account.latest); - -account.latest = 50; -console.log(account.movements); - - -/////////////////////////////////////// -// Object.create -const PersonProto = { - calcAge() { - console.log(2037 - this.birthYear); - }, - - init(firstName, birthYear) { - this.firstName = firstName; - this.birthYear = birthYear; - }, -}; - -const steven = Object.create(PersonProto); -console.log(steven); -steven.name = 'Steven'; -steven.birthYear = 2002; -steven.calcAge(); - -console.log(steven.__proto__ === PersonProto); - -const sarah = Object.create(PersonProto); -sarah.init('Sarah', 1979); -sarah.calcAge(); -*/ - -/////////////////////////////////////// -// Coding Challenge #2 - -/* -1. Re-create challenge 1, but this time using an ES6 class; -2. Add a getter called 'speedUS' which returns the current speed in mi/h (divide by 1.6); -3. Add a setter called 'speedUS' which sets the current speed in mi/h (but converts it to km/h before storing the value, by multiplying the input by 1.6); -4. Create a new car and experiment with the accelerate and brake methods, and with the getter and setter. - -DATA CAR 1: 'Ford' going at 120 km/h - -GOOD LUCK 😀 -*/ - -/* -class CarCl { - constructor(make, speed) { - this.make = make; - this.speed = speed; - } - - accelerate() { - this.speed += 10; - console.log(`${this.make} is going at ${this.speed} km/h`); - } - - brake() { - this.speed -= 5; - console.log(`${this.make} is going at ${this.speed} km/h`); - } - - get speedUS() { - return this.speed / 1.6; - } - - set speedUS(speed) { - this.speed = speed * 1.6; - } -} - -const ford = new CarCl('Ford', 120); -console.log(ford.speedUS); -ford.accelerate(); -ford.accelerate(); -ford.brake(); -ford.speedUS = 50; -console.log(ford); - - -/////////////////////////////////////// -// Inheritance Between "Classes": Constructor Functions - -const Person = function (firstName, birthYear) { - this.firstName = firstName; - this.birthYear = birthYear; -}; - -Person.prototype.calcAge = function () { - console.log(2037 - this.birthYear); -}; - -const Student = function (firstName, birthYear, course) { - Person.call(this, firstName, birthYear); - this.course = course; -}; - -// Linking prototypes -Student.prototype = Object.create(Person.prototype); - -Student.prototype.introduce = function () { - console.log(`My name is ${this.firstName} and I study ${this.course}`); -}; - -const mike = new Student('Mike', 2020, 'Computer Science'); -mike.introduce(); -mike.calcAge(); - -console.log(mike.__proto__); -console.log(mike.__proto__.__proto__); - -console.log(mike instanceof Student); -console.log(mike instanceof Person); -console.log(mike instanceof Object); - -Student.prototype.constructor = Student; -console.dir(Student.prototype.constructor); -*/ - -/////////////////////////////////////// -// Coding Challenge #3 - -/* -1. Use a constructor function to implement an Electric Car (called EV) as a CHILD "class" of Car. Besides a make and current speed, the EV also has the current battery charge in % ('charge' property); -2. Implement a 'chargeBattery' method which takes an argument 'chargeTo' and sets the battery charge to 'chargeTo'; -3. Implement an 'accelerate' method that will increase the car's speed by 20, and decrease the charge by 1%. Then log a message like this: 'Tesla going at 140 km/h, with a charge of 22%'; -4. Create an electric car object and experiment with calling 'accelerate', 'brake' and 'chargeBattery' (charge to 90%). Notice what happens when you 'accelerate'! HINT: Review the definiton of polymorphism 😉 - -DATA CAR 1: 'Tesla' going at 120 km/h, with a charge of 23% - -GOOD LUCK 😀 -*/ - -/* -const Car = function (make, speed) { - this.make = make; - this.speed = speed; -}; - -Car.prototype.accelerate = function () { - this.speed += 10; - console.log(`${this.make} is going at ${this.speed} km/h`); -}; - -Car.prototype.brake = function () { - this.speed -= 5; - console.log(`${this.make} is going at ${this.speed} km/h`); -}; - -const EV = function (make, speed, charge) { - Car.call(this, make, speed); - this.charge = charge; -}; - -// Link the prototypes -EV.prototype = Object.create(Car.prototype); - -EV.prototype.chargeBattery = function (chargeTo) { - this.charge = chargeTo; -}; - -EV.prototype.accelerate = function () { - this.speed += 20; - this.charge--; - console.log( - `${this.make} is going at ${this.speed} km/h, with a charge of ${this.charge}` - ); -}; - -const tesla = new EV('Tesla', 120, 23); -tesla.chargeBattery(90); -console.log(tesla); -tesla.brake(); -tesla.accelerate(); - - -/////////////////////////////////////// -// Inheritance Between "Classes": ES6 Classes - -class PersonCl { - constructor(fullName, birthYear) { - this.fullName = fullName; - this.birthYear = birthYear; - } - - // Instance methods - calcAge() { - console.log(2037 - this.birthYear); - } - - greet() { - console.log(`Hey ${this.fullName}`); - } - - get age() { - return 2037 - this.birthYear; - } - - set fullName(name) { - if (name.includes(' ')) this._fullName = name; - else alert(`${name} is not a full name!`); - } - - get fullName() { - return this._fullName; - } - - // Static method - static hey() { - console.log('Hey there 👋'); - } -} - -class StudentCl extends PersonCl { - constructor(fullName, birthYear, course) { - // Always needs to happen first! - super(fullName, birthYear); - this.course = course; - } - - introduce() { - console.log(`My name is ${this.fullName} and I study ${this.course}`); - } - - calcAge() { - console.log( - `I'm ${ - 2037 - this.birthYear - } years old, but as a student I feel more like ${ - 2037 - this.birthYear + 10 - }` - ); - } -} - -const martha = new StudentCl('Martha Jones', 2012, 'Computer Science'); -martha.introduce(); -martha.calcAge(); - - -/////////////////////////////////////// -// Inheritance Between "Classes": Object.create - -const PersonProto = { - calcAge() { - console.log(2037 - this.birthYear); - }, - - init(firstName, birthYear) { - this.firstName = firstName; - this.birthYear = birthYear; - }, -}; - -const steven = Object.create(PersonProto); - -const StudentProto = Object.create(PersonProto); -StudentProto.init = function (firstName, birthYear, course) { - PersonProto.init.call(this, firstName, birthYear); - this.course = course; -}; - -StudentProto.introduce = function () { - // BUG in video: - // console.log(`My name is ${this.fullName} and I study ${this.course}`); - - // FIX: - console.log(`My name is ${this.firstName} and I study ${this.course}`); -}; - -const jay = Object.create(StudentProto); -jay.init('Jay', 2010, 'Computer Science'); -jay.introduce(); -jay.calcAge(); - - -/////////////////////////////////////// -// Another Class Example - -class Account { - constructor(owner, currency, pin) { - this.owner = owner; - this.currency = currency; - this.pin = pin; - this.movements = []; - this.locale = navigator.language; - - console.log(`Thanks for opening an account, ${owner}`); - } - - // Public interface - deposit(val) { - this.movements.push(val); - } - - withdraw(val) { - this.deposit(-val); - } - - approveLoan(val) { - return true; - } - - requestLoan(val) { - if (this.approveLoan(val)) { - this.deposit(val); - console.log(`Loan approved`); - } - } -} - -const acc1 = new Account('Jonas', 'EUR', 1111); - -// acc1.movements.push(250); -// acc1.movements.push(-140); -acc1.deposit(250); -acc1.withdraw(140); -acc1.approveLoan(1000); -acc1.requestLoan(1000); - -console.log(acc1); -console.log(acc1.pin); - - -/////////////////////////////////////// -// Encapsulation: Private Class Fields and Methods - -// 1) Public fields -// 2) Private fields -// 3) Public methods -// 4) Private methods -// STATIC version of these 4 - -class Account { - locale = navigator.language; - bank = 'Bankist'; - #movements = []; - #pin; - - constructor(owner, currency, pin) { - this.owner = owner; - this.currency = currency; - this.#pin = pin; - - // this.movements = []; - // this.locale = navigator.language; - - console.log(`Thanks for opening an account, ${owner}`); - } - - // Public interface (API) - getMovements() { - return this.#movements; - // Not chaninable - } - - deposit(val) { - this.#movements.push(val); - return this; - } - - withdraw(val) { - this.deposit(-val); - return this; - } - - #approveLoan(val) { - // Fake method - return true; - } - - requestLoan(val) { - if (this.#approveLoan(val)) { - this.deposit(val); - console.log(`Loan approved`); - } - return this; - } -} - -const acc1 = new Account('Jonas', 'EUR', 1111); -// acc1.deposit(300); -// acc1.withdraw(100); -const movements = acc1 - .deposit(300) - .withdraw(100) - .withdraw(50) - .requestLoan(25000) - .withdraw(4000) - .getMovements(); - -console.log(acc1); -// console.log(acc1.#movements); -// Account.#test(); -console.log(movements); - - -/////////////////////////////////////// -// Coding Challenge #4 - -/* -1. Re-create challenge #3, but this time using ES6 classes: create an 'EVCl' child class of the 'CarCl' class -2. Make the 'charge' property private; -3. Implement the ability to chain the 'accelerate' and 'chargeBattery' methods of this class, and also update the 'brake' method in the 'CarCl' class. They experiment with chining! - -DATA CAR 1: 'Rivian' going at 120 km/h, with a charge of 23% - -GOOD LUCK 😀 -*/ - -/* -class CarCl { - constructor(make, speed) { - this.make = make; - this.speed = speed; - } - - accelerate() { - this.speed += 10; - console.log(`${this.make} is going at ${this.speed} km/h`); - } - - brake() { - this.speed -= 5; - console.log(`${this.make} is going at ${this.speed} km/h`); - return this; - } - - get speedUS() { - return this.speed / 1.6; - } - - set speedUS(speed) { - this.speed = speed * 1.6; - } -} - -class EVCl extends CarCl { - #charge; - - constructor(make, speed, charge) { - super(make, speed); - this.#charge = charge; - } - - chargeBattery(chargeTo) { - this.#charge = chargeTo; - return this; - } - - accelerate() { - this.speed += 20; - this.#charge--; - console.log( - `${this.make} is going at ${this.speed} km/h, with a charge of ${ - this.#charge - }` - ); - return this; - } -} - -const rivian = new EVCl('Rivian', 120, 23); -console.log(rivian); -// console.log(rivian.#charge); -rivian - .accelerate() - .accelerate() - .accelerate() - .brake() - .chargeBattery(50) - .accelerate(); - -console.log(rivian.speedUS); -*/ diff --git a/14-OOP/starter/.prettierrc b/14-OOP/starter/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/14-OOP/starter/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/14-OOP/starter/index.html b/14-OOP/starter/index.html deleted file mode 100644 index 1d3f550d6d..0000000000 --- a/14-OOP/starter/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - Object Oriented Programming (OOP) With JavaScript - - - - -

Object Oriented Programming (OOP) With JavaScript

- - diff --git a/14-OOP/starter/script.js b/14-OOP/starter/script.js deleted file mode 100644 index ad9a93a7c1..0000000000 --- a/14-OOP/starter/script.js +++ /dev/null @@ -1 +0,0 @@ -'use strict'; diff --git a/15-Mapty/final/.prettierrc b/15-Mapty/final/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/15-Mapty/final/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/15-Mapty/final/Mapty-architecture-final.png b/15-Mapty/final/Mapty-architecture-final.png deleted file mode 100644 index 56ad00c113..0000000000 Binary files a/15-Mapty/final/Mapty-architecture-final.png and /dev/null differ diff --git a/15-Mapty/final/Mapty-architecture-part-1.png b/15-Mapty/final/Mapty-architecture-part-1.png deleted file mode 100644 index 9e2159e83c..0000000000 Binary files a/15-Mapty/final/Mapty-architecture-part-1.png and /dev/null differ diff --git a/15-Mapty/final/Mapty-flowchart.png b/15-Mapty/final/Mapty-flowchart.png deleted file mode 100644 index c0f24c002e..0000000000 Binary files a/15-Mapty/final/Mapty-flowchart.png and /dev/null differ diff --git a/15-Mapty/final/icon.png b/15-Mapty/final/icon.png deleted file mode 100644 index d2f503119a..0000000000 Binary files a/15-Mapty/final/icon.png and /dev/null differ diff --git a/15-Mapty/final/index.html b/15-Mapty/final/index.html deleted file mode 100644 index 134a9dd712..0000000000 --- a/15-Mapty/final/index.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - mapty // Map your workouts - - - - -
- - diff --git a/15-Mapty/final/logo.png b/15-Mapty/final/logo.png deleted file mode 100644 index 50a9cba8ee..0000000000 Binary files a/15-Mapty/final/logo.png and /dev/null differ diff --git a/15-Mapty/final/other.js b/15-Mapty/final/other.js deleted file mode 100644 index ae83f31a4d..0000000000 --- a/15-Mapty/final/other.js +++ /dev/null @@ -1,2 +0,0 @@ -const firstName = 'Jonas'; -console.log(months); diff --git a/15-Mapty/final/script.js b/15-Mapty/final/script.js deleted file mode 100644 index 1a9bbd1147..0000000000 --- a/15-Mapty/final/script.js +++ /dev/null @@ -1,325 +0,0 @@ -'use strict'; - -class Workout { - date = new Date(); - id = (Date.now() + '').slice(-10); - clicks = 0; - - constructor(coords, distance, duration) { - // this.date = ... - // this.id = ... - this.coords = coords; // [lat, lng] - this.distance = distance; // in km - this.duration = duration; // in min - } - - _setDescription() { - // prettier-ignore - const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; - - this.description = `${this.type[0].toUpperCase()}${this.type.slice(1)} on ${ - months[this.date.getMonth()] - } ${this.date.getDate()}`; - } - - click() { - this.clicks++; - } -} - -class Running extends Workout { - type = 'running'; - - constructor(coords, distance, duration, cadence) { - super(coords, distance, duration); - this.cadence = cadence; - this.calcPace(); - this._setDescription(); - } - - calcPace() { - // min/km - this.pace = this.duration / this.distance; - return this.pace; - } -} - -class Cycling extends Workout { - type = 'cycling'; - - constructor(coords, distance, duration, elevationGain) { - super(coords, distance, duration); - this.elevationGain = elevationGain; - // this.type = 'cycling'; - this.calcSpeed(); - this._setDescription(); - } - - calcSpeed() { - // km/h - this.speed = this.distance / (this.duration / 60); - return this.speed; - } -} - -// const run1 = new Running([39, -12], 5.2, 24, 178); -// const cycling1 = new Cycling([39, -12], 27, 95, 523); -// console.log(run1, cycling1); - -/////////////////////////////////////// -// APPLICATION ARCHITECTURE -const form = document.querySelector('.form'); -const containerWorkouts = document.querySelector('.workouts'); -const inputType = document.querySelector('.form__input--type'); -const inputDistance = document.querySelector('.form__input--distance'); -const inputDuration = document.querySelector('.form__input--duration'); -const inputCadence = document.querySelector('.form__input--cadence'); -const inputElevation = document.querySelector('.form__input--elevation'); - -class App { - #map; - #mapZoomLevel = 13; - #mapEvent; - #workouts = []; - - constructor() { - // Get user's position - this._getPosition(); - - // Get data from local storage - this._getLocalStorage(); - - // Attach event handlers - form.addEventListener('submit', this._newWorkout.bind(this)); - inputType.addEventListener('change', this._toggleElevationField); - containerWorkouts.addEventListener('click', this._moveToPopup.bind(this)); - } - - _getPosition() { - if (navigator.geolocation) - navigator.geolocation.getCurrentPosition( - this._loadMap.bind(this), - function () { - alert('Could not get your position'); - } - ); - } - - _loadMap(position) { - const { latitude } = position.coords; - const { longitude } = position.coords; - // console.log(`https://www.google.pt/maps/@${latitude},${longitude}`); - - const coords = [latitude, longitude]; - - this.#map = L.map('map').setView(coords, this.#mapZoomLevel); - - L.tileLayer('https://{s}.tile.openstreetmap.fr/hot/%7Bz%7D/%7Bx%7D/%7By%7D.png', { - attribution: - '© OpenStreetMap contributors', - }).addTo(this.#map); - - // Handling clicks on map - this.#map.on('click', this._showForm.bind(this)); - - this.#workouts.forEach(work => { - this._renderWorkoutMarker(work); - }); - } - - _showForm(mapE) { - this.#mapEvent = mapE; - form.classList.remove('hidden'); - inputDistance.focus(); - } - - _hideForm() { - // Empty inputs - inputDistance.value = inputDuration.value = inputCadence.value = inputElevation.value = - ''; - - form.style.display = 'none'; - form.classList.add('hidden'); - setTimeout(() => (form.style.display = 'grid'), 1000); - } - - _toggleElevationField() { - inputElevation.closest('.form__row').classList.toggle('form__row--hidden'); - inputCadence.closest('.form__row').classList.toggle('form__row--hidden'); - } - - _newWorkout(e) { - const validInputs = (...inputs) => - inputs.every(inp => Number.isFinite(inp)); - const allPositive = (...inputs) => inputs.every(inp => inp > 0); - - e.preventDefault(); - - // Get data from form - const type = inputType.value; - const distance = +inputDistance.value; - const duration = +inputDuration.value; - const { lat, lng } = this.#mapEvent.latlng; - let workout; - - // If workout running, create running object - if (type === 'running') { - const cadence = +inputCadence.value; - - // Check if data is valid - if ( - // !Number.isFinite(distance) || - // !Number.isFinite(duration) || - // !Number.isFinite(cadence) - !validInputs(distance, duration, cadence) || - !allPositive(distance, duration, cadence) - ) - return alert('Inputs have to be positive numbers!'); - - workout = new Running([lat, lng], distance, duration, cadence); - } - - // If workout cycling, create cycling object - if (type === 'cycling') { - const elevation = +inputElevation.value; - - if ( - !validInputs(distance, duration, elevation) || - !allPositive(distance, duration) - ) - return alert('Inputs have to be positive numbers!'); - - workout = new Cycling([lat, lng], distance, duration, elevation); - } - - // Add new object to workout array - this.#workouts.push(workout); - - // Render workout on map as marker - this._renderWorkoutMarker(workout); - - // Render workout on list - this._renderWorkout(workout); - - // Hide form + clear input fields - this._hideForm(); - - // Set local storage to all workouts - this._setLocalStorage(); - } - - _renderWorkoutMarker(workout) { - L.marker(workout.coords) - .addTo(this.#map) - .bindPopup( - L.popup({ - maxWidth: 250, - minWidth: 100, - autoClose: false, - closeOnClick: false, - className: `${workout.type}-popup`, - }) - ) - .setPopupContent( - `${workout.type === 'running' ? '🏃‍♂️' : '🚴‍♀️'} ${workout.description}` - ) - .openPopup(); - } - - _renderWorkout(workout) { - let html = ` -
  • -

    ${workout.description}

    -
    - ${ - workout.type === 'running' ? '🏃‍♂️' : '🚴‍♀️' - } - ${workout.distance} - km -
    -
    - - ${workout.duration} - min -
    - `; - - if (workout.type === 'running') - html += ` -
    - ⚡️ - ${workout.pace.toFixed(1)} - min/km -
    -
    - 🦶🏼 - ${workout.cadence} - spm -
    -
  • - `; - - if (workout.type === 'cycling') - html += ` -
    - ⚡️ - ${workout.speed.toFixed(1)} - km/h -
    -
    - - ${workout.elevationGain} - m -
    - - `; - - form.insertAdjacentHTML('afterend', html); - } - - _moveToPopup(e) { - // BUGFIX: When we click on a workout before the map has loaded, we get an error. But there is an easy fix: - if (!this.#map) return; - - const workoutEl = e.target.closest('.workout'); - - if (!workoutEl) return; - - const workout = this.#workouts.find( - work => work.id === workoutEl.dataset.id - ); - - this.#map.setView(workout.coords, this.#mapZoomLevel, { - animate: true, - pan: { - duration: 1, - }, - }); - - // using the public interface - // workout.click(); - } - - _setLocalStorage() { - localStorage.setItem('workouts', JSON.stringify(this.#workouts)); - } - - _getLocalStorage() { - const data = JSON.parse(localStorage.getItem('workouts')); - - if (!data) return; - - this.#workouts = data; - - this.#workouts.forEach(work => { - this._renderWorkout(work); - }); - } - - reset() { - localStorage.removeItem('workouts'); - location.reload(); - } -} - -const app = new App(); diff --git a/15-Mapty/final/style.css b/15-Mapty/final/style.css deleted file mode 100644 index 5388f646f4..0000000000 --- a/15-Mapty/final/style.css +++ /dev/null @@ -1,220 +0,0 @@ -:root { - --color-brand--1: #ffb545; - --color-brand--2: #00c46a; - - --color-dark--1: #2d3439; - --color-dark--2: #42484d; - --color-light--1: #aaa; - --color-light--2: #ececec; - --color-light--3: rgb(214, 222, 224); -} - -* { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -html { - font-size: 62.5%; - box-sizing: border-box; -} - -body { - font-family: 'Manrope', sans-serif; - color: var(--color-light--2); - font-weight: 400; - line-height: 1.6; - height: 100vh; - overscroll-behavior-y: none; - - background-color: #fff; - padding: 2.5rem; - - display: flex; -} - -/* GENERAL */ -a:link, -a:visited { - color: var(--color-brand--1); -} - -/* SIDEBAR */ -.sidebar { - flex-basis: 50rem; - background-color: var(--color-dark--1); - padding: 3rem 5rem 4rem 5rem; - display: flex; - flex-direction: column; -} - -.logo { - height: 5.2rem; - align-self: center; - margin-bottom: 4rem; -} - -.workouts { - list-style: none; - height: 77vh; - overflow-y: scroll; - overflow-x: hidden; -} - -.workouts::-webkit-scrollbar { - width: 0; -} - -.workout { - background-color: var(--color-dark--2); - border-radius: 5px; - padding: 1.5rem 2.25rem; - margin-bottom: 1.75rem; - cursor: pointer; - - display: grid; - grid-template-columns: 1fr 1fr 1fr 1fr; - gap: 0.75rem 1.5rem; -} -.workout--running { - border-left: 5px solid var(--color-brand--2); -} -.workout--cycling { - border-left: 5px solid var(--color-brand--1); -} - -.workout__title { - font-size: 1.7rem; - font-weight: 600; - grid-column: 1 / -1; -} - -.workout__details { - display: flex; - align-items: baseline; -} - -.workout__icon { - font-size: 1.8rem; - margin-right: 0.2rem; - height: 0.28rem; -} - -.workout__value { - font-size: 1.5rem; - margin-right: 0.5rem; -} - -.workout__unit { - font-size: 1.1rem; - color: var(--color-light--1); - text-transform: uppercase; - font-weight: 800; -} - -.form { - background-color: var(--color-dark--2); - border-radius: 5px; - padding: 1.5rem 2.75rem; - margin-bottom: 1.75rem; - - display: grid; - grid-template-columns: 1fr 1fr; - gap: 0.5rem 2.5rem; - - /* Match height and activity boxes */ - height: 9.25rem; - transition: all 0.5s, transform 1ms; -} - -.form.hidden { - transform: translateY(-30rem); - height: 0; - padding: 0 2.25rem; - margin-bottom: 0; - opacity: 0; -} - -.form__row { - display: flex; - align-items: center; -} - -.form__row--hidden { - display: none; -} - -.form__label { - flex: 0 0 50%; - font-size: 1.5rem; - font-weight: 600; -} - -.form__input { - width: 100%; - padding: 0.3rem 1.1rem; - font-family: inherit; - font-size: 1.4rem; - border: none; - border-radius: 3px; - background-color: var(--color-light--3); - transition: all 0.2s; -} - -.form__input:focus { - outline: none; - background-color: #fff; -} - -.form__btn { - display: none; -} - -.copyright { - margin-top: auto; - font-size: 1.3rem; - text-align: center; - color: var(--color-light--1); -} - -.twitter-link:link, -.twitter-link:visited { - color: var(--color-light--1); - transition: all 0.2s; -} - -.twitter-link:hover, -.twitter-link:active { - color: var(--color-light--2); -} - -/* MAP */ -#map { - flex: 1; - height: 100%; - background-color: var(--color-light--1); -} - -/* Popup width is defined in JS using options */ -.leaflet-popup .leaflet-popup-content-wrapper { - background-color: var(--color-dark--1); - color: var(--color-light--2); - border-radius: 5px; - padding-right: 0.6rem; -} - -.leaflet-popup .leaflet-popup-content { - font-size: 1.5rem; -} - -.leaflet-popup .leaflet-popup-tip { - background-color: var(--color-dark--1); -} - -.running-popup .leaflet-popup-content-wrapper { - border-left: 5px solid var(--color-brand--2); -} -.cycling-popup .leaflet-popup-content-wrapper { - border-left: 5px solid var(--color-brand--1); -} diff --git a/15-Mapty/starter/.prettierrc b/15-Mapty/starter/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/15-Mapty/starter/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/15-Mapty/starter/Mapty-architecture-final.png b/15-Mapty/starter/Mapty-architecture-final.png deleted file mode 100644 index 56ad00c113..0000000000 Binary files a/15-Mapty/starter/Mapty-architecture-final.png and /dev/null differ diff --git a/15-Mapty/starter/Mapty-architecture-part-1.png b/15-Mapty/starter/Mapty-architecture-part-1.png deleted file mode 100644 index 9e2159e83c..0000000000 Binary files a/15-Mapty/starter/Mapty-architecture-part-1.png and /dev/null differ diff --git a/15-Mapty/starter/Mapty-flowchart.png b/15-Mapty/starter/Mapty-flowchart.png deleted file mode 100644 index c0f24c002e..0000000000 Binary files a/15-Mapty/starter/Mapty-flowchart.png and /dev/null differ diff --git a/15-Mapty/starter/icon.png b/15-Mapty/starter/icon.png deleted file mode 100644 index d2f503119a..0000000000 Binary files a/15-Mapty/starter/icon.png and /dev/null differ diff --git a/15-Mapty/starter/index.html b/15-Mapty/starter/index.html deleted file mode 100644 index 234c87fb55..0000000000 --- a/15-Mapty/starter/index.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - mapty // Map your workouts - - - - -
    - - diff --git a/15-Mapty/starter/logo.png b/15-Mapty/starter/logo.png deleted file mode 100644 index 50a9cba8ee..0000000000 Binary files a/15-Mapty/starter/logo.png and /dev/null differ diff --git a/15-Mapty/starter/script.js b/15-Mapty/starter/script.js deleted file mode 100644 index 9ba12287f8..0000000000 --- a/15-Mapty/starter/script.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -// prettier-ignore -const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; - -const form = document.querySelector('.form'); -const containerWorkouts = document.querySelector('.workouts'); -const inputType = document.querySelector('.form__input--type'); -const inputDistance = document.querySelector('.form__input--distance'); -const inputDuration = document.querySelector('.form__input--duration'); -const inputCadence = document.querySelector('.form__input--cadence'); -const inputElevation = document.querySelector('.form__input--elevation'); diff --git a/15-Mapty/starter/style.css b/15-Mapty/starter/style.css deleted file mode 100644 index 5388f646f4..0000000000 --- a/15-Mapty/starter/style.css +++ /dev/null @@ -1,220 +0,0 @@ -:root { - --color-brand--1: #ffb545; - --color-brand--2: #00c46a; - - --color-dark--1: #2d3439; - --color-dark--2: #42484d; - --color-light--1: #aaa; - --color-light--2: #ececec; - --color-light--3: rgb(214, 222, 224); -} - -* { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -html { - font-size: 62.5%; - box-sizing: border-box; -} - -body { - font-family: 'Manrope', sans-serif; - color: var(--color-light--2); - font-weight: 400; - line-height: 1.6; - height: 100vh; - overscroll-behavior-y: none; - - background-color: #fff; - padding: 2.5rem; - - display: flex; -} - -/* GENERAL */ -a:link, -a:visited { - color: var(--color-brand--1); -} - -/* SIDEBAR */ -.sidebar { - flex-basis: 50rem; - background-color: var(--color-dark--1); - padding: 3rem 5rem 4rem 5rem; - display: flex; - flex-direction: column; -} - -.logo { - height: 5.2rem; - align-self: center; - margin-bottom: 4rem; -} - -.workouts { - list-style: none; - height: 77vh; - overflow-y: scroll; - overflow-x: hidden; -} - -.workouts::-webkit-scrollbar { - width: 0; -} - -.workout { - background-color: var(--color-dark--2); - border-radius: 5px; - padding: 1.5rem 2.25rem; - margin-bottom: 1.75rem; - cursor: pointer; - - display: grid; - grid-template-columns: 1fr 1fr 1fr 1fr; - gap: 0.75rem 1.5rem; -} -.workout--running { - border-left: 5px solid var(--color-brand--2); -} -.workout--cycling { - border-left: 5px solid var(--color-brand--1); -} - -.workout__title { - font-size: 1.7rem; - font-weight: 600; - grid-column: 1 / -1; -} - -.workout__details { - display: flex; - align-items: baseline; -} - -.workout__icon { - font-size: 1.8rem; - margin-right: 0.2rem; - height: 0.28rem; -} - -.workout__value { - font-size: 1.5rem; - margin-right: 0.5rem; -} - -.workout__unit { - font-size: 1.1rem; - color: var(--color-light--1); - text-transform: uppercase; - font-weight: 800; -} - -.form { - background-color: var(--color-dark--2); - border-radius: 5px; - padding: 1.5rem 2.75rem; - margin-bottom: 1.75rem; - - display: grid; - grid-template-columns: 1fr 1fr; - gap: 0.5rem 2.5rem; - - /* Match height and activity boxes */ - height: 9.25rem; - transition: all 0.5s, transform 1ms; -} - -.form.hidden { - transform: translateY(-30rem); - height: 0; - padding: 0 2.25rem; - margin-bottom: 0; - opacity: 0; -} - -.form__row { - display: flex; - align-items: center; -} - -.form__row--hidden { - display: none; -} - -.form__label { - flex: 0 0 50%; - font-size: 1.5rem; - font-weight: 600; -} - -.form__input { - width: 100%; - padding: 0.3rem 1.1rem; - font-family: inherit; - font-size: 1.4rem; - border: none; - border-radius: 3px; - background-color: var(--color-light--3); - transition: all 0.2s; -} - -.form__input:focus { - outline: none; - background-color: #fff; -} - -.form__btn { - display: none; -} - -.copyright { - margin-top: auto; - font-size: 1.3rem; - text-align: center; - color: var(--color-light--1); -} - -.twitter-link:link, -.twitter-link:visited { - color: var(--color-light--1); - transition: all 0.2s; -} - -.twitter-link:hover, -.twitter-link:active { - color: var(--color-light--2); -} - -/* MAP */ -#map { - flex: 1; - height: 100%; - background-color: var(--color-light--1); -} - -/* Popup width is defined in JS using options */ -.leaflet-popup .leaflet-popup-content-wrapper { - background-color: var(--color-dark--1); - color: var(--color-light--2); - border-radius: 5px; - padding-right: 0.6rem; -} - -.leaflet-popup .leaflet-popup-content { - font-size: 1.5rem; -} - -.leaflet-popup .leaflet-popup-tip { - background-color: var(--color-dark--1); -} - -.running-popup .leaflet-popup-content-wrapper { - border-left: 5px solid var(--color-brand--2); -} -.cycling-popup .leaflet-popup-content-wrapper { - border-left: 5px solid var(--color-brand--1); -} diff --git a/16-Asynchronous/final/.prettierrc b/16-Asynchronous/final/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/16-Asynchronous/final/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/16-Asynchronous/final/img/img-1.jpg b/16-Asynchronous/final/img/img-1.jpg deleted file mode 100644 index 9627ba5572..0000000000 Binary files a/16-Asynchronous/final/img/img-1.jpg and /dev/null differ diff --git a/16-Asynchronous/final/img/img-2.jpg b/16-Asynchronous/final/img/img-2.jpg deleted file mode 100644 index 70cb723446..0000000000 Binary files a/16-Asynchronous/final/img/img-2.jpg and /dev/null differ diff --git a/16-Asynchronous/final/img/img-3.jpg b/16-Asynchronous/final/img/img-3.jpg deleted file mode 100644 index 45d23a3081..0000000000 Binary files a/16-Asynchronous/final/img/img-3.jpg and /dev/null differ diff --git a/16-Asynchronous/final/index.html b/16-Asynchronous/final/index.html deleted file mode 100644 index 2b0e434dd3..0000000000 --- a/16-Asynchronous/final/index.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - Asynchronous JavaScript - - -
    -
    - -
    - -
    -
    - - diff --git a/16-Asynchronous/final/script.js b/16-Asynchronous/final/script.js deleted file mode 100644 index 1177a90464..0000000000 --- a/16-Asynchronous/final/script.js +++ /dev/null @@ -1,749 +0,0 @@ -'use strict'; - -const btn = document.querySelector('.btn-country'); -const countriesContainer = document.querySelector('.countries'); - -const renderCountry = function (data, className = '') { - const html = ` -
    - -
    -

    ${data.name}

    -

    ${data.region}

    -

    👫${( - +data.population / 1000000 - ).toFixed(1)} people

    -

    🗣️${data.languages[0].name}

    -

    💰${data.currencies[0].name}

    -
    -
    - `; - countriesContainer.insertAdjacentHTML('beforeend', html); - countriesContainer.style.opacity = 1; -}; - -const renderError = function (msg) { - countriesContainer.insertAdjacentText('beforeend', msg); - countriesContainer.style.opacity = 1; -}; - -const getJSON = function (url, errorMsg = 'Something went wrong') { - return fetch(url).then(response => { - if (!response.ok) throw new Error(`${errorMsg} (${response.status})`); - - return response.json(); - }); -}; - -/* -/////////////////////////////////////// -// Our First AJAX Call: XMLHttpRequest - -const getCountryData = function (country) { - const request = new XMLHttpRequest(); - request.open('GET', `https://restcountries.com/v2/name/${country}`); - request.send(); - - request.addEventListener('load', function () { - const [data] = JSON.parse(this.responseText); - console.log(data); - - const html = ` -
    - -
    -

    ${data.name}

    -

    ${data.region}

    -

    👫${( - +data.population / 1000000 - ).toFixed(1)} people

    -

    🗣️${data.languages[0].name}

    -

    💰${data.currencies[0].name}

    -
    -
    - `; - countriesContainer.insertAdjacentHTML('beforeend', html); - countriesContainer.style.opacity = 1; - }); -}; - -getCountryData('portugal'); -getCountryData('usa'); -getCountryData('germany'); -*/ - -/////////////////////////////////////// -// Welcome to Callback Hell - -/* -const getCountryAndNeighbour = function (country) { - // AJAX call country 1 - const request = new XMLHttpRequest(); - request.open('GET', `https://restcountries.com/v2/name/${country}`); - request.send(); - - request.addEventListener('load', function () { - const [data] = JSON.parse(this.responseText); - console.log(data); - - // Render country 1 - renderCountry(data); - - // Get neighbour country (2) - const [neighbour] = data.borders; - - if (!neighbour) return; - - // AJAX call country 2 - const request2 = new XMLHttpRequest(); - request2.open('GET', `https://restcountries.eu/rest/v2/alpha/${neighbour}`); - request2.send(); - - request2.addEventListener('load', function () { - const data2 = JSON.parse(this.responseText); - console.log(data2); - - renderCountry(data2, 'neighbour'); - }); - }); -}; - -// getCountryAndNeighbour('portugal'); -getCountryAndNeighbour('usa'); - -setTimeout(() => { - console.log('1 second passed'); - setTimeout(() => { - console.log('2 seconds passed'); - setTimeout(() => { - console.log('3 second passed'); - setTimeout(() => { - console.log('4 second passed'); - }, 1000); - }, 1000); - }, 1000); -}, 1000); - - -/////////////////////////////////////// -// Consuming Promises -// Chaining Promises -// Handling Rejected Promises -// Throwing Errors Manually - -// const getCountryData = function (country) { -// fetch(`https://restcountries.com/v2/name/${country}`) -// .then(function (response) { -// console.log(response); -// return response.json(); -// }) -// .then(function (data) { -// console.log(data); -// renderCountry(data[0]); -// }); -// }; - -// const getCountryData = function (country) { -// // Country 1 -// fetch(`https://restcountries.com/v2/name/${country}`) -// .then(response => { -// console.log(response); - -// if (!response.ok) -// throw new Error(`Country not found (${response.status})`); - -// return response.json(); -// }) -// .then(data => { -// renderCountry(data[0]); -// // const neighbour = data[0].borders[0]; -// const neighbour = 'dfsdfdef'; - -// if (!neighbour) return; - -// // Country 2 -// return fetch(`https://restcountries.eu/rest/v2/alpha/${neighbour}`); -// }) -// .then(response => { -// if (!response.ok) -// throw new Error(`Country not found (${response.status})`); - -// return response.json(); -// }) -// .then(data => renderCountry(data, 'neighbour')) -// .catch(err => { -// console.error(`${err} 💥💥💥`); -// renderError(`Something went wrong 💥💥 ${err.message}. Try again!`); -// }) -// .finally(() => { -// countriesContainer.style.opacity = 1; -// }); -// }; - -const getCountryData = function (country) { - // Country 1 - getJSON( - `https://restcountries.com/v2/name/${country}`, - 'Country not found' - ) - .then(data => { - renderCountry(data[0]); - const neighbour = data[0].borders[0]; - - if (!neighbour) throw new Error('No neighbour found!'); - - // Country 2 - return getJSON( - `https://restcountries.eu/rest/v2/alpha/${neighbour}`, - 'Country not found' - ); - }) - - .then(data => renderCountry(data, 'neighbour')) - .catch(err => { - console.error(`${err} 💥💥💥`); - renderError(`Something went wrong 💥💥 ${err.message}. Try again!`); - }) - .finally(() => { - countriesContainer.style.opacity = 1; - }); -}; - -btn.addEventListener('click', function () { - getCountryData('portugal'); -}); - -// getCountryData('australia'); -*/ - -/////////////////////////////////////// -// Coding Challenge #1 - -/* -In this challenge you will build a function 'whereAmI' which renders a country ONLY based on GPS coordinates. For that, you will use a second API to geocode coordinates. - -Here are your tasks: - -PART 1 -1. Create a function 'whereAmI' which takes as inputs a latitude value (lat) and a longitude value (lng) (these are GPS coordinates, examples are below). -2. Do 'reverse geocoding' of the provided coordinates. Reverse geocoding means to convert coordinates to a meaningful location, like a city and country name. Use this API to do reverse geocoding: https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=${lat}&longitude=${lng}. -The AJAX call will be done to a URL with this format: https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=52.508&longitude=13.381. Use the fetch API and promises to get the data. Do NOT use the getJSON function we created, that is cheating 😉 -3. Once you have the data, take a look at it in the console to see all the attributes that you recieved about the provided location. Then, using this data, log a messsage like this to the console: 'You are in Berlin, Germany' -4. Chain a .catch method to the end of the promise chain and log errors to the console -5. This API allows you to make only 3 requests per second. If you reload fast, you will get this error with code 403. This is an error with the request. Remember, fetch() does NOT reject the promise in this case. So create an error to reject the promise yourself, with a meaningful error message. - -PART 2 -6. Now it's time to use the received data to render a country. So take the relevant attribute from the geocoding API result, and plug it into the countries API that we have been using. -7. Render the country and catch any errors, just like we have done in the last lecture (you can even copy this code, no need to type the same code) - -TEST COORDINATES 1: 52.508, 13.381 (Latitude, Longitude) -TEST COORDINATES 2: 19.037, 72.873 -TEST COORDINATES 2: -33.933, 18.474 - -GOOD LUCK 😀 -*/ - -/* -const whereAmI = function (lat, lng) { - fetch(`https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=${lat}&longitude=${lng}`) - .then(res => { - if (!res.ok) throw new Error(`Problem with geocoding ${res.status}`); - return res.json(); - }) - .then(data => { - console.log(data); - console.log(`You are in ${data.city}, ${data.countryCode}`); - - return fetch(`https://restcountries.com/v2/name/${data.country}`); - }) - .then(res => { - if (!res.ok) throw new Error(`Country not found (${res.status})`); - - return res.json(); - }) - .then(data => renderCountry(data[0])) - .catch(err => console.error(`${err.message} 💥`)); -}; -whereAmI(52.508, 13.381); -whereAmI(19.037, 72.873); -whereAmI(-33.933, 18.474); - - -/////////////////////////////////////// -// The Event Loop in Practice -console.log('Test start'); -setTimeout(() => console.log('0 sec timer'), 0); -Promise.resolve('Resolved promise 1').then(res => console.log(res)); - -Promise.resolve('Resolved promise 2').then(res => { - for (let i = 0; i < 1000000000; i++) {} - console.log(res); -}); - -console.log('Test end'); - - -/////////////////////////////////////// -// Building a Simple Promise -const lotteryPromise = new Promise(function (resolve, reject) { - console.log('Lotter draw is happening 🔮'); - setTimeout(function () { - if (Math.random() >= 0.5) { - resolve('You WIN 💰'); - } else { - reject(new Error('You lost your money 💩')); - } - }, 2000); -}); - -lotteryPromise.then(res => console.log(res)).catch(err => console.error(err)); - -// Promisifying setTimeout -const wait = function (seconds) { - return new Promise(function (resolve) { - setTimeout(resolve, seconds * 1000); - }); -}; - -wait(1) - .then(() => { - console.log('1 second passed'); - return wait(1); - }) - .then(() => { - console.log('2 second passed'); - return wait(1); - }) - .then(() => { - console.log('3 second passed'); - return wait(1); - }) - .then(() => console.log('4 second passed')); - -// setTimeout(() => { -// console.log('1 second passed'); -// setTimeout(() => { -// console.log('2 seconds passed'); -// setTimeout(() => { -// console.log('3 second passed'); -// setTimeout(() => { -// console.log('4 second passed'); -// }, 1000); -// }, 1000); -// }, 1000); -// }, 1000); - -Promise.resolve('abc').then(x => console.log(x)); -Promise.reject(new Error('Problem!')).catch(x => console.error(x)); - - -/////////////////////////////////////// -// Promisifying the Geolocation API -const getPosition = function () { - return new Promise(function (resolve, reject) { - // navigator.geolocation.getCurrentPosition( - // position => resolve(position), - // err => reject(err) - // ); - navigator.geolocation.getCurrentPosition(resolve, reject); - }); -}; -// getPosition().then(pos => console.log(pos)); - -const whereAmI = function () { - getPosition() - .then(pos => { - const { latitude: lat, longitude: lng } = pos.coords; - - return fetch(`https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=${lat}&longitude=${lng}`); - }) - .then(res => { - if (!res.ok) throw new Error(`Problem with geocoding ${res.status}`); - return res.json(); - }) - .then(data => { - console.log(data); - console.log(`You are in ${data.city}, ${data.countryCode}`); - - return fetch(`https://restcountries.com/v2/name/${data.countryCode}`); - }) - .then(res => { - if (!res.ok) throw new Error(`Country not found (${res.status})`); - - return res.json(); - }) - .then(data => renderCountry(data[0])) - .catch(err => console.error(`${err.message} 💥`)); -}; - -btn.addEventListener('click', whereAmI); -*/ - -/////////////////////////////////////// -// Coding Challenge #2 - -/* -Build the image loading functionality that I just showed you on the screen. - -Tasks are not super-descriptive this time, so that you can figure out some stuff on your own. Pretend you're working on your own 😉 - -PART 1 -1. Create a function 'createImage' which receives imgPath as an input. This function returns a promise which creates a new image (use document.createElement('img')) and sets the .src attribute to the provided image path. When the image is done loading, append it to the DOM element with the 'images' class, and resolve the promise. The fulfilled value should be the image element itself. In case there is an error loading the image ('error' event), reject the promise. - -If this part is too tricky for you, just watch the first part of the solution. - -PART 2 -2. Comsume the promise using .then and also add an error handler; -3. After the image has loaded, pause execution for 2 seconds using the wait function we created earlier; -4. After the 2 seconds have passed, hide the current image (set display to 'none'), and load a second image (HINT: Use the image element returned by the createImage promise to hide the current image. You will need a global variable for that 😉); -5. After the second image has loaded, pause execution for 2 seconds again; -6. After the 2 seconds have passed, hide the current image. - -TEST DATA: Images in the img folder. Test the error handler by passing a wrong image path. Set the network speed to 'Fast 3G' in the dev tools Network tab, otherwise images load too fast. - -GOOD LUCK 😀 -*/ - -/* -const wait = function (seconds) { - return new Promise(function (resolve) { - setTimeout(resolve, seconds * 1000); - }); -}; - -const imgContainer = document.querySelector('.images'); - -const createImage = function (imgPath) { - return new Promise(function (resolve, reject) { - const img = document.createElement('img'); - img.src = imgPath; - - img.addEventListener('load', function () { - imgContainer.append(img); - resolve(img); - }); - - img.addEventListener('error', function () { - reject(new Error('Image not found')); - }); - }); -}; - -let currentImg; - -createImage('img/img-1.jpg') - .then(img => { - currentImg = img; - console.log('Image 1 loaded'); - return wait(2); - }) - .then(() => { - currentImg.style.display = 'none'; - return createImage('img/img-2.jpg'); - }) - .then(img => { - currentImg = img; - console.log('Image 2 loaded'); - return wait(2); - }) - .then(() => { - currentImg.style.display = 'none'; - }) - .catch(err => console.error(err)); - - -/////////////////////////////////////// -// Consuming Promises with Async/Await -// Error Handling With try...catch - -const getPosition = function () { - return new Promise(function (resolve, reject) { - navigator.geolocation.getCurrentPosition(resolve, reject); - }); -}; - -// fetch(`https://restcountries.com/v2/name/${country}`).then(res => console.log(res)) - -const whereAmI = async function () { - try { - // Geolocation - const pos = await getPosition(); - const { latitude: lat, longitude: lng } = pos.coords; - - // Reverse geocoding - const resGeo = await fetch(`https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=${lat}&longitude=${lng}`); - if (!resGeo.ok) throw new Error('Problem getting location data'); - - const dataGeo = await resGeo.json(); - console.log(dataGeo); - - // Country data - const res = await fetch( - `https://restcountries.com/v2/name/${dataGeo.countryCode}` - ); - - // BUG in video: - // if (!resGeo.ok) throw new Error('Problem getting country'); - - // FIX: - if (!res.ok) throw new Error('Problem getting country'); - - const data = await res.json(); - console.log(data); - renderCountry(data[0]); - } catch (err) { - console.error(`${err} 💥`); - renderError(`💥 ${err.message}`); - } -}; -whereAmI(); -whereAmI(); -whereAmI(); -console.log('FIRST'); - -// try { -// let y = 1; -// const x = 2; -// y = 3; -// } catch (err) { -// alert(err.message); -// } - - -/////////////////////////////////////// -// Returning Values from Async Functions -const getPosition = function () { - return new Promise(function (resolve, reject) { - navigator.geolocation.getCurrentPosition(resolve, reject); - }); -}; - -const whereAmI = async function () { - try { - // Geolocation - const pos = await getPosition(); - const { latitude: lat, longitude: lng } = pos.coords; - - // Reverse geocoding - const resGeo = await fetch(`https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=${lat}&longitude=${lng}`); - if (!resGeo.ok) throw new Error('Problem getting location data'); - const dataGeo = await resGeo.json(); - - // Country data - const res = await fetch( - `https://restcountries.com/v2/name/${dataGeo.country}` - ); - if (!resGeo.ok) throw new Error('Problem getting country'); - const data = await res.json(); - renderCountry(data[0]); - - return `You are in ${dataGeo.city}, ${dataGeo.country}`; - } catch (err) { - console.error(`${err} 💥`); - renderError(`💥 ${err.message}`); - - // Reject promise returned from async function - throw err; - } -}; - -console.log('1: Will get location'); -// const city = whereAmI(); -// console.log(city); - -// whereAmI() -// .then(city => console.log(`2: ${city}`)) -// .catch(err => console.error(`2: ${err.message} 💥`)) -// .finally(() => console.log('3: Finished getting location')); - -(async function () { - try { - const city = await whereAmI(); - console.log(`2: ${city}`); - } catch (err) { - console.error(`2: ${err.message} 💥`); - } - console.log('3: Finished getting location'); -})(); - - -/////////////////////////////////////// -// Running Promises in Parallel -const get3Countries = async function (c1, c2, c3) { - try { - // const [data1] = await getJSON( - // `https://restcountries.com/v2/name/${c1}` - // ); - // const [data2] = await getJSON( - // `https://restcountries.com/v2/name/${c2}` - // ); - // const [data3] = await getJSON( - // `https://restcountries.com/v2/name/${c3}` - // ); - // console.log([data1.capital, data2.capital, data3.capital]); - - const data = await Promise.all([ - getJSON(`https://restcountries.com/v2/name/${c1}`), - getJSON(`https://restcountries.com/v2/name/${c2}`), - getJSON(`https://restcountries.com/v2/name/${c3}`), - ]); - console.log(data.map(d => d[0].capital)); - } catch (err) { - console.error(err); - } -}; -get3Countries('portugal', 'canada', 'tanzania'); - - -/////////////////////////////////////// -// Other Promise Combinators: race, allSettled and any -// Promise.race -(async function () { - const res = await Promise.race([ - getJSON(`https://restcountries.com/v2/name/italy`), - getJSON(`https://restcountries.com/v2/name/egypt`), - getJSON(`https://restcountries.com/v2/name/mexico`), - ]); - console.log(res[0]); -})(); - -const timeout = function (sec) { - return new Promise(function (_, reject) { - setTimeout(function () { - reject(new Error('Request took too long!')); - }, sec * 1000); - }); -}; - -Promise.race([ - getJSON(`https://restcountries.com/v2/name/tanzania`), - timeout(5), -]) - .then(res => console.log(res[0])) - .catch(err => console.error(err)); - -// Promise.allSettled -Promise.allSettled([ - Promise.resolve('Success'), - Promise.reject('ERROR'), - Promise.resolve('Another success'), -]).then(res => console.log(res)); - -Promise.all([ - Promise.resolve('Success'), - Promise.reject('ERROR'), - Promise.resolve('Another success'), -]) - .then(res => console.log(res)) - .catch(err => console.error(err)); - -// Promise.any [ES2021] -Promise.any([ - Promise.resolve('Success'), - Promise.reject('ERROR'), - Promise.resolve('Another success'), -]) - .then(res => console.log(res)) - .catch(err => console.error(err)); -*/ - -/////////////////////////////////////// -// Coding Challenge #3 - -/* -PART 1 -Write an async function 'loadNPause' that recreates Coding Challenge #2, this time using async/await (only the part where the promise is consumed). Compare the two versions, think about the big differences, and see which one you like more. -Don't forget to test the error handler, and to set the network speed to 'Fast 3G' in the dev tools Network tab. - -PART 2 -1. Create an async function 'loadAll' that receives an array of image paths 'imgArr'; -2. Use .map to loop over the array, to load all the images with the 'createImage' function (call the resulting array 'imgs') -3. Check out the 'imgs' array in the console! Is it like you expected? -4. Use a promise combinator function to actually get the images from the array 😉 -5. Add the 'paralell' class to all the images (it has some CSS styles). - -TEST DATA: ['img/img-1.jpg', 'img/img-2.jpg', 'img/img-3.jpg']. To test, turn off the 'loadNPause' function. - -GOOD LUCK 😀 -*/ - -/* -const wait = function (seconds) { - return new Promise(function (resolve) { - setTimeout(resolve, seconds * 1000); - }); -}; - -const imgContainer = document.querySelector('.images'); - -const createImage = function (imgPath) { - return new Promise(function (resolve, reject) { - const img = document.createElement('img'); - img.src = imgPath; - - img.addEventListener('load', function () { - imgContainer.append(img); - resolve(img); - }); - - img.addEventListener('error', function () { - reject(new Error('Image not found')); - }); - }); -}; - -let currentImg; - -// createImage('img/img-1.jpg') -// .then(img => { -// currentImg = img; -// console.log('Image 1 loaded'); -// return wait(2); -// }) -// .then(() => { -// currentImg.style.display = 'none'; -// return createImage('img/img-2.jpg'); -// }) -// .then(img => { -// currentImg = img; -// console.log('Image 2 loaded'); -// return wait(2); -// }) -// .then(() => { -// currentImg.style.display = 'none'; -// }) -// .catch(err => console.error(err)); - -// PART 1 -const loadNPause = async function () { - try { - // Load image 1 - let img = await createImage('img/img-1.jpg'); - console.log('Image 1 loaded'); - await wait(2); - img.style.display = 'none'; - - // Load image 1 - img = await createImage('img/img-2.jpg'); - console.log('Image 2 loaded'); - await wait(2); - img.style.display = 'none'; - } catch (err) { - console.error(err); - } -}; -// loadNPause(); - -// PART 2 -const loadAll = async function (imgArr) { - try { - const imgs = imgArr.map(async img => await createImage(img)); - const imgsEl = await Promise.all(imgs); - console.log(imgsEl); - imgsEl.forEach(img => img.classList.add('parallel')); - } catch (err) { - console.error(err); - } -}; -loadAll(['img/img-1.jpg', 'img/img-2.jpg', 'img/img-3.jpg']); -*/ diff --git a/16-Asynchronous/final/style.css b/16-Asynchronous/final/style.css deleted file mode 100644 index 6a10dac8b6..0000000000 --- a/16-Asynchronous/final/style.css +++ /dev/null @@ -1,126 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -html { - font-size: 62.5%; - box-sizing: border-box; -} - -body { - font-family: system-ui; - color: #555; - background-color: #f7f7f7; - min-height: 100vh; - - display: flex; - align-items: center; - justify-content: center; -} - -.container { - display: flex; - flex-flow: column; - align-items: center; -} - -.countries { - /* margin-bottom: 8rem; */ - display: flex; - - font-size: 2rem; - opacity: 0; - transition: opacity 1s; -} - -.country { - background-color: #fff; - box-shadow: 0 2rem 5rem 1rem rgba(0, 0, 0, 0.1); - font-size: 1.8rem; - width: 30rem; - border-radius: 0.7rem; - margin: 0 3rem; - /* overflow: hidden; */ -} - -.neighbour::before { - content: 'Neighbour country'; - width: 100%; - position: absolute; - top: -4rem; - - text-align: center; - font-size: 1.8rem; - font-weight: 600; - text-transform: uppercase; - color: #888; -} - -.neighbour { - transform: scale(0.8) translateY(1rem); - margin-left: 0; -} - -.country__img { - width: 30rem; - height: 17rem; - object-fit: cover; - background-color: #eee; - border-top-left-radius: 0.7rem; - border-top-right-radius: 0.7rem; -} - -.country__data { - padding: 2.5rem 3.75rem 3rem 3.75rem; -} - -.country__name { - font-size: 2.7rem; - margin-bottom: 0.7rem; -} - -.country__region { - font-size: 1.4rem; - margin-bottom: 2.5rem; - text-transform: uppercase; - color: #888; -} - -.country__row:not(:last-child) { - margin-bottom: 1rem; -} - -.country__row span { - display: inline-block; - margin-right: 2rem; - font-size: 2.4rem; -} - -.btn-country { - border: none; - font-size: 2rem; - padding: 2rem 5rem; - border-radius: 0.7rem; - color: white; - background-color: orangered; - cursor: pointer; -} - -.images { - display: flex; -} - -.images img { - display: block; - width: 80rem; - margin: 4rem; -} - -.images img.parallel { - width: 40rem; - margin: 2rem; - border: 3rem solid white; - box-shadow: 0 2rem 5rem 1rem rgba(0, 0, 0, 0.1); -} diff --git a/16-Asynchronous/starter/.prettierrc b/16-Asynchronous/starter/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/16-Asynchronous/starter/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/16-Asynchronous/starter/img/img-1.jpg b/16-Asynchronous/starter/img/img-1.jpg deleted file mode 100644 index 9627ba5572..0000000000 Binary files a/16-Asynchronous/starter/img/img-1.jpg and /dev/null differ diff --git a/16-Asynchronous/starter/img/img-2.jpg b/16-Asynchronous/starter/img/img-2.jpg deleted file mode 100644 index 70cb723446..0000000000 Binary files a/16-Asynchronous/starter/img/img-2.jpg and /dev/null differ diff --git a/16-Asynchronous/starter/img/img-3.jpg b/16-Asynchronous/starter/img/img-3.jpg deleted file mode 100644 index 45d23a3081..0000000000 Binary files a/16-Asynchronous/starter/img/img-3.jpg and /dev/null differ diff --git a/16-Asynchronous/starter/index.html b/16-Asynchronous/starter/index.html deleted file mode 100644 index 2b0e434dd3..0000000000 --- a/16-Asynchronous/starter/index.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - Asynchronous JavaScript - - -
    -
    - -
    - -
    -
    - - diff --git a/16-Asynchronous/starter/script.js b/16-Asynchronous/starter/script.js deleted file mode 100644 index 6a1be63658..0000000000 --- a/16-Asynchronous/starter/script.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -const btn = document.querySelector('.btn-country'); -const countriesContainer = document.querySelector('.countries'); - -// NEW COUNTRIES API URL (use instead of the URL shown in videos): -// https://restcountries.com/v2/name/portugal - -// NEW REVERSE GEOCODING API URL (use instead of the URL shown in videos): -// https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=${lat}&longitude=${lng} - -/////////////////////////////////////// diff --git a/16-Asynchronous/starter/style.css b/16-Asynchronous/starter/style.css deleted file mode 100644 index 6a10dac8b6..0000000000 --- a/16-Asynchronous/starter/style.css +++ /dev/null @@ -1,126 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: inherit; -} - -html { - font-size: 62.5%; - box-sizing: border-box; -} - -body { - font-family: system-ui; - color: #555; - background-color: #f7f7f7; - min-height: 100vh; - - display: flex; - align-items: center; - justify-content: center; -} - -.container { - display: flex; - flex-flow: column; - align-items: center; -} - -.countries { - /* margin-bottom: 8rem; */ - display: flex; - - font-size: 2rem; - opacity: 0; - transition: opacity 1s; -} - -.country { - background-color: #fff; - box-shadow: 0 2rem 5rem 1rem rgba(0, 0, 0, 0.1); - font-size: 1.8rem; - width: 30rem; - border-radius: 0.7rem; - margin: 0 3rem; - /* overflow: hidden; */ -} - -.neighbour::before { - content: 'Neighbour country'; - width: 100%; - position: absolute; - top: -4rem; - - text-align: center; - font-size: 1.8rem; - font-weight: 600; - text-transform: uppercase; - color: #888; -} - -.neighbour { - transform: scale(0.8) translateY(1rem); - margin-left: 0; -} - -.country__img { - width: 30rem; - height: 17rem; - object-fit: cover; - background-color: #eee; - border-top-left-radius: 0.7rem; - border-top-right-radius: 0.7rem; -} - -.country__data { - padding: 2.5rem 3.75rem 3rem 3.75rem; -} - -.country__name { - font-size: 2.7rem; - margin-bottom: 0.7rem; -} - -.country__region { - font-size: 1.4rem; - margin-bottom: 2.5rem; - text-transform: uppercase; - color: #888; -} - -.country__row:not(:last-child) { - margin-bottom: 1rem; -} - -.country__row span { - display: inline-block; - margin-right: 2rem; - font-size: 2.4rem; -} - -.btn-country { - border: none; - font-size: 2rem; - padding: 2rem 5rem; - border-radius: 0.7rem; - color: white; - background-color: orangered; - cursor: pointer; -} - -.images { - display: flex; -} - -.images img { - display: block; - width: 80rem; - margin: 4rem; -} - -.images img.parallel { - width: 40rem; - margin: 2rem; - border: 3rem solid white; - box-shadow: 0 2rem 5rem 1rem rgba(0, 0, 0, 0.1); -} diff --git a/17-Modern-JS-Modules-Tooling/final/.prettierrc b/17-Modern-JS-Modules-Tooling/final/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/17-Modern-JS-Modules-Tooling/final/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/17-Modern-JS-Modules-Tooling/final/clean.js b/17-Modern-JS-Modules-Tooling/final/clean.js deleted file mode 100644 index dd60395373..0000000000 --- a/17-Modern-JS-Modules-Tooling/final/clean.js +++ /dev/null @@ -1,86 +0,0 @@ -'use strict'; - -const budget = Object.freeze([ - { value: 250, description: 'Sold old TV 📺', user: 'jonas' }, - { value: -45, description: 'Groceries 🥑', user: 'jonas' }, - { value: 3500, description: 'Monthly salary 👩‍💻', user: 'jonas' }, - { value: 300, description: 'Freelancing 👩‍💻', user: 'jonas' }, - { value: -1100, description: 'New iPhone 📱', user: 'jonas' }, - { value: -20, description: 'Candy 🍭', user: 'matilda' }, - { value: -125, description: 'Toys 🚂', user: 'matilda' }, - { value: -1800, description: 'New Laptop 💻', user: 'jonas' }, -]); - -const spendingLimits = Object.freeze({ - jonas: 1500, - matilda: 100, -}); -// spendingLimits.jay = 200; - -// const limit = spendingLimits[user] ? spendingLimits[user] : 0; -const getLimit = (limits, user) => limits?.[user] ?? 0; - -// Pure function :D -const addExpense = function ( - state, - limits, - value, - description, - user = 'jonas' -) { - const cleanUser = user.toLowerCase(); - - return value <= getLimit(limits, cleanUser) - ? [...state, { value: -value, description, user: cleanUser }] - : state; -}; - -const newBudget1 = addExpense(budget, spendingLimits, 10, 'Pizza 🍕'); -const newBudget2 = addExpense( - newBudget1, - spendingLimits, - 100, - 'Going to movies 🍿', - 'Matilda' -); -const newBudget3 = addExpense(newBudget2, spendingLimits, 200, 'Stuff', 'Jay'); - -// const checkExpenses2 = function (state, limits) { -// return state.map(entry => { -// return entry.value < -getLimit(limits, entry.user) -// ? { ...entry, flag: 'limit' } -// : entry; -// }); -// // for (const entry of newBudget3) -// // if (entry.value < -getLimit(limits, entry.user)) entry.flag = 'limit'; -// }; - -const checkExpenses = (state, limits) => - state.map(entry => - entry.value < -getLimit(limits, entry.user) - ? { ...entry, flag: 'limit' } - : entry - ); - -const finalBudget = checkExpenses(newBudget3, spendingLimits); -console.log(finalBudget); - -// Impure -const logBigExpenses = function (state, bigLimit) { - const bigExpenses = state - .filter(entry => entry.value <= -bigLimit) - .map(entry => entry.description.slice(-2)) - .join(' / '); - // .reduce((str, cur) => `${str} / ${cur.description.slice(-2)}`, ''); - - console.log(bigExpenses); - - // let output = ''; - // for (const entry of budget) - // output += - // entry.value <= -bigLimit ? `${entry.description.slice(-2)} / ` : ''; - // output = output.slice(0, -2); // Remove last '/ ' - // console.log(output); -}; - -logBigExpenses(finalBudget, 500); diff --git a/17-Modern-JS-Modules-Tooling/final/dist/index.html b/17-Modern-JS-Modules-Tooling/final/dist/index.html deleted file mode 100644 index a58cbb6307..0000000000 --- a/17-Modern-JS-Modules-Tooling/final/dist/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - Modern JavaScript Development: Modules and Tooling - - - -

    Modern JavaScript Development: Modules and Tooling

    - - diff --git a/17-Modern-JS-Modules-Tooling/final/dist/index.js b/17-Modern-JS-Modules-Tooling/final/dist/index.js deleted file mode 100644 index bb62101ac5..0000000000 --- a/17-Modern-JS-Modules-Tooling/final/dist/index.js +++ /dev/null @@ -1,392 +0,0 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles -parcelRequire = (function (modules, cache, entry, globalName) { - // Save the require from previous bundle to this closure if any - var previousRequire = typeof parcelRequire === 'function' && parcelRequire; - var nodeRequire = typeof require === 'function' && require; - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error('Cannot find module \'' + name + '\''); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = cache[name] = new newRequire.Module(name); - - modules[name][0].call(module.exports, localRequire, module, module.exports, this); - } - - return cache[name].exports; - - function localRequire(x){ - return newRequire(localRequire.resolve(x)); - } - - function resolve(x){ - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function (id, exports) { - modules[id] = [function (require, module) { - module.exports = exports; - }, {}]; - }; - - var error; - for (var i = 0; i < entry.length; i++) { - try { - newRequire(entry[i]); - } catch (e) { - // Save first error but execute all entries - if (!error) { - error = e; - } - } - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === "object" && typeof module !== "undefined") { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === "function" && define.amd) { - define(function () { - return mainExports; - }); - - // - - Modern JavaScript Development: Modules and Tooling - - - -

    Modern JavaScript Development: Modules and Tooling

    - - diff --git a/17-Modern-JS-Modules-Tooling/final/package-lock.json b/17-Modern-JS-Modules-Tooling/final/package-lock.json deleted file mode 100644 index 51a11382aa..0000000000 --- a/17-Modern-JS-Modules-Tooling/final/package-lock.json +++ /dev/null @@ -1,6831 +0,0 @@ -{ - "name": "17-modern-js-modules-tooling", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/compat-data": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", - "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } - }, - "@babel/core": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.4.tgz", - "integrity": "sha512-5deljj5HlqRXN+5oJTY7Zs37iH3z3b++KjiKtIsJy1NrjOOVSEaJHEetLBhyu0aQOSNNZ/0IuEAan9GzRuDXHg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.4", - "@babel/helper-module-transforms": "^7.11.0", - "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.11.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.11.0", - "@babel/types": "^7.11.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.4.tgz", - "integrity": "sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", - "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-react-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", - "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-react-jsx-experimental": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.5.tgz", - "integrity": "sha512-Buewnx6M4ttG+NLkKyt7baQn7ScC/Td+e99G914fRU8fGIUivDDgVIQeDHFa5e4CRSJQt58WpNHhsAZgtzVhsg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@babel/types": "^7.10.5" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", - "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.10.4", - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", - "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.10.5", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", - "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-regex": "^7.10.4", - "regexpu-core": "^4.7.0" - } - }, - "@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", - "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", - "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0" - } - }, - "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-module-transforms": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", - "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/template": "^7.10.4", - "@babel/types": "^7.11.0", - "lodash": "^4.17.19" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", - "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", - "dev": true - }, - "@babel/helper-regex": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", - "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", - "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-replace-supers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", - "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-simple-access": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", - "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", - "dev": true, - "requires": { - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", - "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", - "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helpers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", - "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", - "dev": true, - "requires": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.4.tgz", - "integrity": "sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA==", - "dev": true - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", - "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", - "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", - "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", - "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", - "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", - "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", - "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", - "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", - "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.4" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", - "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", - "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", - "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", - "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", - "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-flow": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz", - "integrity": "sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", - "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", - "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", - "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", - "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", - "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", - "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", - "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", - "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", - "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", - "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", - "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", - "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz", - "integrity": "sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-flow": "^7.10.4" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", - "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", - "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", - "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", - "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", - "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", - "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", - "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", - "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", - "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", - "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", - "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", - "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", - "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz", - "integrity": "sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A==", - "dev": true, - "requires": { - "@babel/helper-builder-react-jsx": "^7.10.4", - "@babel/helper-builder-react-jsx-experimental": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", - "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", - "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", - "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", - "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", - "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-regex": "^7.10.4" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", - "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", - "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", - "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", - "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/preset-env": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.0.tgz", - "integrity": "sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.11.0", - "@babel/helper-compilation-targets": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-proposal-async-generator-functions": "^7.10.4", - "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-proposal-dynamic-import": "^7.10.4", - "@babel/plugin-proposal-export-namespace-from": "^7.10.4", - "@babel/plugin-proposal-json-strings": "^7.10.4", - "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", - "@babel/plugin-proposal-numeric-separator": "^7.10.4", - "@babel/plugin-proposal-object-rest-spread": "^7.11.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.11.0", - "@babel/plugin-proposal-private-methods": "^7.10.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.4", - "@babel/plugin-transform-arrow-functions": "^7.10.4", - "@babel/plugin-transform-async-to-generator": "^7.10.4", - "@babel/plugin-transform-block-scoped-functions": "^7.10.4", - "@babel/plugin-transform-block-scoping": "^7.10.4", - "@babel/plugin-transform-classes": "^7.10.4", - "@babel/plugin-transform-computed-properties": "^7.10.4", - "@babel/plugin-transform-destructuring": "^7.10.4", - "@babel/plugin-transform-dotall-regex": "^7.10.4", - "@babel/plugin-transform-duplicate-keys": "^7.10.4", - "@babel/plugin-transform-exponentiation-operator": "^7.10.4", - "@babel/plugin-transform-for-of": "^7.10.4", - "@babel/plugin-transform-function-name": "^7.10.4", - "@babel/plugin-transform-literals": "^7.10.4", - "@babel/plugin-transform-member-expression-literals": "^7.10.4", - "@babel/plugin-transform-modules-amd": "^7.10.4", - "@babel/plugin-transform-modules-commonjs": "^7.10.4", - "@babel/plugin-transform-modules-systemjs": "^7.10.4", - "@babel/plugin-transform-modules-umd": "^7.10.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", - "@babel/plugin-transform-new-target": "^7.10.4", - "@babel/plugin-transform-object-super": "^7.10.4", - "@babel/plugin-transform-parameters": "^7.10.4", - "@babel/plugin-transform-property-literals": "^7.10.4", - "@babel/plugin-transform-regenerator": "^7.10.4", - "@babel/plugin-transform-reserved-words": "^7.10.4", - "@babel/plugin-transform-shorthand-properties": "^7.10.4", - "@babel/plugin-transform-spread": "^7.11.0", - "@babel/plugin-transform-sticky-regex": "^7.10.4", - "@babel/plugin-transform-template-literals": "^7.10.4", - "@babel/plugin-transform-typeof-symbol": "^7.10.4", - "@babel/plugin-transform-unicode-escapes": "^7.10.4", - "@babel/plugin-transform-unicode-regex": "^7.10.4", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.11.0", - "browserslist": "^4.12.0", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - } - }, - "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", - "dev": true - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "@parcel/fs": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", - "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", - "dev": true, - "requires": { - "@parcel/utils": "^1.11.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.2" - } - }, - "@parcel/logger": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz", - "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==", - "dev": true, - "requires": { - "@parcel/workers": "^1.11.0", - "chalk": "^2.1.0", - "grapheme-breaker": "^0.3.2", - "ora": "^2.1.0", - "strip-ansi": "^4.0.0" - } - }, - "@parcel/utils": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", - "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==", - "dev": true - }, - "@parcel/watcher": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz", - "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==", - "dev": true, - "requires": { - "@parcel/utils": "^1.11.0", - "chokidar": "^2.1.5" - } - }, - "@parcel/workers": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", - "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", - "dev": true, - "requires": { - "@parcel/utils": "^1.11.0", - "physical-cpu-count": "^2.0.0" - } - }, - "@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", - "dev": true - }, - "abab": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.4.tgz", - "integrity": "sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ==", - "dev": true - }, - "acorn": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", - "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", - "dev": true - }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "dev": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", - "dev": true - }, - "ajv": { - "version": "6.12.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", - "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "ansi-to-html": { - "version": "0.6.14", - "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz", - "integrity": "sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==", - "dev": true, - "requires": { - "entities": "^1.1.2" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", - "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", - "dev": true - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", - "dev": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - } - } - }, - "babylon-walk": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", - "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", - "dev": true, - "requires": { - "babel-runtime": "^6.11.6", - "babel-types": "^6.15.0", - "lodash.clone": "^4.5.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", - "dev": true - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brfs": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", - "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", - "dev": true, - "requires": { - "quote-stream": "^1.0.1", - "resolve": "^1.1.5", - "static-module": "^2.2.0", - "through2": "^2.0.0" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - }, - "dependencies": { - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - } - } - }, - "browserslist": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.0.tgz", - "integrity": "sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001111", - "electron-to-chromium": "^1.3.523", - "escalade": "^3.0.2", - "node-releases": "^1.1.60" - } - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001118", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001118.tgz", - "integrity": "sha512-RNKPLojZo74a0cP7jFMidQI7nvLER40HgNfgKQEJ2PFm225L0ectUungNQoK3Xk3StQcFbpBPNEvoWD59436Hg==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", - "dev": true - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", - "dev": true, - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" - }, - "core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", - "dev": true, - "requires": { - "browserslist": "^4.8.5", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-modules-loader-core": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", - "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", - "dev": true, - "requires": { - "icss-replace-symbols": "1.1.0", - "postcss": "6.0.1", - "postcss-modules-extract-imports": "1.1.0", - "postcss-modules-local-by-default": "1.2.0", - "postcss-modules-scope": "1.1.0", - "postcss-modules-values": "1.3.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", - "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "css-selector-tokenizer": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", - "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" - } - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", - "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true - }, - "csso": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", - "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", - "dev": true, - "requires": { - "css-tree": "1.0.0-alpha.39" - }, - "dependencies": { - "css-tree": { - "version": "1.0.0-alpha.39", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", - "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", - "dev": true, - "requires": { - "mdn-data": "2.0.6", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", - "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", - "dev": true - } - } - }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "deasync": { - "version": "0.1.20", - "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.20.tgz", - "integrity": "sha512-E1GI7jMI57hL30OX6Ht/hfQU8DO4AuB9m72WFm4c38GNbUD4Q03//XZaOIHZiY+H1xUaomcot5yk2q/qIZQkGQ==", - "dev": true, - "requires": { - "bindings": "^1.5.0", - "node-addon-api": "^1.7.1" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - }, - "dependencies": { - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - } - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", - "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", - "dev": true - }, - "entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", - "dev": true - } - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", - "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", - "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.551", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.551.tgz", - "integrity": "sha512-11qcm2xvf2kqeFO5EIejaBx5cKXsW1quAyv3VctCMYwofnyVZLs97y6LCekss3/ghQpr7PYkSO3uId5FmxZsdw==", - "dev": true - }, - "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "envinfo": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", - "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", - "dev": true - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", - "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", - "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", - "dev": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "falafel": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", - "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "foreach": "^2.0.5", - "isarray": "^2.0.1", - "object-keys": "^1.0.6" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", - "dev": true - }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "grapheme-breaker": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", - "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", - "dev": true, - "requires": { - "brfs": "^1.2.0", - "unicode-trie": "^0.3.1" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "html-tags": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", - "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=", - "dev": true - }, - "htmlnano": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.6.tgz", - "integrity": "sha512-HUY/99maFsWX2LRoGJpZ/8QRLCkyY0UU1El3wgLLFAHQlD3mCxCJJNcWJk5SBqaU49MLhIWVDW6cGBeuemvaPQ==", - "dev": true, - "requires": { - "cssnano": "^4.1.10", - "normalize-html-whitespace": "^1.0.0", - "posthtml": "^0.13.1", - "posthtml-render": "^1.2.2", - "purgecss": "^2.3.0", - "svgo": "^1.3.2", - "terser": "^4.8.0", - "uncss": "^0.17.3" - }, - "dependencies": { - "posthtml": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.13.3.tgz", - "integrity": "sha512-5NL2bBc4ihAyoYnY0EAQrFQbJNE1UdvgC1wjYts0hph7jYeU2fa5ki3/9U45ce9V6M1vLMEgUX2NXe/bYL+bCQ==", - "dev": true, - "requires": { - "posthtml-parser": "^0.5.0", - "posthtml-render": "^1.2.3" - } - }, - "posthtml-parser": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.5.0.tgz", - "integrity": "sha512-BsZFAqOeX9lkJJPKG2JmGgtm6t++WibU7FeS40FNNGZ1KS2szRSRQ8Wr2JLvikDgAecrQ/9V4sjugTAin2+KVw==", - "dev": true, - "requires": { - "htmlparser2": "^3.9.2" - } - }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } - } - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", - "dev": true - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-html": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", - "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=", - "dev": true, - "requires": { - "html-tags": "^1.0.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "dependencies": { - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - } - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsdom": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", - "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "leaflet": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.6.0.tgz", - "integrity": "sha512-CPkhyqWUKZKFJ6K8umN5/D2wrJ2+/8UIpXppY7QDnUZW5bZL5+SEI2J7GBpwh4LIupOKqbNSQXgqmrEJopHVNQ==" - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "lodash-es": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", - "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" - }, - "lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "magic-string": { - "version": "0.22.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", - "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", - "dev": true, - "requires": { - "vlq": "^0.2.2" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "merge-source-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", - "dev": true, - "requires": { - "source-map": "^0.5.6" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", - "dev": true - }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "dev": true, - "requires": { - "mime-db": "1.44.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node-addon-api": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", - "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", - "dev": true - }, - "node-forge": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", - "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", - "dev": true - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "node-releases": { - "version": "1.1.60", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", - "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==", - "dev": true - }, - "normalize-html-whitespace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz", - "integrity": "sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", - "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "ora": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", - "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", - "dev": true, - "requires": { - "chalk": "^2.3.1", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.1.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^4.0.0", - "wcwidth": "^1.0.1" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - }, - "parcel": { - "version": "1.12.4", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-1.12.4.tgz", - "integrity": "sha512-qfc74e2/R4pCoU6L/ZZnK9k3iDS6ir4uHea0e9th9w52eehcAGf2ido/iABq9PBXdsIOe4NSY3oUm7Khe7+S3w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.4.4", - "@babel/generator": "^7.4.4", - "@babel/parser": "^7.4.4", - "@babel/plugin-transform-flow-strip-types": "^7.4.4", - "@babel/plugin-transform-modules-commonjs": "^7.4.4", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/preset-env": "^7.4.4", - "@babel/runtime": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4", - "@iarna/toml": "^2.2.0", - "@parcel/fs": "^1.11.0", - "@parcel/logger": "^1.11.1", - "@parcel/utils": "^1.11.0", - "@parcel/watcher": "^1.12.1", - "@parcel/workers": "^1.11.0", - "ansi-to-html": "^0.6.4", - "babylon-walk": "^1.0.2", - "browserslist": "^4.1.0", - "chalk": "^2.1.0", - "clone": "^2.1.1", - "command-exists": "^1.2.6", - "commander": "^2.11.0", - "core-js": "^2.6.5", - "cross-spawn": "^6.0.4", - "css-modules-loader-core": "^1.1.0", - "cssnano": "^4.0.0", - "deasync": "^0.1.14", - "dotenv": "^5.0.0", - "dotenv-expand": "^5.1.0", - "envinfo": "^7.3.1", - "fast-glob": "^2.2.2", - "filesize": "^3.6.0", - "get-port": "^3.2.0", - "htmlnano": "^0.2.2", - "is-glob": "^4.0.0", - "is-url": "^1.2.2", - "js-yaml": "^3.10.0", - "json5": "^1.0.1", - "micromatch": "^3.0.4", - "mkdirp": "^0.5.1", - "node-forge": "^0.7.1", - "node-libs-browser": "^2.0.0", - "opn": "^5.1.0", - "postcss": "^7.0.11", - "postcss-value-parser": "^3.3.1", - "posthtml": "^0.11.2", - "posthtml-parser": "^0.4.0", - "posthtml-render": "^1.1.3", - "resolve": "^1.4.0", - "semver": "^5.4.1", - "serialize-to-js": "^3.0.0", - "serve-static": "^1.12.4", - "source-map": "0.6.1", - "terser": "^3.7.3", - "v8-compile-cache": "^2.0.0", - "ws": "^5.1.1" - }, - "dependencies": { - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", - "dev": true - } - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "physical-cpu-count": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", - "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", - "dev": true - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "7.0.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", - "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-calc": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.3.tgz", - "integrity": "sha512-IB/EAEmZhIMEIhG7Ov4x+l47UaXOS1n2f4FBUk/aKllQhtSCxWhTzn0nJgkqN7fo/jcWySvWTSB6Syk9L+31bA==", - "dev": true, - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - }, - "dependencies": { - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true - } - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", - "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", - "dev": true, - "requires": { - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", - "dev": true, - "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", - "dev": true, - "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "posthtml": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz", - "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==", - "dev": true, - "requires": { - "posthtml-parser": "^0.4.1", - "posthtml-render": "^1.1.5" - } - }, - "posthtml-parser": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", - "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", - "dev": true, - "requires": { - "htmlparser2": "^3.9.2" - } - }, - "posthtml-render": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.3.tgz", - "integrity": "sha512-rGGayND//VwTlsYKNqdILsA7U/XP0WJa6SMcdAEoqc2WRM5QExplGg/h9qbTuHz7mc2PvaXU+6iNxItvr5aHMg==", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "purgecss": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", - "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", - "dev": true, - "requires": { - "commander": "^5.0.0", - "glob": "^7.0.0", - "postcss": "7.0.32", - "postcss-selector-parser": "^6.0.2" - }, - "dependencies": { - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true - } - } - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "quote-stream": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", - "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", - "dev": true, - "requires": { - "buffer-equal": "0.0.1", - "minimist": "^1.1.3", - "through2": "^2.0.0" - } - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "regenerate": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", - "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - } - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "dev": true, - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "dev": true, - "requires": { - "xmlchars": "^2.1.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "serialize-to-js": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", - "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==", - "dev": true - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-copy": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", - "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "static-eval": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", - "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", - "dev": true, - "requires": { - "escodegen": "^1.11.1" - }, - "dependencies": { - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - } - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "static-module": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", - "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", - "dev": true, - "requires": { - "concat-stream": "~1.6.0", - "convert-source-map": "^1.5.1", - "duplexer2": "~0.1.4", - "escodegen": "~1.9.0", - "falafel": "^2.1.0", - "has": "^1.0.1", - "magic-string": "^0.22.4", - "merge-source-map": "1.0.4", - "object-inspect": "~1.4.0", - "quote-stream": "~1.0.2", - "readable-stream": "~2.3.3", - "shallow-copy": "~0.0.1", - "static-eval": "^2.0.0", - "through2": "~2.0.3" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "terser": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", - "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", - "dev": true, - "requires": { - "commander": "^2.19.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.10" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "tiny-inflate": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", - "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", - "dev": true - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "uncss": { - "version": "0.17.3", - "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz", - "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "glob": "^7.1.4", - "is-absolute-url": "^3.0.1", - "is-html": "^1.1.0", - "jsdom": "^14.1.0", - "lodash": "^4.17.15", - "postcss": "^7.0.17", - "postcss-selector-parser": "6.0.2", - "request": "^2.88.0" - }, - "dependencies": { - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - } - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true - }, - "unicode-trie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", - "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", - "dev": true, - "requires": { - "pako": "^0.2.5", - "tiny-inflate": "^1.0.0" - } - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", - "dev": true - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", - "dev": true - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "dev": true, - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - } - } -} diff --git a/17-Modern-JS-Modules-Tooling/final/package.json b/17-Modern-JS-Modules-Tooling/final/package.json deleted file mode 100644 index dc3f5b51da..0000000000 --- a/17-Modern-JS-Modules-Tooling/final/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "17-modern-js-modules-tooling", - "version": "1.0.0", - "description": "", - "main": "script.js", - "scripts": { - "start": "parcel index.html", - "build": "parcel build index.html" - }, - "author": "Jonas", - "license": "ISC", - "dependencies": { - "core-js": "^3.6.5", - "leaflet": "^1.6.0", - "lodash-es": "^4.17.15", - "regenerator-runtime": "^0.13.7" - }, - "devDependencies": { - "parcel": "^1.12.4" - } -} diff --git a/17-Modern-JS-Modules-Tooling/final/script.js b/17-Modern-JS-Modules-Tooling/final/script.js deleted file mode 100644 index 19bac447ee..0000000000 --- a/17-Modern-JS-Modules-Tooling/final/script.js +++ /dev/null @@ -1,145 +0,0 @@ -/////////////////////////////////////// -// Exporting and Importing in ES6 Modules - -// Importing module -// import { addToCart, totalPrice as price, tq } from './shoppingCart.js'; -// addToCart('bread', 5); -// console.log(price, tq); - -console.log('Importing module'); -// console.log(shippingCost); - -// import * as ShoppingCart from './shoppingCart.js'; -// ShoppingCart.addToCart('bread', 5); -// console.log(ShoppingCart.totalPrice); - -// import add, { addToCart, totalPrice as price, tq } from './shoppingCart.js'; -// console.log(price); - -import add, { cart } from './shoppingCart.js'; -add('pizza', 2); -add('bread', 5); -add('apples', 4); - -console.log(cart); -/* - - -/////////////////////////////////////// -// Top-Level Await (ES2022) - -// console.log('Start fetching'); -// const res = await fetch('http://github.com/service/https://jsonplaceholder.typicode.com/posts'); -// const data = await res.json(); -// console.log(data); -// console.log('Something'); - -const getLastPost = async function () { - const res = await fetch('http://github.com/service/https://jsonplaceholder.typicode.com/posts'); - const data = await res.json(); - - return { title: data.at(-1).title, text: data.at(-1).body }; -}; - -const lastPost = getLastPost(); -console.log(lastPost); - -// Not very clean -// lastPost.then(last => console.log(last)); - -const lastPost2 = await getLastPost(); -console.log(lastPost2); - - -/////////////////////////////////////// -// The Module Pattern - -const ShoppingCart2 = (function () { - const cart = []; - const shippingCost = 10; - const totalPrice = 237; - const totalQuantity = 23; - - const addToCart = function (product, quantity) { - cart.push({ product, quantity }); - console.log( - `${quantity} ${product} added to cart (sipping cost is ${shippingCost})` - ); - }; - - const orderStock = function (product, quantity) { - console.log(`${quantity} ${product} ordered from supplier`); - }; - - return { - addToCart, - cart, - totalPrice, - totalQuantity, - }; -})(); - -ShoppingCart2.addToCart('apple', 4); -ShoppingCart2.addToCart('pizza', 2); -console.log(ShoppingCart2); -console.log(ShoppingCart2.shippingCost); - - -/////////////////////////////////////// -// CommonJS Modules -// Export -export.addTocart = function (product, quantity) { - cart.push({ product, quantity }); - console.log( - `${quantity} ${product} added to cart (sipping cost is ${shippingCost})` - ); -}; - -// Import -const { addTocart } = require('./shoppingCart.js'); -*/ - -/////////////////////////////////////// -// Introduction to NPM -// import cloneDeep from './node_modules/lodash-es/cloneDeep.js'; -import cloneDeep from 'lodash-es'; - -const state = { - cart: [ - { product: 'bread', quantity: 5 }, - { product: 'pizza', quantity: 5 }, - ], - user: { loggedIn: true }, -}; -const stateClone = Object.assign({}, state); -const stateDeepClone = cloneDeep(state); - -state.user.loggedIn = false; -console.log(stateClone); - -console.log(stateDeepClone); - -if (module.hot) { - module.hot.accept(); -} - -class Person { - #greeting = 'Hey'; - constructor(name) { - this.name = name; - console.log(`${this.#greeting}, ${this.name}`); - } -} -const jonas = new Person('Jonas'); - -console.log('Jonas' ?? null); - -console.log(cart.find(el => el.quantity >= 2)); -Promise.resolve('TEST').then(x => console.log(x)); - -import 'core-js/stable'; -// import 'core-js/stable/array/find'; -// import 'core-js/stable/promise'; - -// Polifilling async functions -import 'regenerator-runtime/runtime'; diff --git a/17-Modern-JS-Modules-Tooling/final/shoppingCart.js b/17-Modern-JS-Modules-Tooling/final/shoppingCart.js deleted file mode 100644 index ac2358f978..0000000000 --- a/17-Modern-JS-Modules-Tooling/final/shoppingCart.js +++ /dev/null @@ -1,25 +0,0 @@ -// Exporting module -console.log('Exporting module'); - -// Blocking code -// console.log('Start fetching users'); -// await fetch('http://github.com/service/https://jsonplaceholder.typicode.com/users'); -// console.log('Finish fetching users'); - -const shippingCost = 10; -export const cart = []; - -export const addToCart = function (product, quantity) { - cart.push({ product, quantity }); - console.log(`${quantity} ${product} added to cart`); -}; - -const totalPrice = 237; -const totalQuantity = 23; - -export { totalPrice, totalQuantity as tq }; - -export default function (product, quantity) { - cart.push({ product, quantity }); - console.log(`${quantity} ${product} added to cart`); -} diff --git a/17-Modern-JS-Modules-Tooling/starter/.prettierrc b/17-Modern-JS-Modules-Tooling/starter/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/17-Modern-JS-Modules-Tooling/starter/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/17-Modern-JS-Modules-Tooling/starter/clean.js b/17-Modern-JS-Modules-Tooling/starter/clean.js deleted file mode 100644 index 2cdba90c3b..0000000000 --- a/17-Modern-JS-Modules-Tooling/starter/clean.js +++ /dev/null @@ -1,64 +0,0 @@ -var budget = [ - { value: 250, description: 'Sold old TV 📺', user: 'jonas' }, - { value: -45, description: 'Groceries 🥑', user: 'jonas' }, - { value: 3500, description: 'Monthly salary 👩‍💻', user: 'jonas' }, - { value: 300, description: 'Freelancing 👩‍💻', user: 'jonas' }, - { value: -1100, description: 'New iPhone 📱', user: 'jonas' }, - { value: -20, description: 'Candy 🍭', user: 'matilda' }, - { value: -125, description: 'Toys 🚂', user: 'matilda' }, - { value: -1800, description: 'New Laptop 💻', user: 'jonas' }, -]; - -var limits = { - jonas: 1500, - matilda: 100, -}; - -var add = function (value, description, user) { - if (!user) user = 'jonas'; - user = user.toLowerCase(); - - var lim; - if (limits[user]) { - lim = limits[user]; - } else { - lim = 0; - } - - if (value <= lim) { - budget.push({ value: -value, description: description, user: user }); - } -}; -add(10, 'Pizza 🍕'); -add(100, 'Going to movies 🍿', 'Matilda'); -add(200, 'Stuff', 'Jay'); -console.log(budget); - -var check = function () { - for (var el of budget) { - var lim; - if (limits[el.user]) { - lim = limits[el.user]; - } else { - lim = 0; - } - - if (el.value < -lim) { - el.flag = 'limit'; - } - } -}; -check(); - -console.log(budget); - -var bigExpenses = function (limit) { - var output = ''; - for (var el of budget) { - if (el.value <= -limit) { - output += el.description.slice(-2) + ' / '; // Emojis are 2 chars - } - } - output = output.slice(0, -2); // Remove last '/ ' - console.log(output); -}; diff --git a/17-Modern-JS-Modules-Tooling/starter/index.html b/17-Modern-JS-Modules-Tooling/starter/index.html deleted file mode 100644 index d2853cb5ee..0000000000 --- a/17-Modern-JS-Modules-Tooling/starter/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - Modern JavaScript Development: Modules and Tooling - - - -

    Modern JavaScript Development: Modules and Tooling

    - - diff --git a/18-forkify/final/.gitignore b/18-forkify/final/.gitignore deleted file mode 100644 index 51738c4f8d..0000000000 --- a/18-forkify/final/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules -dist -.parcel-cache -.DS_Store diff --git a/18-forkify/final/.prettierrc b/18-forkify/final/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/18-forkify/final/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/18-forkify/final/README.md b/18-forkify/final/README.md deleted file mode 100644 index eca172f89f..0000000000 --- a/18-forkify/final/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# forkify Project - -Recipe application with custom recipe uploads. diff --git a/18-forkify/final/index.html b/18-forkify/final/index.html deleted file mode 100644 index 184f85ad1d..0000000000 --- a/18-forkify/final/index.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - - - - - - - - forkify // Search over 1,000,000 recipes - - - -
    -
    - - - - -
    - -
    -
      - -
    - - - - -
    - -
    -
    -
    - - - -
    -

    Start by searching for a recipe or an ingredient. Have fun!

    -
    - - - - - - -
    -
    - - - - - diff --git a/18-forkify/final/package-lock.json b/18-forkify/final/package-lock.json deleted file mode 100644 index a0594f2062..0000000000 --- a/18-forkify/final/package-lock.json +++ /dev/null @@ -1,8639 +0,0 @@ -{ - "name": "forkify", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/compat-data": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", - "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } - }, - "@babel/core": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.5.tgz", - "integrity": "sha512-fsEANVOcZHzrsV6dMVWqpSeXClq3lNbYrfFGme6DE25FQWe7pyeYpXyx9guqUnpy466JLzZ8z4uwSr2iv60V5Q==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.5", - "@babel/helper-module-transforms": "^7.11.0", - "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.11.5", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.11.5", - "@babel/types": "^7.11.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.6.1" - }, - "dependencies": { - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } - } - }, - "@babel/generator": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.5.tgz", - "integrity": "sha512-9UqHWJ4IwRTy4l0o8gq2ef8ws8UPzvtMkVKjTLAiRmza9p9V6Z+OfuNd9fB1j5Q67F+dVJtPC2sZXI8NM9br4g==", - "dev": true, - "requires": { - "@babel/types": "^7.11.5", - "jsesc": "^2.5.1", - "source-map": "^0.6.1" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", - "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-react-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", - "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-react-jsx-experimental": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.11.5.tgz", - "integrity": "sha512-Vc4aPJnRZKWfzeCBsqTBnzulVNjABVdahSPhtdMD3Vs80ykx4a87jTHtF/VR+alSrDmNvat7l13yrRHauGcHVw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@babel/types": "^7.11.5" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", - "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.10.4", - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", - "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.10.5", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", - "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-regex": "^7.10.4", - "regexpu-core": "^4.7.0" - } - }, - "@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", - "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", - "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0" - } - }, - "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-module-transforms": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", - "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/template": "^7.10.4", - "@babel/types": "^7.11.0", - "lodash": "^4.17.19" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", - "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", - "dev": true - }, - "@babel/helper-regex": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", - "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", - "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-replace-supers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", - "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-simple-access": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", - "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", - "dev": true, - "requires": { - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", - "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", - "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helpers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", - "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", - "dev": true, - "requires": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", - "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", - "dev": true - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", - "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", - "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", - "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", - "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", - "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", - "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", - "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", - "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", - "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.4" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", - "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", - "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", - "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", - "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", - "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-flow": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz", - "integrity": "sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", - "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", - "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz", - "integrity": "sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", - "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", - "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", - "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", - "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", - "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", - "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", - "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", - "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", - "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", - "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz", - "integrity": "sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-flow": "^7.10.4" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", - "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", - "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", - "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", - "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", - "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", - "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", - "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", - "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", - "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", - "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", - "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", - "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", - "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-react-display-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz", - "integrity": "sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz", - "integrity": "sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A==", - "dev": true, - "requires": { - "@babel/helper-builder-react-jsx": "^7.10.4", - "@babel/helper-builder-react-jsx-experimental": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" - } - }, - "@babel/plugin-transform-react-jsx-development": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.11.5.tgz", - "integrity": "sha512-cImAmIlKJ84sDmpQzm4/0q/2xrXlDezQoixy3qoz1NJeZL/8PRon6xZtluvr4H4FzwlDGI5tCcFupMnXGtr+qw==", - "dev": true, - "requires": { - "@babel/helper-builder-react-jsx-experimental": "^7.11.5", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" - } - }, - "@babel/plugin-transform-react-jsx-self": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz", - "integrity": "sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" - } - }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.5.tgz", - "integrity": "sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" - } - }, - "@babel/plugin-transform-react-pure-annotations": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz", - "integrity": "sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", - "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", - "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", - "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", - "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", - "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-regex": "^7.10.4" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", - "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", - "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-typescript": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz", - "integrity": "sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-typescript": "^7.10.4" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", - "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", - "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/preset-env": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.5.tgz", - "integrity": "sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.11.0", - "@babel/helper-compilation-targets": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-proposal-async-generator-functions": "^7.10.4", - "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-proposal-dynamic-import": "^7.10.4", - "@babel/plugin-proposal-export-namespace-from": "^7.10.4", - "@babel/plugin-proposal-json-strings": "^7.10.4", - "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", - "@babel/plugin-proposal-numeric-separator": "^7.10.4", - "@babel/plugin-proposal-object-rest-spread": "^7.11.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.11.0", - "@babel/plugin-proposal-private-methods": "^7.10.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.4", - "@babel/plugin-transform-arrow-functions": "^7.10.4", - "@babel/plugin-transform-async-to-generator": "^7.10.4", - "@babel/plugin-transform-block-scoped-functions": "^7.10.4", - "@babel/plugin-transform-block-scoping": "^7.10.4", - "@babel/plugin-transform-classes": "^7.10.4", - "@babel/plugin-transform-computed-properties": "^7.10.4", - "@babel/plugin-transform-destructuring": "^7.10.4", - "@babel/plugin-transform-dotall-regex": "^7.10.4", - "@babel/plugin-transform-duplicate-keys": "^7.10.4", - "@babel/plugin-transform-exponentiation-operator": "^7.10.4", - "@babel/plugin-transform-for-of": "^7.10.4", - "@babel/plugin-transform-function-name": "^7.10.4", - "@babel/plugin-transform-literals": "^7.10.4", - "@babel/plugin-transform-member-expression-literals": "^7.10.4", - "@babel/plugin-transform-modules-amd": "^7.10.4", - "@babel/plugin-transform-modules-commonjs": "^7.10.4", - "@babel/plugin-transform-modules-systemjs": "^7.10.4", - "@babel/plugin-transform-modules-umd": "^7.10.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", - "@babel/plugin-transform-new-target": "^7.10.4", - "@babel/plugin-transform-object-super": "^7.10.4", - "@babel/plugin-transform-parameters": "^7.10.4", - "@babel/plugin-transform-property-literals": "^7.10.4", - "@babel/plugin-transform-regenerator": "^7.10.4", - "@babel/plugin-transform-reserved-words": "^7.10.4", - "@babel/plugin-transform-shorthand-properties": "^7.10.4", - "@babel/plugin-transform-spread": "^7.11.0", - "@babel/plugin-transform-sticky-regex": "^7.10.4", - "@babel/plugin-transform-template-literals": "^7.10.4", - "@babel/plugin-transform-typeof-symbol": "^7.10.4", - "@babel/plugin-transform-unicode-escapes": "^7.10.4", - "@babel/plugin-transform-unicode-regex": "^7.10.4", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.11.5", - "browserslist": "^4.12.0", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/preset-react": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.10.4.tgz", - "integrity": "sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-transform-react-display-name": "^7.10.4", - "@babel/plugin-transform-react-jsx": "^7.10.4", - "@babel/plugin-transform-react-jsx-development": "^7.10.4", - "@babel/plugin-transform-react-jsx-self": "^7.10.4", - "@babel/plugin-transform-react-jsx-source": "^7.10.4", - "@babel/plugin-transform-react-pure-annotations": "^7.10.4" - } - }, - "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/traverse": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", - "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.5", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.5", - "@babel/types": "^7.11.5", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - } - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.3", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.3", - "fastq": "^1.6.0" - } - }, - "@parcel/babel-ast-utils": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/babel-ast-utils/-/babel-ast-utils-2.0.0-beta.1.tgz", - "integrity": "sha512-0Jod0KZ2gCghymjP7ThI/2DfZQt9S2yq1wTvBwyJ46Ij3lIZVmXBVWs4x8O0uvKMUjS5zrnSFgurimFORLmDbQ==", - "dev": true, - "requires": { - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@parcel/source-map": "2.0.0-alpha.4.13", - "@parcel/utils": "2.0.0-beta.1" - } - }, - "@parcel/babel-preset-env": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/babel-preset-env/-/babel-preset-env-2.0.0-beta.1.tgz", - "integrity": "sha512-/TK/xE9Rfy6weu0eWifnGCntCt4i7DoFCKgigdSsHbuRA4w7BfnwS0GIOAQ6gORRXIf4lM8cGsnp5jRP2PhwLw==", - "dev": true, - "requires": { - "@babel/preset-env": "^7.4.0", - "semver": "^5.4.1" - } - }, - "@parcel/babylon-walk": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/babylon-walk/-/babylon-walk-2.0.0-beta.1.tgz", - "integrity": "sha512-FWZErHc2Q62lrWxfMoRl1mej8HCr3tXvzeVgMfv2cbiOjaZIrN+8khD0AcRyesnm5JipgT8KQoJvl8ZdU9DFAw==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0", - "lodash.clone": "^4.5.0" - } - }, - "@parcel/bundler-default": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.0.0-beta.1.tgz", - "integrity": "sha512-ksRBQcZ4OQwZ+pWl28V/G5z6JR/fZUSdXSJwyVJKCUQhKLp0qVZ0emYnZFLg+24ITemRosPH9tNMyQwzNWugsw==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "nullthrows": "^1.1.1" - } - }, - "@parcel/cache": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.0.0-beta.1.tgz", - "integrity": "sha512-o8GMPcrVH31uctXQGGX6O28T7Bm4dqM0DbJRCDtxixGQosKyN9OlAA84390XOti2Fjr1Av/U1ALmbdavQsdcYA==", - "dev": true, - "requires": { - "@parcel/logger": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1" - } - }, - "@parcel/codeframe": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.0.0-beta.1.tgz", - "integrity": "sha512-HyFjYSPysYumT/T3JdZN8y0DXhXLMpmlg94rADR+Wf5Wp1YMTuIHlE1gkfbjIj1m2PxJWe4UMbniGwy3KQh9zQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "emphasize": "^2.1.0", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - } - }, - "@parcel/config-default": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.0.0-beta.1.tgz", - "integrity": "sha512-VEJYkiF+RNaB28OPmk1sCsOapWPisu5MXV+8N7T5ERa7xOOaD2SbD5/JnOjuUGAYKALk8UBsTCG+3ukMQ7Fiuw==", - "dev": true, - "requires": { - "@parcel/bundler-default": "2.0.0-beta.1", - "@parcel/namer-default": "2.0.0-beta.1", - "@parcel/optimizer-cssnano": "2.0.0-beta.1", - "@parcel/optimizer-data-url": "2.0.0-beta.1", - "@parcel/optimizer-htmlnano": "2.0.0-beta.1", - "@parcel/optimizer-terser": "2.0.0-beta.1", - "@parcel/packager-css": "2.0.0-beta.1", - "@parcel/packager-html": "2.0.0-beta.1", - "@parcel/packager-js": "2.0.0-beta.1", - "@parcel/packager-raw": "2.0.0-beta.1", - "@parcel/packager-raw-url": "2.0.0-beta.1", - "@parcel/packager-ts": "2.0.0-beta.1", - "@parcel/reporter-bundle-analyzer": "2.0.0-beta.1", - "@parcel/reporter-bundle-buddy": "2.0.0-beta.1", - "@parcel/reporter-cli": "2.0.0-beta.1", - "@parcel/reporter-dev-server": "2.0.0-beta.1", - "@parcel/resolver-default": "2.0.0-beta.1", - "@parcel/runtime-browser-hmr": "2.0.0-beta.1", - "@parcel/runtime-js": "2.0.0-beta.1", - "@parcel/runtime-react-refresh": "2.0.0-beta.1", - "@parcel/transformer-babel": "2.0.0-beta.1", - "@parcel/transformer-coffeescript": "2.0.0-beta.1", - "@parcel/transformer-css": "2.0.0-beta.1", - "@parcel/transformer-graphql": "2.0.0-beta.1", - "@parcel/transformer-html": "2.0.0-beta.1", - "@parcel/transformer-inline-string": "2.0.0-beta.1", - "@parcel/transformer-js": "2.0.0-beta.1", - "@parcel/transformer-json": "2.0.0-beta.1", - "@parcel/transformer-jsonld": "2.0.0-beta.1", - "@parcel/transformer-less": "2.0.0-beta.1", - "@parcel/transformer-mdx": "2.0.0-beta.1", - "@parcel/transformer-postcss": "2.0.0-beta.1", - "@parcel/transformer-posthtml": "2.0.0-beta.1", - "@parcel/transformer-pug": "2.0.0-beta.1", - "@parcel/transformer-raw": "2.0.0-beta.1", - "@parcel/transformer-react-refresh-babel": "2.0.0-beta.1", - "@parcel/transformer-react-refresh-wrap": "2.0.0-beta.1", - "@parcel/transformer-sass": "2.0.0-beta.1", - "@parcel/transformer-stylus": "2.0.0-beta.1", - "@parcel/transformer-sugarss": "2.0.0-beta.1", - "@parcel/transformer-toml": "2.0.0-beta.1", - "@parcel/transformer-typescript-types": "2.0.0-beta.1", - "@parcel/transformer-yaml": "2.0.0-beta.1" - } - }, - "@parcel/core": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.0.0-beta.1.tgz", - "integrity": "sha512-1KKjhL2H7z8qJNgY2M3CreYqbKopJT6ImlJk54ynIrLuJsnqKuA80FHYBiAtnSZEA65mvAJ3YLReFhg9slzbFw==", - "dev": true, - "requires": { - "@parcel/cache": "2.0.0-beta.1", - "@parcel/diagnostic": "2.0.0-beta.1", - "@parcel/events": "2.0.0-beta.1", - "@parcel/fs": "2.0.0-beta.1", - "@parcel/logger": "2.0.0-beta.1", - "@parcel/package-manager": "2.0.0-beta.1", - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/source-map": "2.0.0-alpha.4.13", - "@parcel/types": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "@parcel/workers": "2.0.0-beta.1", - "abortcontroller-polyfill": "^1.1.9", - "browserslist": "^4.6.6", - "clone": "^2.1.1", - "dotenv": "^7.0.0", - "dotenv-expand": "^5.1.0", - "json-source-map": "^0.6.1", - "json5": "^1.0.1", - "micromatch": "^4.0.2", - "nullthrows": "^1.1.1", - "semver": "^5.4.1" - } - }, - "@parcel/diagnostic": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.0.0-beta.1.tgz", - "integrity": "sha512-LNfe2MgbKiqXnEws1QT9tANeg6iw+u6hNnuO2ZjRdnAIF/LqslD/6RKryE1yD1lh71ezACwLscji0CLuys6mbg==", - "dev": true, - "requires": { - "json-source-map": "^0.6.1", - "nullthrows": "^1.1.1" - } - }, - "@parcel/events": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.0.0-beta.1.tgz", - "integrity": "sha512-m//K2aHYnr4tSONlUmS0HhNQtmhYjCUJ+dv85mfLEqLlQVmsLBwxlcqBS5M1ONlaGPlI87xUKY8uBTg8kY1q4g==", - "dev": true - }, - "@parcel/fs": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.0.0-beta.1.tgz", - "integrity": "sha512-THLgnN+eaxfa4s0T3KIuOB1N4Lg5lwlz2Y1Y69vWujZh3B3PHbNDlJ4n0O0m+vgYZoJZ43X+qxId0yeHUh6p0w==", - "dev": true, - "requires": { - "@parcel/fs-write-stream-atomic": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "@parcel/watcher": "^2.0.0-alpha.5", - "@parcel/workers": "2.0.0-beta.1", - "mkdirp": "^0.5.1", - "ncp": "^2.0.0", - "nullthrows": "^1.1.1", - "rimraf": "^2.6.2" - } - }, - "@parcel/fs-write-stream-atomic": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/fs-write-stream-atomic/-/fs-write-stream-atomic-2.0.0-beta.1.tgz", - "integrity": "sha512-ZL3da/3jhMvu6ZwZBmxEiGXOLq+qvVvvx6DVv+4JQV0EMAFp7gvD4CH0QKLCgKBbjd1wqEBPyW3CCEo5tGtAHA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^1.0.2", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "@parcel/logger": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.0.0-beta.1.tgz", - "integrity": "sha512-PMhAs1vCPSDKt977w0cMNCEHjBTy94Khc1Pr07/YXwiijxzDBxPS9JmV8dBbryTheRy/EyUhJDXES3brQwiiqw==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.0.0-beta.1", - "@parcel/events": "2.0.0-beta.1" - } - }, - "@parcel/markdown-ansi": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.0.0-beta.1.tgz", - "integrity": "sha512-J1r4m7LczK+X26p/tjA+9VP0g4vzYNUlUyFvIHt7dcdSVEjLM2ICUQZSIzlRHXlVQ+ciMxOFUYtDBCzAzXiLfQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2" - } - }, - "@parcel/namer-default": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.0.0-beta.1.tgz", - "integrity": "sha512-b3In/s++ykB/EL2CLAFWEx0/GUaQ0TMXAfpLfd9wCmqsJq1MQxW437aujF5bIDNHjEE7+rnGk4XP+IO9uViWpQ==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.0.0-beta.1", - "@parcel/plugin": "2.0.0-beta.1", - "nullthrows": "^1.1.1" - } - }, - "@parcel/node-libs-browser": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/node-libs-browser/-/node-libs-browser-2.0.0-beta.1.tgz", - "integrity": "sha512-U9pS9KwhTluA9atSzU4X5173BXRER7BRqPSSAEBrfAbCeIfzAG1d1+bhyMZs3SBSt6afWU5HBy//wB8OWBqcKw==", - "dev": true, - "requires": { - "assert": "^2.0.0", - "browserify-zlib": "^0.2.0", - "buffer": "^5.5.0", - "console-browserify": "^1.2.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.12.0", - "domain-browser": "^3.5.0", - "events": "^3.1.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "^1.0.0", - "process": "^0.11.10", - "punycode": "^1.4.1", - "querystring-es3": "^0.2.1", - "readable-stream": "^3.6.0", - "stream-http": "^3.1.0", - "string_decoder": "^1.3.0", - "timers-browserify": "^2.0.11", - "tty-browserify": "^0.0.1", - "url": "^0.11.0", - "util": "^0.12.3", - "vm-browserify": "^1.1.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "@parcel/node-resolver-core": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.0.0-beta.1.tgz", - "integrity": "sha512-A2Eu+TEnh90Q+iisNfKmaHTPbIR/eshRUqze8PFvSTKv+n9ejNOJ0GCb+x/PFqeqavJRXUBFc60F2pAp88+Bjw==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.0.0-beta.1", - "@parcel/node-libs-browser": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "micromatch": "^3.0.4", - "nullthrows": "^1.1.1" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "@parcel/optimizer-cssnano": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-cssnano/-/optimizer-cssnano-2.0.0-beta.1.tgz", - "integrity": "sha512-f7Yz7kWAVvhRmT/QXNFrlR//pE7D1+G4iWYKstUFWJP0SsoquQBUsb3NI6vltUvydN6htcCRHGX9GhAnHRpaFw==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/source-map": "2.0.0-alpha.4.13", - "cssnano": "^4.1.10", - "postcss": "^7.0.5" - } - }, - "@parcel/optimizer-data-url": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-data-url/-/optimizer-data-url-2.0.0-beta.1.tgz", - "integrity": "sha512-H+oMRbBsYXm0GEpzwkaNO3VMxmt50yIg9IE3dyAkXDIZ4kOpaDxYJkGuuR51L5BzQSbEeXwipzoqd2LoLJ8O6w==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "isbinaryfile": "^4.0.2", - "mime": "^2.4.4" - } - }, - "@parcel/optimizer-htmlnano": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.0.0-beta.1.tgz", - "integrity": "sha512-Mz8gkvOd6pyazQFmOjGugz6Q8ydxqjeA6PyrE21/cTj8CtmLCs4TCfEzLcU79qHyr8a+KVx4roTCUwTGv+J/7Q==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "htmlnano": "^0.2.2", - "nullthrows": "^1.1.1", - "posthtml": "^0.11.3" - } - }, - "@parcel/optimizer-terser": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.0.0-beta.1.tgz", - "integrity": "sha512-S6uu4Q4L8NV+TQes35dQmHqcA6NaRmQSI0vl75IGSaTJnvnq/M3fvrTUd6Xp4dOt/eLh4UJEH7F01TbO1KFZwg==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.0.0-beta.1", - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/source-map": "2.0.0-alpha.4.13", - "@parcel/utils": "2.0.0-beta.1", - "nullthrows": "^1.1.1", - "terser": "^4.3.0" - }, - "dependencies": { - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } - } - } - }, - "@parcel/package-manager": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.0.0-beta.1.tgz", - "integrity": "sha512-3i7YXkR0TjJ7RcDpLV5ki5PLsBcdux9BILctC3LLQbNrW5kZjwztEOCnaHJbcQ3VaHaLu6znU8y24EPoyBOPMA==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.0.0-beta.1", - "@parcel/fs": "2.0.0-beta.1", - "@parcel/logger": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "@parcel/workers": "2.0.0-beta.1", - "command-exists": "^1.2.6", - "cross-spawn": "^6.0.4", - "nullthrows": "^1.1.1", - "resolve": "^1.12.0", - "semver": "^5.4.1", - "split2": "^3.1.1" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@parcel/packager-css": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.0.0-beta.1.tgz", - "integrity": "sha512-oi69yNnSZTuQ8y8GuHOFgZ9qQ5oBktNuOEhOoHd7Y15Srior/SwPjx0/UypBweEiKRGApipJtrgo0XQvr5x9aQ==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/source-map": "2.0.0-alpha.4.13", - "@parcel/utils": "2.0.0-beta.1" - } - }, - "@parcel/packager-html": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.0.0-beta.1.tgz", - "integrity": "sha512-ixuLWNpFGNYCKHbrhx2mY/aal1ORJyjaOozCLx2jL5888JeCw34jCWZcXSej+hc50KICr/RVd/WrA5v6YvkBMA==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/types": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "nullthrows": "^1.1.1", - "posthtml": "^0.11.3" - } - }, - "@parcel/packager-js": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.0.0-beta.1.tgz", - "integrity": "sha512-4sWVYv/uPDokftaMquZa1f70wE5O85bcRklcs0kUGPjWNf3uaCG/tS6h9USD2GDbcdjY1xDNoClu6EUTM1AvhA==", - "dev": true, - "requires": { - "@babel/traverse": "^7.2.3", - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/scope-hoisting": "2.0.0-beta.1", - "@parcel/source-map": "2.0.0-alpha.4.13", - "@parcel/utils": "2.0.0-beta.1", - "nullthrows": "^1.1.1" - } - }, - "@parcel/packager-raw": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.0.0-beta.1.tgz", - "integrity": "sha512-Os8m1DuPfGqjcR4avbZbJ79Rz2bvGsHx49BJ8HtJj0YnpZbnox7z5njn4PlpWhr2XAJmNnctrQ8ES0Qvrop/AQ==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1" - } - }, - "@parcel/packager-raw-url": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/packager-raw-url/-/packager-raw-url-2.0.0-beta.1.tgz", - "integrity": "sha512-elXRSp0ig1Q4y2xMpp3AGPVPFHOB0dW/qT3FbXJwBQhUtjOJrfOtQUlT59l0xP57pADS2aihgnQx0Vl13lL7FQ==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1" - } - }, - "@parcel/packager-ts": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/packager-ts/-/packager-ts-2.0.0-beta.1.tgz", - "integrity": "sha512-x/sOSvIVV6z7ltG1XFuJ/Da72HAHkRxNLCzE2ggEnuB9kzOWXAlIHKeeGB2Ql3lV2OOMtoQoFg4BM1nBLJzFCg==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1" - } - }, - "@parcel/plugin": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.0.0-beta.1.tgz", - "integrity": "sha512-ik8kwNTJ7wfPRWHQK5NrUat3WGOZazIv8v1Lbgew6XuVTc333FitvBn6mxpPWp2N3+GWWrVGmBG8m7MI6kB8zw==", - "dev": true, - "requires": { - "@parcel/types": "2.0.0-beta.1" - } - }, - "@parcel/reporter-bundle-analyzer": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/reporter-bundle-analyzer/-/reporter-bundle-analyzer-2.0.0-beta.1.tgz", - "integrity": "sha512-igUEsMSgyIiAEvmjdIydcmYpTFUKQB5EAtbMEYvRWlCSEGR08EZqaY58SIiTaTUv4maQuAi0k7E3QQSDeBtQ/w==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "nullthrows": "^1.1.1" - } - }, - "@parcel/reporter-bundle-buddy": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/reporter-bundle-buddy/-/reporter-bundle-buddy-2.0.0-beta.1.tgz", - "integrity": "sha512-pW7SJFKGkkjOOYYcE20BgleC1DRswM04fZ82S9NS0idnEsJ1Z+z/QCww24J1Vfx5FGEQDVOl4siHNILm04kvdg==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1" - } - }, - "@parcel/reporter-cli": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.0.0-beta.1.tgz", - "integrity": "sha512-KmyfFhClXghMxZXbS8tkoXZZqVfuLzlUDwedMAN+Jr9h8vSZYaiqjq88mNdrLIubqLepbNG7jUcXPu/Y3ynz6Q==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/types": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "chalk": "^3.0.0", - "filesize": "^3.6.0", - "nullthrows": "^1.1.1", - "ora": "^4.0.3", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "term-size": "^2.1.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@parcel/reporter-dev-server": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.0.0-beta.1.tgz", - "integrity": "sha512-84u4lfwAqGrIrbuyTYq88PckSe1mKP+f+D5aQDObWBqDy1gSokM+yKnQQHoddQAhviyTY3tJU/SEvKSp0Dog9Q==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "connect": "^3.7.0", - "ejs": "^2.6.1", - "http-proxy-middleware": "^0.19.1", - "mime": "^2.4.4", - "nullthrows": "^1.1.1", - "ws": "^6.2.0" - } - }, - "@parcel/resolver-default": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.0.0-beta.1.tgz", - "integrity": "sha512-BnnHY83oqOIk3oK7QsJbB2QdtSIWVy948JI7bhfFC0+8zWMLifE28KTZQD1JGxICOre75DK1JRN26l8F1gtuiw==", - "dev": true, - "requires": { - "@parcel/node-resolver-core": "2.0.0-beta.1", - "@parcel/plugin": "2.0.0-beta.1" - } - }, - "@parcel/runtime-browser-hmr": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.0.0-beta.1.tgz", - "integrity": "sha512-5JQGDLwqAGk0kNqlgKPA99mPN8srpabu/2drpxSBKWXDA71v47JRYcGx8gQsvdZGgj3+rrkI2nyC8UlYAM+m+w==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1" - } - }, - "@parcel/runtime-js": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.0.0-beta.1.tgz", - "integrity": "sha512-1EHrOoNzCdksj4QfLuIr5rC8rO8FsVpQdl4ZLggMsxQV67wFiG9j1KwM/+Jmpd6dsmdkSW+b/NAC5kPXnE1EfQ==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "nullthrows": "^1.1.1" - } - }, - "@parcel/runtime-react-refresh": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.0.0-beta.1.tgz", - "integrity": "sha512-d7lShNcgyKAdrDwAqNzVeOeQ7MuqtElw4YPxHAmTrJnsr8k+scPmK7IiUSPqItuvLIngpS1IoLY1SuEAQAY/QA==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "react-refresh": "^0.6.0" - } - }, - "@parcel/scope-hoisting": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/scope-hoisting/-/scope-hoisting-2.0.0-beta.1.tgz", - "integrity": "sha512-U0ZcejwG6vMj+cLHScQ7lhPWaaXgNk+xGPu6adWNQVbRB3PqJMv6jIhBwgR2afWzNwu1a3vg1aRO9DH/jpxGdg==", - "dev": true, - "requires": { - "@babel/generator": "^7.3.3", - "@babel/parser": "^7.0.0", - "@babel/template": "^7.2.2", - "@babel/traverse": "^7.2.3", - "@babel/types": "^7.3.3", - "@parcel/babylon-walk": "2.0.0-beta.1", - "@parcel/diagnostic": "2.0.0-beta.1", - "@parcel/source-map": "2.0.0-alpha.4.13", - "@parcel/utils": "2.0.0-beta.1", - "nullthrows": "^1.1.1" - } - }, - "@parcel/source-map": { - "version": "2.0.0-alpha.4.13", - "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.0.0-alpha.4.13.tgz", - "integrity": "sha512-MnIfYmaRqnwK8kRRG9Osu1DkJGl2bVSfJs9SqauJ9N4dOdAXAFGeeDtzXnHvx02DO+HwK7YjsbhBpSvvgZcWHg==", - "dev": true, - "requires": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "@parcel/transformer-babel": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.0.0-beta.1.tgz", - "integrity": "sha512-nP8TsjhYYvL5NjRX6WNZFXjcY66fwrPthslnycNldoHpmRDoRO1PFjqx1zzJJEUc1S0r6M2kTQhDuh4dXhANCA==", - "dev": true, - "requires": { - "@babel/core": "^7.0.0", - "@babel/generator": "^7.0.0", - "@babel/helper-compilation-targets": "^7.8.4", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.4.5", - "@babel/preset-env": "^7.0.0", - "@babel/preset-react": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@parcel/babel-ast-utils": "2.0.0-beta.1", - "@parcel/babel-preset-env": "2.0.0-beta.1", - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "browserslist": "^4.6.6", - "core-js": "^3.2.1", - "nullthrows": "^1.1.1", - "semver": "^5.7.0" - } - }, - "@parcel/transformer-coffeescript": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-coffeescript/-/transformer-coffeescript-2.0.0-beta.1.tgz", - "integrity": "sha512-EP0+RAGrMIGoIG3g3VdjAIkMCfFj8gnVp8e8n61nzrnqE7pmF8KuGtGAYz6U8yQb39a1OF41sEg1huvOUT3nKw==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/source-map": "2.0.0-alpha.4.13", - "@parcel/utils": "2.0.0-beta.1", - "coffeescript": "^2.0.3", - "nullthrows": "^1.1.1", - "semver": "^5.4.1" - } - }, - "@parcel/transformer-css": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.0.0-beta.1.tgz", - "integrity": "sha512-+vRvTWeQNxzRfsv9A9gGXYt6p6NU6LcyLvByIMzwDhqsMq1wsIEmw+YPM/2TzqsKI/f+B0jkTNCMI2dQobFX0g==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/source-map": "2.0.0-alpha.4.13", - "@parcel/utils": "2.0.0-beta.1", - "postcss": "^7.0.5", - "postcss-value-parser": "^3.3.1", - "semver": "^5.4.1" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "@parcel/transformer-graphql": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-graphql/-/transformer-graphql-2.0.0-beta.1.tgz", - "integrity": "sha512-IYuSUHadoEn5plZx78fZr8ViGdU2GqbY0opkGP21i1Z0TiB4h0ON9VMbEgnABAGeR1b+9rly/8e9/isOC7jcow==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1" - } - }, - "@parcel/transformer-html": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.0.0-beta.1.tgz", - "integrity": "sha512-YkwNLKsMrNzyA4u1I8OvTxhYAfkAayP+rDGxcIuTOmv4IVZGoRCWMtYqUl40xdIVE0QmJpbkAuQtG7Vn3xOlHw==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "nullthrows": "^1.1.1", - "posthtml": "^0.11.3", - "posthtml-parser": "^0.4.1", - "posthtml-render": "^1.1.5", - "semver": "^5.4.1" - }, - "dependencies": { - "posthtml-parser": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", - "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", - "dev": true, - "requires": { - "htmlparser2": "^3.9.2" - } - } - } - }, - "@parcel/transformer-inline-string": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-inline-string/-/transformer-inline-string-2.0.0-beta.1.tgz", - "integrity": "sha512-XfhPAXWvrWQSOwHGQU3koP6vs85mcjyKllVGcC24/Io2nZhzACw6br0fzZL2gSVZeEt+/TtfxVu7uA44S8tA8g==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1" - } - }, - "@parcel/transformer-js": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.0.0-beta.1.tgz", - "integrity": "sha512-60rrUF+ApahxKc1eQizyo7umvOhIRe3sxRIYub61qRPan2S7aU7PbScZ4bboh3alQYLztTNQh2VazM85oyiQSw==", - "dev": true, - "requires": { - "@babel/core": "^7.0.0", - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "@parcel/babel-ast-utils": "2.0.0-beta.1", - "@parcel/babylon-walk": "2.0.0-beta.1", - "@parcel/diagnostic": "2.0.0-beta.1", - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/scope-hoisting": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "nullthrows": "^1.1.1", - "semver": "^5.4.1" - } - }, - "@parcel/transformer-json": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.0.0-beta.1.tgz", - "integrity": "sha512-v39TaEWgJnoOqOQGtZgZBAq3dihufqeSm9+szIxzm4FiwzOzzlyo9QiLSlCfjDbuWHFvQkU5AJKSlhdS2qbN3Q==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "json5": "^2.1.0" - }, - "dependencies": { - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } - } - }, - "@parcel/transformer-jsonld": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-jsonld/-/transformer-jsonld-2.0.0-beta.1.tgz", - "integrity": "sha512-rf1n90XjrYDCD4jZ3+z+acQm4hznOe2l2Os3aVLCs1jvf6TAXMOtkHN1ABh63GAON5LJsary3YdFNrullDRTFw==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/types": "2.0.0-beta.1", - "json5": "^2.1.2" - }, - "dependencies": { - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } - } - }, - "@parcel/transformer-less": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-less/-/transformer-less-2.0.0-beta.1.tgz", - "integrity": "sha512-jKi29fKEJW4R1e0Rwo2nTfEeIA11vdMs3tHOhkq1O3lfkmK9UF98uFlweLyfF8Mm7XznEqKL7aP58drJ8UqVuQ==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/source-map": "2.0.0-alpha.4.13" - } - }, - "@parcel/transformer-mdx": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-mdx/-/transformer-mdx-2.0.0-beta.1.tgz", - "integrity": "sha512-M4Jjws7n5at/AVMiITz6KIMZMzlF7WHuhfQ+YzAqXS2Z+f0mJ/c2/XNOSVrKbcjn+9aKoSYqwq6vmJ6wUSaBXQ==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1" - } - }, - "@parcel/transformer-postcss": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.0.0-beta.1.tgz", - "integrity": "sha512-RLJcK5rsNv7wzehZfqR9w4lBXF+OKeza57HJ7KGph6bBtwTsLedlioQakU7uXFWprbZE6NUa2ZDIxUhWmP9kQA==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "css-modules-loader-core": "^1.1.0", - "nullthrows": "^1.1.1", - "postcss": "^7.0.5", - "postcss-value-parser": "^3.3.1", - "semver": "^5.4.1" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "@parcel/transformer-posthtml": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.0.0-beta.1.tgz", - "integrity": "sha512-dUbB3dB57qtjqmf00VeZIQRNnbEVOLCGchTIQXOoa1Ys0YqcEHNOAP7yU/njykQtxIBNp41CRXkvLl+4M6egyQ==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "nullthrows": "^1.1.1", - "posthtml": "^0.11.3", - "posthtml-parser": "^0.4.1", - "posthtml-render": "^1.1.5", - "semver": "^5.4.1" - }, - "dependencies": { - "posthtml-parser": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", - "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", - "dev": true, - "requires": { - "htmlparser2": "^3.9.2" - } - } - } - }, - "@parcel/transformer-pug": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-pug/-/transformer-pug-2.0.0-beta.1.tgz", - "integrity": "sha512-o6jXARg1HuEetLdKRn6EuJ5YGFbql3mAtK+D/Tj5/DDg1RIlBK4Cih3Gi/lyCjHF7a7Woc0mKP09cA95va5ZUA==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1" - } - }, - "@parcel/transformer-raw": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.0.0-beta.1.tgz", - "integrity": "sha512-SLqd5KBH7k8Gh25MMUTdR6tdWWWTVKuQNF76uOzysIpdbQX/ix7v12wmyeSOxivrc1eDUtILkLUH0e9HIxWVvw==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1" - } - }, - "@parcel/transformer-react-refresh-babel": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-babel/-/transformer-react-refresh-babel-2.0.0-beta.1.tgz", - "integrity": "sha512-DlsjjujHGgmSEsazN9Ng/0Q7dMSATB7kxAe7CADE+Y8cf8kBmSeeuFokbnxTGg3TBeGMjeeHcOhXwXwNeHkEQQ==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "react-refresh": "^0.6.0" - } - }, - "@parcel/transformer-react-refresh-wrap": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.0.0-beta.1.tgz", - "integrity": "sha512-PJiCdXGQgd3Z2zVs1KLie9sU5kagtMMWNVHomJ9QeG4tnvoG/J4P4klJRLO218GqBnB/s4u8vNH0QbGuQO98HQ==", - "dev": true, - "requires": { - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/types": "^7.0.0", - "@parcel/babel-ast-utils": "2.0.0-beta.1", - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "react-refresh": "^0.6.0", - "semver": "^5.4.1" - } - }, - "@parcel/transformer-sass": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-sass/-/transformer-sass-2.0.0-beta.1.tgz", - "integrity": "sha512-E5sPsmtmvqsB90YEbDD7VFQ5o6+t97YQD35aIZnsZHkuI9MhFEaVHROtzeq3n3nuZ6tjyr6rv2SseZj1yculzg==", - "dev": true, - "requires": { - "@parcel/fs": "2.0.0-beta.1", - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/source-map": "2.0.0-alpha.4.13", - "@parcel/utils": "2.0.0-beta.1" - } - }, - "@parcel/transformer-stylus": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-stylus/-/transformer-stylus-2.0.0-beta.1.tgz", - "integrity": "sha512-mTh4f59XVxM7vHRP183Cp+0bVOZ0/eyOWQrFBKBt27ZbJvLy2ynxFed/goYpjz8QT+ZJsjmPYViKLxrSdHaQTQ==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1" - } - }, - "@parcel/transformer-sugarss": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-sugarss/-/transformer-sugarss-2.0.0-beta.1.tgz", - "integrity": "sha512-73B7XDAZg0qymhlOEYhI4o8vdUbrm0ZUl/mqzXn13WsgstTtkwJPS8bX/QbyEnFq4xg/ktyezhmhNYLd+GAzjA==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "postcss": "^7.0.5" - } - }, - "@parcel/transformer-toml": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-toml/-/transformer-toml-2.0.0-beta.1.tgz", - "integrity": "sha512-EHVS83evOcLJB2wvxQkZCWNjOAYaKg9qfnkbtvEztzx228KcQWg4IPiJgB6+dcBC5fuMBYIw0xZ24y3/3ZkPfg==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1" - } - }, - "@parcel/transformer-typescript-types": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-typescript-types/-/transformer-typescript-types-2.0.0-beta.1.tgz", - "integrity": "sha512-QVCe66C14zAsss71wso32OHo74aquVDyYfqO0a/+E62bTA2O8tLaeJ9dwMHgVRgw0tBobh/j6AKaOTeQFLqobA==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1", - "@parcel/source-map": "2.0.0-alpha.4.13", - "@parcel/ts-utils": "2.0.0-beta.1", - "nullthrows": "^1.1.1" - } - }, - "@parcel/transformer-yaml": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/transformer-yaml/-/transformer-yaml-2.0.0-beta.1.tgz", - "integrity": "sha512-/pe59NOi6rtbE+YQEnOdxgNf5zMd5SXHnawICGa1Gn9rXDFswiKzD16O2meCy0VGF6dPsQdzL+k0PJlQd9/TDA==", - "dev": true, - "requires": { - "@parcel/plugin": "2.0.0-beta.1" - } - }, - "@parcel/ts-utils": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/ts-utils/-/ts-utils-2.0.0-beta.1.tgz", - "integrity": "sha512-lSw4fWL/PLsJruTmScQRVvtw2g75jsd55W08GuMdkr9iGIOXxTRZ4m4rdDBVsiS6Cgq2/l2M3zPnTiPX2do2kw==", - "dev": true, - "requires": { - "nullthrows": "^1.1.1" - } - }, - "@parcel/types": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.0.0-beta.1.tgz", - "integrity": "sha512-2aB5MoEyNUXb34IG1YVRiC5HTHgqWAX8/mM+JGAUit/kTb7eRVtnQtOhQHWyGyLqkEwbLrLo3s272sp5LNK90A==", - "dev": true - }, - "@parcel/utils": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.0.0-beta.1.tgz", - "integrity": "sha512-o+qTRMqe6QjdseYKZBGTOjnxRt4bIOEfH5ey9Ohl5fRGIfuWH7Tsq3fUkf/McvoAQyR6eo1vp7OrPBUQeQ6wxw==", - "dev": true, - "requires": { - "@iarna/toml": "^2.2.0", - "@parcel/codeframe": "2.0.0-beta.1", - "@parcel/diagnostic": "2.0.0-beta.1", - "@parcel/logger": "2.0.0-beta.1", - "@parcel/markdown-ansi": "2.0.0-beta.1", - "@parcel/source-map": "2.0.0-alpha.4.13", - "ansi-html": "^0.0.7", - "chalk": "^2.4.2", - "clone": "^2.1.1", - "fast-glob": "3.1.1", - "is-glob": "^4.0.0", - "is-url": "^1.2.2", - "js-levenshtein": "^1.1.6", - "json5": "^1.0.1", - "micromatch": "^4.0.2", - "node-forge": "^0.8.1", - "nullthrows": "^1.1.1", - "open": "^7.0.3", - "resolve": "^1.12.0", - "serialize-to-js": "^3.0.1", - "terser": "^3.7.3" - } - }, - "@parcel/watcher": { - "version": "2.0.0-alpha.8", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.0-alpha.8.tgz", - "integrity": "sha512-9aQu1SFkR6t1UYo3Mj1Vg39/Scaa9i4xGZnZ5Ug/qLyVzHmdjyKDyAbsbUDAd1O2e+MUhr5GI1w1FzBI6J31Jw==", - "dev": true, - "requires": { - "lint-staged": "^10.0.8", - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.1" - }, - "dependencies": { - "node-addon-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", - "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==", - "dev": true - } - } - }, - "@parcel/workers": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.0.0-beta.1.tgz", - "integrity": "sha512-8ycDNpBM9WoRVsHB+QXA/Y4I3z18vOQVFY+/vIcLNDIr61zKETwPjOmr5+6wSa6cMWaZBXYUjm2heJ6bPi1QXg==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.0.0-beta.1", - "@parcel/logger": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "chrome-trace-event": "^1.0.2", - "nullthrows": "^1.1.1" - } - }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", - "dev": true - }, - "abab": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.4.tgz", - "integrity": "sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ==", - "dev": true - }, - "abortcontroller-polyfill": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.5.0.tgz", - "integrity": "sha512-O6Xk757Jb4o0LMzMOMdWvxpHWrQzruYBaUruFaIOfAQRnWFxfdXYobw12jrVHGtoXk6WiiyYzc0QWN9aL62HQA==", - "dev": true - }, - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true - }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "dev": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - } - }, - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", - "dev": true - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", - "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, - "requires": { - "type-fest": "^0.11.0" - } - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "array-filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", - "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "assert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", - "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", - "dev": true, - "requires": { - "es6-object-assign": "^1.1.0", - "is-nan": "^1.2.1", - "object-is": "^1.0.1", - "util": "^0.12.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "available-typed-arrays": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", - "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", - "dev": true, - "requires": { - "array-filter": "^1.0.0" - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", - "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", - "dev": true - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", - "dev": true - }, - "bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", - "dev": true - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.0.tgz", - "integrity": "sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001111", - "electron-to-chromium": "^1.3.523", - "escalade": "^3.0.2", - "node-releases": "^1.1.60" - } - }, - "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001122", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001122.tgz", - "integrity": "sha512-pxjw28CThdrqfz06nJkpAc5SXM404TXB/h5f4UJX+rrXJKE/1bu/KAILc2AY+O6cQIFtRjV9qOR2vaEp9LDGUA==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chokidar": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", - "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" - } - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.4.0.tgz", - "integrity": "sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA==", - "dev": true - }, - "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - } - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "coffeescript": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-2.5.1.tgz", - "integrity": "sha512-J2jRPX0eeFh5VKyVnoLrfVFgLZtnnmp96WQSLAS8OrLm2wtQLcnikYKe1gViJKDH7vucjuhHvBKKBP3rKcD1tQ==", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", - "dev": true, - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" - }, - "core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", - "dev": true, - "requires": { - "browserslist": "^4.8.5", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-modules-loader-core": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", - "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", - "dev": true, - "requires": { - "icss-replace-symbols": "1.1.0", - "postcss": "6.0.1", - "postcss-modules-extract-imports": "1.1.0", - "postcss-modules-local-by-default": "1.2.0", - "postcss-modules-scope": "1.1.0", - "postcss-modules-values": "1.3.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", - "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "css-selector-tokenizer": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", - "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" - } - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", - "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true - }, - "csso": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", - "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", - "dev": true, - "requires": { - "css-tree": "1.0.0-alpha.39" - }, - "dependencies": { - "css-tree": { - "version": "1.0.0-alpha.39", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", - "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", - "dev": true, - "requires": { - "mdn-data": "2.0.6", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", - "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", - "dev": true - } - } - }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - }, - "dependencies": { - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - } - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", - "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", - "dev": true - } - } - }, - "domain-browser": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-3.5.0.tgz", - "integrity": "sha512-zrzUu6auyZWRexjCEPJnfWc30Hupxh2lJZOJAF3qa2bCuD4O/55t0FvQt3ZMhEw++gjNkwdkOVZh8yA32w/Vfw==", - "dev": true - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", - "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", - "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.558", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.558.tgz", - "integrity": "sha512-r6th6b/TU2udqVoUDGWHF/z2ACJVnEei0wvWZf/nt+Qql1Vxh60ZYPhQP46j4D73T/Jou7hl4TqQfxben+qJTg==", - "dev": true - }, - "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emphasize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emphasize/-/emphasize-2.1.0.tgz", - "integrity": "sha512-wRlO0Qulw2jieQynsS3STzTabIhHCyjTjZraSkchOiT8rdvWZlahJAJ69HRxwGkv2NThmci2MSnDfJ60jB39tw==", - "dev": true, - "requires": { - "chalk": "^2.4.0", - "highlight.js": "~9.12.0", - "lowlight": "~1.9.0" - } - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", - "dev": true - }, - "escalade": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", - "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", - "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.1.tgz", - "integrity": "sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, - "fastq": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", - "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fault": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", - "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", - "dev": true, - "requires": { - "format": "^0.2.0" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "follow-redirects": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", - "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", - "dev": true - }, - "fractional": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fractional/-/fractional-1.0.0.tgz", - "integrity": "sha1-2rFnovn4BM+QOL3fR6qbp/IH6rw=" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", - "dev": true - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true - }, - "get-port": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", - "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", - "dev": true - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "highlight.js": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", - "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "html-tags": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", - "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=", - "dev": true - }, - "htmlnano": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.6.tgz", - "integrity": "sha512-HUY/99maFsWX2LRoGJpZ/8QRLCkyY0UU1El3wgLLFAHQlD3mCxCJJNcWJk5SBqaU49MLhIWVDW6cGBeuemvaPQ==", - "dev": true, - "requires": { - "cssnano": "^4.1.10", - "normalize-html-whitespace": "^1.0.0", - "posthtml": "^0.13.1", - "posthtml-render": "^1.2.2", - "purgecss": "^2.3.0", - "svgo": "^1.3.2", - "terser": "^4.8.0", - "uncss": "^0.17.3" - }, - "dependencies": { - "posthtml": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.13.3.tgz", - "integrity": "sha512-5NL2bBc4ihAyoYnY0EAQrFQbJNE1UdvgC1wjYts0hph7jYeU2fa5ki3/9U45ce9V6M1vLMEgUX2NXe/bYL+bCQ==", - "dev": true, - "requires": { - "posthtml-parser": "^0.5.0", - "posthtml-render": "^1.2.3" - } - }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } - } - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - } - } - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.2.tgz", - "integrity": "sha512-aYk1rTKqLTus23X3L96LGNCGNgWpG4cG0XoZIT1GUPhhulEHX/QalnO6Vbo+WmKWi4AL2IidjuC0wZtbpg0yhQ==", - "dev": true, - "requires": { - "http-proxy": "^1.18.1", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "iferr": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-1.0.2.tgz", - "integrity": "sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg==", - "dev": true - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", - "dev": true - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-docker": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-generator-function": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz", - "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-html": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", - "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=", - "dev": true, - "requires": { - "html-tags": "^1.0.0" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true - }, - "is-nan": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.0.tgz", - "integrity": "sha512-z7bbREymOqt2CCaZVly8aC4ML3Xhfi0ekuOnjO2L8vKdl+CttdVoGZQhd4adMFAsxQ5VeRVwORs4tU8RH+HFtQ==", - "dev": true, - "requires": { - "define-properties": "^1.1.3" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typed-array": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz", - "integrity": "sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.0", - "es-abstract": "^1.17.4", - "foreach": "^2.0.5", - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", - "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsdom": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", - "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.0.tgz", - "integrity": "sha512-o3aP+RsWDJZayj1SbHNQAI8x0v3T3SKiGoZlNYfbUP1S3omJQ6i9CnqADqkSPaOAxwua4/1YWx5CM7oiChJt2Q==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/json-source-map/-/json-source-map-0.6.1.tgz", - "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "lint-staged": { - "version": "10.2.13", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.2.13.tgz", - "integrity": "sha512-conwlukNV6aL9SiMWjFtDp5exeDnTMekdNPDZsKGnpfQuHcO0E3L3Bbf58lcR+M7vk6LpCilxDAVks/DDVBYlA==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "cli-truncate": "^2.1.0", - "commander": "^6.0.0", - "cosmiconfig": "^7.0.0", - "debug": "^4.1.1", - "dedent": "^0.7.0", - "enquirer": "^2.3.6", - "execa": "^4.0.3", - "listr2": "^2.6.0", - "log-symbols": "^4.0.0", - "micromatch": "^4.0.2", - "normalize-path": "^3.0.0", - "please-upgrade-node": "^3.2.0", - "string-argv": "0.3.1", - "stringify-object": "^3.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "commander": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.1.0.tgz", - "integrity": "sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA==", - "dev": true - }, - "cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", - "dev": true, - "requires": { - "chalk": "^4.0.0" - } - }, - "parse-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", - "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "listr2": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-2.6.2.tgz", - "integrity": "sha512-6x6pKEMs8DSIpA/tixiYY2m/GcbgMplMVmhQAaLFxEtNSKLeWTGjtmU57xvv6QCm2XcqzyNXL/cTSVf4IChCRA==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "cli-truncate": "^2.1.0", - "figures": "^3.2.0", - "indent-string": "^4.0.0", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rxjs": "^6.6.2", - "through": "^2.3.8" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2" - } - }, - "log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lowlight": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.9.2.tgz", - "integrity": "sha512-Ek18ElVCf/wF/jEm1b92gTnigh94CtBNWiZ2ad+vTgW7cTmQxUY3I98BjHK68gZAJEWmybGBZgx9qv3QxLQB/Q==", - "dev": true, - "requires": { - "fault": "^1.0.2", - "highlight.js": "~9.12.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", - "dev": true - }, - "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", - "dev": true - }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "dev": true, - "requires": { - "mime-db": "1.44.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "dev": true - }, - "node-forge": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", - "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==", - "dev": true - }, - "node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==", - "dev": true - }, - "node-releases": { - "version": "1.1.60", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", - "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==", - "dev": true - }, - "normalize-html-whitespace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz", - "integrity": "sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "dev": true - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", - "dev": true - }, - "object-is": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/open/-/open-7.2.1.tgz", - "integrity": "sha512-xbYCJib4spUdmcs0g/2mK1nKo/jO2T7INClWd/beL7PFkXRWgr8B23ssDHX/USPn2M2IjDR5UdpYs6I67SnTSA==", - "dev": true, - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "ora": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-4.1.1.tgz", - "integrity": "sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==", - "dev": true, - "requires": { - "chalk": "^3.0.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.2.0", - "is-interactive": "^1.0.0", - "log-symbols": "^3.0.0", - "mute-stream": "0.0.8", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parcel": { - "version": "2.0.0-beta.1", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.0.0-beta.1.tgz", - "integrity": "sha512-Z2tzZoDws7q+99ihjpd3WX09BTao2miTk+S9URJXRJkVxxgoZSQJ+uwtxcosoDWwS6zv4RAXxtEMmiyMeaCuMQ==", - "dev": true, - "requires": { - "@parcel/config-default": "2.0.0-beta.1", - "@parcel/core": "2.0.0-beta.1", - "@parcel/diagnostic": "2.0.0-beta.1", - "@parcel/fs": "2.0.0-beta.1", - "@parcel/logger": "2.0.0-beta.1", - "@parcel/package-manager": "2.0.0-beta.1", - "@parcel/utils": "2.0.0-beta.1", - "chalk": "^2.1.0", - "commander": "^2.19.0", - "get-port": "^4.2.0", - "react": "^16.7.0", - "v8-compile-cache": "^2.0.0" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - } - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, - "requires": { - "semver-compare": "^1.0.0" - } - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "7.0.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", - "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-calc": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.4.tgz", - "integrity": "sha512-0I79VRAd1UTkaHzY9w83P39YGO/M3bG7/tNLrHGEunBolfoGM0hSjrGvjoeaj0JE/zIw5GsI2KZ0UwDJqv5hjw==", - "dev": true, - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", - "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", - "dev": true, - "requires": { - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", - "dev": true, - "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", - "dev": true, - "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true - }, - "posthtml": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz", - "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==", - "dev": true, - "requires": { - "posthtml-parser": "^0.4.1", - "posthtml-render": "^1.1.5" - }, - "dependencies": { - "posthtml-parser": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", - "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", - "dev": true, - "requires": { - "htmlparser2": "^3.9.2" - } - } - } - }, - "posthtml-parser": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.5.0.tgz", - "integrity": "sha512-BsZFAqOeX9lkJJPKG2JmGgtm6t++WibU7FeS40FNNGZ1KS2szRSRQ8Wr2JLvikDgAecrQ/9V4sjugTAin2+KVw==", - "dev": true, - "requires": { - "htmlparser2": "^3.9.2" - } - }, - "posthtml-render": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.3.tgz", - "integrity": "sha512-rGGayND//VwTlsYKNqdILsA7U/XP0WJa6SMcdAEoqc2WRM5QExplGg/h9qbTuHz7mc2PvaXU+6iNxItvr5aHMg==", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "purgecss": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", - "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", - "dev": true, - "requires": { - "commander": "^5.0.0", - "glob": "^7.0.0", - "postcss": "7.0.32", - "postcss-selector-parser": "^6.0.2" - }, - "dependencies": { - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true - } - } - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "react": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", - "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", - "dev": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "react-refresh": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.6.0.tgz", - "integrity": "sha512-Wv48N+GFt6Azvtl/LMvzNW9hvEyJdRQ48oVKIBAN7hjtvXXfxfVJXbPl/11SM1C/NIquIFXzzWCo6ZNH0I8I4g==", - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "regenerate": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", - "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - } - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "dev": true, - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-parallel": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", - "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", - "dev": true - }, - "rxjs": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", - "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.26.10", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.10.tgz", - "integrity": "sha512-bzN0uvmzfsTvjz0qwccN1sPm2HxxpNI/Xa+7PlUEMS+nQvbyuEK7Y0qFqxlPHhiNHb1Ze8WQJtU31olMObkAMw==", - "dev": true, - "requires": { - "chokidar": ">=2.0.0 <4.0.0" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "dev": true, - "requires": { - "xmlchars": "^2.1.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, - "serialize-to-js": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", - "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dev": true, - "requires": { - "readable-stream": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "stream-http": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.1.1.tgz", - "integrity": "sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, - "string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dev": true, - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "dependencies": { - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - } - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "term-size": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", - "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", - "dev": true - }, - "terser": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", - "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", - "dev": true, - "requires": { - "commander": "^2.19.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.10" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", - "dev": true - }, - "tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true - }, - "uncss": { - "version": "0.17.3", - "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz", - "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "glob": "^7.1.4", - "is-absolute-url": "^3.0.1", - "is-html": "^1.1.0", - "jsdom": "^14.1.0", - "lodash": "^4.17.15", - "postcss": "^7.0.17", - "postcss-selector-parser": "6.0.2", - "request": "^2.88.0" - }, - "dependencies": { - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - } - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "uri-js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz", - "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", - "dev": true - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "dev": true, - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-typed-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.2.tgz", - "integrity": "sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.2", - "es-abstract": "^1.17.5", - "foreach": "^2.0.5", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.1", - "is-typed-array": "^1.1.3" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", - "dev": true - } - } -} diff --git a/18-forkify/final/package.json b/18-forkify/final/package.json deleted file mode 100644 index f7a15e152a..0000000000 --- a/18-forkify/final/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "forkify", - "version": "1.0.0", - "description": "Recipe application", - "default": "index.html", - "scripts": { - "start": "parcel index.html", - "build": "parcel build index.html --dist-dir ./dist" - }, - "author": "Jonas Schedtmann", - "license": "ISC", - "devDependencies": { - "parcel": "^2.0.0-beta.1", - "sass": "^1.26.10" - }, - "dependencies": { - "core-js": "^3.6.5", - "fractional": "^1.0.0", - "regenerator-runtime": "^0.13.7" - } -} diff --git a/18-forkify/final/src/img/icons.svg b/18-forkify/final/src/img/icons.svg deleted file mode 100644 index 20e918a168..0000000000 --- a/18-forkify/final/src/img/icons.svg +++ /dev/null @@ -1,60 +0,0 @@ - diff --git a/18-forkify/final/src/js/config.js b/18-forkify/final/src/js/config.js deleted file mode 100644 index fb344669b9..0000000000 --- a/18-forkify/final/src/js/config.js +++ /dev/null @@ -1,5 +0,0 @@ -export const API_URL = 'https://forkify-api.jonas.io/api/v2/recipes/'; -export const TIMEOUT_SEC = 10; -export const RES_PER_PAGE = 10; -export const KEY = ''; -export const MODAL_CLOSE_SEC = 2.5; diff --git a/18-forkify/final/src/js/controller.js b/18-forkify/final/src/js/controller.js deleted file mode 100644 index 9e10cececd..0000000000 --- a/18-forkify/final/src/js/controller.js +++ /dev/null @@ -1,131 +0,0 @@ -import * as model from './model.js'; -import { MODAL_CLOSE_SEC } from './config.js'; -import recipeView from './views/recipeView.js'; -import searchView from './views/searchView.js'; -import resultsView from './views/resultsView.js'; -import paginationView from './views/paginationView.js'; -import bookmarksView from './views/bookmarksView.js'; -import addRecipeView from './views/addRecipeView.js'; - -import 'core-js/stable'; -import 'regenerator-runtime/runtime'; -import { async } from 'regenerator-runtime'; - -const controlRecipes = async function () { - try { - const id = window.location.hash.slice(1); - - if (!id) return; - recipeView.renderSpinner(); - - // 0) Update results view to mark selected search result - resultsView.update(model.getSearchResultsPage()); - - // 1) Updating bookmarks view - bookmarksView.update(model.state.bookmarks); - - // 2) Loading recipe - await model.loadRecipe(id); - - // 3) Rendering recipe - recipeView.render(model.state.recipe); - } catch (err) { - recipeView.renderError(); - console.error(err); - } -}; - -const controlSearchResults = async function () { - try { - resultsView.renderSpinner(); - - // 1) Get search query - const query = searchView.getQuery(); - if (!query) return; - - // 2) Load search results - await model.loadSearchResults(query); - - // 3) Render results - resultsView.render(model.getSearchResultsPage()); - - // 4) Render initial pagination buttons - paginationView.render(model.state.search); - } catch (err) { - console.log(err); - } -}; - -const controlPagination = function (goToPage) { - // 1) Render NEW results - resultsView.render(model.getSearchResultsPage(goToPage)); - - // 2) Render NEW pagination buttons - paginationView.render(model.state.search); -}; - -const controlServings = function (newServings) { - // Update the recipe servings (in state) - model.updateServings(newServings); - - // Update the recipe view - recipeView.update(model.state.recipe); -}; - -const controlAddBookmark = function () { - // 1) Add/remove bookmark - if (!model.state.recipe.bookmarked) model.addBookmark(model.state.recipe); - else model.deleteBookmark(model.state.recipe.id); - - // 2) Update recipe view - recipeView.update(model.state.recipe); - - // 3) Render bookmarks - bookmarksView.render(model.state.bookmarks); -}; - -const controlBookmarks = function () { - bookmarksView.render(model.state.bookmarks); -}; - -const controlAddRecipe = async function (newRecipe) { - try { - // Show loading spinner - addRecipeView.renderSpinner(); - - // Upload the new recipe data - await model.uploadRecipe(newRecipe); - console.log(model.state.recipe); - - // Render recipe - recipeView.render(model.state.recipe); - - // Success message - addRecipeView.renderMessage(); - - // Render bookmark view - bookmarksView.render(model.state.bookmarks); - - // Change ID in URL - window.history.pushState(null, '', `#${model.state.recipe.id}`); - - // Close form window - setTimeout(function () { - addRecipeView.toggleWindow(); - }, MODAL_CLOSE_SEC * 1000); - } catch (err) { - console.error('💥', err); - addRecipeView.renderError(err.message); - } -}; - -const init = function () { - bookmarksView.addHandlerRender(controlBookmarks); - recipeView.addHandlerRender(controlRecipes); - recipeView.addHandlerUpdateServings(controlServings); - recipeView.addHandlerAddBookmark(controlAddBookmark); - searchView.addHandlerSearch(controlSearchResults); - paginationView.addHandlerClick(controlPagination); - addRecipeView.addHandlerUpload(controlAddRecipe); -}; -init(); diff --git a/18-forkify/final/src/js/helpers.js b/18-forkify/final/src/js/helpers.js deleted file mode 100644 index 62e0987135..0000000000 --- a/18-forkify/final/src/js/helpers.js +++ /dev/null @@ -1,67 +0,0 @@ -import { async } from 'regenerator-runtime'; -import { TIMEOUT_SEC } from './config.js'; - -const timeout = function (s) { - return new Promise(function (_, reject) { - setTimeout(function () { - reject(new Error(`Request took too long! Timeout after ${s} second`)); - }, s * 1000); - }); -}; - -export const AJAX = async function (url, uploadData = undefined) { - try { - const fetchPro = uploadData - ? fetch(url, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(uploadData), - }) - : fetch(url); - - const res = await Promise.race([fetchPro, timeout(TIMEOUT_SEC)]); - const data = await res.json(); - - if (!res.ok) throw new Error(`${data.message} (${res.status})`); - return data; - } catch (err) { - throw err; - } -}; - -/* -export const getJSON = async function (url) { - try { - const fetchPro = fetch(url); - const res = await Promise.race([fetchPro, timeout(TIMEOUT_SEC)]); - const data = await res.json(); - - if (!res.ok) throw new Error(`${data.message} (${res.status})`); - return data; - } catch (err) { - throw err; - } -}; - -export const sendJSON = async function (url, uploadData) { - try { - const fetchPro = fetch(url, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(uploadData), - }); - - const res = await Promise.race([fetchPro, timeout(TIMEOUT_SEC)]); - const data = await res.json(); - - if (!res.ok) throw new Error(`${data.message} (${res.status})`); - return data; - } catch (err) { - throw err; - } -}; -*/ diff --git a/18-forkify/final/src/js/model.js b/18-forkify/final/src/js/model.js deleted file mode 100644 index ea4de7e835..0000000000 --- a/18-forkify/final/src/js/model.js +++ /dev/null @@ -1,159 +0,0 @@ -import { async } from 'regenerator-runtime'; -import { API_URL, RES_PER_PAGE, KEY } from './config.js'; -// import { getJSON, sendJSON } from './helpers.js'; -import { AJAX } from './helpers.js'; - -export const state = { - recipe: {}, - search: { - query: '', - results: [], - page: 1, - resultsPerPage: RES_PER_PAGE, - }, - bookmarks: [], -}; - -const createRecipeObject = function (data) { - const { recipe } = data.data; - return { - id: recipe.id, - title: recipe.title, - publisher: recipe.publisher, - sourceUrl: recipe.source_url, - image: recipe.image_url, - servings: recipe.servings, - cookingTime: recipe.cooking_time, - ingredients: recipe.ingredients, - ...(recipe.key && { key: recipe.key }), - }; -}; - -export const loadRecipe = async function (id) { - try { - const data = await AJAX(`${API_URL}${id}?key=${KEY}`); - state.recipe = createRecipeObject(data); - - if (state.bookmarks.some(bookmark => bookmark.id === id)) - state.recipe.bookmarked = true; - else state.recipe.bookmarked = false; - - console.log(state.recipe); - } catch (err) { - // Temp error handling - console.error(`${err} 💥💥💥💥`); - throw err; - } -}; - -export const loadSearchResults = async function (query) { - try { - state.search.query = query; - - const data = await AJAX(`${API_URL}?search=${query}&key=${KEY}`); - console.log(data); - - state.search.results = data.data.recipes.map(rec => { - return { - id: rec.id, - title: rec.title, - publisher: rec.publisher, - image: rec.image_url, - ...(rec.key && { key: rec.key }), - }; - }); - state.search.page = 1; - } catch (err) { - console.error(`${err} 💥💥💥💥`); - throw err; - } -}; - -export const getSearchResultsPage = function (page = state.search.page) { - state.search.page = page; - - const start = (page - 1) * state.search.resultsPerPage; // 0 - const end = page * state.search.resultsPerPage; // 9 - - return state.search.results.slice(start, end); -}; - -export const updateServings = function (newServings) { - state.recipe.ingredients.forEach(ing => { - ing.quantity = (ing.quantity * newServings) / state.recipe.servings; - // newQt = oldQt * newServings / oldServings // 2 * 8 / 4 = 4 - }); - - state.recipe.servings = newServings; -}; - -const persistBookmarks = function () { - localStorage.setItem('bookmarks', JSON.stringify(state.bookmarks)); -}; - -export const addBookmark = function (recipe) { - // Add bookmark - state.bookmarks.push(recipe); - - // Mark current recipe as bookmarked - if (recipe.id === state.recipe.id) state.recipe.bookmarked = true; - - persistBookmarks(); -}; - -export const deleteBookmark = function (id) { - // Delete bookmark - const index = state.bookmarks.findIndex(el => el.id === id); - state.bookmarks.splice(index, 1); - - // Mark current recipe as NOT bookmarked - if (id === state.recipe.id) state.recipe.bookmarked = false; - - persistBookmarks(); -}; - -const init = function () { - const storage = localStorage.getItem('bookmarks'); - if (storage) state.bookmarks = JSON.parse(storage); -}; -init(); - -const clearBookmarks = function () { - localStorage.clear('bookmarks'); -}; -// clearBookmarks(); - -export const uploadRecipe = async function (newRecipe) { - try { - const ingredients = Object.entries(newRecipe) - .filter(entry => entry[0].startsWith('ingredient') && entry[1] !== '') - .map(ing => { - const ingArr = ing[1].split(',').map(el => el.trim()); - // const ingArr = ing[1].replaceAll(' ', '').split(','); - if (ingArr.length !== 3) - throw new Error( - 'Wrong ingredient fromat! Please use the correct format :)' - ); - - const [quantity, unit, description] = ingArr; - - return { quantity: quantity ? +quantity : null, unit, description }; - }); - - const recipe = { - title: newRecipe.title, - source_url: newRecipe.sourceUrl, - image_url: newRecipe.image, - publisher: newRecipe.publisher, - cooking_time: +newRecipe.cookingTime, - servings: +newRecipe.servings, - ingredients, - }; - - const data = await AJAX(`${API_URL}?key=${KEY}`, recipe); - state.recipe = createRecipeObject(data); - addBookmark(state.recipe); - } catch (err) { - throw err; - } -}; diff --git a/18-forkify/final/src/js/views/View.js b/18-forkify/final/src/js/views/View.js deleted file mode 100644 index 847f6db070..0000000000 --- a/18-forkify/final/src/js/views/View.js +++ /dev/null @@ -1,102 +0,0 @@ -import icons from 'url:../../img/icons.svg'; // Parcel 2 - -export default class View { - _data; - - /** - * Render the received object to the DOM - * @param {Object | Object[]} data The data to be rendered (e.g. recipe) - * @param {boolean} [render=true] If false, create markup string instead of rendering to the DOM - * @returns {undefined | string} A markup string is returned if render=false - * @this {Object} View instance - * @author Jonas Schmedtmann - * @todo Finish implementation - */ - render(data, render = true) { - if (!data || (Array.isArray(data) && data.length === 0)) - return this.renderError(); - - this._data = data; - const markup = this._generateMarkup(); - - if (!render) return markup; - - this._clear(); - this._parentElement.insertAdjacentHTML('afterbegin', markup); - } - - update(data) { - this._data = data; - const newMarkup = this._generateMarkup(); - - const newDOM = document.createRange().createContextualFragment(newMarkup); - const newElements = Array.from(newDOM.querySelectorAll('*')); - const curElements = Array.from(this._parentElement.querySelectorAll('*')); - - newElements.forEach((newEl, i) => { - const curEl = curElements[i]; - // console.log(curEl, newEl.isEqualNode(curEl)); - - // Updates changed TEXT - if ( - !newEl.isEqualNode(curEl) && - newEl.firstChild?.nodeValue.trim() !== '' - ) { - // console.log('💥', newEl.firstChild.nodeValue.trim()); - curEl.textContent = newEl.textContent; - } - - // Updates changed ATTRIBUES - if (!newEl.isEqualNode(curEl)) - Array.from(newEl.attributes).forEach(attr => - curEl.setAttribute(attr.name, attr.value) - ); - }); - } - - _clear() { - this._parentElement.innerHTML = ''; - } - - renderSpinner() { - const markup = ` -
    - - - -
    - `; - this._clear(); - this._parentElement.insertAdjacentHTML('afterbegin', markup); - } - - renderError(message = this._errorMessage) { - const markup = ` -
    -
    - - - -
    -

    ${message}

    -
    - `; - this._clear(); - this._parentElement.insertAdjacentHTML('afterbegin', markup); - } - - renderMessage(message = this._message) { - const markup = ` -
    -
    - - - -
    -

    ${message}

    -
    - `; - this._clear(); - this._parentElement.insertAdjacentHTML('afterbegin', markup); - } -} diff --git a/18-forkify/final/src/js/views/addRecipeView.js b/18-forkify/final/src/js/views/addRecipeView.js deleted file mode 100644 index 3609c38572..0000000000 --- a/18-forkify/final/src/js/views/addRecipeView.js +++ /dev/null @@ -1,45 +0,0 @@ -import View from './View.js'; -import icons from 'url:../../img/icons.svg'; // Parcel 2 - -class AddRecipeView extends View { - _parentElement = document.querySelector('.upload'); - _message = 'Recipe was successfully uploaded :)'; - - _window = document.querySelector('.add-recipe-window'); - _overlay = document.querySelector('.overlay'); - _btnOpen = document.querySelector('.nav__btn--add-recipe'); - _btnClose = document.querySelector('.btn--close-modal'); - - constructor() { - super(); - this._addHandlerShowWindow(); - this._addHandlerHideWindow(); - } - - toggleWindow() { - this._overlay.classList.toggle('hidden'); - this._window.classList.toggle('hidden'); - } - - _addHandlerShowWindow() { - this._btnOpen.addEventListener('click', this.toggleWindow.bind(this)); - } - - _addHandlerHideWindow() { - this._btnClose.addEventListener('click', this.toggleWindow.bind(this)); - this._overlay.addEventListener('click', this.toggleWindow.bind(this)); - } - - addHandlerUpload(handler) { - this._parentElement.addEventListener('submit', function (e) { - e.preventDefault(); - const dataArr = [...new FormData(this)]; - const data = Object.fromEntries(dataArr); - handler(data); - }); - } - - _generateMarkup() {} -} - -export default new AddRecipeView(); diff --git a/18-forkify/final/src/js/views/bookmarksView.js b/18-forkify/final/src/js/views/bookmarksView.js deleted file mode 100644 index be66b7a509..0000000000 --- a/18-forkify/final/src/js/views/bookmarksView.js +++ /dev/null @@ -1,21 +0,0 @@ -import View from './View.js'; -import previewView from './previewView.js'; -import icons from 'url:../../img/icons.svg'; // Parcel 2 - -class BookmarksView extends View { - _parentElement = document.querySelector('.bookmarks__list'); - _errorMessage = 'No bookmarks yet. Find a nice recipe and bookmark it ;)'; - _message = ''; - - addHandlerRender(handler) { - window.addEventListener('load', handler); - } - - _generateMarkup() { - return this._data - .map(bookmark => previewView.render(bookmark, false)) - .join(''); - } -} - -export default new BookmarksView(); diff --git a/18-forkify/final/src/js/views/paginationView.js b/18-forkify/final/src/js/views/paginationView.js deleted file mode 100644 index 7518b31bb6..0000000000 --- a/18-forkify/final/src/js/views/paginationView.js +++ /dev/null @@ -1,78 +0,0 @@ -import View from './View.js'; -import icons from 'url:../../img/icons.svg'; // Parcel 2 - -class PaginationView extends View { - _parentElement = document.querySelector('.pagination'); - - addHandlerClick(handler) { - this._parentElement.addEventListener('click', function (e) { - const btn = e.target.closest('.btn--inline'); - if (!btn) return; - - const goToPage = +btn.dataset.goto; - handler(goToPage); - }); - } - - _generateMarkup() { - const curPage = this._data.page; - const numPages = Math.ceil( - this._data.results.length / this._data.resultsPerPage - ); - - // Page 1, and there are other pages - if (curPage === 1 && numPages > 1) { - return ` - - `; - } - - // Last page - if (curPage === numPages && numPages > 1) { - return ` - - `; - } - - // Other page - if (curPage < numPages) { - return ` - - - `; - } - - // Page 1, and there are NO other pages - return ''; - } -} - -export default new PaginationView(); diff --git a/18-forkify/final/src/js/views/previewView.js b/18-forkify/final/src/js/views/previewView.js deleted file mode 100644 index 3acf57bf2e..0000000000 --- a/18-forkify/final/src/js/views/previewView.js +++ /dev/null @@ -1,35 +0,0 @@ -import View from './View.js'; -import icons from 'url:../../img/icons.svg'; // Parcel 2 - -class PreviewView extends View { - _parentElement = ''; - - _generateMarkup() { - const id = window.location.hash.slice(1); - - return ` -
  • - -
    - ${this._data.title} -
    -
    -

    ${this._data.title}

    -

    ${this._data.publisher}

    -
    - - - -
    -
    -
    -
  • - `; - } -} - -export default new PreviewView(); diff --git a/18-forkify/final/src/js/views/recipeView.js b/18-forkify/final/src/js/views/recipeView.js deleted file mode 100644 index 0d6f637cb7..0000000000 --- a/18-forkify/final/src/js/views/recipeView.js +++ /dev/null @@ -1,142 +0,0 @@ -import View from './View.js'; - -// import icons from '../img/icons.svg'; // Parcel 1 -import icons from 'url:../../img/icons.svg'; // Parcel 2 -import { Fraction } from 'fractional'; - -class RecipeView extends View { - _parentElement = document.querySelector('.recipe'); - _errorMessage = 'We could not find that recipe. Please try another one!'; - _message = ''; - - addHandlerRender(handler) { - ['hashchange', 'load'].forEach(ev => window.addEventListener(ev, handler)); - } - - addHandlerUpdateServings(handler) { - this._parentElement.addEventListener('click', function (e) { - const btn = e.target.closest('.btn--update-servings'); - if (!btn) return; - const { updateTo } = btn.dataset; - if (+updateTo > 0) handler(+updateTo); - }); - } - - addHandlerAddBookmark(handler) { - this._parentElement.addEventListener('click', function (e) { - const btn = e.target.closest('.btn--bookmark'); - if (!btn) return; - handler(); - }); - } - - _generateMarkup() { - return ` -
    - ${
-      this._data.title
-    } -

    - ${this._data.title} -

    -
    - -
    -
    - - - - ${ - this._data.cookingTime - } - minutes -
    -
    - - - - ${ - this._data.servings - } - servings - -
    - - -
    -
    - -
    - - - -
    - -
    - -
    -

    Recipe ingredients

    -
      - ${this._data.ingredients.map(this._generateMarkupIngredient).join('')} -
    - -
    -

    How to cook it

    -

    - This recipe was carefully designed and tested by - ${ - this._data.publisher - }. Please check out - directions at their website. -

    - - Directions - - - - -
    - `; - } - - _generateMarkupIngredient(ing) { - return ` -
  • - - - -
    ${ - ing.quantity ? new Fraction(ing.quantity).toString() : '' - }
    -
    - ${ing.unit} - ${ing.description} -
    -
  • - `; - } -} - -export default new RecipeView(); diff --git a/18-forkify/final/src/js/views/resultsView.js b/18-forkify/final/src/js/views/resultsView.js deleted file mode 100644 index b28716ba7e..0000000000 --- a/18-forkify/final/src/js/views/resultsView.js +++ /dev/null @@ -1,15 +0,0 @@ -import View from './View.js'; -import previewView from './previewView.js'; -import icons from 'url:../../img/icons.svg'; // Parcel 2 - -class ResultsView extends View { - _parentElement = document.querySelector('.results'); - _errorMessage = 'No recipes found for your query! Please try again ;)'; - _message = ''; - - _generateMarkup() { - return this._data.map(result => previewView.render(result, false)).join(''); - } -} - -export default new ResultsView(); diff --git a/18-forkify/final/src/js/views/searchView.js b/18-forkify/final/src/js/views/searchView.js deleted file mode 100644 index f4763efd91..0000000000 --- a/18-forkify/final/src/js/views/searchView.js +++ /dev/null @@ -1,22 +0,0 @@ -class SearchView { - _parentEl = document.querySelector('.search'); - - getQuery() { - const query = this._parentEl.querySelector('.search__field').value; - this._clearInput(); - return query; - } - - _clearInput() { - this._parentEl.querySelector('.search__field').value = ''; - } - - addHandlerSearch(handler) { - this._parentEl.addEventListener('submit', function (e) { - e.preventDefault(); - handler(); - }); - } -} - -export default new SearchView(); diff --git a/18-forkify/final/src/sass/_base.scss b/18-forkify/final/src/sass/_base.scss deleted file mode 100644 index 16dec6b1f2..0000000000 --- a/18-forkify/final/src/sass/_base.scss +++ /dev/null @@ -1,71 +0,0 @@ -// $color-primary: #f59a83; -$color-primary: #f38e82; -$color-grad-1: #fbdb89; -$color-grad-2: #f48982; - -$color-grey-light-1: #f9f5f3; // Light background -$color-grey-light-2: #f2efee; // Light lines -$color-grey-light-3: #d3c7c3; // Light text (placeholder) -$color-grey-dark-1: #615551; // Normal text -$color-grey-dark-2: #918581; // Lighter text - -$gradient: linear-gradient(to right bottom, $color-grad-1, $color-grad-2); - -$bp-large: 78.15em; // 1250px -$bp-medium: 61.25em; // 980px -$bp-small: 37.5em; // 600px -$bp-smallest: 31.25em; // 500px - -* { - margin: 0; - padding: 0; -} - -*, -*::before, -*::after { - box-sizing: inherit; -} - -html { - box-sizing: border-box; - font-size: 62.5%; - - @media only screen and (max-width: $bp-medium) { - font-size: 50%; - } -} - -body { - font-family: 'Nunito Sans', sans-serif; - font-weight: 400; - line-height: 1.6; - color: $color-grey-dark-1; - background-image: $gradient; - background-size: cover; - background-repeat: no-repeat; - min-height: calc(100vh - 2 * 4vw); -} - -.container { - max-width: 120rem; - min-height: 117rem; - margin: 4vw auto; - background-color: #fff; - border-radius: 9px; - overflow: hidden; - box-shadow: 0 2rem 6rem 0.5rem rgba($color-grey-dark-1, 0.2); - - display: grid; - grid-template-rows: 10rem minmax(100rem, auto); - grid-template-columns: 1fr 2fr; - grid-template-areas: - 'head head' - 'list recipe'; - - @media only screen and (max-width: $bp-large) { - max-width: 100%; - margin: 0; - border-radius: 0; - } -} diff --git a/18-forkify/final/src/sass/_components.scss b/18-forkify/final/src/sass/_components.scss deleted file mode 100644 index f8612eb9bc..0000000000 --- a/18-forkify/final/src/sass/_components.scss +++ /dev/null @@ -1,213 +0,0 @@ -%btn { - background-image: $gradient; - border-radius: 10rem; - border: none; - text-transform: uppercase; - color: #fff; - cursor: pointer; - display: flex; - align-items: center; - transition: all 0.2s; - - &:hover { - transform: scale(1.05); - } - - &:focus { - outline: none; - } - - & > *:first-child { - margin-right: 1rem; - } -} - -.btn { - @extend %btn; - - padding: 1.5rem 4rem; - font-size: 1.5rem; - font-weight: 600; - - svg { - height: 2.25rem; - width: 2.25rem; - fill: currentColor; - } -} - -.btn--small { - &, - &:link, - &:visited { - @extend %btn; - - font-size: 1.4rem; - font-weight: 600; - padding: 1.25rem 2.25rem; - text-decoration: none; - - svg { - height: 1.75rem; - width: 1.75rem; - fill: currentColor; - } - } -} - -.btn--inline { - color: $color-primary; - font-size: 1.3rem; - font-weight: 600; - border: none; - background-color: $color-grey-light-1; - padding: 0.8rem 1.2rem; - border-radius: 10rem; - cursor: pointer; - - display: flex; - align-items: center; - transition: all 0.2s; - - svg { - height: 1.6rem; - width: 1.6rem; - fill: currentColor; - margin: 0 0.2rem; - } - - span { - margin: 0 0.4rem; - } - - &:hover { - color: $color-grad-2; - background-color: $color-grey-light-2; - } - - &:focus { - outline: none; - } -} - -.btn--round { - background-image: $gradient; - border-radius: 50%; - border: none; - cursor: pointer; - height: 4.5rem; - width: 4.5rem; - // margin-left: auto; - transition: all 0.2s; - - display: flex; - align-items: center; - justify-content: center; - - &:hover { - transform: scale(1.07); - } - - &:focus { - outline: none; - } - - svg { - height: 2.5rem; - width: 2.5rem; - fill: #fff; - } -} - -.btn--tiny { - height: 2rem; - width: 2rem; - border: none; - background: none; - cursor: pointer; - - svg { - height: 100%; - width: 100%; - fill: $color-primary; - transition: all 0.3s; - } - - &:focus { - outline: none; - } - - &:hover svg { - fill: $color-grad-2; - transform: translateY(-1px); - } - - &:active svg { - fill: $color-grad-2; - transform: translateY(0); - } - - &:not(:last-child) { - margin-right: 0.3rem; - } -} - -.heading--2 { - font-size: 2rem; - font-weight: 700; - color: $color-primary; - text-transform: uppercase; - margin-bottom: 2.5rem; - text-align: center; - // transform: skewY(-3deg); -} - -.link:link, -.link:visited { - color: $color-grey-dark-2; -} - -.spinner { - margin: 5rem auto; - text-align: center; - - svg { - height: 6rem; - width: 6rem; - fill: $color-primary; - animation: rotate 2s infinite linear; - } -} - -@keyframes rotate { - 0% { - transform: rotate(0); - } - - 100% { - transform: rotate(360deg); - } -} - -.message, -.error { - max-width: 40rem; - margin: 0 auto; - padding: 5rem 4rem; - - display: flex; - - svg { - height: 3rem; - width: 3rem; - fill: $color-primary; - transform: translateY(-0.3rem); - } - - p { - margin-left: 1.5rem; - font-size: 1.8rem; - line-height: 1.5; - font-weight: 600; - } -} diff --git a/18-forkify/final/src/sass/_header.scss b/18-forkify/final/src/sass/_header.scss deleted file mode 100644 index 0054c62993..0000000000 --- a/18-forkify/final/src/sass/_header.scss +++ /dev/null @@ -1,144 +0,0 @@ -.header { - grid-area: head; - background-color: $color-grey-light-1; - display: flex; - align-items: center; - justify-content: space-between; - - &__logo { - margin-left: 4rem; - height: 4.6rem; - display: block; - } -} - -.search { - background-color: #fff; - border-radius: 10rem; - display: flex; - align-items: center; - padding-left: 3rem; - transition: all 0.3s; - - &:focus-within { - transform: translateY(-2px); - box-shadow: 0 0.7rem 3rem rgba($color-grey-dark-1, 0.08); - } - - &__field { - border: none; - background: none; - font-family: inherit; - color: inherit; - font-size: 1.7rem; - width: 30rem; - - &:focus { - outline: none; - } - - &::placeholder { - color: $color-grey-light-3; - } - - @media only screen and (max-width: $bp-medium) { - width: auto; - - &::placeholder { - color: white; - } - } - } - - &__btn { - font-weight: 600; - font-family: inherit; - } -} - -.nav { - align-self: stretch; - margin-right: 2.5rem; - - &__list { - list-style: none; - display: flex; - height: 100%; - } - - &__item { - position: relative; - } - - &__btn { - height: 100%; - font-family: inherit; - color: inherit; - font-size: 1.4rem; - font-weight: 700; - text-transform: uppercase; - background: none; - border: none; - cursor: pointer; - padding: 0 1.5rem; - transition: all 0.3s; - - display: flex; - align-items: center; - - svg { - height: 2.4rem; - width: 2.4rem; - fill: $color-primary; - margin-right: 0.7rem; - transform: translateY(-1px); - } - - &:focus { - outline: none; - } - - &:hover { - background-color: $color-grey-light-2; - } - } -} - -.bookmarks { - padding: 1rem 0; - position: absolute; - // right: 0; - right: -2.5rem; - z-index: 10; - width: 40rem; - background-color: #fff; - box-shadow: 0 0.8rem 5rem 2rem rgba($color-grey-dark-1, 0.1); - - visibility: hidden; - opacity: 0; - transition: all 0.5s 0.2s; - - &__list { - list-style: none; - } - - &__field { - cursor: pointer; - padding: 0 4rem; - - display: flex; - align-items: center; - height: 100%; - transition: all 0.3s; - - &:hover { - background-color: $color-grey-light-2; - } - } - - &:hover, - .nav__btn--bookmarks:hover + & { - visibility: visible; - opacity: 1; - } -} diff --git a/18-forkify/final/src/sass/_preview.scss b/18-forkify/final/src/sass/_preview.scss deleted file mode 100644 index f10c0086d9..0000000000 --- a/18-forkify/final/src/sass/_preview.scss +++ /dev/null @@ -1,105 +0,0 @@ -.preview { - &__link { - &:link, - &:visited { - display: flex; - align-items: center; - padding: 1.5rem 3.25rem; - transition: all 0.3s; - border-right: 1px solid #fff; - text-decoration: none; - } - - &:hover { - background-color: $color-grey-light-1; - transform: translateY(-2px); - } - - &--active { - background-color: $color-grey-light-1; - } - } - - &__fig { - flex: 0 0 5.8rem; - border-radius: 50%; - overflow: hidden; - height: 5.8rem; - margin-right: 2rem; - position: relative; - backface-visibility: hidden; - - &::before { - content: ''; - display: block; - height: 100%; - width: 100%; - position: absolute; - top: 0; - left: 0; - background-image: linear-gradient( - to right bottom, - $color-grad-1, - $color-grad-2 - ); - opacity: 0.4; - } - - img { - display: block; - width: 100%; - height: 100%; - object-fit: cover; - transition: all 0.3s; - } - } - - &__data { - display: grid; - width: 100%; - grid-template-columns: 1fr 2rem; - row-gap: 0.1rem; - align-items: center; - } - - &__title { - grid-column: 1/-1; - font-size: 1.45rem; - color: $color-primary; - text-transform: uppercase; - font-weight: 600; - - // This is how text is truncated! - text-overflow: ellipsis; - max-width: 25rem; - white-space: nowrap; - overflow: hidden; - } - - &__publisher { - font-size: 1.15rem; - color: $color-grey-dark-2; - text-transform: uppercase; - font-weight: 600; - } - - &__user-generated { - background-color: darken($color-grey-light-2, 2%); - - display: flex; - align-items: center; - justify-content: center; - height: 2rem; - width: 2rem; - border-radius: 10rem; - - margin-left: auto; - margin-right: 1.75rem; - - svg { - height: 1.2rem; - width: 1.2rem; - fill: $color-primary; - } - } -} diff --git a/18-forkify/final/src/sass/_recipe.scss b/18-forkify/final/src/sass/_recipe.scss deleted file mode 100644 index b6e72fe6f8..0000000000 --- a/18-forkify/final/src/sass/_recipe.scss +++ /dev/null @@ -1,179 +0,0 @@ -.recipe { - background-color: $color-grey-light-1; - - /////////// - // FIGURE - &__fig { - height: 32rem; - position: relative; - // transform: scale(1.04) translateY(-1px); - transform-origin: top; - - &::before { - content: ''; - display: block; - height: 100%; - width: 100%; - position: absolute; - top: 0; - left: 0; - background-image: linear-gradient( - to right bottom, - $color-grad-1, - $color-grad-2 - ); - opacity: 0.6; - } - } - - &__img { - width: 100%; - display: block; - height: 100%; - object-fit: cover; - } - - &__title { - position: absolute; - bottom: 0; - left: 50%; - transform: translate(-50%, 20%) skewY(-6deg); - color: #fff; - font-weight: 700; - font-size: 3.25rem; - text-transform: uppercase; - width: 50%; - line-height: 1.95; - text-align: center; - - span { - -webkit-box-decoration-break: clone; - box-decoration-break: clone; - padding: 1.3rem 2rem; - background-image: linear-gradient( - to right bottom, - $color-grad-1, - $color-grad-2 - ); - } - - @media only screen and (max-width: $bp-medium) { - width: 70%; - } - } - - /////////// - // DETAILS - &__details { - display: flex; - align-items: center; - padding: 7.5rem 8rem 3.5rem 8rem; - } - - &__info { - font-size: 1.65rem; - text-transform: uppercase; - display: flex; - align-items: center; - - &:not(:last-child) { - margin-right: 4.5rem; - } - } - - &__info-icon { - height: 2.35rem; - width: 2.35rem; - fill: $color-primary; - margin-right: 1.15rem; - } - - &__info-data { - margin-right: 0.5rem; - font-weight: 700; - } - - &__info-buttons { - display: flex; - margin-left: 1.6rem; - transform: translateY(-1px); - } - - &__user-generated { - background-color: darken($color-grey-light-2, 2%); - - display: flex; - align-items: center; - justify-content: center; - height: 4rem; - width: 4rem; - border-radius: 10rem; - - margin-left: auto; - margin-right: 1.75rem; - - svg { - height: 2.25rem; - width: 2.25rem; - fill: $color-primary; - } - } - - /////////// - // INGREDIENTS - &__ingredients { - padding: 5rem 8rem; - font-size: 1.6rem; - line-height: 1.4; - background-color: $color-grey-light-2; - display: flex; - flex-direction: column; - align-items: center; - } - - &__ingredient-list { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 2.5rem 3rem; - list-style: none; - } - - &__ingredient { - display: flex; - } - - &__icon { - height: 2rem; - width: 2rem; - fill: $color-primary; - margin-right: 1.1rem; - flex: 0 0 auto; - margin-top: 0.1rem; - } - - &__quantity { - margin-right: 0.5rem; - flex: 0 0 auto; - } - - /////////// - // DIRECTIONS - &__directions { - padding: 5rem 10rem; - padding-bottom: 5rem; - display: flex; - flex-direction: column; - align-items: center; - } - - &__directions-text { - font-size: 1.7rem; - text-align: center; - margin-bottom: 3.5rem; - color: $color-grey-dark-2; - } - - &__publisher { - font-weight: 700; - } -} diff --git a/18-forkify/final/src/sass/_searchResults.scss b/18-forkify/final/src/sass/_searchResults.scss deleted file mode 100644 index e8f2105a81..0000000000 --- a/18-forkify/final/src/sass/_searchResults.scss +++ /dev/null @@ -1,42 +0,0 @@ -.search-results { - padding: 3rem 0; - display: flex; - flex-direction: column; -} - -.results { - list-style: none; - margin-bottom: 2rem; -} - -.pagination { - margin-top: auto; - padding: 0 3.5rem; - - &::after { - content: ''; - display: table; - clear: both; - } - - &__btn { - &--prev { - float: left; - } - &--next { - float: right; - } - } -} - -.copyright { - color: $color-grey-dark-2; - font-size: 1.2rem; - padding: 0 3.5rem; - margin-top: 4rem; - - .twitter-link:link, - .twitter-link:visited { - color: $color-grey-dark-2; - } -} diff --git a/18-forkify/final/src/sass/_upload.scss b/18-forkify/final/src/sass/_upload.scss deleted file mode 100644 index d724828532..0000000000 --- a/18-forkify/final/src/sass/_upload.scss +++ /dev/null @@ -1,99 +0,0 @@ -.add-recipe-window { - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 100rem; - background-color: white; - border-radius: 9px; - - padding: 5rem 6rem; - box-shadow: 0 4rem 6rem rgba(0, 0, 0, 0.25); - z-index: 1000; - transition: all 0.5s; - - .btn--close-modal { - font-family: inherit; - color: inherit; - position: absolute; - top: 0.5rem; - right: 1.6rem; - font-size: 3.5rem; - cursor: pointer; - border: none; - background: none; - } -} - -.overlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.4); - backdrop-filter: blur(4px); - z-index: 100; - transition: all 0.5s; -} - -.hidden { - visibility: hidden; - opacity: 0; -} - -.upload { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 4rem 6rem; - - &__column { - display: grid; - grid-template-columns: 1fr 2.8fr; - align-items: center; - gap: 1.5rem; - - & label { - font-size: 1.5rem; - font-weight: 600; - color: inherit; - } - - & input { - font-size: 1.5rem; - padding: 0.8rem 1rem; - border: 1px solid #ddd; - border-radius: 0.5rem; - transition: all 0.2s; - - &::placeholder { - color: $color-grey-light-3; - } - - &:focus { - outline: none; - border: 1px solid $color-primary; - background-color: $color-grey-light-1; - } - } - - & button { - grid-column: 1 / span 2; - justify-self: center; - margin-top: 1rem; - } - } - - &__heading { - font-size: 2.25rem; - font-weight: 700; - text-transform: uppercase; - margin-bottom: 1rem; - grid-column: 1/-1; - } - - &__btn { - grid-column: 1 / -1; - justify-self: center; - } -} diff --git a/18-forkify/final/src/sass/main.scss b/18-forkify/final/src/sass/main.scss deleted file mode 100644 index aa5be961d0..0000000000 --- a/18-forkify/final/src/sass/main.scss +++ /dev/null @@ -1,7 +0,0 @@ -@import 'http://github.com/base'; -@import 'http://github.com/components'; -@import 'http://github.com/header'; -@import 'http://github.com/preview'; -@import 'http://github.com/searchResults'; -@import 'http://github.com/recipe'; -@import 'http://github.com/upload'; diff --git a/18-forkify/starter/.prettierrc b/18-forkify/starter/.prettierrc deleted file mode 100644 index b4f8e6a6a1..0000000000 --- a/18-forkify/starter/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/18-forkify/starter/forkify-architecture-recipe-loading.png b/18-forkify/starter/forkify-architecture-recipe-loading.png deleted file mode 100644 index 7d042b3e6f..0000000000 Binary files a/18-forkify/starter/forkify-architecture-recipe-loading.png and /dev/null differ diff --git a/18-forkify/starter/forkify-flowchart-part-1.png b/18-forkify/starter/forkify-flowchart-part-1.png deleted file mode 100644 index ac5d1a428e..0000000000 Binary files a/18-forkify/starter/forkify-flowchart-part-1.png and /dev/null differ diff --git a/18-forkify/starter/forkify-flowchart-part-2.png b/18-forkify/starter/forkify-flowchart-part-2.png deleted file mode 100644 index 9336bc82ce..0000000000 Binary files a/18-forkify/starter/forkify-flowchart-part-2.png and /dev/null differ diff --git a/18-forkify/starter/forkify-flowchart-part-3.png b/18-forkify/starter/forkify-flowchart-part-3.png deleted file mode 100644 index d9a2c5963f..0000000000 Binary files a/18-forkify/starter/forkify-flowchart-part-3.png and /dev/null differ diff --git a/18-forkify/starter/index.html b/18-forkify/starter/index.html deleted file mode 100755 index 0f977f51f7..0000000000 --- a/18-forkify/starter/index.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - - - - - - - - forkify // Search over 1,000,000 recipes - - - -
    -
    - - - - -
    - -
    -
      - -
    - - - - -
    - -
    -
    -
    - - - -
    -

    Start by searching for a recipe or an ingredient. Have fun!

    -
    - - - - - - -
    -
    - - - - - diff --git a/18-forkify/starter/src/img/icons.svg b/18-forkify/starter/src/img/icons.svg deleted file mode 100644 index 20e918a168..0000000000 --- a/18-forkify/starter/src/img/icons.svg +++ /dev/null @@ -1,60 +0,0 @@ - diff --git a/18-forkify/starter/src/js/controller.js b/18-forkify/starter/src/js/controller.js deleted file mode 100644 index 8a04467716..0000000000 --- a/18-forkify/starter/src/js/controller.js +++ /dev/null @@ -1,14 +0,0 @@ -const recipeContainer = document.querySelector('.recipe'); - -const timeout = function (s) { - return new Promise(function (_, reject) { - setTimeout(function () { - reject(new Error(`Request took too long! Timeout after ${s} second`)); - }, s * 1000); - }); -}; - -// NEW API URL (instead of the one shown in the video) -// https://forkify-api.jonas.io - -/////////////////////////////////////// diff --git a/18-forkify/starter/src/sass/_base.scss b/18-forkify/starter/src/sass/_base.scss deleted file mode 100644 index 16dec6b1f2..0000000000 --- a/18-forkify/starter/src/sass/_base.scss +++ /dev/null @@ -1,71 +0,0 @@ -// $color-primary: #f59a83; -$color-primary: #f38e82; -$color-grad-1: #fbdb89; -$color-grad-2: #f48982; - -$color-grey-light-1: #f9f5f3; // Light background -$color-grey-light-2: #f2efee; // Light lines -$color-grey-light-3: #d3c7c3; // Light text (placeholder) -$color-grey-dark-1: #615551; // Normal text -$color-grey-dark-2: #918581; // Lighter text - -$gradient: linear-gradient(to right bottom, $color-grad-1, $color-grad-2); - -$bp-large: 78.15em; // 1250px -$bp-medium: 61.25em; // 980px -$bp-small: 37.5em; // 600px -$bp-smallest: 31.25em; // 500px - -* { - margin: 0; - padding: 0; -} - -*, -*::before, -*::after { - box-sizing: inherit; -} - -html { - box-sizing: border-box; - font-size: 62.5%; - - @media only screen and (max-width: $bp-medium) { - font-size: 50%; - } -} - -body { - font-family: 'Nunito Sans', sans-serif; - font-weight: 400; - line-height: 1.6; - color: $color-grey-dark-1; - background-image: $gradient; - background-size: cover; - background-repeat: no-repeat; - min-height: calc(100vh - 2 * 4vw); -} - -.container { - max-width: 120rem; - min-height: 117rem; - margin: 4vw auto; - background-color: #fff; - border-radius: 9px; - overflow: hidden; - box-shadow: 0 2rem 6rem 0.5rem rgba($color-grey-dark-1, 0.2); - - display: grid; - grid-template-rows: 10rem minmax(100rem, auto); - grid-template-columns: 1fr 2fr; - grid-template-areas: - 'head head' - 'list recipe'; - - @media only screen and (max-width: $bp-large) { - max-width: 100%; - margin: 0; - border-radius: 0; - } -} diff --git a/18-forkify/starter/src/sass/_components.scss b/18-forkify/starter/src/sass/_components.scss deleted file mode 100644 index f8612eb9bc..0000000000 --- a/18-forkify/starter/src/sass/_components.scss +++ /dev/null @@ -1,213 +0,0 @@ -%btn { - background-image: $gradient; - border-radius: 10rem; - border: none; - text-transform: uppercase; - color: #fff; - cursor: pointer; - display: flex; - align-items: center; - transition: all 0.2s; - - &:hover { - transform: scale(1.05); - } - - &:focus { - outline: none; - } - - & > *:first-child { - margin-right: 1rem; - } -} - -.btn { - @extend %btn; - - padding: 1.5rem 4rem; - font-size: 1.5rem; - font-weight: 600; - - svg { - height: 2.25rem; - width: 2.25rem; - fill: currentColor; - } -} - -.btn--small { - &, - &:link, - &:visited { - @extend %btn; - - font-size: 1.4rem; - font-weight: 600; - padding: 1.25rem 2.25rem; - text-decoration: none; - - svg { - height: 1.75rem; - width: 1.75rem; - fill: currentColor; - } - } -} - -.btn--inline { - color: $color-primary; - font-size: 1.3rem; - font-weight: 600; - border: none; - background-color: $color-grey-light-1; - padding: 0.8rem 1.2rem; - border-radius: 10rem; - cursor: pointer; - - display: flex; - align-items: center; - transition: all 0.2s; - - svg { - height: 1.6rem; - width: 1.6rem; - fill: currentColor; - margin: 0 0.2rem; - } - - span { - margin: 0 0.4rem; - } - - &:hover { - color: $color-grad-2; - background-color: $color-grey-light-2; - } - - &:focus { - outline: none; - } -} - -.btn--round { - background-image: $gradient; - border-radius: 50%; - border: none; - cursor: pointer; - height: 4.5rem; - width: 4.5rem; - // margin-left: auto; - transition: all 0.2s; - - display: flex; - align-items: center; - justify-content: center; - - &:hover { - transform: scale(1.07); - } - - &:focus { - outline: none; - } - - svg { - height: 2.5rem; - width: 2.5rem; - fill: #fff; - } -} - -.btn--tiny { - height: 2rem; - width: 2rem; - border: none; - background: none; - cursor: pointer; - - svg { - height: 100%; - width: 100%; - fill: $color-primary; - transition: all 0.3s; - } - - &:focus { - outline: none; - } - - &:hover svg { - fill: $color-grad-2; - transform: translateY(-1px); - } - - &:active svg { - fill: $color-grad-2; - transform: translateY(0); - } - - &:not(:last-child) { - margin-right: 0.3rem; - } -} - -.heading--2 { - font-size: 2rem; - font-weight: 700; - color: $color-primary; - text-transform: uppercase; - margin-bottom: 2.5rem; - text-align: center; - // transform: skewY(-3deg); -} - -.link:link, -.link:visited { - color: $color-grey-dark-2; -} - -.spinner { - margin: 5rem auto; - text-align: center; - - svg { - height: 6rem; - width: 6rem; - fill: $color-primary; - animation: rotate 2s infinite linear; - } -} - -@keyframes rotate { - 0% { - transform: rotate(0); - } - - 100% { - transform: rotate(360deg); - } -} - -.message, -.error { - max-width: 40rem; - margin: 0 auto; - padding: 5rem 4rem; - - display: flex; - - svg { - height: 3rem; - width: 3rem; - fill: $color-primary; - transform: translateY(-0.3rem); - } - - p { - margin-left: 1.5rem; - font-size: 1.8rem; - line-height: 1.5; - font-weight: 600; - } -} diff --git a/18-forkify/starter/src/sass/_header.scss b/18-forkify/starter/src/sass/_header.scss deleted file mode 100644 index 0054c62993..0000000000 --- a/18-forkify/starter/src/sass/_header.scss +++ /dev/null @@ -1,144 +0,0 @@ -.header { - grid-area: head; - background-color: $color-grey-light-1; - display: flex; - align-items: center; - justify-content: space-between; - - &__logo { - margin-left: 4rem; - height: 4.6rem; - display: block; - } -} - -.search { - background-color: #fff; - border-radius: 10rem; - display: flex; - align-items: center; - padding-left: 3rem; - transition: all 0.3s; - - &:focus-within { - transform: translateY(-2px); - box-shadow: 0 0.7rem 3rem rgba($color-grey-dark-1, 0.08); - } - - &__field { - border: none; - background: none; - font-family: inherit; - color: inherit; - font-size: 1.7rem; - width: 30rem; - - &:focus { - outline: none; - } - - &::placeholder { - color: $color-grey-light-3; - } - - @media only screen and (max-width: $bp-medium) { - width: auto; - - &::placeholder { - color: white; - } - } - } - - &__btn { - font-weight: 600; - font-family: inherit; - } -} - -.nav { - align-self: stretch; - margin-right: 2.5rem; - - &__list { - list-style: none; - display: flex; - height: 100%; - } - - &__item { - position: relative; - } - - &__btn { - height: 100%; - font-family: inherit; - color: inherit; - font-size: 1.4rem; - font-weight: 700; - text-transform: uppercase; - background: none; - border: none; - cursor: pointer; - padding: 0 1.5rem; - transition: all 0.3s; - - display: flex; - align-items: center; - - svg { - height: 2.4rem; - width: 2.4rem; - fill: $color-primary; - margin-right: 0.7rem; - transform: translateY(-1px); - } - - &:focus { - outline: none; - } - - &:hover { - background-color: $color-grey-light-2; - } - } -} - -.bookmarks { - padding: 1rem 0; - position: absolute; - // right: 0; - right: -2.5rem; - z-index: 10; - width: 40rem; - background-color: #fff; - box-shadow: 0 0.8rem 5rem 2rem rgba($color-grey-dark-1, 0.1); - - visibility: hidden; - opacity: 0; - transition: all 0.5s 0.2s; - - &__list { - list-style: none; - } - - &__field { - cursor: pointer; - padding: 0 4rem; - - display: flex; - align-items: center; - height: 100%; - transition: all 0.3s; - - &:hover { - background-color: $color-grey-light-2; - } - } - - &:hover, - .nav__btn--bookmarks:hover + & { - visibility: visible; - opacity: 1; - } -} diff --git a/18-forkify/starter/src/sass/_preview.scss b/18-forkify/starter/src/sass/_preview.scss deleted file mode 100644 index f10c0086d9..0000000000 --- a/18-forkify/starter/src/sass/_preview.scss +++ /dev/null @@ -1,105 +0,0 @@ -.preview { - &__link { - &:link, - &:visited { - display: flex; - align-items: center; - padding: 1.5rem 3.25rem; - transition: all 0.3s; - border-right: 1px solid #fff; - text-decoration: none; - } - - &:hover { - background-color: $color-grey-light-1; - transform: translateY(-2px); - } - - &--active { - background-color: $color-grey-light-1; - } - } - - &__fig { - flex: 0 0 5.8rem; - border-radius: 50%; - overflow: hidden; - height: 5.8rem; - margin-right: 2rem; - position: relative; - backface-visibility: hidden; - - &::before { - content: ''; - display: block; - height: 100%; - width: 100%; - position: absolute; - top: 0; - left: 0; - background-image: linear-gradient( - to right bottom, - $color-grad-1, - $color-grad-2 - ); - opacity: 0.4; - } - - img { - display: block; - width: 100%; - height: 100%; - object-fit: cover; - transition: all 0.3s; - } - } - - &__data { - display: grid; - width: 100%; - grid-template-columns: 1fr 2rem; - row-gap: 0.1rem; - align-items: center; - } - - &__title { - grid-column: 1/-1; - font-size: 1.45rem; - color: $color-primary; - text-transform: uppercase; - font-weight: 600; - - // This is how text is truncated! - text-overflow: ellipsis; - max-width: 25rem; - white-space: nowrap; - overflow: hidden; - } - - &__publisher { - font-size: 1.15rem; - color: $color-grey-dark-2; - text-transform: uppercase; - font-weight: 600; - } - - &__user-generated { - background-color: darken($color-grey-light-2, 2%); - - display: flex; - align-items: center; - justify-content: center; - height: 2rem; - width: 2rem; - border-radius: 10rem; - - margin-left: auto; - margin-right: 1.75rem; - - svg { - height: 1.2rem; - width: 1.2rem; - fill: $color-primary; - } - } -} diff --git a/18-forkify/starter/src/sass/_recipe.scss b/18-forkify/starter/src/sass/_recipe.scss deleted file mode 100644 index b6e72fe6f8..0000000000 --- a/18-forkify/starter/src/sass/_recipe.scss +++ /dev/null @@ -1,179 +0,0 @@ -.recipe { - background-color: $color-grey-light-1; - - /////////// - // FIGURE - &__fig { - height: 32rem; - position: relative; - // transform: scale(1.04) translateY(-1px); - transform-origin: top; - - &::before { - content: ''; - display: block; - height: 100%; - width: 100%; - position: absolute; - top: 0; - left: 0; - background-image: linear-gradient( - to right bottom, - $color-grad-1, - $color-grad-2 - ); - opacity: 0.6; - } - } - - &__img { - width: 100%; - display: block; - height: 100%; - object-fit: cover; - } - - &__title { - position: absolute; - bottom: 0; - left: 50%; - transform: translate(-50%, 20%) skewY(-6deg); - color: #fff; - font-weight: 700; - font-size: 3.25rem; - text-transform: uppercase; - width: 50%; - line-height: 1.95; - text-align: center; - - span { - -webkit-box-decoration-break: clone; - box-decoration-break: clone; - padding: 1.3rem 2rem; - background-image: linear-gradient( - to right bottom, - $color-grad-1, - $color-grad-2 - ); - } - - @media only screen and (max-width: $bp-medium) { - width: 70%; - } - } - - /////////// - // DETAILS - &__details { - display: flex; - align-items: center; - padding: 7.5rem 8rem 3.5rem 8rem; - } - - &__info { - font-size: 1.65rem; - text-transform: uppercase; - display: flex; - align-items: center; - - &:not(:last-child) { - margin-right: 4.5rem; - } - } - - &__info-icon { - height: 2.35rem; - width: 2.35rem; - fill: $color-primary; - margin-right: 1.15rem; - } - - &__info-data { - margin-right: 0.5rem; - font-weight: 700; - } - - &__info-buttons { - display: flex; - margin-left: 1.6rem; - transform: translateY(-1px); - } - - &__user-generated { - background-color: darken($color-grey-light-2, 2%); - - display: flex; - align-items: center; - justify-content: center; - height: 4rem; - width: 4rem; - border-radius: 10rem; - - margin-left: auto; - margin-right: 1.75rem; - - svg { - height: 2.25rem; - width: 2.25rem; - fill: $color-primary; - } - } - - /////////// - // INGREDIENTS - &__ingredients { - padding: 5rem 8rem; - font-size: 1.6rem; - line-height: 1.4; - background-color: $color-grey-light-2; - display: flex; - flex-direction: column; - align-items: center; - } - - &__ingredient-list { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 2.5rem 3rem; - list-style: none; - } - - &__ingredient { - display: flex; - } - - &__icon { - height: 2rem; - width: 2rem; - fill: $color-primary; - margin-right: 1.1rem; - flex: 0 0 auto; - margin-top: 0.1rem; - } - - &__quantity { - margin-right: 0.5rem; - flex: 0 0 auto; - } - - /////////// - // DIRECTIONS - &__directions { - padding: 5rem 10rem; - padding-bottom: 5rem; - display: flex; - flex-direction: column; - align-items: center; - } - - &__directions-text { - font-size: 1.7rem; - text-align: center; - margin-bottom: 3.5rem; - color: $color-grey-dark-2; - } - - &__publisher { - font-weight: 700; - } -} diff --git a/18-forkify/starter/src/sass/_searchResults.scss b/18-forkify/starter/src/sass/_searchResults.scss deleted file mode 100644 index e8f2105a81..0000000000 --- a/18-forkify/starter/src/sass/_searchResults.scss +++ /dev/null @@ -1,42 +0,0 @@ -.search-results { - padding: 3rem 0; - display: flex; - flex-direction: column; -} - -.results { - list-style: none; - margin-bottom: 2rem; -} - -.pagination { - margin-top: auto; - padding: 0 3.5rem; - - &::after { - content: ''; - display: table; - clear: both; - } - - &__btn { - &--prev { - float: left; - } - &--next { - float: right; - } - } -} - -.copyright { - color: $color-grey-dark-2; - font-size: 1.2rem; - padding: 0 3.5rem; - margin-top: 4rem; - - .twitter-link:link, - .twitter-link:visited { - color: $color-grey-dark-2; - } -} diff --git a/18-forkify/starter/src/sass/_upload.scss b/18-forkify/starter/src/sass/_upload.scss deleted file mode 100644 index d724828532..0000000000 --- a/18-forkify/starter/src/sass/_upload.scss +++ /dev/null @@ -1,99 +0,0 @@ -.add-recipe-window { - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 100rem; - background-color: white; - border-radius: 9px; - - padding: 5rem 6rem; - box-shadow: 0 4rem 6rem rgba(0, 0, 0, 0.25); - z-index: 1000; - transition: all 0.5s; - - .btn--close-modal { - font-family: inherit; - color: inherit; - position: absolute; - top: 0.5rem; - right: 1.6rem; - font-size: 3.5rem; - cursor: pointer; - border: none; - background: none; - } -} - -.overlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.4); - backdrop-filter: blur(4px); - z-index: 100; - transition: all 0.5s; -} - -.hidden { - visibility: hidden; - opacity: 0; -} - -.upload { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 4rem 6rem; - - &__column { - display: grid; - grid-template-columns: 1fr 2.8fr; - align-items: center; - gap: 1.5rem; - - & label { - font-size: 1.5rem; - font-weight: 600; - color: inherit; - } - - & input { - font-size: 1.5rem; - padding: 0.8rem 1rem; - border: 1px solid #ddd; - border-radius: 0.5rem; - transition: all 0.2s; - - &::placeholder { - color: $color-grey-light-3; - } - - &:focus { - outline: none; - border: 1px solid $color-primary; - background-color: $color-grey-light-1; - } - } - - & button { - grid-column: 1 / span 2; - justify-self: center; - margin-top: 1rem; - } - } - - &__heading { - font-size: 2.25rem; - font-weight: 700; - text-transform: uppercase; - margin-bottom: 1rem; - grid-column: 1/-1; - } - - &__btn { - grid-column: 1 / -1; - justify-self: center; - } -} diff --git a/18-forkify/starter/src/sass/main.scss b/18-forkify/starter/src/sass/main.scss deleted file mode 100644 index aa5be961d0..0000000000 --- a/18-forkify/starter/src/sass/main.scss +++ /dev/null @@ -1,7 +0,0 @@ -@import 'http://github.com/base'; -@import 'http://github.com/components'; -@import 'http://github.com/header'; -@import 'http://github.com/preview'; -@import 'http://github.com/searchResults'; -@import 'http://github.com/recipe'; -@import 'http://github.com/upload'; diff --git a/2-JS-basics/.DS_Store b/2-JS-basics/.DS_Store new file mode 100755 index 0000000000..e238e9d425 Binary files /dev/null and b/2-JS-basics/.DS_Store differ diff --git a/2-JS-basics/final/.DS_Store b/2-JS-basics/final/.DS_Store new file mode 100755 index 0000000000..5008ddfcf5 Binary files /dev/null and b/2-JS-basics/final/.DS_Store differ diff --git a/2-JS-basics/final/index.html b/2-JS-basics/final/index.html new file mode 100755 index 0000000000..5d0dd91513 --- /dev/null +++ b/2-JS-basics/final/index.html @@ -0,0 +1,13 @@ + + + + + Section 2: JavaScript Language Basics + + + +

    Section 2: JavaScript Language Basics

    + + + + \ No newline at end of file diff --git a/2-JS-basics/final/script.js b/2-JS-basics/final/script.js new file mode 100644 index 0000000000..c7ea7da6ad --- /dev/null +++ b/2-JS-basics/final/script.js @@ -0,0 +1,736 @@ +/***************************** +* Variables and data types +*/ +/* +var firstName = 'John'; +console.log(firstName); + +var lastName = 'Smith'; +var age = 28; + +var fullAge = true; +console.log(fullAge); + +var job; +console.log(job); + +job = 'Teacher'; +console.log(job); + +// Variable naming rules +var _3years = 3; +var johnMark = 'John and MArk'; +var if = 23; +*/ + + + +/***************************** +* Variable mutation and type coercion +*/ +/* +var firstName = 'John'; +var age = 28; + +// Type coercion +console.log(firstName + ' ' + age); + +var job, isMarried; +job = 'teacher'; +isMarried = false; + +console.log(firstName + ' is a ' + age + ' year old ' + job + '. Is he married? ' + isMarried); + +// Variable mutation +age = 'twenty eight'; +job = 'driver'; + +alert(firstName + ' is a ' + age + ' year old ' + job + '. Is he married? ' + isMarried); + +var lastName = prompt('What is his last Name?'); +console.log(firstName + ' ' + lastName); +*/ + + + +/***************************** +* Basic operators +*/ +/* +var year, yearJohn, yearMark; +now = 2018; +ageJohn = 28; +ageMark = 33; + +// Math operators +yearJohn = now - ageJohn; +yeahMark = now - ageMark; + +console.log(yearJohn); + +console.log(now + 2); +console.log(now * 2); +console.log(now / 10); + + +// Logical operators +var johnOlder = ageJohn < ageMark; +console.log(johnOlder); + + +// typeof operator +console.log(typeof johnOlder); +console.log(typeof ageJohn); +console.log(typeof 'Mark is older tha John'); +var x; +console.log(typeof x); +*/ + + + +/***************************** +* Operator precedence +*/ +/* +var now = 2018; +var yearJohn = 1989; +var fullAge = 18; + +// Multiple operators +var isFullAge = now - yearJohn >= fullAge; // true +console.log(isFullAge); + +// Grouping +var ageJohn = now - yearJohn; +var ageMark = 35; +var average = (ageJohn + ageMark) / 2; +console.log(average); + +// Multiple assignments +var x, y; +x = y = (3 + 5) * 4 - 6; // 8 * 4 - 6 // 32 - 6 // 26 +console.log(x, y); + + +// More operators +x *= 2; +console.log(x); +x += 10; +console.log(x); +x--; +console.log(x); +*/ + + + +/***************************** +* CODING CHALLENGE 1 +*/ + +/* +Mark and John are trying to compare their BMI (Body Mass Index), which is calculated using the formula: BMI = mass / height^2 = mass / (height * height). (mass in kg and height in meter). + +1. Store Mark's and John's mass and height in variables +2. Calculate both their BMIs +3. Create a boolean variable containing information about whether Mark has a higher BMI than John. +4. Print a string to the console containing the variable from step 3. (Something like "Is Mark's BMI higher than John's? true"). + +GOOD LUCK 😀 +*/ +/* +var massMark = 78; // kg +var heightMark = 1.69; // meters + +var massJohn = 92; +var heightJohn = 1.95; + +var BMIMark = massMark / (heightMark * heightMark); +var BMIJohn = massJohn / (heightJohn * heightJohn); +console.log(BMIMark, BMIJohn); + +var markHigherBMI = BMIMark > BMIJohn; +console.log('Is Mark\'s BMI higher than John\'s? ' + markHigherBMI); +*/ + + + +/***************************** +* If / else statements +*/ +/* +var firstName = 'John'; +var civilStatus = 'single'; + +if (civilStatus === 'married') { + console.log(firstName + ' is married!'); +} else { + console.log(firstName + ' will hopefully marry soon :)'); +} + + +var isMarried = true; +if (isMarried) { + console.log(firstName + ' is married!'); +} else { + console.log(firstName + ' will hopefully marry soon :)'); +} + +var massMark = 78; // kg +var heightMark = 1.69; // meters + +var massJohn = 92; +var heightJohn = 1.95; + +var BMIMark = massMark / (heightMark * heightMark); +var BMIJohn = massJohn / (heightJohn * heightJohn); + +if (BMIMark > BMIJohn) { + console.log('Mark\'s BMI is higher than John\'s.'); +} else { + console.log('John\'s BMI is higher than Marks\'s.'); +} +*/ + + + +/***************************** +* Boolean logic +*/ +/* +var firstName = 'John'; +var age = 20; + +if (age < 13) { + console.log(firstName + ' is a boy.'); +} else if (age >= 13 && age < 20) { + console.log(firstName + ' is a teenager.'); +} else if (age >= 20 && age < 30) { + console.log(firstName + ' is a young man.'); +} else { + console.log(firstName + ' is a man.'); +} +*/ + + + +/***************************** +* The Ternary Operator and Switch Statements +*/ +/* +var firstName = 'John'; +var age = 14; + +// Ternary operator +age >= 18 ? console.log(firstName + ' drinks beer.') : console.log(firstName + ' drinks juice.'); + +var drink = age >= 18 ? 'beer' : 'juice'; +console.log(drink); + +(if (age >= 18) { + var drink = 'beer'; +} else { + var drink = 'juice'; +} + +// Switch statement +var job = 'instructor'; +switch (job) { + case 'teacher': + case 'instructor': + console.log(firstName + ' teaches kids how to code.'); + break; + case 'driver': + console.log(firstName + ' drives an uber in Lisbon.'); + break; + case 'designer': + console.log(firstName + ' designs beautiful websites.'); + break; + default: + console.log(firstName + ' does something else.'); +} + +age = 56; +switch (true) { + case age < 13: + console.log(firstName + ' is a boy.'); + break; + case age >= 13 && age < 20: + console.log(firstName + ' is a teenager.'); + break; + case age >= 20 && age < 30: + console.log(firstName + ' is a young man.'); + break; + default: + console.log(firstName + ' is a man.'); +} +*/ + + + +/***************************** +* Truthy and Falsy values and equality operators +*/ +/* +// falsy values: undefined, null, 0, '', NaN +// truthy values: NOT falsy values + +var height; + +height = 23; + +if (height || height === 0) { + console.log('Variable is defined'); +} else { + console.log('Variable has NOT been defined'); +} + +// Equality operators +if (height === '23') { + console.log('The == operator does type coercion!'); +} +*/ + + + +/***************************** +* CODING CHALLENGE 2 +*/ + +/* +John and Mike both play basketball in different teams. In the latest 3 games, John's team scored 89, 120 and 103 points, while Mike's team scored 116, 94 and 123 points. + +1. Calculate the average score for each team +2. Decide which teams wins in average (highest average score), and print the winner to the console. Also include the average score in the output. +3. Then change the scores to show different winners. Don't forget to take into account there might be a draw (the same average score) + +4. EXTRA: Mary also plays basketball, and her team scored 97, 134 and 105 points. Like before, log the average winner to the console. HINT: you will need the && operator to take the decision. If you can't solve this one, just watch the solution, it's no problem :) +5. Like before, change the scores to generate different winners, keeping in mind there might be draws. + +GOOD LUCK 😀 +*/ +/* +var scoreJohn = (189 + 120 + 103) / 3; +var scoreMike = (129 + 94 + 123) / 3; +var scoreMary = (97 + 134 + 105) / 3; +console.log(scoreJohn, scoreMike, scoreMary); + +if (scoreJohn > scoreMike && scoreJohn > scoreMary) { + console.log('John\'s team wins with ' + scoreJohn + ' points'); +} else if (scoreMike > scoreJohn && scoreMike > scoreMary) { + console.log('Mike\'s team wins with ' + scoreMike + ' points'); +} else if (scoreMary > scoreJohn && scoreMary > scoreMike) { + console.log('Mary\'s team wins with ' + scoreMary + ' points'); +} else { + console.log('There is a draw'); +} + + +if (scoreJohn > scoreMike) { + console.log('John\'s team wins with ' + scoreJohn + ' points'); +} else if (scoreMike > scoreJohn) { + console.log('Mike\'s team wins with ' + scoreMike + ' points'); +} else { + console.log('There is a draw'); +} +*/ + + + +/***************************** +* Functions +*/ +/* +function calculateAge(birthYear) { + return 2018 - birthYear; +} + +var ageJohn = calculateAge(1990); +var ageMike = calculateAge(1948); +var ageJane = calculateAge(1969); +console.log(ageJohn, ageMike, ageJane); + + +function yearsUntilRetirement(year, firstName) { + var age = calculateAge(year); + var retirement = 65 - age; + + if (retirement > 0) { + console.log(firstName + ' retires in ' + retirement + ' years.'); + } else { + console.log(firstName + ' is already retired.') + } + +} + +yearsUntilRetirement(1990, 'John'); +yearsUntilRetirement(1948, 'Mike'); +yearsUntilRetirement(1969, 'Jane'); +*/ + + + +/***************************** +* Function Statements and Expressions +*/ +/* +// Function declaration +// function whatDoYouDo(job, firstName) {} + +// Function expression +var whatDoYouDo = function(job, firstName) { + switch(job) { + case 'teacher': + return firstName + ' teaches kids how to code'; + case 'driver': + return firstName + ' drives a cab in Lisbon.' + case 'designer': + return firstName + ' designs beautiful websites'; + default: + return firstName + ' does something else'; + } +} + +console.log(whatDoYouDo('teacher', 'John')); +console.log(whatDoYouDo('designer', 'Jane')); +console.log(whatDoYouDo('retired', 'Mark')); +*/ + + + +/***************************** +* Arrays +*/ +/* +// Initialize new array +var names = ['John', 'Mark', 'Jane']; +var years = new Array(1990, 1969, 1948); + +console.log(names[2]); +console.log(names.length); + +// Mutate array data +names[1] = 'Ben'; +names[names.length] = 'Mary'; +console.log(names); + +// Different data types +var john = ['John', 'Smith', 1990, 'designer', false]; + +john.push('blue'); +john.unshift('Mr.'); +console.log(john); + +john.pop(); +john.pop(); +john.shift(); +console.log(john); + +console.log(john.indexOf(23)); + +var isDesigner = john.indexOf('designer') === -1 ? 'John is NOT a designer' : 'John IS a designer'; +console.log(isDesigner); +*/ + + + +/***************************** +* CODING CHALLENGE 3 +*/ + +/* +John and his family went on a holiday and went to 3 different restaurants. The bills were $124, $48 and $268. + +To tip the waiter a fair amount, John created a simple tip calculator (as a function). He likes to tip 20% of the bill when the bill is less than $50, 15% when the bill is between $50 and $200, and 10% if the bill is more than $200. + +In the end, John would like to have 2 arrays: +1) Containing all three tips (one for each bill) +2) Containing all three final paid amounts (bill + tip). + +(NOTE: To calculate 20% of a value, simply multiply it with 20/100 = 0.2) + +GOOD LUCK 😀 +*/ +/* +function tipCalculator(bill) { + var percentage; + if (bill < 50) { + percentage = .2; + } else if (bill >= 50 && bill < 200) { + percentage = .15; + } else { + percentage = .1; + } + return percentage * bill; +} + +var bills = [124, 48, 268]; +var tips = [tipCalculator(bills[0]), + tipCalculator(bills[1]), + tipCalculator(bills[2])]; + +var finalValues = [bills[0] + tips[0], + bills[1] + tips[1], + bills[2] + tips[2]]; + +console.log(tips, finalValues); +*/ + + + +/***************************** +* Objects and properties +*/ +/* +// Object literal +var john = { + firstName: 'John', + lastName: 'Smith', + birthYear: 1990, + family: ['Jane', 'Mark', 'Bob', 'Emily'], + job: 'teacher', + isMarried: false +}; + +console.log(john.firstName); +console.log(john['lastName']); +var x = 'birthYear'; +console.log(john[x]); + +john.job = 'designer'; +john['isMarried'] = true; +console.log(john); + +// new Object syntax +var jane = new Object(); +jane.firstName = 'Jane'; +jane.birthYear = 1969; +jane['lastName'] = 'Smith'; +console.log(jane); +*/ + + + +/***************************** +* Objects and methods +*/ +/* +var john = { + firstName: 'John', + lastName: 'Smith', + birthYear: 1992, + family: ['Jane', 'Mark', 'Bob', 'Emily'], + job: 'teacher', + isMarried: false, + calcAge: function() { + this.age = 2018 - this.birthYear; + } +}; + +john.calcAge(); +console.log(john); +*/ + + + +/***************************** +* CODING CHALLENGE 4 +*/ + +/* +Let's remember the first coding challenge where Mark and John compared their BMIs. Let's now implement the same functionality with objects and methods. +1. For each of them, create an object with properties for their full name, mass, and height +2. Then, add a method to each object to calculate the BMI. Save the BMI to the object and also return it from the method. +3. In the end, log to the console who has the highest BMI, together with the full name and the respective BMI. Don't forget they might have the same BMI. + +Remember: BMI = mass / height^2 = mass / (height * height). (mass in kg and height in meter). + +GOOD LUCK 😀 +*/ +/* +var john = { + fullName: 'John Smith', + mass: 110, + height: 1.95, + calcBMI: function() { + this.bmi = this.mass / (this.height * this.height); + return this.bmi; + } +} + +var mark = { + fullName: 'Mark Miller', + mass: 78, + height: 1.69, + calcBMI: function() { + this.bmi = this.mass / (this.height * this.height); + return this.bmi; + } +} + +if (john.calcBMI() > mark.calcBMI()) { + console.log(john.fullName + ' has a higher BMI of ' + john.bmi); +} else if (mark.bmi > john.bmi) { + console.log(mark.fullName + ' has a higher BMI of ' + mark.bmi); +} else { + console.log('They have the same BMI'); +} +*/ + + + +/***************************** +* Loops and iteration +*/ + +/* +// for loop +for (var i = 1; i <= 20; i += 2) { + console.log(i); +} + +// i = 0, 0 < 10 true, log i to console, i++ +// i = 1, 1 < 10 true, log i to the console, i++ +//... +// i = 9, 9 < 10 true, log i to the console, i++ +// i = 10, 10 < 10 FALSE, exit the loop! + + +var john = ['John', 'Smith', 1990, 'designer', false, 'blue']; +for (var i = 0; i < john.length; i++) { + console.log(john[i]); +} + +// While loop +var i = 0; +while(i < john.length) { + console.log(john[i]); + i++; +} + + +// continue and break statements +var john = ['John', 'Smith', 1990, 'designer', false, 'blue']; + +for (var i = 0; i < john.length; i++) { + if (typeof john[i] !== 'string') continue; + console.log(john[i]); +} + +for (var i = 0; i < john.length; i++) { + if (typeof john[i] !== 'string') break; + console.log(john[i]); +} + +// Looping backwards +for (var i = john.length - 1; i >= 0; i--) { + console.log(john[i]); +} +*/ + + + +/***************************** +* CODING CHALLENGE 5 +*/ + +/* +Remember the tip calculator challenge? Let's create a more advanced version using everything we learned! + +This time, John and his family went to 5 different restaurants. The bills were $124, $48, $268, $180 and $42. +John likes to tip 20% of the bill when the bill is less than $50, 15% when the bill is between $50 and $200, and 10% if the bill is more than $200. + +Implement a tip calculator using objects and loops: +1. Create an object with an array for the bill values +2. Add a method to calculate the tip +3. This method should include a loop to iterate over all the paid bills and do the tip calculations +4. As an output, create 1) a new array containing all tips, and 2) an array containing final paid amounts (bill + tip). HINT: Start with two empty arrays [] as properties and then fill them up in the loop. + + +EXTRA AFTER FINISHING: Mark's family also went on a holiday, going to 4 different restaurants. The bills were $77, $375, $110, and $45. +Mark likes to tip 20% of the bill when the bill is less than $100, 10% when the bill is between $100 and $300, and 25% if the bill is more than $300 (different than John). + +5. Implement the same functionality as before, this time using Mark's tipping rules +6. Create a function (not a method) to calculate the average of a given array of tips. HINT: Loop over the array, and in each iteration store the current sum in a variable (starting from 0). After you have the sum of the array, divide it by the number of elements in it (that's how you calculate the average) +7. Calculate the average tip for each family +8. Log to the console which family paid the highest tips on average + +GOOD LUCK 😀 +*/ + +/* +var john = { + fullName: 'John Smith', + bills: [124, 48, 268, 180, 42], + calcTips: function() { + this.tips = []; + this.finalValues = []; + + for (var i = 0; i < this.bills.length; i++) { + // Determine percentage based on tipping rules + var percentage; + var bill = this.bills[i]; + + if (bill < 50) { + percentage = .2; + } else if (bill >= 50 && bill < 200) { + percentage = .15; + } else { + percentage = .1; + } + + // Add results to the corresponing arrays + this.tips[i] = bill * percentage; + this.finalValues[i] = bill + bill * percentage; + } + } +} + +var mark = { + fullName: 'Mark Miller', + bills: [77, 475, 110, 45], + calcTips: function() { + this.tips = []; + this.finalValues = []; + + for (var i = 0; i < this.bills.length; i++) { + // Determine percentage based on tipping rules + var percentage; + var bill = this.bills[i]; + + if (bill < 100) { + percentage = .2; + } else if (bill >= 100 && bill < 300) { + percentage = .1; + } else { + percentage = .25; + } + + // Add results to the corresponing arrays + this.tips[i] = bill * percentage; + this.finalValues[i] = bill + bill * percentage; + } + } +} + +function calcAverage(tips) { + var sum = 0; + for (var i = 0; i < tips.length; i++) { + sum = sum + tips[i]; + } + return sum / tips.length; +} + +// Do the calculations +john.calcTips(); +mark.calcTips(); + +john.average = calcAverage(john.tips); +mark.average = calcAverage(mark.tips); +console.log(john, mark); + +if (john.average > mark.average) { + console.log(john.fullName + '\'s family pays higher tips, with an average of $' + john.average); +} else if (mark.average > john.average) { + console.log(mark.fullName + '\'s family pays higher tips, with an average of $' + mark.average); +} +*/ diff --git a/2-JS-basics/starter/index.html b/2-JS-basics/starter/index.html new file mode 100755 index 0000000000..975ef26c3b --- /dev/null +++ b/2-JS-basics/starter/index.html @@ -0,0 +1,11 @@ + + + + + Section 2: JavaScript Language Basics + + + +

    Section 2: JavaScript Language Basics

    + + \ No newline at end of file diff --git a/3-how-JS-works/.DS_Store b/3-how-JS-works/.DS_Store new file mode 100644 index 0000000000..79e453d908 Binary files /dev/null and b/3-how-JS-works/.DS_Store differ diff --git a/3-how-JS-works/final/index.html b/3-how-JS-works/final/index.html new file mode 100755 index 0000000000..404bc891e2 --- /dev/null +++ b/3-how-JS-works/final/index.html @@ -0,0 +1,12 @@ + + + + + Section 3: How JavaScript Works Behind the Scenes + + + +

    Section 3: How JavaScript Works Behind the Scenes

    + + + \ No newline at end of file diff --git a/3-how-JS-works/final/script.js b/3-how-JS-works/final/script.js new file mode 100755 index 0000000000..dbc890dfff --- /dev/null +++ b/3-how-JS-works/final/script.js @@ -0,0 +1,113 @@ +///////////////////////////////////// +// Lecture: Hoisting + +/* +// functions +calculateAge(1965); + +function calculateAge(year) { + console.log(2016 - year); +} + +// retirement(1956); +var retirement = function(year) { + console.log(65 - (2016 - year)); +} + + +// variables + +console.log(age); +var age = 23; + +function foo() { + console.log(age); + var age = 65; + console.log(age); +} +foo(); +console.log(age); +*/ + + + +///////////////////////////////////// +// Lecture: Scoping + +/* +// First scoping example +var a = 'Hello!'; +first(); + +function first() { + var b = 'Hi!'; + second(); + + function second() { + var c = 'Hey!'; + console.log(a + b + c); + } +} + + +// Example to show the differece between execution stack and scope chain +var a = 'Hello!'; +first(); + +function first() { + var b = 'Hi!'; + second(); + + function second() { + var c = 'Hey!'; + third() + } +} + +function third() { + var d = 'John'; + //console.log(c); + console.log(a+d); +} +*/ + + + +///////////////////////////////////// +// Lecture: The this keyword + +/* +//console.log(this); + +calculateAge(1985); + +function calculateAge(year) { + console.log(2016 - year); + console.log(this); +} + +var john = { + name: 'John', + yearOfBirth: 1990, + calculateAge: function() { + console.log(this); + console.log(2016 - this.yearOfBirth); + + function innerFunction() { + console.log(this); + } + innerFunction(); + } +} + +john.calculateAge(); + +var mike = { + name: 'Mike', + yearOfBirth: 1984 +}; + + +mike.calculateAge = john.calculateAge; +mike.calculateAge(); +*/ diff --git a/3-how-JS-works/starter/index.html b/3-how-JS-works/starter/index.html new file mode 100755 index 0000000000..404bc891e2 --- /dev/null +++ b/3-how-JS-works/starter/index.html @@ -0,0 +1,12 @@ + + + + + Section 3: How JavaScript Works Behind the Scenes + + + +

    Section 3: How JavaScript Works Behind the Scenes

    + + + \ No newline at end of file diff --git a/3-how-JS-works/starter/script.js b/3-how-JS-works/starter/script.js new file mode 100755 index 0000000000..fc38e6f4f6 --- /dev/null +++ b/3-how-JS-works/starter/script.js @@ -0,0 +1,77 @@ +/////////////////////////////////////// +// Lecture: Hoisting + + + + + + + + + + + + + + + + + +/////////////////////////////////////// +// Lecture: Scoping + + +// First scoping example + +/* +var a = 'Hello!'; +first(); + +function first() { + var b = 'Hi!'; + second(); + + function second() { + var c = 'Hey!'; + console.log(a + b + c); + } +} +*/ + + + +// Example to show the differece between execution stack and scope chain + +/* +var a = 'Hello!'; +first(); + +function first() { + var b = 'Hi!'; + second(); + + function second() { + var c = 'Hey!'; + third() + } +} + +function third() { + var d = 'John'; + console.log(a + b + c + d); +} +*/ + + + +/////////////////////////////////////// +// Lecture: The this keyword + + + + + + + + + diff --git a/4-DOM-pig-game/.DS_Store b/4-DOM-pig-game/.DS_Store new file mode 100644 index 0000000000..3a207eabf2 Binary files /dev/null and b/4-DOM-pig-game/.DS_Store differ diff --git a/4-DOM-pig-game/final/.DS_Store b/4-DOM-pig-game/final/.DS_Store new file mode 100644 index 0000000000..5008ddfcf5 Binary files /dev/null and b/4-DOM-pig-game/final/.DS_Store differ diff --git a/4-DOM-pig-game/final/app.js b/4-DOM-pig-game/final/app.js new file mode 100755 index 0000000000..14e6806814 --- /dev/null +++ b/4-DOM-pig-game/final/app.js @@ -0,0 +1,122 @@ +/* +GAME RULES: + +- The game has 2 players, playing in rounds +- In each turn, a player rolls a dice as many times as he whishes. Each result get added to his ROUND score +- BUT, if the player rolls a 1, all his ROUND score gets lost. After that, it's the next player's turn +- The player can choose to 'Hold', which means that his ROUND score gets added to his GLBAL score. After that, it's the next player's turn +- The first player to reach 100 points on GLOBAL score wins the game + +*/ + +var scores, roundScore, activePlayer, gamePlaying; + +init(); + + +document.querySelector('.btn-roll').addEventListener('click', function() { + if(gamePlaying) { + // 1. Random number + var dice = Math.floor(Math.random() * 6) + 1; + + //2. Display the result + var diceDOM = document.querySelector('.dice'); + diceDOM.style.display = 'block'; + diceDOM.src = 'dice-' + dice + '.png'; + + + //3. Update the round score IF the rolled number was NOT a 1 + if (dice !== 1) { + //Add score + roundScore += dice; + document.querySelector('#current-' + activePlayer).textContent = roundScore; + } else { + //Next player + nextPlayer(); + } + } +}); + + +document.querySelector('.btn-hold').addEventListener('click', function() { + if (gamePlaying) { + // Add CURRENT score to GLOBAL score + scores[activePlayer] += roundScore; + + // Update the UI + document.querySelector('#score-' + activePlayer).textContent = scores[activePlayer]; + + // Check if player won the game + if (scores[activePlayer] >= 100) { + document.querySelector('#name-' + activePlayer).textContent = 'Winner!'; + document.querySelector('.dice').style.display = 'none'; + document.querySelector('.player-' + activePlayer + '-panel').classList.add('winner'); + document.querySelector('.player-' + activePlayer + '-panel').classList.remove('active'); + gamePlaying = false; + } else { + //Next player + nextPlayer(); + } + } +}); + + +function nextPlayer() { + //Next player + activePlayer === 0 ? activePlayer = 1 : activePlayer = 0; + roundScore = 0; + + document.getElementById('current-0').textContent = '0'; + document.getElementById('current-1').textContent = '0'; + + document.querySelector('.player-0-panel').classList.toggle('active'); + document.querySelector('.player-1-panel').classList.toggle('active'); + + //document.querySelector('.player-0-panel').classList.remove('active'); + //document.querySelector('.player-1-panel').classList.add('active'); + + document.querySelector('.dice').style.display = 'none'; +} + +document.querySelector('.btn-new').addEventListener('click', init); + +function init() { + scores = [0, 0]; + activePlayer = 0; + roundScore = 0; + gamePlaying = true; + + document.querySelector('.dice').style.display = 'none'; + + document.getElementById('score-0').textContent = '0'; + document.getElementById('score-1').textContent = '0'; + document.getElementById('current-0').textContent = '0'; + document.getElementById('current-1').textContent = '0'; + document.getElementById('name-0').textContent = 'Player 1'; + document.getElementById('name-1').textContent = 'Player 2'; + document.querySelector('.player-0-panel').classList.remove('winner'); + document.querySelector('.player-1-panel').classList.remove('winner'); + document.querySelector('.player-0-panel').classList.remove('active'); + document.querySelector('.player-1-panel').classList.remove('active'); + document.querySelector('.player-0-panel').classList.add('active'); +} + +//document.querySelector('#current-' + activePlayer).textContent = dice; +//document.querySelector('#current-' + activePlayer).innerHTML = '' + dice + ''; +//var x = document.querySelector('#score-0').textContent; + + + + + + + + +/* +YOUR 3 CHALLENGES +Change the game to follow these rules: + +1. A player looses his ENTIRE score when he rolls two 6 in a row. After that, it's the next player's turn. (Hint: Always save the previous dice roll in a separate variable) +2. Add an input field to the HTML where players can set the winning score, so that they can change the predefined score of 100. (Hint: you can read that value with the .value property in JavaScript. This is a good oportunity to use google to figure this out :) +3. Add another dice to the game, so that there are two dices now. The player looses his current score when one of them is a 1. (Hint: you will need CSS to position the second dice, so take a look at the CSS code for the first one.) +*/ diff --git a/4-DOM-pig-game/final/back.jpg b/4-DOM-pig-game/final/back.jpg new file mode 100755 index 0000000000..dcd9a7dab6 Binary files /dev/null and b/4-DOM-pig-game/final/back.jpg differ diff --git a/4-DOM-pig-game/final/challenges.js b/4-DOM-pig-game/final/challenges.js new file mode 100644 index 0000000000..2f4a85b81e --- /dev/null +++ b/4-DOM-pig-game/final/challenges.js @@ -0,0 +1,133 @@ +/* +YOUR 3 CHALLENGES +Change the game to follow these rules: + +1. A player looses his ENTIRE score when he rolls two 6 in a row. After that, it's the next player's turn. (Hint: Always save the previous dice roll in a separate variable) +2. Add an input field to the HTML where players can set the winning score, so that they can change the predefined score of 100. (Hint: you can read that value with the .value property in JavaScript. This is a good oportunity to use google to figure this out :) +3. Add another dice to the game, so that there are two dices now. The player looses his current score when one of them is a 1. (Hint: you will need CSS to position the second dice, so take a look at the CSS code for the first one.) +*/ + +var scores, roundScore, activePlayer, gamePlaying; + +init(); + +var lastDice; + +document.querySelector('.btn-roll').addEventListener('click', function() { + if(gamePlaying) { + // 1. Random number + var dice1 = Math.floor(Math.random() * 6) + 1; + var dice2 = Math.floor(Math.random() * 6) + 1; + + //2. Display the result + document.getElementById('dice-1').style.display = 'block'; + document.getElementById('dice-2').style.display = 'block'; + document.getElementById('dice-1').src = 'dice-' + dice1 + '.png'; + document.getElementById('dice-2').src = 'dice-' + dice2 + '.png'; + + //3. Update the round score IF the rolled number was NOT a 1 + if (dice1 !== 1 && dice2 !== 1) { + //Add score + roundScore += dice1 + dice2; + document.querySelector('#current-' + activePlayer).textContent = roundScore; + } else { + //Next player + nextPlayer(); + } + + /* + if (dice === 6 && lastDice === 6) { + //Player looses score + scores[activePlayer] = 0; + document.querySelector('#score-' + activePlayer).textContent = '0'; + nextPlayer(); + } else if (dice !== 1) { + //Add score + roundScore += dice; + document.querySelector('#current-' + activePlayer).textContent = roundScore; + } else { + //Next player + nextPlayer(); + } + lastDice = dice; + */ + } +}); + + +document.querySelector('.btn-hold').addEventListener('click', function() { + if (gamePlaying) { + // Add CURRENT score to GLOBAL score + scores[activePlayer] += roundScore; + + // Update the UI + document.querySelector('#score-' + activePlayer).textContent = scores[activePlayer]; + + var input = document.querySelector('.final-score').value; + var winningScore; + + // Undefined, 0, null or "" are COERCED to false + // Anything else is COERCED to true + if(input) { + winningScore = input; + } else { + winningScore = 100; + } + + // Check if player won the game + if (scores[activePlayer] >= winningScore) { + document.querySelector('#name-' + activePlayer).textContent = 'Winner!'; + document.getElementById('dice-1').style.display = 'none'; + document.getElementById('dice-2').style.display = 'none'; + document.querySelector('.player-' + activePlayer + '-panel').classList.add('winner'); + document.querySelector('.player-' + activePlayer + '-panel').classList.remove('active'); + gamePlaying = false; + } else { + //Next player + nextPlayer(); + } + } +}); + + +function nextPlayer() { + //Next player + activePlayer === 0 ? activePlayer = 1 : activePlayer = 0; + roundScore = 0; + + document.getElementById('current-0').textContent = '0'; + document.getElementById('current-1').textContent = '0'; + + document.querySelector('.player-0-panel').classList.toggle('active'); + document.querySelector('.player-1-panel').classList.toggle('active'); + + //document.querySelector('.player-0-panel').classList.remove('active'); + //document.querySelector('.player-1-panel').classList.add('active'); + + document.getElementById('dice-1').style.display = 'none'; + document.getElementById('dice-2').style.display = 'none'; +} + +document.querySelector('.btn-new').addEventListener('click', init); + +function init() { + scores = [0, 0]; + activePlayer = 0; + roundScore = 0; + gamePlaying = true; + + document.getElementById('dice-1').style.display = 'none'; + document.getElementById('dice-2').style.display = 'none'; + + document.getElementById('score-0').textContent = '0'; + document.getElementById('score-1').textContent = '0'; + document.getElementById('current-0').textContent = '0'; + document.getElementById('current-1').textContent = '0'; + document.getElementById('name-0').textContent = 'Player 1'; + document.getElementById('name-1').textContent = 'Player 2'; + document.querySelector('.player-0-panel').classList.remove('winner'); + document.querySelector('.player-1-panel').classList.remove('winner'); + document.querySelector('.player-0-panel').classList.remove('active'); + document.querySelector('.player-1-panel').classList.remove('active'); + document.querySelector('.player-0-panel').classList.add('active'); +} \ No newline at end of file diff --git a/07-Pig-Game/final/dice-1.png b/4-DOM-pig-game/final/dice-1.png similarity index 100% rename from 07-Pig-Game/final/dice-1.png rename to 4-DOM-pig-game/final/dice-1.png diff --git a/07-Pig-Game/final/dice-2.png b/4-DOM-pig-game/final/dice-2.png similarity index 100% rename from 07-Pig-Game/final/dice-2.png rename to 4-DOM-pig-game/final/dice-2.png diff --git a/07-Pig-Game/final/dice-3.png b/4-DOM-pig-game/final/dice-3.png similarity index 100% rename from 07-Pig-Game/final/dice-3.png rename to 4-DOM-pig-game/final/dice-3.png diff --git a/07-Pig-Game/final/dice-4.png b/4-DOM-pig-game/final/dice-4.png similarity index 100% rename from 07-Pig-Game/final/dice-4.png rename to 4-DOM-pig-game/final/dice-4.png diff --git a/07-Pig-Game/final/dice-5.png b/4-DOM-pig-game/final/dice-5.png similarity index 100% rename from 07-Pig-Game/final/dice-5.png rename to 4-DOM-pig-game/final/dice-5.png diff --git a/07-Pig-Game/final/dice-6.png b/4-DOM-pig-game/final/dice-6.png similarity index 100% rename from 07-Pig-Game/final/dice-6.png rename to 4-DOM-pig-game/final/dice-6.png diff --git a/4-DOM-pig-game/final/index.html b/4-DOM-pig-game/final/index.html new file mode 100755 index 0000000000..38f75e821c --- /dev/null +++ b/4-DOM-pig-game/final/index.html @@ -0,0 +1,45 @@ + + + + + + + + + Pig Game + + + +
    +
    +
    Player 1
    +
    43
    +
    +
    Current
    +
    11
    +
    +
    + +
    +
    Player 2
    +
    72
    +
    +
    Current
    +
    0
    +
    +
    + + + + + + + + Dice + Dice +
    + + + + + \ No newline at end of file diff --git a/4-DOM-pig-game/final/style.css b/4-DOM-pig-game/final/style.css new file mode 100755 index 0000000000..2e67a216c1 --- /dev/null +++ b/4-DOM-pig-game/final/style.css @@ -0,0 +1,174 @@ +/********************************************** +*** GENERAL +**********************************************/ + +.final-score { + position: absolute; + left: 50%; + transform: translateX(-50%); + top: 520px; + color: #555; + font-size: 18px; + font-family: 'Lato'; + text-align: center; + padding: 10px; + width: 160px; + text-transform: uppercase; +} + +.final-score:focus { outline: none; } + +#dice-1 { top: 120px; } +#dice-2 { top: 250px; } + + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + +} + +.clearfix::after { + content: ""; + display: table; + clear: both; +} + +body { + background-image: linear-gradient(rgba(62, 20, 20, 0.4), rgba(62, 20, 20, 0.4)), url(http://github.com/back.jpg); + background-size: cover; + background-position: center; + font-family: Lato; + font-weight: 300; + position: relative; + height: 100vh; + color: #555; +} + +.wrapper { + width: 1000px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + background-color: #fff; + box-shadow: 0px 10px 50px rgba(0, 0, 0, 0.3); + overflow: hidden; +} + +.player-0-panel, +.player-1-panel { + width: 50%; + float: left; + height: 600px; + padding: 100px; +} + + + +/********************************************** +*** PLAYERS +**********************************************/ + +.player-name { + font-size: 40px; + text-align: center; + text-transform: uppercase; + letter-spacing: 2px; + font-weight: 100; + margin-top: 20px; + margin-bottom: 10px; + position: relative; +} + +.player-score { + text-align: center; + font-size: 80px; + font-weight: 100; + color: #EB4D4D; + margin-bottom: 130px; +} + +.active { background-color: #f7f7f7; } +.active .player-name { font-weight: 300; } + +.active .player-name::after { + content: "\2022"; + font-size: 47px; + position: absolute; + color: #EB4D4D; + top: -7px; + right: 10px; + +} + +.player-current-box { + background-color: #EB4D4D; + color: #fff; + width: 40%; + margin: 0 auto; + padding: 12px; + text-align: center; +} + +.player-current-label { + text-transform: uppercase; + margin-bottom: 10px; + font-size: 12px; + color: #222; +} + +.player-current-score { + font-size: 30px; +} + +button { + position: absolute; + width: 200px; + left: 50%; + transform: translateX(-50%); + color: #555; + background: none; + border: none; + font-family: Lato; + font-size: 20px; + text-transform: uppercase; + cursor: pointer; + font-weight: 300; + transition: background-color 0.3s, color 0.3s; +} + +button:hover { font-weight: 600; } +button:hover i { margin-right: 20px; } + +button:focus { + outline: none; +} + +i { + color: #EB4D4D; + display: inline-block; + margin-right: 15px; + font-size: 32px; + line-height: 1; + vertical-align: text-top; + margin-top: -4px; + transition: margin 0.3s; +} + +.btn-new { top: 45px;} +.btn-roll { top: 403px;} +.btn-hold { top: 467px;} + +.dice { + position: absolute; + left: 50%; + top: 178px; + transform: translateX(-50%); + height: 100px; + box-shadow: 0px 10px 60px rgba(0, 0, 0, 0.10); +} + +.winner { background-color: #f7f7f7; } +.winner .player-name { font-weight: 300; color: #EB4D4D; } \ No newline at end of file diff --git a/4-DOM-pig-game/starter/app.js b/4-DOM-pig-game/starter/app.js new file mode 100755 index 0000000000..b6b383b04a --- /dev/null +++ b/4-DOM-pig-game/starter/app.js @@ -0,0 +1,10 @@ +/* +GAME RULES: + +- The game has 2 players, playing in rounds +- In each turn, a player rolls a dice as many times as he whishes. Each result get added to his ROUND score +- BUT, if the player rolls a 1, all his ROUND score gets lost. After that, it's the next player's turn +- The player can choose to 'Hold', which means that his ROUND score gets added to his GLBAL score. After that, it's the next player's turn +- The first player to reach 100 points on GLOBAL score wins the game + +*/ \ No newline at end of file diff --git a/4-DOM-pig-game/starter/back.jpg b/4-DOM-pig-game/starter/back.jpg new file mode 100755 index 0000000000..dcd9a7dab6 Binary files /dev/null and b/4-DOM-pig-game/starter/back.jpg differ diff --git a/07-Pig-Game/starter/dice-1.png b/4-DOM-pig-game/starter/dice-1.png similarity index 100% rename from 07-Pig-Game/starter/dice-1.png rename to 4-DOM-pig-game/starter/dice-1.png diff --git a/07-Pig-Game/starter/dice-2.png b/4-DOM-pig-game/starter/dice-2.png similarity index 100% rename from 07-Pig-Game/starter/dice-2.png rename to 4-DOM-pig-game/starter/dice-2.png diff --git a/07-Pig-Game/starter/dice-3.png b/4-DOM-pig-game/starter/dice-3.png similarity index 100% rename from 07-Pig-Game/starter/dice-3.png rename to 4-DOM-pig-game/starter/dice-3.png diff --git a/07-Pig-Game/starter/dice-4.png b/4-DOM-pig-game/starter/dice-4.png similarity index 100% rename from 07-Pig-Game/starter/dice-4.png rename to 4-DOM-pig-game/starter/dice-4.png diff --git a/07-Pig-Game/starter/dice-5.png b/4-DOM-pig-game/starter/dice-5.png similarity index 100% rename from 07-Pig-Game/starter/dice-5.png rename to 4-DOM-pig-game/starter/dice-5.png diff --git a/07-Pig-Game/starter/dice-6.png b/4-DOM-pig-game/starter/dice-6.png similarity index 100% rename from 07-Pig-Game/starter/dice-6.png rename to 4-DOM-pig-game/starter/dice-6.png diff --git a/4-DOM-pig-game/starter/index.html b/4-DOM-pig-game/starter/index.html new file mode 100755 index 0000000000..2dd4d3f3ba --- /dev/null +++ b/4-DOM-pig-game/starter/index.html @@ -0,0 +1,41 @@ + + + + + + + + + Pig Game + + + +
    +
    +
    Player 1
    +
    43
    +
    +
    Current
    +
    11
    +
    +
    + +
    +
    Player 2
    +
    72
    +
    +
    Current
    +
    0
    +
    +
    + + + + + + Dice +
    + + + + \ No newline at end of file diff --git a/4-DOM-pig-game/starter/style.css b/4-DOM-pig-game/starter/style.css new file mode 100755 index 0000000000..52cb8002cd --- /dev/null +++ b/4-DOM-pig-game/starter/style.css @@ -0,0 +1,154 @@ +/********************************************** +*** GENERAL +**********************************************/ + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + +} + +.clearfix::after { + content: ""; + display: table; + clear: both; +} + +body { + background-image: linear-gradient(rgba(62, 20, 20, 0.4), rgba(62, 20, 20, 0.4)), url(http://github.com/back.jpg); + background-size: cover; + background-position: center; + font-family: Lato; + font-weight: 300; + position: relative; + height: 100vh; + color: #555; +} + +.wrapper { + width: 1000px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + background-color: #fff; + box-shadow: 0px 10px 50px rgba(0, 0, 0, 0.3); + overflow: hidden; +} + +.player-0-panel, +.player-1-panel { + width: 50%; + float: left; + height: 600px; + padding: 100px; +} + + + +/********************************************** +*** PLAYERS +**********************************************/ + +.player-name { + font-size: 40px; + text-align: center; + text-transform: uppercase; + letter-spacing: 2px; + font-weight: 100; + margin-top: 20px; + margin-bottom: 10px; + position: relative; +} + +.player-score { + text-align: center; + font-size: 80px; + font-weight: 100; + color: #EB4D4D; + margin-bottom: 130px; +} + +.active { background-color: #f7f7f7; } +.active .player-name { font-weight: 300; } + +.active .player-name::after { + content: "\2022"; + font-size: 47px; + position: absolute; + color: #EB4D4D; + top: -7px; + right: 10px; + +} + +.player-current-box { + background-color: #EB4D4D; + color: #fff; + width: 40%; + margin: 0 auto; + padding: 12px; + text-align: center; +} + +.player-current-label { + text-transform: uppercase; + margin-bottom: 10px; + font-size: 12px; + color: #222; +} + +.player-current-score { + font-size: 30px; +} + +button { + position: absolute; + width: 200px; + left: 50%; + transform: translateX(-50%); + color: #555; + background: none; + border: none; + font-family: Lato; + font-size: 20px; + text-transform: uppercase; + cursor: pointer; + font-weight: 300; + transition: background-color 0.3s, color 0.3s; +} + +button:hover { font-weight: 600; } +button:hover i { margin-right: 20px; } + +button:focus { + outline: none; +} + +i { + color: #EB4D4D; + display: inline-block; + margin-right: 15px; + font-size: 32px; + line-height: 1; + vertical-align: text-top; + margin-top: -4px; + transition: margin 0.3s; +} + +.btn-new { top: 45px;} +.btn-roll { top: 403px;} +.btn-hold { top: 467px;} + +.dice { + position: absolute; + left: 50%; + top: 178px; + transform: translateX(-50%); + height: 100px; + box-shadow: 0px 10px 60px rgba(0, 0, 0, 0.10); +} + +.winner { background-color: #f7f7f7; } +.winner .player-name { font-weight: 300; color: #EB4D4D; } \ No newline at end of file diff --git a/5-advanced-JS/.DS_Store b/5-advanced-JS/.DS_Store new file mode 100644 index 0000000000..4fda094694 Binary files /dev/null and b/5-advanced-JS/.DS_Store differ diff --git a/5-advanced-JS/final/index.html b/5-advanced-JS/final/index.html new file mode 100755 index 0000000000..96127cff81 --- /dev/null +++ b/5-advanced-JS/final/index.html @@ -0,0 +1,12 @@ + + + + + Section 5: Advanced JavaScript: Objects and Functions + + + +

    Section 5: Advanced JavaScript: Objects and Functions

    + + + \ No newline at end of file diff --git a/5-advanced-JS/final/script.js b/5-advanced-JS/final/script.js new file mode 100755 index 0000000000..e299223fc3 --- /dev/null +++ b/5-advanced-JS/final/script.js @@ -0,0 +1,475 @@ +///////////////////////////// +// Lecture: Function constructor +/* +var john = { + name: 'John', + yearOfBirth: 1990, + job: 'teacher' +}; + +var Person = function(name, yearOfBirth, job) { + this.name = name; + this.yearOfBirth = yearOfBirth; + this.job = job; +} + +Person.prototype.calculateAge = function() { + console.log(2016 - this.yearOfBirth); +}; + +Person.prototype.lastName = 'Smith'; + +var john = new Person('John', 1990, 'teacher'); +var jane = new Person('Jane', 1969, 'designer'); +var mark = new Person('Mark', 1948, 'retired'); + +john.calculateAge(); +jane.calculateAge(); +mark.calculateAge(); + +console.log(john.lastName); +console.log(jane.lastName); +console.log(mark.lastName); +*/ + + + +///////////////////////////// +// Lecture: Object.create +/* +var personProto = { + calculateAge: function() { + console.log(2016 - this.yearOfBirth); + } +}; + +var john = Object.create(personProto); +john.name = 'John'; +john.yearOfBirth = 1990; +john.job = 'teacher'; + +var jane = Object.create(personProto, { + name: { value: 'Jane' }, + yearOfBirth: { value: 1969 }, + job: { value: 'designer' } +}); +*/ + + + +///////////////////////////// +// Lecture: Primitives vs objects +/* +// Primitives +var a = 23; +var b = a; +a = 46; +console.log(a); +console.log(b); + + + +// Objects +var obj1 = { + name: 'John', + age: 26 +}; +var obj2 = obj1; +obj1.age = 30; +console.log(obj1.age); +console.log(obj2.age); + +// Functions +var age = 27; +var obj = { + name: 'Jonas', + city: 'Lisbon' +}; + +function change(a, b) { + a = 30; + b.city = 'San Francisco'; +} + +change(age, obj); + +console.log(age); +console.log(obj.city); +*/ + + + +///////////////////////////// +// Lecture: Passing functions as arguments +/* +var years = [1990, 1965, 1937, 2005, 1998]; + +function arrayCalc(arr, fn) { + var arrRes = []; + for (var i = 0; i < arr.length; i++) { + arrRes.push(fn(arr[i])); + } + return arrRes; +} + +function calculateAge(el) { + return 2016 - el; +} + +function isFullAge(el) { + return el >= 18; +} + +function maxHeartRate(el) { + if (el >= 18 && el <= 81) { + return Math.round(206.9 - (0.67 * el)); + } else { + return -1; + } +} + + +var ages = arrayCalc(years, calculateAge); +var fullAges = arrayCalc(ages, isFullAge); +var rates = arrayCalc(ages, maxHeartRate); + +console.log(ages); +console.log(rates); +*/ + + + +///////////////////////////// +// Lecture: Functions returning functions +/* +function interviewQuestion(job) { + if (job === 'designer') { + return function(name) { + console.log(name + ', can you please explain what UX design is?'); + } + } else if (job === 'teacher') { + return function(name) { + console.log('What subject do you teach, ' + name + '?'); + } + } else { + return function(name) { + console.log('Hello ' + name + ', what do you do?'); + } + } +} + +var teacherQuestion = interviewQuestion('teacher'); +var designerQuestion = interviewQuestion('designer'); + + +teacherQuestion('John'); +designerQuestion('John'); +designerQuestion('jane'); +designerQuestion('Mark'); +designerQuestion('Mike'); + +interviewQuestion('teacher')('Mark'); +*/ + + + +///////////////////////////// +// Lecture: IIFE +/* +function game() { + var score = Math.random() * 10; + console.log(score >= 5); +} +game(); + + +(function () { + var score = Math.random() * 10; + console.log(score >= 5); +})(); + +//console.log(score); + + +(function (goodLuck) { + var score = Math.random() * 10; + console.log(score >= 5 - goodLuck); +})(5); +*/ + + + +///////////////////////////// +// Lecture: Closures +/* +function retirement(retirementAge) { + var a = ' years left until retirement.'; + return function(yearOfBirth) { + var age = 2016 - yearOfBirth; + console.log((retirementAge - age) + a); + } +} + +var retirementUS = retirement(66); +var retirementGermany = retirement(65); +var retirementIceland = retirement(67); + +retirementGermany(1990); +retirementUS(1990); +retirementIceland(1990); + +//retirement(66)(1990); + + +function interviewQuestion(job) { + return function(name) { + if (job === 'designer') { + console.log(name + ', can you please explain what UX design is?'); + } else if (job === 'teacher') { + console.log('What subject do you teach, ' + name + '?'); + } else { + console.log('Hello ' + name + ', what do you do?'); + } + } +} + +interviewQuestion('teacher')('John'); +*/ + + + +///////////////////////////// +// Lecture: Bind, call and apply +/* +var john = { + name: 'John', + age: 26, + job: 'teacher', + presentation: function(style, timeOfDay) { + if (style === 'formal') { + console.log('Good ' + timeOfDay + ', Ladies and gentlemen! I\'m ' + this.name + ', I\'m a ' + this.job + ' and I\'m ' + this.age + ' years old.'); + } else if (style === 'friendly') { + console.log('Hey! What\'s up? I\'m ' + this.name + ', I\'m a ' + this.job + ' and I\'m ' + this.age + ' years old. Have a nice ' + timeOfDay + '.'); + } + } +}; + +var emily = { + name: 'Emily', + age: 35, + job: 'designer' +}; + +john.presentation('formal', 'morning'); + +john.presentation.call(emily, 'friendly', 'afternoon'); + +//john.presentation.apply(emily, ['friendly', 'afternoon']); + +var johnFriendly = john.presentation.bind(john, 'friendly'); + +johnFriendly('morning'); +johnFriendly('night'); + +var emilyFormal = john.presentation.bind(emily, 'formal'); +emilyFormal('afternoon'); + + +// Another cool example +var years = [1990, 1965, 1937, 2005, 1998]; + +function arrayCalc(arr, fn) { + var arrRes = []; + for (var i = 0; i < arr.length; i++) { + arrRes.push(fn(arr[i])); + } + return arrRes; +} + +function calculateAge(el) { + return 2016 - el; +} + +function isFullAge(limit, el) { + return el >= limit; +} + +var ages = arrayCalc(years, calculateAge); +var fullJapan = arrayCalc(ages, isFullAge.bind(this, 20)); +console.log(ages); +console.log(fullJapan); +*/ + + + + +///////////////////////////// +// CODING CHALLENGE + + +/* +--- Let's build a fun quiz game in the console! --- + +1. Build a function constructor called Question to describe a question. A question should include: +a) question itself +b) the answers from which the player can choose the correct one (choose an adequate data structure here, array, object, etc.) +c) correct answer (I would use a number for this) + +2. Create a couple of questions using the constructor + +3. Store them all inside an array + +4. Select one random question and log it on the console, together with the possible answers (each question should have a number) (Hint: write a method for the Question objects for this task). + +5. Use the 'prompt' function to ask the user for the correct answer. The user should input the number of the correct answer such as you displayed it on Task 4. + +6. Check if the answer is correct and print to the console whether the answer is correct ot nor (Hint: write another method for this). + +7. Suppose this code would be a plugin for other programmers to use in their code. So make sure that all your code is private and doesn't interfere with the other programmers code (Hint: we learned a special technique to do exactly that). +*/ + + +/* +(function() { + function Question(question, answers, correct) { + this.question = question; + this.answers = answers; + this.correct = correct; + } + + Question.prototype.displayQuestion = function() { + console.log(this.question); + + for (var i = 0; i < this.answers.length; i++) { + console.log(i + ': ' + this.answers[i]); + } + } + + Question.prototype.checkAnswer = function(ans) { + if (ans === this.correct) { + console.log('Correct answer!'); + + } else { + console.log('Wrong answer. Try again :)') + } + } + + var q1 = new Question('Is JavaScript the coolest programming language in the world?', + ['Yes', 'No'], + 0); + + var q2 = new Question('What is the name of this course\'s teacher?', + ['John', 'Micheal', 'Jonas'], + 2); + + var q3 = new Question('What does best describe coding?', + ['Boring', 'Hard', 'Fun', 'Tediuos'], + 2); + + var questions = [q1, q2, q3]; + + var n = Math.floor(Math.random() * questions.length); + + questions[n].displayQuestion(); + + var answer = parseInt(prompt('Please select the correct answer.')); + + questions[n].checkAnswer(answer); +})(); +*/ + + + +/* +--- Expert level --- + +8. After you display the result, display the next random question, so that the game never ends (Hint: write a function for this and call it right after displaying the result) + +9. Be careful: after Task 8, the game literally never ends. So include the option to quit the game if the user writes 'exit' instead of the answer. In this case, DON'T call the function from task 8. + +10. Track the user's score to make the game more fun! So each time an answer is correct, add 1 point to the score (Hint: I'm going to use the power of closures for this, but you don't have to, just do this with the tools you feel more comfortable at this point). + +11. Display the score in the console. Use yet another method for this. +*/ + + +/* +(function() { + function Question(question, answers, correct) { + this.question = question; + this.answers = answers; + this.correct = correct; + } + + Question.prototype.displayQuestion = function() { + console.log(this.question); + + for (var i = 0; i < this.answers.length; i++) { + console.log(i + ': ' + this.answers[i]); + } + } + + Question.prototype.checkAnswer = function(ans, callback) { + var sc; + + if (ans === this.correct) { + console.log('Correct answer!'); + sc = callback(true); + } else { + console.log('Wrong answer. Try again :)'); + sc = callback(false); + } + + this.displayScore(sc); + } + + Question.prototype.displayScore = function(score) { + console.log('Your current score is: ' + score); + console.log('------------------------------'); + } + + + var q1 = new Question('Is JavaScript the coolest programming language in the world?', + ['Yes', 'No'], + 0); + + var q2 = new Question('What is the name of this course\'s teacher?', + ['John', 'Micheal', 'Jonas'], + 2); + + var q3 = new Question('What does best describe coding?', + ['Boring', 'Hard', 'Fun', 'Tediuos'], + 2); + + var questions = [q1, q2, q3]; + + function score() { + var sc = 0; + return function(correct) { + if (correct) { + sc++; + } + return sc; + } + } + var keepScore = score(); + + + function nextQuestion() { + + var n = Math.floor(Math.random() * questions.length); + questions[n].displayQuestion(); + + var answer = prompt('Please select the correct answer.'); + + if(answer !== 'exit') { + questions[n].checkAnswer(parseInt(answer), keepScore); + + nextQuestion(); + } + } + + nextQuestion(); + +})(); +*/ \ No newline at end of file diff --git a/5-advanced-JS/starter/index.html b/5-advanced-JS/starter/index.html new file mode 100755 index 0000000000..96127cff81 --- /dev/null +++ b/5-advanced-JS/starter/index.html @@ -0,0 +1,12 @@ + + + + + Section 5: Advanced JavaScript: Objects and Functions + + + +

    Section 5: Advanced JavaScript: Objects and Functions

    + + + \ No newline at end of file diff --git a/02-Fundamentals-Part-2/starter/script.js b/5-advanced-JS/starter/script.js similarity index 100% rename from 02-Fundamentals-Part-2/starter/script.js rename to 5-advanced-JS/starter/script.js diff --git a/6-budgety/.DS_Store b/6-budgety/.DS_Store new file mode 100755 index 0000000000..7bdeb23995 Binary files /dev/null and b/6-budgety/.DS_Store differ diff --git a/6-budgety/final/.DS_Store b/6-budgety/final/.DS_Store new file mode 100755 index 0000000000..5008ddfcf5 Binary files /dev/null and b/6-budgety/final/.DS_Store differ diff --git a/6-budgety/final/app.js b/6-budgety/final/app.js new file mode 100755 index 0000000000..3b7486eee0 --- /dev/null +++ b/6-budgety/final/app.js @@ -0,0 +1,471 @@ +// BUDGET CONTROLLER +var budgetController = (function() { + + var Expense = function(id, description, value) { + this.id = id; + this.description = description; + this.value = value; + this.percentage = -1; + }; + + + Expense.prototype.calcPercentage = function(totalIncome) { + if (totalIncome > 0) { + this.percentage = Math.round((this.value / totalIncome) * 100); + } else { + this.percentage = -1; + } + }; + + + Expense.prototype.getPercentage = function() { + return this.percentage; + }; + + + var Income = function(id, description, value) { + this.id = id; + this.description = description; + this.value = value; + }; + + + var calculateTotal = function(type) { + var sum = 0; + data.allItems[type].forEach(function(cur) { + sum += cur.value; + }); + data.totals[type] = sum; + }; + + + var data = { + allItems: { + exp: [], + inc: [] + }, + totals: { + exp: 0, + inc: 0 + }, + budget: 0, + percentage: -1 + }; + + + return { + addItem: function(type, des, val) { + var newItem, ID; + + //[1 2 3 4 5], next ID = 6 + //[1 2 4 6 8], next ID = 9 + // ID = last ID + 1 + + // Create new ID + if (data.allItems[type].length > 0) { + ID = data.allItems[type][data.allItems[type].length - 1].id + 1; + } else { + ID = 0; + } + + // Create new item based on 'inc' or 'exp' type + if (type === 'exp') { + newItem = new Expense(ID, des, val); + } else if (type === 'inc') { + newItem = new Income(ID, des, val); + } + + // Push it into our data structure + data.allItems[type].push(newItem); + + // Return the new element + return newItem; + }, + + + deleteItem: function(type, id) { + var ids, index; + + // id = 6 + //data.allItems[type][id]; + // ids = [1 2 4 8] + //index = 3 + + ids = data.allItems[type].map(function(current) { + return current.id; + }); + + index = ids.indexOf(id); + + if (index !== -1) { + data.allItems[type].splice(index, 1); + } + + }, + + + calculateBudget: function() { + + // calculate total income and expenses + calculateTotal('exp'); + calculateTotal('inc'); + + // Calculate the budget: income - expenses + data.budget = data.totals.inc - data.totals.exp; + + // calculate the percentage of income that we spent + if (data.totals.inc > 0) { + data.percentage = Math.round((data.totals.exp / data.totals.inc) * 100); + } else { + data.percentage = -1; + } + + // Expense = 100 and income 300, spent 33.333% = 100/300 = 0.3333 * 100 + }, + + calculatePercentages: function() { + + /* + a=20 + b=10 + c=40 + income = 100 + a=20/100=20% + b=10/100=10% + c=40/100=40% + */ + + data.allItems.exp.forEach(function(cur) { + cur.calcPercentage(data.totals.inc); + }); + }, + + + getPercentages: function() { + var allPerc = data.allItems.exp.map(function(cur) { + return cur.getPercentage(); + }); + return allPerc; + }, + + + getBudget: function() { + return { + budget: data.budget, + totalInc: data.totals.inc, + totalExp: data.totals.exp, + percentage: data.percentage + }; + }, + + testing: function() { + console.log(data); + } + }; + +})(); + + + + +// UI CONTROLLER +var UIController = (function() { + + var DOMstrings = { + inputType: '.add__type', + inputDescription: '.add__description', + inputValue: '.add__value', + inputBtn: '.add__btn', + incomeContainer: '.income__list', + expensesContainer: '.expenses__list', + budgetLabel: '.budget__value', + incomeLabel: '.budget__income--value', + expensesLabel: '.budget__expenses--value', + percentageLabel: '.budget__expenses--percentage', + container: '.container', + expensesPercLabel: '.item__percentage', + dateLabel: '.budget__title--month' + }; + + + var formatNumber = function(num, type) { + var numSplit, int, dec, type; + /* + + or - before number + exactly 2 decimal points + comma separating the thousands + + 2310.4567 -> + 2,310.46 + 2000 -> + 2,000.00 + */ + + num = Math.abs(num); + num = num.toFixed(2); + + numSplit = num.split('.'); + + int = numSplit[0]; + if (int.length > 3) { + int = int.substr(0, int.length - 3) + ',' + int.substr(int.length - 3, 3); //input 23510, output 23,510 + } + + dec = numSplit[1]; + + return (type === 'exp' ? '-' : '+') + ' ' + int + '.' + dec; + + }; + + + var nodeListForEach = function(list, callback) { + for (var i = 0; i < list.length; i++) { + callback(list[i], i); + } + }; + + + return { + getInput: function() { + return { + type: document.querySelector(DOMstrings.inputType).value, // Will be either inc or exp + description: document.querySelector(DOMstrings.inputDescription).value, + value: parseFloat(document.querySelector(DOMstrings.inputValue).value) + }; + }, + + + addListItem: function(obj, type) { + var html, newHtml, element; + // Create HTML string with placeholder text + + if (type === 'inc') { + element = DOMstrings.incomeContainer; + + html = '
    %description%
    %value%
    '; + } else if (type === 'exp') { + element = DOMstrings.expensesContainer; + + html = '
    %description%
    %value%
    21%
    '; + } + + // Replace the placeholder text with some actual data + newHtml = html.replace('%id%', obj.id); + newHtml = newHtml.replace('%description%', obj.description); + newHtml = newHtml.replace('%value%', formatNumber(obj.value, type)); + + // Insert the HTML into the DOM + document.querySelector(element).insertAdjacentHTML('beforeend', newHtml); + }, + + + deleteListItem: function(selectorID) { + + var el = document.getElementById(selectorID); + el.parentNode.removeChild(el); + + }, + + + clearFields: function() { + var fields, fieldsArr; + + fields = document.querySelectorAll(DOMstrings.inputDescription + ', ' + DOMstrings.inputValue); + + fieldsArr = Array.prototype.slice.call(fields); + + fieldsArr.forEach(function(current, index, array) { + current.value = ""; + }); + + fieldsArr[0].focus(); + }, + + + displayBudget: function(obj) { + var type; + obj.budget > 0 ? type = 'inc' : type = 'exp'; + + document.querySelector(DOMstrings.budgetLabel).textContent = formatNumber(obj.budget, type); + document.querySelector(DOMstrings.incomeLabel).textContent = formatNumber(obj.totalInc, 'inc'); + document.querySelector(DOMstrings.expensesLabel).textContent = formatNumber(obj.totalExp, 'exp'); + + if (obj.percentage > 0) { + document.querySelector(DOMstrings.percentageLabel).textContent = obj.percentage + '%'; + } else { + document.querySelector(DOMstrings.percentageLabel).textContent = '---'; + } + + }, + + + displayPercentages: function(percentages) { + + var fields = document.querySelectorAll(DOMstrings.expensesPercLabel); + + nodeListForEach(fields, function(current, index) { + + if (percentages[index] > 0) { + current.textContent = percentages[index] + '%'; + } else { + current.textContent = '---'; + } + }); + + }, + + + displayMonth: function() { + var now, months, month, year; + + now = new Date(); + //var christmas = new Date(2016, 11, 25); + + months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; + month = now.getMonth(); + + year = now.getFullYear(); + document.querySelector(DOMstrings.dateLabel).textContent = months[month] + ' ' + year; + }, + + + changedType: function() { + + var fields = document.querySelectorAll( + DOMstrings.inputType + ',' + + DOMstrings.inputDescription + ',' + + DOMstrings.inputValue); + + nodeListForEach(fields, function(cur) { + cur.classList.toggle('red-focus'); + }); + + document.querySelector(DOMstrings.inputBtn).classList.toggle('red'); + + }, + + + getDOMstrings: function() { + return DOMstrings; + } + }; + +})(); + + + + +// GLOBAL APP CONTROLLER +var controller = (function(budgetCtrl, UICtrl) { + + var setupEventListeners = function() { + var DOM = UICtrl.getDOMstrings(); + + document.querySelector(DOM.inputBtn).addEventListener('click', ctrlAddItem); + + document.addEventListener('keypress', function(event) { + if (event.keyCode === 13 || event.which === 13) { + ctrlAddItem(); + } + }); + + document.querySelector(DOM.container).addEventListener('click', ctrlDeleteItem); + + document.querySelector(DOM.inputType).addEventListener('change', UICtrl.changedType); + }; + + + var updateBudget = function() { + + // 1. Calculate the budget + budgetCtrl.calculateBudget(); + + // 2. Return the budget + var budget = budgetCtrl.getBudget(); + + // 3. Display the budget on the UI + UICtrl.displayBudget(budget); + }; + + + var updatePercentages = function() { + + // 1. Calculate percentages + budgetCtrl.calculatePercentages(); + + // 2. Read percentages from the budget controller + var percentages = budgetCtrl.getPercentages(); + + // 3. Update the UI with the new percentages + UICtrl.displayPercentages(percentages); + }; + + + var ctrlAddItem = function() { + var input, newItem; + + // 1. Get the field input data + input = UICtrl.getInput(); + + if (input.description !== "" && !isNaN(input.value) && input.value > 0) { + // 2. Add the item to the budget controller + newItem = budgetCtrl.addItem(input.type, input.description, input.value); + + // 3. Add the item to the UI + UICtrl.addListItem(newItem, input.type); + + // 4. Clear the fields + UICtrl.clearFields(); + + // 5. Calculate and update budget + updateBudget(); + + // 6. Calculate and update percentages + updatePercentages(); + } + }; + + + var ctrlDeleteItem = function(event) { + var itemID, splitID, type, ID; + + itemID = event.target.parentNode.parentNode.parentNode.parentNode.id; + + if (itemID) { + + //inc-1 + splitID = itemID.split('-'); + type = splitID[0]; + ID = parseInt(splitID[1]); + + // 1. delete the item from the data structure + budgetCtrl.deleteItem(type, ID); + + // 2. Delete the item from the UI + UICtrl.deleteListItem(itemID); + + // 3. Update and show the new budget + updateBudget(); + + // 4. Calculate and update percentages + updatePercentages(); + } + }; + + + return { + init: function() { + console.log('Application has started.'); + UICtrl.displayMonth(); + UICtrl.displayBudget({ + budget: 0, + totalInc: 0, + totalExp: 0, + percentage: -1 + }); + setupEventListeners(); + } + }; + +})(budgetController, UIController); + + +controller.init(); \ No newline at end of file diff --git a/6-budgety/final/back.png b/6-budgety/final/back.png new file mode 100755 index 0000000000..85272933a9 Binary files /dev/null and b/6-budgety/final/back.png differ diff --git a/6-budgety/final/index.html b/6-budgety/final/index.html new file mode 100755 index 0000000000..106c33da96 --- /dev/null +++ b/6-budgety/final/index.html @@ -0,0 +1,126 @@ + + + + + + + + Budgety + + + +
    +
    +
    + Available Budget in %Month%: +
    + +
    + 2,345.64
    + +
    +
    Income
    +
    +
    + 4,300.00
    +
     
    +
    +
    + +
    +
    Expenses
    +
    +
    - 1,954.36
    +
    45%
    +
    +
    +
    +
    + + + +
    +
    +
    + + + + +
    +
    + +
    +
    +

    Income

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

    Expenses

    + +
    + + + +
    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/6-budgety/final/style.css b/6-budgety/final/style.css new file mode 100755 index 0000000000..b3de591930 --- /dev/null +++ b/6-budgety/final/style.css @@ -0,0 +1,278 @@ +/********************************************** +*** GENERAL +**********************************************/ + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +.clearfix::after { + content: ""; + display: table; + clear: both; +} + +body { + color: #555; + font-family: Open Sans; + font-size: 16px; + position: relative; + height: 100vh; + font-weight: 400; +} + +.right { float: right; } +.red { color: #FF5049 !important; } +.red-focus:focus { border: 1px solid #FF5049 !important; } + +/********************************************** +*** TOP PART +**********************************************/ + +.top { + height: 40vh; + background-image: linear-gradient(rgba(0, 0, 0, 0.35), rgba(0, 0, 0, 0.35)), url(http://github.com/back.png); + background-size: cover; + background-position: center; + position: relative; +} + +.budget { + position: absolute; + width: 350px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: #fff; +} + +.budget__title { + font-size: 18px; + text-align: center; + margin-bottom: 10px; + font-weight: 300; +} + +.budget__value { + font-weight: 300; + font-size: 46px; + text-align: center; + margin-bottom: 25px; + letter-spacing: 2px; +} + +.budget__income, +.budget__expenses { + padding: 12px; + text-transform: uppercase; +} + +.budget__income { + margin-bottom: 10px; + background-color: #28B9B5; +} + +.budget__expenses { + background-color: #FF5049; +} + +.budget__income--text, +.budget__expenses--text { + float: left; + font-size: 13px; + color: #444; + margin-top: 2px; +} + +.budget__income--value, +.budget__expenses--value { + letter-spacing: 1px; + float: left; +} + +.budget__income--percentage, +.budget__expenses--percentage { + float: left; + width: 34px; + font-size: 11px; + padding: 3px 0; + margin-left: 10px; +} + +.budget__expenses--percentage { + background-color: rgba(255, 255, 255, 0.2); + text-align: center; + border-radius: 3px; +} + + +/********************************************** +*** BOTTOM PART +**********************************************/ + +/***** FORM *****/ +.add { + padding: 14px; + border-bottom: 1px solid #e7e7e7; + background-color: #f7f7f7; +} + +.add__container { + margin: 0 auto; + text-align: center; +} + +.add__type { + width: 55px; + border: 1px solid #e7e7e7; + height: 44px; + font-size: 18px; + color: inherit; + background-color: #fff; + margin-right: 10px; + font-weight: 300; + transition: border 0.3s; +} + +.add__description, +.add__value { + border: 1px solid #e7e7e7; + background-color: #fff; + color: inherit; + font-family: inherit; + font-size: 14px; + padding: 12px 15px; + margin-right: 10px; + border-radius: 5px; + transition: border 0.3s; +} + +.add__description { width: 400px;} +.add__value { width: 100px;} + +.add__btn { + font-size: 35px; + background: none; + border: none; + color: #28B9B5; + cursor: pointer; + display: inline-block; + vertical-align: middle; + line-height: 1.1; + margin-left: 10px; +} + +.add__btn:active { transform: translateY(2px); } + +.add__type:focus, +.add__description:focus, +.add__value:focus { + outline: none; + border: 1px solid #28B9B5; +} + +.add__btn:focus { outline: none; } + +/***** LISTS *****/ +.container { + width: 1000px; + margin: 60px auto; +} + +.income { + float: left; + width: 475px; + margin-right: 50px; +} + +.expenses { + float: left; + width: 475px; +} + +h2 { + text-transform: uppercase; + font-size: 18px; + font-weight: 400; + margin-bottom: 15px; +} + +.icome__title { color: #28B9B5; } +.expenses__title { color: #FF5049; } + +.item { + padding: 13px; + border-bottom: 1px solid #e7e7e7; +} + +.item:first-child { border-top: 1px solid #e7e7e7; } +.item:nth-child(even) { background-color: #f7f7f7; } + +.item__description { + float: left; +} + +.item__value { + float: left; + transition: transform 0.3s; +} + +.item__percentage { + float: left; + margin-left: 20px; + transition: transform 0.3s; + font-size: 11px; + background-color: #FFDAD9; + padding: 3px; + border-radius: 3px; + width: 32px; + text-align: center; +} + +.income .item__value, +.income .item__delete--btn { + color: #28B9B5; +} + +.expenses .item__value, +.expenses .item__percentage, +.expenses .item__delete--btn { + color: #FF5049; +} + + +.item__delete { + float: left; +} + +.item__delete--btn { + font-size: 22px; + background: none; + border: none; + cursor: pointer; + display: inline-block; + vertical-align: middle; + line-height: 1; + display: none; +} + +.item__delete--btn:focus { outline: none; } +.item__delete--btn:active { transform: translateY(2px); } + +.item:hover .item__delete--btn { display: block; } +.item:hover .item__value { transform: translateX(-20px); } +.item:hover .item__percentage { transform: translateX(-20px); } + + +.unpaid { + background-color: #FFDAD9 !important; + cursor: pointer; + color: #FF5049; + +} + +.unpaid .item__percentage { box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.1); } +.unpaid:hover .item__description { font-weight: 900; } + diff --git a/6-budgety/starter/app.js b/6-budgety/starter/app.js new file mode 100755 index 0000000000..ea73c7053a --- /dev/null +++ b/6-budgety/starter/app.js @@ -0,0 +1,257 @@ +var budgetController = (function() { + + var Expense = function(id, description, value) { + this.id = id; + this.description = description; + this.value = value; + } + + var Income = function(id, description, value) { + this.id = id; + this.description = description; + this.value = value; + } + + var data = { + allItems: { + expense: [], + income: [] + }, + totals: { + expense: 0, + income: 0 + }, + budget: 0, + percentage: -1 + } + + function updateTotals(type, amount) { + data.totals[type] += amount + } + + + return { + testing: function() { + console.log(data); + console.log(data.allItems); + }, + addItem: function(type, desc, val) { + var newItem, ID; + + + if (data.allItems[type].length == 0){ + ID = 1; + } else { + ID = data.allItems[type][data.allItems[type].length - 1].id + 1; + } + + if (type === 'expense') { + newItem = new Expense(ID, desc, val); + } else if (type == 'income') { + newItem = new Income(ID, desc, val); + } + + data.allItems[type].push(newItem); + + // data.totals[type] += newItem.value; + + updateTotals(type, newItem.value); + + return newItem + + }, + + deleteItem: function(type, id) { + var ids, index + + ids = data.allItems[type].map(function(current) { + return current.id; + }); + + index = ids.indexOf(id); + + if (index !== -1) { + data.allItems[type].splice(index, 1); + } + }, + + calculateBudget: function() { + var sumIncome = data.totals.income - data.totals.expense; + data.budget = sumIncome; + if (data.totals.income > data.totals.expense) { + data.percentage = Math.round((data.totals.expense/sumIncome) * 100); + } else { + data.percentage = -1; + } + + }, + getBudget: function() { + return { + budget: data.budget, + totalIncome: data.totals.income, + totalExpenses: data.totals.expense, + percentage: data.percentage + } + } + } + +})(); + +var UIController = (function() { + + var DOMStrings = { + inputType: '.add__type', + inputDescription: '.add__description', + inputValue: '.add__value', + inputButton: '.add__btn', + incomeContainer: '.income__list', + expenseContainer: '.expenses__list', + budgetLabel: '.budget__value', + totalIncomeLabel: '.budget__income--value', + totalExpenseLabel: '.budget__expenses--value', + percentageLabel: '.budget__expenses--percentage', + container: '.container' + + } + + return { + getInput: function() { + return { + type: document.querySelector(DOMStrings.inputType).value, + description: document.querySelector(DOMStrings.inputDescription).value, + value: parseFloat(document.querySelector(DOMStrings.inputValue).value) + } + }, + getDOMStrings: function() { + return DOMStrings; + }, + addListItem: function(item, type) { + + var html, newHtml, element; + + if (type == 'income') { + html = '
    %description%
    + %value%
    '; + element = DOMStrings.incomeContainer; + } else if (type === 'expense'){ + html = '
    %description%
    -%value%
    21%
    '; + element = DOMStrings.expenseContainer; + } + + newHtml = html.replace('%id%', item.id); + newHtml = newHtml.replace('%description%', item.description); + newHtml = newHtml.replace('%value%', item.value); + + + document.querySelector(element).insertAdjacentHTML('beforeend', newHtml); + }, + deleteListItem: function(selectorID) { + var element = document.getElementById(selectorID); + element.parentNode.removeChild(element); + }, + clearFields: function() { + var fields = document.querySelectorAll(DOMStrings.inputDescription + ',' + DOMStrings.inputValue); + var fieldsArr = Array.prototype.slice.call(fields); + fieldsArr.forEach(function(current, index, array) { + current.value = ""; + }); + + fieldsArr[0].focus(); + + }, + displayBudget: function(obj) { + document.querySelector(DOMStrings.budgetLabel).textContent = obj.budget; + document.querySelector(DOMStrings.totalIncomeLabel).textContent = obj.totalIncome; + document.querySelector(DOMStrings.totalExpenseLabel).textContent = obj.totalExpenses; + + if (obj.percentage > 0) { + document.querySelector(DOMStrings.percentageLabel).textContent = obj.percentage + '%'; + } else { + document.querySelector(DOMStrings.percentageLabel).textContent = '--'; + } + + console.log(obj); + } + } + +})(); + +var controller = (function(budgetCtrl, UICtrl) { + var input, newItem; + + var DOM = UICtrl.getDOMStrings() + + var updateBudget= function() { + budgetCtrl.calculateBudget(); + + var summary = budgetCtrl.getBudget(); + + UICtrl.displayBudget(summary); + }; + + var setUpEventListeners = function() { + document.querySelector(DOM.inputButton).addEventListener('click', ctrlAddItem); + + document.addEventListener('keypress', function() { + if (event.keyCode == 13 || event.which == 13) { + ctrlAddItem(); + } + }); + + + document.querySelector(DOM.container).addEventListener('click', ctrlDelteItem); + }; + + + var ctrlAddItem = function() { + + input = UICtrl.getInput(); + + if (input.description !== "" && !isNaN(input.value) && input.value > 0) { + newItem = budgetCtrl.addItem(input.type, input.description, input.value); + + UICtrl.addListItem(newItem, input.type); + + UICtrl.clearFields(); + + updateBudget(); + } + }; + + var ctrlDelteItem = function(event) { + console.log(event); + var itemID, splitID, type, id; + // how does it know specific button clicked? - target + + itemID = event.target.parentNode.parentNode.parentNode.parentNode.id; + console.log(itemID) + if (itemID) { + splitID = itemID.split('-'); + type = splitID[0]; + id = parseInt(splitID[1]); + + budgetCtrl.deleteItem(type, id); + + UICtrl.deleteListItem(itemID); + + updateBudget(); + }; + }; + + return { + init: function() { + console.log('Application has started'); + UICtrl.displayBudget({ + budget: 0, + totalIncome: 0, + totalExpenses: 0, + percentage: -1 + }); + setUpEventListeners(); + + } + }; + + +})(budgetController, UIController); + +controller.init(); \ No newline at end of file diff --git a/6-budgety/starter/back.png b/6-budgety/starter/back.png new file mode 100755 index 0000000000..85272933a9 Binary files /dev/null and b/6-budgety/starter/back.png differ diff --git a/6-budgety/starter/index.html b/6-budgety/starter/index.html new file mode 100755 index 0000000000..3ae018bced --- /dev/null +++ b/6-budgety/starter/index.html @@ -0,0 +1,124 @@ + + + + + + + + Budgety + + + +
    +
    +
    + Available Budget in %Month%: +
    + +
    + 2,345.64
    + +
    +
    Income
    +
    +
    + 4,300.00
    +
     
    +
    +
    + +
    +
    Expenses
    +
    +
    - 1,954.36
    +
    45%
    +
    +
    +
    +
    + + + +
    +
    +
    + + + + +
    +
    + +
    +
    +

    Income

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

    Expenses

    + +
    + + + +
    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/6-budgety/starter/style.css b/6-budgety/starter/style.css new file mode 100755 index 0000000000..b3de591930 --- /dev/null +++ b/6-budgety/starter/style.css @@ -0,0 +1,278 @@ +/********************************************** +*** GENERAL +**********************************************/ + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +.clearfix::after { + content: ""; + display: table; + clear: both; +} + +body { + color: #555; + font-family: Open Sans; + font-size: 16px; + position: relative; + height: 100vh; + font-weight: 400; +} + +.right { float: right; } +.red { color: #FF5049 !important; } +.red-focus:focus { border: 1px solid #FF5049 !important; } + +/********************************************** +*** TOP PART +**********************************************/ + +.top { + height: 40vh; + background-image: linear-gradient(rgba(0, 0, 0, 0.35), rgba(0, 0, 0, 0.35)), url(http://github.com/back.png); + background-size: cover; + background-position: center; + position: relative; +} + +.budget { + position: absolute; + width: 350px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: #fff; +} + +.budget__title { + font-size: 18px; + text-align: center; + margin-bottom: 10px; + font-weight: 300; +} + +.budget__value { + font-weight: 300; + font-size: 46px; + text-align: center; + margin-bottom: 25px; + letter-spacing: 2px; +} + +.budget__income, +.budget__expenses { + padding: 12px; + text-transform: uppercase; +} + +.budget__income { + margin-bottom: 10px; + background-color: #28B9B5; +} + +.budget__expenses { + background-color: #FF5049; +} + +.budget__income--text, +.budget__expenses--text { + float: left; + font-size: 13px; + color: #444; + margin-top: 2px; +} + +.budget__income--value, +.budget__expenses--value { + letter-spacing: 1px; + float: left; +} + +.budget__income--percentage, +.budget__expenses--percentage { + float: left; + width: 34px; + font-size: 11px; + padding: 3px 0; + margin-left: 10px; +} + +.budget__expenses--percentage { + background-color: rgba(255, 255, 255, 0.2); + text-align: center; + border-radius: 3px; +} + + +/********************************************** +*** BOTTOM PART +**********************************************/ + +/***** FORM *****/ +.add { + padding: 14px; + border-bottom: 1px solid #e7e7e7; + background-color: #f7f7f7; +} + +.add__container { + margin: 0 auto; + text-align: center; +} + +.add__type { + width: 55px; + border: 1px solid #e7e7e7; + height: 44px; + font-size: 18px; + color: inherit; + background-color: #fff; + margin-right: 10px; + font-weight: 300; + transition: border 0.3s; +} + +.add__description, +.add__value { + border: 1px solid #e7e7e7; + background-color: #fff; + color: inherit; + font-family: inherit; + font-size: 14px; + padding: 12px 15px; + margin-right: 10px; + border-radius: 5px; + transition: border 0.3s; +} + +.add__description { width: 400px;} +.add__value { width: 100px;} + +.add__btn { + font-size: 35px; + background: none; + border: none; + color: #28B9B5; + cursor: pointer; + display: inline-block; + vertical-align: middle; + line-height: 1.1; + margin-left: 10px; +} + +.add__btn:active { transform: translateY(2px); } + +.add__type:focus, +.add__description:focus, +.add__value:focus { + outline: none; + border: 1px solid #28B9B5; +} + +.add__btn:focus { outline: none; } + +/***** LISTS *****/ +.container { + width: 1000px; + margin: 60px auto; +} + +.income { + float: left; + width: 475px; + margin-right: 50px; +} + +.expenses { + float: left; + width: 475px; +} + +h2 { + text-transform: uppercase; + font-size: 18px; + font-weight: 400; + margin-bottom: 15px; +} + +.icome__title { color: #28B9B5; } +.expenses__title { color: #FF5049; } + +.item { + padding: 13px; + border-bottom: 1px solid #e7e7e7; +} + +.item:first-child { border-top: 1px solid #e7e7e7; } +.item:nth-child(even) { background-color: #f7f7f7; } + +.item__description { + float: left; +} + +.item__value { + float: left; + transition: transform 0.3s; +} + +.item__percentage { + float: left; + margin-left: 20px; + transition: transform 0.3s; + font-size: 11px; + background-color: #FFDAD9; + padding: 3px; + border-radius: 3px; + width: 32px; + text-align: center; +} + +.income .item__value, +.income .item__delete--btn { + color: #28B9B5; +} + +.expenses .item__value, +.expenses .item__percentage, +.expenses .item__delete--btn { + color: #FF5049; +} + + +.item__delete { + float: left; +} + +.item__delete--btn { + font-size: 22px; + background: none; + border: none; + cursor: pointer; + display: inline-block; + vertical-align: middle; + line-height: 1; + display: none; +} + +.item__delete--btn:focus { outline: none; } +.item__delete--btn:active { transform: translateY(2px); } + +.item:hover .item__delete--btn { display: block; } +.item:hover .item__value { transform: translateX(-20px); } +.item:hover .item__percentage { transform: translateX(-20px); } + + +.unpaid { + background-color: #FFDAD9 !important; + cursor: pointer; + color: #FF5049; + +} + +.unpaid .item__percentage { box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.1); } +.unpaid:hover .item__description { font-weight: 900; } + diff --git a/7-ES6/.DS_Store b/7-ES6/.DS_Store new file mode 100644 index 0000000000..5118add513 Binary files /dev/null and b/7-ES6/.DS_Store differ diff --git a/7-ES6/final/.DS_Store b/7-ES6/final/.DS_Store new file mode 100644 index 0000000000..5008ddfcf5 Binary files /dev/null and b/7-ES6/final/.DS_Store differ diff --git a/7-ES6/final/index.html b/7-ES6/final/index.html new file mode 100755 index 0000000000..3bec820521 --- /dev/null +++ b/7-ES6/final/index.html @@ -0,0 +1,34 @@ + + + + + Section 7: Get Ready for the Future: ES6 / ES2015 + + + + + + +

    Section 7: Get Ready for the Future: ES6 / ES2015

    + +
    I'm green!
    +
    I'm blue!
    +
    I'm orange!
    + + + + + \ No newline at end of file diff --git a/7-ES6/final/polyfill.min.js b/7-ES6/final/polyfill.min.js new file mode 100644 index 0000000000..e26aa3e970 --- /dev/null +++ b/7-ES6/final/polyfill.min.js @@ -0,0 +1,4 @@ +!function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var c="function"==typeof require&&require;if(!u&&c)return c(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var a=n[o]={exports:{}};t[o][0].call(a.exports,function(n){var r=t[o][1][n];return s(r?r:n)},a,a.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o2?arguments[2]:void 0,s=Math.min((void 0===a?u:i(a,u))-f,u-c),l=1;for(f0;)f in r?r[c]=r[f]:delete r[c],c+=l,f+=l;return r}},{105:105,108:108,109:109}],9:[function(t,n,r){"use strict";var e=t(109),i=t(105),o=t(108);n.exports=function fill(t){for(var n=e(this),r=o(n.length),u=arguments.length,c=i(u>1?arguments[1]:void 0,r),f=u>2?arguments[2]:void 0,a=void 0===f?r:i(f,r);a>c;)n[c++]=t;return n}},{105:105,108:108,109:109}],10:[function(t,n,r){var e=t(37);n.exports=function(t,n){var r=[];return e(t,!1,r.push,r,n),r}},{37:37}],11:[function(t,n,r){var e=t(107),i=t(108),o=t(105);n.exports=function(t){return function(n,r,u){var c,f=e(n),a=i(f.length),s=o(u,a);if(t&&r!=r){for(;a>s;)if(c=f[s++],c!=c)return!0}else for(;a>s;s++)if((t||s in f)&&f[s]===r)return t||s||0;return!t&&-1}}},{105:105,107:107,108:108}],12:[function(t,n,r){var e=t(25),i=t(45),o=t(109),u=t(108),c=t(15);n.exports=function(t,n){var r=1==t,f=2==t,a=3==t,s=4==t,l=6==t,h=5==t||l,v=n||c;return function(n,c,p){for(var d,y,g=o(n),b=i(g),x=e(c,p,3),m=u(b.length),w=0,S=r?v(n,m):f?v(n,0):void 0;m>w;w++)if((h||w in b)&&(d=b[w],y=x(d,w,g),t))if(r)S[w]=y;else if(y)switch(t){case 3:return!0;case 5:return d;case 6:return w;case 2:S.push(d)}else if(s)return!1;return l?-1:a||s?s:S}}},{108:108,109:109,15:15,25:25,45:45}],13:[function(t,n,r){var e=t(3),i=t(109),o=t(45),u=t(108);n.exports=function(t,n,r,c,f){e(n);var a=i(t),s=o(a),l=u(a.length),h=f?l-1:0,v=f?-1:1;if(r<2)for(;;){if(h in s){c=s[h],h+=v;break}if(h+=v,f?h<0:l<=h)throw TypeError("Reduce of empty array with no initial value")}for(;f?h>=0:l>h;h+=v)h in s&&(c=n(c,s[h],h,a));return c}},{108:108,109:109,3:3,45:45}],14:[function(t,n,r){var e=t(49),i=t(47),o=t(117)("species");n.exports=function(t){var n;return i(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!i(n.prototype)||(n=void 0),e(n)&&(n=n[o],null===n&&(n=void 0))),void 0===n?Array:n}},{117:117,47:47,49:49}],15:[function(t,n,r){var e=t(14);n.exports=function(t,n){return new(e(t))(n)}},{14:14}],16:[function(t,n,r){"use strict";var e=t(3),i=t(49),o=t(44),u=[].slice,c={},f=function(t,n,r){if(!(n in c)){for(var e=[],i=0;i1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function has(t){return!!y(this,t)}}),v&&e(l.prototype,"size",{get:function(){return f(this[d])}}),l},def:function(t,n,r){var e,i,o=y(t,n);return o?o.v=r:(t._l=o={i:i=p(n,!0),k:n,v:r,p:e=t._l,n:void 0,r:!1},t._f||(t._f=o),e&&(e.n=o),t[d]++,"F"!==i&&(t._i[i]=o)),t},getEntry:y,setStrong:function(t,n,r){s(t,n,function(t,n){this._t=t,this._k=n,this._l=void 0},function(){for(var t=this,n=t._k,r=t._l;r&&r.r;)r=r.p;return t._t&&(t._l=r=r?r.n:t._t._f)?"keys"==n?l(0,r.k):"values"==n?l(0,r.v):l(0,[r.k,r.v]):(t._t=void 0,l(1))},r?"entries":"values",!r,!0),h(n)}}},{25:25,27:27,28:28,37:37,53:53,55:55,6:6,62:62,66:66,67:67,86:86,91:91}],20:[function(t,n,r){var e=t(17),i=t(10);n.exports=function(t){return function toJSON(){if(e(this)!=t)throw TypeError(t+"#toJSON isn't generic");return i(this)}}},{10:10,17:17}],21:[function(t,n,r){"use strict";var e=t(86),i=t(62).getWeak,o=t(7),u=t(49),c=t(6),f=t(37),a=t(12),s=t(39),l=a(5),h=a(6),v=0,p=function(t){return t._l||(t._l=new d)},d=function(){this.a=[]},y=function(t,n){return l(t.a,function(t){return t[0]===n})};d.prototype={get:function(t){var n=y(this,t);if(n)return n[1]},has:function(t){return!!y(this,t)},set:function(t,n){var r=y(this,t);r?r[1]=n:this.a.push([t,n])},delete:function(t){var n=h(this.a,function(n){return n[0]===t});return~n&&this.a.splice(n,1),!!~n}},n.exports={getConstructor:function(t,n,r,o){var a=t(function(t,e){c(t,a,n,"_i"),t._i=v++,t._l=void 0,void 0!=e&&f(e,r,t[o],t)});return e(a.prototype,{delete:function(t){if(!u(t))return!1;var n=i(t);return n===!0?p(this).delete(t):n&&s(n,this._i)&&delete n[this._i]},has:function has(t){if(!u(t))return!1;var n=i(t);return n===!0?p(this).has(t):n&&s(n,this._i)}}),a},def:function(t,n,r){var e=i(o(n),!0);return e===!0?p(t).set(n,r):e[t._i]=r,t},ufstore:p}},{12:12,37:37,39:39,49:49,6:6,62:62,7:7,86:86}],22:[function(t,n,r){"use strict";var e=t(38),i=t(32),o=t(87),u=t(86),c=t(62),f=t(37),a=t(6),s=t(49),l=t(34),h=t(54),v=t(92),p=t(43);n.exports=function(t,n,r,d,y,g){var b=e[t],x=b,m=y?"set":"add",w=x&&x.prototype,S={},_=function(t){var n=w[t];o(w,t,"delete"==t?function(t){return!(g&&!s(t))&&n.call(this,0===t?0:t)}:"has"==t?function has(t){return!(g&&!s(t))&&n.call(this,0===t?0:t)}:"get"==t?function get(t){return g&&!s(t)?void 0:n.call(this,0===t?0:t)}:"add"==t?function add(t){return n.call(this,0===t?0:t),this}:function set(t,r){return n.call(this,0===t?0:t,r),this})};if("function"==typeof x&&(g||w.forEach&&!l(function(){(new x).entries().next()}))){var E=new x,O=E[m](g?{}:-0,1)!=E,F=l(function(){E.has(1)}),P=h(function(t){new x(t)}),A=!g&&l(function(){for(var t=new x,n=5;n--;)t[m](n,n);return!t.has(-0)});P||(x=n(function(n,r){a(n,x,t);var e=p(new b,n,x);return void 0!=r&&f(r,y,e[m],e),e}),x.prototype=w,w.constructor=x),(F||A)&&(_("delete"),_("has"),y&&_("get")),(A||O)&&_(m),g&&w.clear&&delete w.clear}else x=d.getConstructor(n,t,y,m),u(x.prototype,r),c.NEED=!0;return v(x,t),S[t]=x,i(i.G+i.W+i.F*(x!=b),S),g||d.setStrong(x,t,y),x}},{32:32,34:34,37:37,38:38,43:43,49:49,54:54,6:6,62:62,86:86,87:87,92:92}],23:[function(t,n,r){var e=n.exports={version:"2.4.0"};"number"==typeof __e&&(__e=e)},{}],24:[function(t,n,r){"use strict";var e=t(67),i=t(85);n.exports=function(t,n,r){n in t?e.f(t,n,i(0,r)):t[n]=r}},{67:67,85:85}],25:[function(t,n,r){var e=t(3);n.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,i){return t.call(n,r,e,i)}}return function(){return t.apply(n,arguments)}}},{3:3}],26:[function(t,n,r){"use strict";var e=t(7),i=t(110),o="number";n.exports=function(t){if("string"!==t&&t!==o&&"default"!==t)throw TypeError("Incorrect hint");return i(e(this),t!=o)}},{110:110,7:7}],27:[function(t,n,r){n.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],28:[function(t,n,r){n.exports=!t(34)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{34:34}],29:[function(t,n,r){var e=t(49),i=t(38).document,o=e(i)&&e(i.createElement);n.exports=function(t){return o?i.createElement(t):{}}},{38:38,49:49}],30:[function(t,n,r){n.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],31:[function(t,n,r){var e=t(76),i=t(73),o=t(77);n.exports=function(t){var n=e(t),r=i.f;if(r)for(var u,c=r(t),f=o.f,a=0;c.length>a;)f.call(t,u=c[a++])&&n.push(u);return n}},{73:73,76:76,77:77}],32:[function(t,n,r){var e=t(38),i=t(23),o=t(40),u=t(87),c=t(25),f="prototype",a=function(t,n,r){var s,l,h,v,p=t&a.F,d=t&a.G,y=t&a.S,g=t&a.P,b=t&a.B,x=d?e:y?e[n]||(e[n]={}):(e[n]||{})[f],m=d?i:i[n]||(i[n]={}),w=m[f]||(m[f]={});d&&(r=n);for(s in r)l=!p&&x&&void 0!==x[s],h=(l?x:r)[s],v=b&&l?c(h,e):g&&"function"==typeof h?c(Function.call,h):h,x&&u(x,s,h,t&a.U),m[s]!=h&&o(m,s,v),g&&w[s]!=h&&(w[s]=h)};e.core=i,a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,n.exports=a},{23:23,25:25,38:38,40:40,87:87}],33:[function(t,n,r){var e=t(117)("match");n.exports=function(t){var n=/./;try{"/./"[t](n)}catch(r){try{return n[e]=!1,!"/./"[t](n)}catch(t){}}return!0}},{117:117}],34:[function(t,n,r){n.exports=function(t){try{return!!t()}catch(t){return!0}}},{}],35:[function(t,n,r){"use strict";var e=t(40),i=t(87),o=t(34),u=t(27),c=t(117);n.exports=function(t,n,r){var f=c(t),a=r(u,f,""[t]),s=a[0],l=a[1];o(function(){var n={};return n[f]=function(){return 7},7!=""[t](n)})&&(i(String.prototype,t,s),e(RegExp.prototype,f,2==n?function(t,n){return l.call(t,this,n)}:function(t){return l.call(t,this)}))}},{117:117,27:27,34:34,40:40,87:87}],36:[function(t,n,r){"use strict";var e=t(7);n.exports=function(){var t=e(this),n="";return t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.unicode&&(n+="u"),t.sticky&&(n+="y"),n}},{7:7}],37:[function(t,n,r){var e=t(25),i=t(51),o=t(46),u=t(7),c=t(108),f=t(118),a={},s={},r=n.exports=function(t,n,r,l,h){var v,p,d,y,g=h?function(){return t}:f(t),b=e(r,l,n?2:1),x=0;if("function"!=typeof g)throw TypeError(t+" is not iterable!");if(o(g)){for(v=c(t.length);v>x;x++)if(y=n?b(u(p=t[x])[0],p[1]):b(t[x]),y===a||y===s)return y}else for(d=g.call(t);!(p=d.next()).done;)if(y=i(d,b,p.value,n),y===a||y===s)return y};r.BREAK=a,r.RETURN=s},{108:108,118:118,25:25,46:46,51:51,7:7}],38:[function(t,n,r){var e=n.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},{}],39:[function(t,n,r){var e={}.hasOwnProperty;n.exports=function(t,n){return e.call(t,n)}},{}],40:[function(t,n,r){var e=t(67),i=t(85);n.exports=t(28)?function(t,n,r){return e.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},{28:28,67:67,85:85}],41:[function(t,n,r){n.exports=t(38).document&&document.documentElement},{38:38}],42:[function(t,n,r){n.exports=!t(28)&&!t(34)(function(){return 7!=Object.defineProperty(t(29)("div"),"a",{get:function(){return 7}}).a})},{28:28,29:29,34:34}],43:[function(t,n,r){var e=t(49),i=t(90).set;n.exports=function(t,n,r){var o,u=n.constructor;return u!==r&&"function"==typeof u&&(o=u.prototype)!==r.prototype&&e(o)&&i&&i(t,o),t}},{49:49,90:90}],44:[function(t,n,r){n.exports=function(t,n,r){var e=void 0===r;switch(n.length){case 0:return e?t():t.call(r);case 1:return e?t(n[0]):t.call(r,n[0]);case 2:return e?t(n[0],n[1]):t.call(r,n[0],n[1]);case 3:return e?t(n[0],n[1],n[2]):t.call(r,n[0],n[1],n[2]);case 4:return e?t(n[0],n[1],n[2],n[3]):t.call(r,n[0],n[1],n[2],n[3])}return t.apply(r,n)}},{}],45:[function(t,n,r){var e=t(18);n.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==e(t)?t.split(""):Object(t)}},{18:18}],46:[function(t,n,r){var e=t(56),i=t(117)("iterator"),o=Array.prototype;n.exports=function(t){return void 0!==t&&(e.Array===t||o[i]===t)}},{117:117,56:56}],47:[function(t,n,r){var e=t(18);n.exports=Array.isArray||function isArray(t){return"Array"==e(t)}},{18:18}],48:[function(t,n,r){var e=t(49),i=Math.floor;n.exports=function isInteger(t){return!e(t)&&isFinite(t)&&i(t)===t}},{49:49}],49:[function(t,n,r){n.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],50:[function(t,n,r){var e=t(49),i=t(18),o=t(117)("match");n.exports=function(t){var n;return e(t)&&(void 0!==(n=t[o])?!!n:"RegExp"==i(t))}},{117:117,18:18,49:49}],51:[function(t,n,r){var e=t(7);n.exports=function(t,n,r,i){try{return i?n(e(r)[0],r[1]):n(r)}catch(n){var o=t.return;throw void 0!==o&&e(o.call(t)),n}}},{7:7}],52:[function(t,n,r){"use strict";var e=t(66),i=t(85),o=t(92),u={};t(40)(u,t(117)("iterator"),function(){return this}),n.exports=function(t,n,r){t.prototype=e(u,{next:i(1,r)}),o(t,n+" Iterator")}},{117:117,40:40,66:66,85:85,92:92}],53:[function(t,n,r){"use strict";var e=t(58),i=t(32),o=t(87),u=t(40),c=t(39),f=t(56),a=t(52),s=t(92),l=t(74),h=t(117)("iterator"),v=!([].keys&&"next"in[].keys()),p="@@iterator",d="keys",y="values",g=function(){return this};n.exports=function(t,n,r,b,x,m,w){a(r,n,b);var S,_,E,O=function(t){if(!v&&t in M)return M[t];switch(t){case d:return function keys(){return new r(this,t)};case y:return function values(){return new r(this,t)}}return function entries(){return new r(this,t)}},F=n+" Iterator",P=x==y,A=!1,M=t.prototype,I=M[h]||M[p]||x&&M[x],j=I||O(x),N=x?P?O("entries"):j:void 0,k="Array"==n?M.entries||I:I;if(k&&(E=l(k.call(new t)),E!==Object.prototype&&(s(E,F,!0),e||c(E,h)||u(E,h,g))),P&&I&&I.name!==y&&(A=!0,j=function values(){return I.call(this)}),e&&!w||!v&&!A&&M[h]||u(M,h,j),f[n]=j,f[F]=g,x)if(S={values:P?j:O(y),keys:m?j:O(d),entries:N},w)for(_ in S)_ in M||o(M,_,S[_]);else i(i.P+i.F*(v||A),n,S);return S}},{117:117,32:32,39:39,40:40,52:52,56:56,58:58,74:74,87:87,92:92}],54:[function(t,n,r){var e=t(117)("iterator"),i=!1;try{var o=[7][e]();o.return=function(){i=!0},Array.from(o,function(){throw 2})}catch(t){}n.exports=function(t,n){if(!n&&!i)return!1;var r=!1;try{var o=[7],u=o[e]();u.next=function(){return{done:r=!0}},o[e]=function(){return u},t(o)}catch(t){}return r}},{117:117}],55:[function(t,n,r){n.exports=function(t,n){return{value:n,done:!!t}}},{}],56:[function(t,n,r){n.exports={}},{}],57:[function(t,n,r){var e=t(76),i=t(107);n.exports=function(t,n){for(var r,o=i(t),u=e(o),c=u.length,f=0;c>f;)if(o[r=u[f++]]===n)return r}},{107:107,76:76}],58:[function(t,n,r){n.exports=!1},{}],59:[function(t,n,r){var e=Math.expm1;n.exports=!e||e(10)>22025.465794806718||e(10)<22025.465794806718||e(-2e-17)!=-2e-17?function expm1(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:e},{}],60:[function(t,n,r){n.exports=Math.log1p||function log1p(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},{}],61:[function(t,n,r){n.exports=Math.sign||function sign(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},{}],62:[function(t,n,r){var e=t(114)("meta"),i=t(49),o=t(39),u=t(67).f,c=0,f=Object.isExtensible||function(){return!0},a=!t(34)(function(){return f(Object.preventExtensions({}))}),s=function(t){u(t,e,{value:{i:"O"+ ++c,w:{}}})},l=function(t,n){if(!i(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!o(t,e)){if(!f(t))return"F";if(!n)return"E";s(t)}return t[e].i},h=function(t,n){if(!o(t,e)){if(!f(t))return!0;if(!n)return!1;s(t)}return t[e].w},v=function(t){return a&&p.NEED&&f(t)&&!o(t,e)&&s(t),t},p=n.exports={KEY:e,NEED:!1,fastKey:l,getWeak:h,onFreeze:v}},{114:114,34:34,39:39,49:49,67:67}],63:[function(t,n,r){var e=t(149),i=t(32),o=t(94)("metadata"),u=o.store||(o.store=new(t(255))),c=function(t,n,r){var i=u.get(t);if(!i){if(!r)return;u.set(t,i=new e)}var o=i.get(n);if(!o){if(!r)return;i.set(n,o=new e)}return o},f=function(t,n,r){var e=c(n,r,!1);return void 0!==e&&e.has(t)},a=function(t,n,r){var e=c(n,r,!1);return void 0===e?void 0:e.get(t)},s=function(t,n,r,e){c(r,e,!0).set(t,n)},l=function(t,n){var r=c(t,n,!1),e=[];return r&&r.forEach(function(t,n){e.push(n)}),e},h=function(t){return void 0===t||"symbol"==typeof t?t:String(t)},v=function(t){i(i.S,"Reflect",t)};n.exports={store:u,map:c,has:f,get:a,set:s,keys:l,key:h,exp:v}},{149:149,255:255,32:32,94:94}],64:[function(t,n,r){var e=t(38),i=t(104).set,o=e.MutationObserver||e.WebKitMutationObserver,u=e.process,c=e.Promise,f="process"==t(18)(u);n.exports=function(){var t,n,r,a=function(){var e,i;for(f&&(e=u.domain)&&e.exit();t;){i=t.fn,t=t.next;try{i()}catch(e){throw t?r():n=void 0,e}}n=void 0,e&&e.enter()};if(f)r=function(){u.nextTick(a)};else if(o){var s=!0,l=document.createTextNode("");new o(a).observe(l,{characterData:!0}),r=function(){l.data=s=!s}}else if(c&&c.resolve){var h=c.resolve();r=function(){h.then(a)}}else r=function(){i.call(e,a)};return function(e){var i={fn:e,next:void 0};n&&(n.next=i),t||(t=i,r()),n=i}}},{104:104,18:18,38:38}],65:[function(t,n,r){"use strict";var e=t(76),i=t(73),o=t(77),u=t(109),c=t(45),f=Object.assign;n.exports=!f||t(34)(function(){var t={},n={},r=Symbol(),e="abcdefghijklmnopqrst";return t[r]=7,e.split("").forEach(function(t){n[t]=t}),7!=f({},t)[r]||Object.keys(f({},n)).join("")!=e})?function assign(t,n){for(var r=u(t),f=arguments.length,a=1,s=i.f,l=o.f;f>a;)for(var h,v=c(arguments[a++]),p=s?e(v).concat(s(v)):e(v),d=p.length,y=0;d>y;)l.call(v,h=p[y++])&&(r[h]=v[h]);return r}:f},{109:109,34:34,45:45,73:73,76:76,77:77}],66:[function(t,n,r){var e=t(7),i=t(68),o=t(30),u=t(93)("IE_PROTO"),c=function(){},f="prototype",a=function(){var n,r=t(29)("iframe"),e=o.length,i="<",u=">";for(r.style.display="none",t(41).appendChild(r),r.src="/service/javascript:",n=r.contentWindow.document,n.open(),n.write(i+"script"+u+"document.F=Object"+i+"/script"+u),n.close(),a=n.F;e--;)delete a[f][o[e]];return a()};n.exports=Object.create||function create(t,n){var r;return null!==t?(c[f]=e(t),r=new c,c[f]=null,r[u]=t):r=a(),void 0===n?r:i(r,n)}},{29:29,30:30,41:41,68:68,7:7,93:93}],67:[function(t,n,r){var e=t(7),i=t(42),o=t(110),u=Object.defineProperty;r.f=t(28)?Object.defineProperty:function defineProperty(t,n,r){if(e(t),n=o(n,!0),e(r),i)try{return u(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[n]=r.value),t}},{110:110,28:28,42:42,7:7}],68:[function(t,n,r){var e=t(67),i=t(7),o=t(76);n.exports=t(28)?Object.defineProperties:function defineProperties(t,n){i(t);for(var r,u=o(n),c=u.length,f=0;c>f;)e.f(t,r=u[f++],n[r]);return t}},{28:28,67:67,7:7,76:76}],69:[function(t,n,r){n.exports=t(58)||!t(34)(function(){var n=Math.random();__defineSetter__.call(null,n,function(){}),delete t(38)[n]})},{34:34,38:38,58:58}],70:[function(t,n,r){var e=t(77),i=t(85),o=t(107),u=t(110),c=t(39),f=t(42),a=Object.getOwnPropertyDescriptor;r.f=t(28)?a:function getOwnPropertyDescriptor(t,n){if(t=o(t),n=u(n,!0),f)try{return a(t,n)}catch(t){}if(c(t,n))return i(!e.f.call(t,n),t[n])}},{107:107,110:110,28:28,39:39,42:42,77:77,85:85}],71:[function(t,n,r){var e=t(107),i=t(72).f,o={}.toString,u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(t){try{return i(t)}catch(t){return u.slice()}};n.exports.f=function getOwnPropertyNames(t){return u&&"[object Window]"==o.call(t)?c(t):i(e(t))}},{107:107,72:72}],72:[function(t,n,r){var e=t(75),i=t(30).concat("length","prototype");r.f=Object.getOwnPropertyNames||function getOwnPropertyNames(t){return e(t,i)}},{30:30,75:75}],73:[function(t,n,r){r.f=Object.getOwnPropertySymbols},{}],74:[function(t,n,r){var e=t(39),i=t(109),o=t(93)("IE_PROTO"),u=Object.prototype;n.exports=Object.getPrototypeOf||function(t){return t=i(t),e(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},{109:109,39:39,93:93}],75:[function(t,n,r){var e=t(39),i=t(107),o=t(11)(!1),u=t(93)("IE_PROTO");n.exports=function(t,n){var r,c=i(t),f=0,a=[];for(r in c)r!=u&&e(c,r)&&a.push(r);for(;n.length>f;)e(c,r=n[f++])&&(~o(a,r)||a.push(r));return a}},{107:107,11:11,39:39,93:93}],76:[function(t,n,r){var e=t(75),i=t(30);n.exports=Object.keys||function keys(t){return e(t,i)}},{30:30,75:75}],77:[function(t,n,r){r.f={}.propertyIsEnumerable},{}],78:[function(t,n,r){var e=t(32),i=t(23),o=t(34);n.exports=function(t,n){var r=(i.Object||{})[t]||Object[t],u={};u[t]=n(r),e(e.S+e.F*o(function(){r(1)}),"Object",u)}},{23:23,32:32,34:34}],79:[function(t,n,r){var e=t(76),i=t(107),o=t(77).f;n.exports=function(t){return function(n){for(var r,u=i(n),c=e(u),f=c.length,a=0,s=[];f>a;)o.call(u,r=c[a++])&&s.push(t?[r,u[r]]:u[r]);return s}}},{107:107,76:76,77:77}],80:[function(t,n,r){var e=t(72),i=t(73),o=t(7),u=t(38).Reflect;n.exports=u&&u.ownKeys||function ownKeys(t){var n=e.f(o(t)),r=i.f;return r?n.concat(r(t)):n}},{38:38,7:7,72:72,73:73}],81:[function(t,n,r){var e=t(38).parseFloat,i=t(102).trim;n.exports=1/e(t(103)+"-0")!==-(1/0)?function parseFloat(t){var n=i(String(t),3),r=e(n);return 0===r&&"-"==n.charAt(0)?-0:r}:e},{102:102,103:103,38:38}],82:[function(t,n,r){var e=t(38).parseInt,i=t(102).trim,o=t(103),u=/^[\-+]?0[xX]/;n.exports=8!==e(o+"08")||22!==e(o+"0x16")?function parseInt(t,n){var r=i(String(t),3);return e(r,n>>>0||(u.test(r)?16:10))}:e},{102:102,103:103,38:38}],83:[function(t,n,r){"use strict";var e=t(84),i=t(44),o=t(3);n.exports=function(){for(var t=o(this),n=arguments.length,r=Array(n),u=0,c=e._,f=!1;n>u;)(r[u]=arguments[u++])===c&&(f=!0);return function(){var e,o=this,u=arguments.length,a=0,s=0;if(!f&&!u)return i(t,r,o);if(e=r.slice(),f)for(;n>a;a++)e[a]===c&&(e[a]=arguments[s++]);for(;u>s;)e.push(arguments[s++]);return i(t,e,o)}}},{3:3,44:44,84:84}],84:[function(t,n,r){n.exports=t(38)},{38:38}],85:[function(t,n,r){n.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},{}],86:[function(t,n,r){var e=t(87);n.exports=function(t,n,r){for(var i in n)e(t,i,n[i],r);return t}},{87:87}],87:[function(t,n,r){var e=t(38),i=t(40),o=t(39),u=t(114)("src"),c="toString",f=Function[c],a=(""+f).split(c);t(23).inspectSource=function(t){return f.call(t)},(n.exports=function(t,n,r,c){var f="function"==typeof r;f&&(o(r,"name")||i(r,"name",n)),t[n]!==r&&(f&&(o(r,u)||i(r,u,t[n]?""+t[n]:a.join(String(n)))),t===e?t[n]=r:c?t[n]?t[n]=r:i(t,n,r):(delete t[n],i(t,n,r)))})(Function.prototype,c,function toString(){return"function"==typeof this&&this[u]||f.call(this)})},{114:114,23:23,38:38,39:39,40:40}],88:[function(t,n,r){n.exports=function(t,n){var r=n===Object(n)?function(t){return n[t]}:n;return function(n){return String(n).replace(t,r)}}},{}],89:[function(t,n,r){n.exports=Object.is||function is(t,n){return t===n?0!==t||1/t===1/n:t!=t&&n!=n}},{}],90:[function(t,n,r){var e=t(49),i=t(7),o=function(t,n){if(i(t),!e(n)&&null!==n)throw TypeError(n+": can't set as prototype!")};n.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(n,r,e){try{e=t(25)(Function.call,t(70).f(Object.prototype,"__proto__").set,2),e(n,[]),r=!(n instanceof Array)}catch(t){r=!0}return function setPrototypeOf(t,n){return o(t,n),r?t.__proto__=n:e(t,n),t}}({},!1):void 0),check:o}},{25:25,49:49,7:7,70:70}],91:[function(t,n,r){"use strict";var e=t(38),i=t(67),o=t(28),u=t(117)("species");n.exports=function(t){var n=e[t];o&&n&&!n[u]&&i.f(n,u,{configurable:!0,get:function(){return this}})}},{117:117,28:28,38:38,67:67}],92:[function(t,n,r){var e=t(67).f,i=t(39),o=t(117)("toStringTag");n.exports=function(t,n,r){t&&!i(t=r?t:t.prototype,o)&&e(t,o,{configurable:!0,value:n})}},{117:117,39:39,67:67}],93:[function(t,n,r){var e=t(94)("keys"),i=t(114);n.exports=function(t){return e[t]||(e[t]=i(t))}},{114:114,94:94}],94:[function(t,n,r){var e=t(38),i="__core-js_shared__",o=e[i]||(e[i]={});n.exports=function(t){return o[t]||(o[t]={})}},{38:38}],95:[function(t,n,r){var e=t(7),i=t(3),o=t(117)("species");n.exports=function(t,n){var r,u=e(t).constructor;return void 0===u||void 0==(r=e(u)[o])?n:i(r)}},{117:117,3:3,7:7}],96:[function(t,n,r){var e=t(34);n.exports=function(t,n){return!!t&&e(function(){n?t.call(null,function(){},1):t.call(null)})}},{34:34}],97:[function(t,n,r){var e=t(106),i=t(27);n.exports=function(t){return function(n,r){var o,u,c=String(i(n)),f=e(r),a=c.length;return f<0||f>=a?t?"":void 0:(o=c.charCodeAt(f),o<55296||o>56319||f+1===a||(u=c.charCodeAt(f+1))<56320||u>57343?t?c.charAt(f):o:t?c.slice(f,f+2):(o-55296<<10)+(u-56320)+65536)}}},{106:106,27:27}],98:[function(t,n,r){var e=t(50),i=t(27);n.exports=function(t,n,r){if(e(n))throw TypeError("String#"+r+" doesn't accept regex!");return String(i(t))}},{27:27,50:50}],99:[function(t,n,r){var e=t(32),i=t(34),o=t(27),u=/"/g,c=function(t,n,r,e){var i=String(o(t)),c="<"+n;return""!==r&&(c+=" "+r+'="'+String(e).replace(u,""")+'"'),c+">"+i+""};n.exports=function(t,n){var r={};r[t]=n(c),e(e.P+e.F*i(function(){var n=""[t]('"');return n!==n.toLowerCase()||n.split('"').length>3}),"String",r)}},{27:27,32:32,34:34}],100:[function(t,n,r){var e=t(108),i=t(101),o=t(27);n.exports=function(t,n,r,u){var c=String(o(t)),f=c.length,a=void 0===r?" ":String(r),s=e(n);if(s<=f||""==a)return c;var l=s-f,h=i.call(a,Math.ceil(l/a.length));return h.length>l&&(h=h.slice(0,l)),u?h+c:c+h}},{101:101,108:108,27:27}],101:[function(t,n,r){"use strict";var e=t(106),i=t(27);n.exports=function repeat(t){var n=String(i(this)),r="",o=e(t);if(o<0||o==1/0)throw RangeError("Count can't be negative");for(;o>0;(o>>>=1)&&(n+=n))1&o&&(r+=n);return r}},{106:106,27:27}],102:[function(t,n,r){var e=t(32),i=t(27),o=t(34),u=t(103),c="["+u+"]",f="​…",a=RegExp("^"+c+c+"*"),s=RegExp(c+c+"*$"),l=function(t,n,r){var i={},c=o(function(){return!!u[t]()||f[t]()!=f}),a=i[t]=c?n(h):u[t];r&&(i[r]=a),e(e.P+e.F*c,"String",i)},h=l.trim=function(t,n){return t=String(i(t)),1&n&&(t=t.replace(a,"")),2&n&&(t=t.replace(s,"")),t};n.exports=l},{103:103,27:27,32:32,34:34}],103:[function(t,n,r){n.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},{}],104:[function(t,n,r){var e,i,o,u=t(25),c=t(44),f=t(41),a=t(29),s=t(38),l=s.process,h=s.setImmediate,v=s.clearImmediate,p=s.MessageChannel,d=0,y={},g="onreadystatechange",b=function(){var t=+this;if(y.hasOwnProperty(t)){var n=y[t];delete y[t],n()}},x=function(t){b.call(t.data)};h&&v||(h=function setImmediate(t){for(var n=[],r=1;arguments.length>r;)n.push(arguments[r++]);return y[++d]=function(){c("function"==typeof t?t:Function(t),n)},e(d),d},v=function clearImmediate(t){delete y[t]},"process"==t(18)(l)?e=function(t){l.nextTick(u(b,t,1))}:p?(i=new p,o=i.port2,i.port1.onmessage=x,e=u(o.postMessage,o,1)):s.addEventListener&&"function"==typeof postMessage&&!s.importScripts?(e=function(t){s.postMessage(t+"","*")},s.addEventListener("message",x,!1)):e=g in a("script")?function(t){f.appendChild(a("script"))[g]=function(){f.removeChild(this),b.call(t)}}:function(t){setTimeout(u(b,t,1),0)}),n.exports={set:h,clear:v}},{18:18,25:25,29:29,38:38,41:41,44:44}],105:[function(t,n,r){var e=t(106),i=Math.max,o=Math.min;n.exports=function(t,n){return t=e(t),t<0?i(t+n,0):o(t,n)}},{106:106}],106:[function(t,n,r){var e=Math.ceil,i=Math.floor;n.exports=function(t){return isNaN(t=+t)?0:(t>0?i:e)(t)}},{}],107:[function(t,n,r){var e=t(45),i=t(27);n.exports=function(t){return e(i(t))}},{27:27,45:45}],108:[function(t,n,r){var e=t(106),i=Math.min;n.exports=function(t){return t>0?i(e(t),9007199254740991):0}},{106:106}],109:[function(t,n,r){var e=t(27);n.exports=function(t){return Object(e(t))}},{27:27}],110:[function(t,n,r){var e=t(49);n.exports=function(t,n){if(!e(t))return t;var r,i;if(n&&"function"==typeof(r=t.toString)&&!e(i=r.call(t)))return i;if("function"==typeof(r=t.valueOf)&&!e(i=r.call(t)))return i;if(!n&&"function"==typeof(r=t.toString)&&!e(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},{49:49}],111:[function(t,n,r){"use strict";if(t(28)){var e=t(58),i=t(38),o=t(34),u=t(32),c=t(113),f=t(112),a=t(25),s=t(6),l=t(85),h=t(40),v=t(86),p=t(106),d=t(108),y=t(105),g=t(110),b=t(39),x=t(89),m=t(17),w=t(49),S=t(109),_=t(46),E=t(66),O=t(74),F=t(72).f,P=t(118),A=t(114),M=t(117),I=t(12),j=t(11),N=t(95),k=t(130),R=t(56),T=t(54),L=t(91),C=t(9),U=t(8),G=t(67),D=t(70),W=G.f,B=D.f,V=i.RangeError,z=i.TypeError,K=i.Uint8Array,J="ArrayBuffer",Y="Shared"+J,q="BYTES_PER_ELEMENT",X="prototype",$=Array[X],H=f.ArrayBuffer,Z=f.DataView,Q=I(0),tt=I(2),nt=I(3),rt=I(4),et=I(5),it=I(6),ot=j(!0),ut=j(!1),ct=k.values,ft=k.keys,at=k.entries,st=$.lastIndexOf,lt=$.reduce,ht=$.reduceRight,vt=$.join,pt=$.sort,dt=$.slice,yt=$.toString,gt=$.toLocaleString,bt=M("iterator"),xt=M("toStringTag"),mt=A("typed_constructor"),wt=A("def_constructor"),St=c.CONSTR,_t=c.TYPED,Et=c.VIEW,Ot="Wrong length!",Ft=I(1,function(t,n){return Nt(N(t,t[wt]),n)}),Pt=o(function(){return 1===new K(new Uint16Array([1]).buffer)[0]}),At=!!K&&!!K[X].set&&o(function(){new K(1).set({})}),Mt=function(t,n){if(void 0===t)throw z(Ot);var r=+t,e=d(t);if(n&&!x(r,e))throw V(Ot);return e},It=function(t,n){var r=p(t);if(r<0||r%n)throw V("Wrong offset!");return r},jt=function(t){if(w(t)&&_t in t)return t;throw z(t+" is not a typed array!")},Nt=function(t,n){if(!(w(t)&&mt in t))throw z("It is not a typed array constructor!");return new t(n)},kt=function(t,n){return Rt(N(t,t[wt]),n)},Rt=function(t,n){for(var r=0,e=n.length,i=Nt(t,e);e>r;)i[r]=n[r++];return i},Tt=function(t,n,r){W(t,n,{get:function(){return this._d[r]}})},Lt=function from(t){var n,r,e,i,o,u,c=S(t),f=arguments.length,s=f>1?arguments[1]:void 0,l=void 0!==s,h=P(c);if(void 0!=h&&!_(h)){for(u=h.call(c),e=[],n=0;!(o=u.next()).done;n++)e.push(o.value);c=e}for(l&&f>2&&(s=a(s,arguments[2],2)),n=0,r=d(c.length),i=Nt(this,r);r>n;n++)i[n]=l?s(c[n],n):c[n];return i},Ct=function of(){for(var t=0,n=arguments.length,r=Nt(this,n);n>t;)r[t]=arguments[t++];return r},Ut=!!K&&o(function(){gt.call(new K(1))}),Gt=function toLocaleString(){return gt.apply(Ut?dt.call(jt(this)):jt(this),arguments)},Dt={copyWithin:function copyWithin(t,n){return U.call(jt(this),t,n,arguments.length>2?arguments[2]:void 0)},every:function every(t){return rt(jt(this),t,arguments.length>1?arguments[1]:void 0)},fill:function fill(t){return C.apply(jt(this),arguments)},filter:function filter(t){return kt(this,tt(jt(this),t,arguments.length>1?arguments[1]:void 0))},find:function find(t){return et(jt(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function findIndex(t){ + return it(jt(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function forEach(t){Q(jt(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function indexOf(t){return ut(jt(this),t,arguments.length>1?arguments[1]:void 0)},includes:function includes(t){return ot(jt(this),t,arguments.length>1?arguments[1]:void 0)},join:function join(t){return vt.apply(jt(this),arguments)},lastIndexOf:function lastIndexOf(t){return st.apply(jt(this),arguments)},map:function map(t){return Ft(jt(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function reduce(t){return lt.apply(jt(this),arguments)},reduceRight:function reduceRight(t){return ht.apply(jt(this),arguments)},reverse:function reverse(){for(var t,n=this,r=jt(n).length,e=Math.floor(r/2),i=0;i1?arguments[1]:void 0)},sort:function sort(t){return pt.call(jt(this),t)},subarray:function subarray(t,n){var r=jt(this),e=r.length,i=y(t,e);return new(N(r,r[wt]))(r.buffer,r.byteOffset+i*r.BYTES_PER_ELEMENT,d((void 0===n?e:y(n,e))-i))}},Wt=function slice(t,n){return kt(this,dt.call(jt(this),t,n))},Bt=function set(t){jt(this);var n=It(arguments[1],1),r=this.length,e=S(t),i=d(e.length),o=0;if(i+n>r)throw V(Ot);for(;o255?255:255&e),i.v[p](r*n+i.o,e,Pt)},M=function(t,n){W(t,n,{get:function(){return P(this,n)},set:function(t){return A(this,n,t)},enumerable:!0})};x?(y=r(function(t,r,e,i){s(t,y,a,"_d");var o,u,c,f,l=0,v=0;if(w(r)){if(!(r instanceof H||(f=m(r))==J||f==Y))return _t in r?Rt(y,r):Lt.call(y,r);o=r,v=It(e,n);var p=r.byteLength;if(void 0===i){if(p%n)throw V(Ot);if(u=p-v,u<0)throw V(Ot)}else if(u=d(i)*n,u+v>p)throw V(Ot);c=u/n}else c=Mt(r,!0),u=c*n,o=new H(u);for(h(t,"_d",{b:o,o:v,l:u,e:c,v:new Z(o)});l>1,s=23===n?M(2,-24)-M(2,-77):0,l=0,h=t<0||0===t&&1/t<0?1:0;for(t=A(t),t!=t||t===F?(i=t!=t?1:0,e=f):(e=I(j(t)/N),t*(o=M(2,-e))<1&&(e--,o*=2),t+=e+a>=1?s/o:s*M(2,1-a),t*o>=2&&(e++,o/=2),e+a>=f?(i=0,e=f):e+a>=1?(i=(t*o-1)*M(2,n),e+=a):(i=t*M(2,a-1)*M(2,n),e=0));n>=8;u[l++]=255&i,i/=256,n-=8);for(e=e<0;u[l++]=255&e,e/=256,c-=8);return u[--l]|=128*h,u},D=function(t,n,r){var e,i=8*r-n-1,o=(1<>1,c=i-7,f=r-1,a=t[f--],s=127&a;for(a>>=7;c>0;s=256*s+t[f],f--,c-=8);for(e=s&(1<<-c)-1,s>>=-c,c+=n;c>0;e=256*e+t[f],f--,c-=8);if(0===s)s=1-u;else{if(s===o)return e?NaN:a?-F:F;e+=M(2,n),s-=u}return(a?-1:1)*e*M(2,s-n)},W=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},B=function(t){return[255&t]},V=function(t){return[255&t,t>>8&255]},z=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},K=function(t){return G(t,52,8)},J=function(t){return G(t,23,4)},Y=function(t,n,r){p(t[x],n,{get:function(){return this[r]}})},q=function(t,n,r,e){var i=+r,o=l(i);if(i!=o||o<0||o+n>t[C])throw O(w);var u=t[L]._b,c=o+t[U],f=u.slice(c,c+n);return e?f:f.reverse()},X=function(t,n,r,e,i,o){var u=+r,c=l(u);if(u!=c||c<0||c+n>t[C])throw O(w);for(var f=t[L]._b,a=c+t[U],s=e(+i),h=0;htt;)(H=Q[tt++])in S||c(S,H,P[H]);o||(Z.constructor=S)}var nt=new _(new S(2)),rt=_[x].setInt8;nt.setInt8(0,2147483648),nt.setInt8(1,2147483649),!nt.getInt8(0)&&nt.getInt8(1)||f(_[x],{setInt8:function setInt8(t,n){rt.call(this,t,n<<24>>24)},setUint8:function setUint8(t,n){rt.call(this,t,n<<24>>24)}},!0)}else S=function ArrayBuffer(t){var n=$(this,t);this._b=d.call(Array(n),0),this[C]=n},_=function DataView(t,n,r){s(this,_,b),s(t,S,b);var e=t[C],i=l(n);if(i<0||i>e)throw O("Wrong offset!");if(r=void 0===r?e-i:h(r),i+r>e)throw O(m);this[L]=t,this[U]=i,this[C]=r},i&&(Y(S,R,"_l"),Y(_,k,"_b"),Y(_,R,"_l"),Y(_,T,"_o")),f(_[x],{getInt8:function getInt8(t){return q(this,1,t)[0]<<24>>24},getUint8:function getUint8(t){return q(this,1,t)[0]},getInt16:function getInt16(t){var n=q(this,2,t,arguments[1]);return(n[1]<<8|n[0])<<16>>16},getUint16:function getUint16(t){var n=q(this,2,t,arguments[1]);return n[1]<<8|n[0]},getInt32:function getInt32(t){return W(q(this,4,t,arguments[1]))},getUint32:function getUint32(t){return W(q(this,4,t,arguments[1]))>>>0},getFloat32:function getFloat32(t){return D(q(this,4,t,arguments[1]),23,4)},getFloat64:function getFloat64(t){return D(q(this,8,t,arguments[1]),52,8)},setInt8:function setInt8(t,n){X(this,1,t,B,n)},setUint8:function setUint8(t,n){X(this,1,t,B,n)},setInt16:function setInt16(t,n){X(this,2,t,V,n,arguments[2])},setUint16:function setUint16(t,n){X(this,2,t,V,n,arguments[2])},setInt32:function setInt32(t,n){X(this,4,t,z,n,arguments[2])},setUint32:function setUint32(t,n){X(this,4,t,z,n,arguments[2])},setFloat32:function setFloat32(t,n){X(this,4,t,J,n,arguments[2])},setFloat64:function setFloat64(t,n){X(this,8,t,K,n,arguments[2])}});y(S,g),y(_,b),c(_[x],u.VIEW,!0),r[g]=S,r[b]=_},{106:106,108:108,113:113,28:28,34:34,38:38,40:40,58:58,6:6,67:67,72:72,86:86,9:9,92:92}],113:[function(t,n,r){for(var e,i=t(38),o=t(40),u=t(114),c=u("typed_array"),f=u("view"),a=!(!i.ArrayBuffer||!i.DataView),s=a,l=0,h=9,v="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l1?arguments[1]:void 0)}}),t(5)(o)},{12:12,32:32,5:5}],125:[function(t,n,r){"use strict";var e=t(32),i=t(12)(5),o="find",u=!0;o in[]&&Array(1)[o](function(){u=!1}),e(e.P+e.F*u,"Array",{find:function find(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),t(5)(o)},{12:12,32:32,5:5}],126:[function(t,n,r){"use strict";var e=t(32),i=t(12)(0),o=t(96)([].forEach,!0);e(e.P+e.F*!o,"Array",{forEach:function forEach(t){return i(this,t,arguments[1])}})},{12:12,32:32,96:96}],127:[function(t,n,r){"use strict";var e=t(25),i=t(32),o=t(109),u=t(51),c=t(46),f=t(108),a=t(24),s=t(118);i(i.S+i.F*!t(54)(function(t){Array.from(t)}),"Array",{from:function from(t){var n,r,i,l,h=o(t),v="function"==typeof this?this:Array,p=arguments.length,d=p>1?arguments[1]:void 0,y=void 0!==d,g=0,b=s(h);if(y&&(d=e(d,p>2?arguments[2]:void 0,2)),void 0==b||v==Array&&c(b))for(n=f(h.length),r=new v(n);n>g;g++)a(r,g,y?d(h[g],g):h[g]);else for(l=b.call(h),r=new v;!(i=l.next()).done;g++)a(r,g,y?u(l,d,[i.value,g],!0):i.value);return r.length=g,r}})},{108:108,109:109,118:118,24:24,25:25,32:32,46:46,51:51,54:54}],128:[function(t,n,r){"use strict";var e=t(32),i=t(11)(!1),o=[].indexOf,u=!!o&&1/[1].indexOf(1,-0)<0;e(e.P+e.F*(u||!t(96)(o)),"Array",{indexOf:function indexOf(t){return u?o.apply(this,arguments)||0:i(this,t,arguments[1])}})},{11:11,32:32,96:96}],129:[function(t,n,r){var e=t(32);e(e.S,"Array",{isArray:t(47)})},{32:32,47:47}],130:[function(t,n,r){"use strict";var e=t(5),i=t(55),o=t(56),u=t(107);n.exports=t(53)(Array,"Array",function(t,n){this._t=u(t),this._i=0,this._k=n},function(){var t=this._t,n=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,i(1)):"keys"==n?i(0,r):"values"==n?i(0,t[r]):i(0,[r,t[r]])},"values"),o.Arguments=o.Array,e("keys"),e("values"),e("entries")},{107:107,5:5,53:53,55:55,56:56}],131:[function(t,n,r){"use strict";var e=t(32),i=t(107),o=[].join;e(e.P+e.F*(t(45)!=Object||!t(96)(o)),"Array",{join:function join(t){return o.call(i(this),void 0===t?",":t)}})},{107:107,32:32,45:45,96:96}],132:[function(t,n,r){"use strict";var e=t(32),i=t(107),o=t(106),u=t(108),c=[].lastIndexOf,f=!!c&&1/[1].lastIndexOf(1,-0)<0;e(e.P+e.F*(f||!t(96)(c)),"Array",{lastIndexOf:function lastIndexOf(t){if(f)return c.apply(this,arguments)||0;var n=i(this),r=u(n.length),e=r-1;for(arguments.length>1&&(e=Math.min(e,o(arguments[1]))),e<0&&(e=r+e);e>=0;e--)if(e in n&&n[e]===t)return e||0;return-1}})},{106:106,107:107,108:108,32:32,96:96}],133:[function(t,n,r){"use strict";var e=t(32),i=t(12)(1);e(e.P+e.F*!t(96)([].map,!0),"Array",{map:function map(t){return i(this,t,arguments[1])}})},{12:12,32:32,96:96}],134:[function(t,n,r){"use strict";var e=t(32),i=t(24);e(e.S+e.F*t(34)(function(){function F(){}return!(Array.of.call(F)instanceof F)}),"Array",{of:function of(){for(var t=0,n=arguments.length,r=new("function"==typeof this?this:Array)(n);n>t;)i(r,t,arguments[t++]);return r.length=n,r}})},{24:24,32:32,34:34}],135:[function(t,n,r){"use strict";var e=t(32),i=t(13);e(e.P+e.F*!t(96)([].reduceRight,!0),"Array",{reduceRight:function reduceRight(t){return i(this,t,arguments.length,arguments[1],!0)}})},{13:13,32:32,96:96}],136:[function(t,n,r){"use strict";var e=t(32),i=t(13);e(e.P+e.F*!t(96)([].reduce,!0),"Array",{reduce:function reduce(t){return i(this,t,arguments.length,arguments[1],!1)}})},{13:13,32:32,96:96}],137:[function(t,n,r){"use strict";var e=t(32),i=t(41),o=t(18),u=t(105),c=t(108),f=[].slice;e(e.P+e.F*t(34)(function(){i&&f.call(i)}),"Array",{slice:function slice(t,n){var r=c(this.length),e=o(this);if(n=void 0===n?r:n,"Array"==e)return f.call(this,t,n);for(var i=u(t,r),a=u(n,r),s=c(a-i),l=Array(s),h=0;h9?t:"0"+t};e(e.P+e.F*(i(function(){return"0385-07-25T07:06:39.999Z"!=new Date(-5e13-1).toISOString()})||!i(function(){new Date(NaN).toISOString()})),"Date",{toISOString:function toISOString(){if(!isFinite(o.call(this)))throw RangeError("Invalid time value");var t=this,n=t.getUTCFullYear(),r=t.getUTCMilliseconds(),e=n<0?"-":n>9999?"+":"";return e+("00000"+Math.abs(n)).slice(e?-6:-4)+"-"+u(t.getUTCMonth()+1)+"-"+u(t.getUTCDate())+"T"+u(t.getUTCHours())+":"+u(t.getUTCMinutes())+":"+u(t.getUTCSeconds())+"."+(r>99?r:"0"+u(r))+"Z"}})},{32:32,34:34}],143:[function(t,n,r){"use strict";var e=t(32),i=t(109),o=t(110);e(e.P+e.F*t(34)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function toJSON(t){var n=i(this),r=o(n);return"number"!=typeof r||isFinite(r)?n.toISOString():null}})},{109:109,110:110,32:32,34:34}],144:[function(t,n,r){var e=t(117)("toPrimitive"),i=Date.prototype;e in i||t(40)(i,e,t(26))},{117:117,26:26,40:40}],145:[function(t,n,r){var e=Date.prototype,i="Invalid Date",o="toString",u=e[o],c=e.getTime;new Date(NaN)+""!=i&&t(87)(e,o,function toString(){var t=c.call(this);return t===t?u.call(this):i})},{87:87}],146:[function(t,n,r){var e=t(32);e(e.P,"Function",{bind:t(16)})},{16:16,32:32}],147:[function(t,n,r){"use strict";var e=t(49),i=t(74),o=t(117)("hasInstance"),u=Function.prototype;o in u||t(67).f(u,o,{value:function(t){if("function"!=typeof this||!e(t))return!1;if(!e(this.prototype))return t instanceof this;for(;t=i(t);)if(this.prototype===t)return!0;return!1}})},{117:117,49:49,67:67,74:74}],148:[function(t,n,r){var e=t(67).f,i=t(85),o=t(39),u=Function.prototype,c=/^\s*function ([^ (]*)/,f="name",a=Object.isExtensible||function(){return!0};f in u||t(28)&&e(u,f,{configurable:!0,get:function(){try{var t=this,n=(""+t).match(c)[1];return o(t,f)||!a(t)||e(t,f,i(5,n)),n}catch(t){return""}}})},{28:28,39:39,67:67,85:85}],149:[function(t,n,r){"use strict";var e=t(19);n.exports=t(22)("Map",function(t){return function Map(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function get(t){var n=e.getEntry(this,t);return n&&n.v},set:function set(t,n){return e.def(this,0===t?0:t,n)}},e,!0)},{19:19,22:22}],150:[function(t,n,r){var e=t(32),i=t(60),o=Math.sqrt,u=Math.acosh;e(e.S+e.F*!(u&&710==Math.floor(u(Number.MAX_VALUE))&&u(1/0)==1/0),"Math",{acosh:function acosh(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:i(t-1+o(t-1)*o(t+1))}})},{32:32,60:60}],151:[function(t,n,r){function asinh(t){return isFinite(t=+t)&&0!=t?t<0?-asinh(-t):Math.log(t+Math.sqrt(t*t+1)):t}var e=t(32),i=Math.asinh;e(e.S+e.F*!(i&&1/i(0)>0),"Math",{asinh:asinh})},{32:32}],152:[function(t,n,r){var e=t(32),i=Math.atanh;e(e.S+e.F*!(i&&1/i(-0)<0),"Math",{atanh:function atanh(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},{32:32}],153:[function(t,n,r){var e=t(32),i=t(61);e(e.S,"Math",{cbrt:function cbrt(t){return i(t=+t)*Math.pow(Math.abs(t),1/3)}})},{32:32,61:61}],154:[function(t,n,r){var e=t(32);e(e.S,"Math",{clz32:function clz32(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},{32:32}],155:[function(t,n,r){var e=t(32),i=Math.exp;e(e.S,"Math",{cosh:function cosh(t){return(i(t=+t)+i(-t))/2}})},{32:32}],156:[function(t,n,r){var e=t(32),i=t(59);e(e.S+e.F*(i!=Math.expm1),"Math",{expm1:i})},{32:32,59:59}],157:[function(t,n,r){var e=t(32),i=t(61),o=Math.pow,u=o(2,-52),c=o(2,-23),f=o(2,127)*(2-c),a=o(2,-126),s=function(t){return t+1/u-1/u};e(e.S,"Math",{fround:function fround(t){var n,r,e=Math.abs(t),o=i(t);return ef||r!=r?o*(1/0):o*r)}})},{32:32,61:61}],158:[function(t,n,r){var e=t(32),i=Math.abs;e(e.S,"Math",{hypot:function hypot(t,n){for(var r,e,o=0,u=0,c=arguments.length,f=0;u0?(e=r/f,o+=e*e):o+=r;return f===1/0?1/0:f*Math.sqrt(o)}})},{32:32}],159:[function(t,n,r){var e=t(32),i=Math.imul;e(e.S+e.F*t(34)(function(){return i(4294967295,5)!=-5||2!=i.length}),"Math",{imul:function imul(t,n){var r=65535,e=+t,i=+n,o=r&e,u=r&i;return 0|o*u+((r&e>>>16)*u+o*(r&i>>>16)<<16>>>0)}})},{32:32,34:34}],160:[function(t,n,r){var e=t(32);e(e.S,"Math",{log10:function log10(t){return Math.log(t)/Math.LN10}})},{32:32}],161:[function(t,n,r){var e=t(32);e(e.S,"Math",{log1p:t(60)})},{32:32,60:60}],162:[function(t,n,r){var e=t(32);e(e.S,"Math",{log2:function log2(t){return Math.log(t)/Math.LN2}})},{32:32}],163:[function(t,n,r){var e=t(32);e(e.S,"Math",{sign:t(61)})},{32:32,61:61}],164:[function(t,n,r){var e=t(32),i=t(59),o=Math.exp;e(e.S+e.F*t(34)(function(){return!Math.sinh(-2e-17)!=-2e-17}),"Math",{sinh:function sinh(t){return Math.abs(t=+t)<1?(i(t)-i(-t))/2:(o(t-1)-o(-t-1))*(Math.E/2)}})},{32:32,34:34,59:59}],165:[function(t,n,r){var e=t(32),i=t(59),o=Math.exp;e(e.S,"Math",{tanh:function tanh(t){var n=i(t=+t),r=i(-t);return n==1/0?1:r==1/0?-1:(n-r)/(o(t)+o(-t))}})},{32:32,59:59}],166:[function(t,n,r){var e=t(32);e(e.S,"Math",{trunc:function trunc(t){return(t>0?Math.floor:Math.ceil)(t)}})},{32:32}],167:[function(t,n,r){"use strict";var e=t(38),i=t(39),o=t(18),u=t(43),c=t(110),f=t(34),a=t(72).f,s=t(70).f,l=t(67).f,h=t(102).trim,v="Number",p=e[v],d=p,y=p.prototype,g=o(t(66)(y))==v,b="trim"in String.prototype,x=function(t){var n=c(t,!1);if("string"==typeof n&&n.length>2){n=b?n.trim():h(n,3);var r,e,i,o=n.charCodeAt(0);if(43===o||45===o){if(r=n.charCodeAt(2),88===r||120===r)return NaN}else if(48===o){switch(n.charCodeAt(1)){case 66:case 98:e=2,i=49;break;case 79:case 111:e=8,i=55;break;default:return+n}for(var u,f=n.slice(2),a=0,s=f.length;ai)return NaN;return parseInt(f,e)}}return+n};if(!p(" 0o1")||!p("0b1")||p("+0x1")){p=function Number(t){var n=arguments.length<1?0:t,r=this;return r instanceof p&&(g?f(function(){y.valueOf.call(r)}):o(r)!=v)?u(new d(x(n)),r,p):x(n)};for(var m,w=t(28)?a(d):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),S=0;w.length>S;S++)i(d,m=w[S])&&!i(p,m)&&l(p,m,s(d,m));p.prototype=y,y.constructor=p,t(87)(e,v,p)}},{102:102,110:110,18:18,28:28,34:34,38:38,39:39,43:43,66:66,67:67,70:70,72:72,87:87}],168:[function(t,n,r){var e=t(32);e(e.S,"Number",{EPSILON:Math.pow(2,-52)})},{32:32}],169:[function(t,n,r){var e=t(32),i=t(38).isFinite;e(e.S,"Number",{isFinite:function isFinite(t){return"number"==typeof t&&i(t)}})},{32:32,38:38}],170:[function(t,n,r){var e=t(32);e(e.S,"Number",{isInteger:t(48)})},{32:32,48:48}],171:[function(t,n,r){var e=t(32);e(e.S,"Number",{isNaN:function isNaN(t){return t!=t}})},{32:32}],172:[function(t,n,r){var e=t(32),i=t(48),o=Math.abs;e(e.S,"Number",{isSafeInteger:function isSafeInteger(t){return i(t)&&o(t)<=9007199254740991}})},{32:32,48:48}],173:[function(t,n,r){var e=t(32);e(e.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},{32:32}],174:[function(t,n,r){var e=t(32);e(e.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},{32:32}],175:[function(t,n,r){var e=t(32),i=t(81);e(e.S+e.F*(Number.parseFloat!=i),"Number",{parseFloat:i})},{32:32,81:81}],176:[function(t,n,r){var e=t(32),i=t(82);e(e.S+e.F*(Number.parseInt!=i),"Number",{parseInt:i})},{32:32,82:82}],177:[function(t,n,r){"use strict";var e=t(32),i=t(106),o=t(4),u=t(101),c=1..toFixed,f=Math.floor,a=[0,0,0,0,0,0],s="Number.toFixed: incorrect invocation!",l="0",h=function(t,n){for(var r=-1,e=n;++r<6;)e+=t*a[r],a[r]=e%1e7,e=f(e/1e7)},v=function(t){for(var n=6,r=0;--n>=0;)r+=a[n],a[n]=f(r/t),r=r%t*1e7},p=function(){for(var t=6,n="";--t>=0;)if(""!==n||0===t||0!==a[t]){var r=String(a[t]);n=""===n?r:n+u.call(l,7-r.length)+r}return n},d=function(t,n,r){return 0===n?r:n%2===1?d(t,n-1,r*t):d(t*t,n/2,r)},y=function(t){for(var n=0,r=t;r>=4096;)n+=12,r/=4096;for(;r>=2;)n+=1,r/=2;return n};e(e.P+e.F*(!!c&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!t(34)(function(){c.call({})})),"Number",{toFixed:function toFixed(t){var n,r,e,c,f=o(this,s),a=i(t),g="",b=l;if(a<0||a>20)throw RangeError(s);if(f!=f)return"NaN";if(f<=-1e21||f>=1e21)return String(f);if(f<0&&(g="-",f=-f),f>1e-21)if(n=y(f*d(2,69,1))-69,r=n<0?f*d(2,-n,1):f/d(2,n,1),r*=4503599627370496,n=52-n,n>0){for(h(0,r),e=a;e>=7;)h(1e7,0),e-=7;for(h(d(10,e,1),0),e=n-1;e>=23;)v(1<<23),e-=23;v(1<0?(c=b.length,b=g+(c<=a?"0."+u.call(l,a-c)+b:b.slice(0,c-a)+"."+b.slice(c-a))):b=g+b,b}})},{101:101,106:106,32:32,34:34,4:4}],178:[function(t,n,r){"use strict";var e=t(32),i=t(34),o=t(4),u=1..toPrecision;e(e.P+e.F*(i(function(){return"1"!==u.call(1,void 0)})||!i(function(){u.call({})})),"Number",{toPrecision:function toPrecision(t){var n=o(this,"Number#toPrecision: incorrect invocation!");return void 0===t?u.call(n):u.call(n,t)}})},{32:32,34:34,4:4}],179:[function(t,n,r){var e=t(32);e(e.S+e.F,"Object",{assign:t(65)})},{32:32,65:65}],180:[function(t,n,r){var e=t(32);e(e.S,"Object",{create:t(66)})},{32:32,66:66}],181:[function(t,n,r){var e=t(32);e(e.S+e.F*!t(28),"Object",{defineProperties:t(68)})},{28:28,32:32,68:68}],182:[function(t,n,r){var e=t(32);e(e.S+e.F*!t(28),"Object",{defineProperty:t(67).f})},{28:28,32:32,67:67}],183:[function(t,n,r){var e=t(49),i=t(62).onFreeze;t(78)("freeze",function(t){return function freeze(n){return t&&e(n)?t(i(n)):n}})},{49:49,62:62,78:78}],184:[function(t,n,r){var e=t(107),i=t(70).f;t(78)("getOwnPropertyDescriptor",function(){return function getOwnPropertyDescriptor(t,n){return i(e(t),n)}})},{107:107,70:70,78:78}],185:[function(t,n,r){t(78)("getOwnPropertyNames",function(){return t(71).f})},{71:71,78:78}],186:[function(t,n,r){var e=t(109),i=t(74);t(78)("getPrototypeOf",function(){return function getPrototypeOf(t){return i(e(t))}})},{109:109,74:74,78:78}],187:[function(t,n,r){var e=t(49);t(78)("isExtensible",function(t){return function isExtensible(n){return!!e(n)&&(!t||t(n))}})},{49:49,78:78}],188:[function(t,n,r){var e=t(49);t(78)("isFrozen",function(t){return function isFrozen(n){return!e(n)||!!t&&t(n)}})},{49:49,78:78}],189:[function(t,n,r){var e=t(49);t(78)("isSealed",function(t){return function isSealed(n){return!e(n)||!!t&&t(n)}})},{49:49,78:78}],190:[function(t,n,r){var e=t(32);e(e.S,"Object",{is:t(89)})},{32:32,89:89}],191:[function(t,n,r){var e=t(109),i=t(76);t(78)("keys",function(){return function keys(t){return i(e(t))}})},{109:109,76:76,78:78}],192:[function(t,n,r){var e=t(49),i=t(62).onFreeze;t(78)("preventExtensions",function(t){return function preventExtensions(n){return t&&e(n)?t(i(n)):n}})},{49:49,62:62,78:78}],193:[function(t,n,r){var e=t(49),i=t(62).onFreeze;t(78)("seal",function(t){return function seal(n){return t&&e(n)?t(i(n)):n}})},{49:49,62:62,78:78}],194:[function(t,n,r){var e=t(32);e(e.S,"Object",{setPrototypeOf:t(90).set})},{32:32,90:90}],195:[function(t,n,r){"use strict";var e=t(17),i={};i[t(117)("toStringTag")]="z",i+""!="[object z]"&&t(87)(Object.prototype,"toString",function toString(){return"[object "+e(this)+"]"},!0)},{117:117,17:17,87:87}],196:[function(t,n,r){var e=t(32),i=t(81);e(e.G+e.F*(parseFloat!=i),{parseFloat:i})},{32:32,81:81}],197:[function(t,n,r){var e=t(32),i=t(82);e(e.G+e.F*(parseInt!=i),{parseInt:i})},{32:32,82:82}],198:[function(t,n,r){"use strict";var e,i,o,u=t(58),c=t(38),f=t(25),a=t(17),s=t(32),l=t(49),h=t(3),v=t(6),p=t(37),d=t(95),y=t(104).set,g=t(64)(),b="Promise",x=c.TypeError,m=c.process,w=c[b],m=c.process,S="process"==a(m),_=function(){},E=!!function(){try{var n=w.resolve(1),r=(n.constructor={})[t(117)("species")]=function(t){t(_,_)};return(S||"function"==typeof PromiseRejectionEvent)&&n.then(_)instanceof r}catch(t){}}(),O=function(t,n){return t===n||t===w&&n===o},F=function(t){var n;return!(!l(t)||"function"!=typeof(n=t.then))&&n},P=function(t){return O(w,t)?new A(t):new i(t)},A=i=function(t){var n,r;this.promise=new t(function(t,e){if(void 0!==n||void 0!==r)throw x("Bad Promise constructor");n=t,r=e}),this.resolve=h(n),this.reject=h(r)},M=function(t){try{t()}catch(t){return{error:t}}},I=function(t,n){if(!t._n){t._n=!0;var r=t._c;g(function(){for(var e=t._v,i=1==t._s,o=0,u=function(n){var r,o,u=i?n.ok:n.fail,c=n.resolve,f=n.reject,a=n.domain;try{u?(i||(2==t._h&&k(t),t._h=1),u===!0?r=e:(a&&a.enter(),r=u(e),a&&a.exit()),r===n.promise?f(x("Promise-chain cycle")):(o=F(r))?o.call(r,c,f):c(r)):f(e)}catch(t){f(t)}};r.length>o;)u(r[o++]);t._c=[],t._n=!1,n&&!t._h&&j(t)})}},j=function(t){y.call(c,function(){var n,r,e,i=t._v;if(N(t)&&(n=M(function(){S?m.emit("unhandledRejection",i,t):(r=c.onunhandledrejection)?r({promise:t,reason:i}):(e=c.console)&&e.error&&e.error("Unhandled promise rejection",i)}),t._h=S||N(t)?2:1),t._a=void 0,n)throw n.error})},N=function(t){if(1==t._h)return!1;for(var n,r=t._a||t._c,e=0;r.length>e;)if(n=r[e++],n.fail||!N(n.promise))return!1;return!0},k=function(t){y.call(c,function(){var n;S?m.emit("rejectionHandled",t):(n=c.onrejectionhandled)&&n({promise:t,reason:t._v})})},R=function(t){var n=this;n._d||(n._d=!0,n=n._w||n,n._v=t,n._s=2,n._a||(n._a=n._c.slice()),I(n,!0))},T=function(t){var n,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===t)throw x("Promise can't be resolved itself");(n=F(t))?g(function(){var e={_w:r,_d:!1};try{n.call(t,f(T,e,1),f(R,e,1))}catch(t){R.call(e,t)}}):(r._v=t,r._s=1,I(r,!1))}catch(t){R.call({_w:r,_d:!1},t)}}};E||(w=function Promise(t){v(this,w,b,"_h"),h(t),e.call(this);try{t(f(T,this,1),f(R,this,1))}catch(t){R.call(this,t)}},e=function Promise(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},e.prototype=t(86)(w.prototype,{then:function then(t,n){var r=P(d(this,w));return r.ok="function"!=typeof t||t,r.fail="function"==typeof n&&n,r.domain=S?m.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&I(this,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),A=function(){var t=new e;this.promise=t,this.resolve=f(T,t,1),this.reject=f(R,t,1)}),s(s.G+s.W+s.F*!E,{Promise:w}),t(92)(w,b),t(91)(b),o=t(23)[b],s(s.S+s.F*!E,b,{reject:function reject(t){var n=P(this),r=n.reject;return r(t),n.promise}}),s(s.S+s.F*(u||!E),b,{resolve:function resolve(t){if(t instanceof w&&O(t.constructor,this))return t;var n=P(this),r=n.resolve;return r(t),n.promise}}),s(s.S+s.F*!(E&&t(54)(function(t){w.all(t).catch(_)})),b,{all:function all(t){var n=this,r=P(n),e=r.resolve,i=r.reject,o=M(function(){var r=[],o=0,u=1;p(t,!1,function(t){var c=o++,f=!1;r.push(void 0),u++,n.resolve(t).then(function(t){f||(f=!0,r[c]=t,--u||e(r))},i)}),--u||e(r)});return o&&i(o.error),r.promise},race:function race(t){var n=this,r=P(n),e=r.reject,i=M(function(){p(t,!1,function(t){n.resolve(t).then(r.resolve,e)})});return i&&e(i.error),r.promise}})},{104:104,117:117,17:17,23:23,25:25,3:3,32:32,37:37,38:38,49:49,54:54,58:58,6:6,64:64,86:86,91:91,92:92,95:95}],199:[function(t,n,r){var e=t(32),i=t(3),o=t(7),u=(t(38).Reflect||{}).apply,c=Function.apply;e(e.S+e.F*!t(34)(function(){u(function(){})}),"Reflect",{apply:function apply(t,n,r){var e=i(t),f=o(r);return u?u(e,n,f):c.call(e,n,f)}})},{3:3,32:32,34:34,38:38,7:7}],200:[function(t,n,r){var e=t(32),i=t(66),o=t(3),u=t(7),c=t(49),f=t(34),a=t(16),s=(t(38).Reflect||{}).construct,l=f(function(){function F(){}return!(s(function(){},[],F)instanceof F)}),h=!f(function(){s(function(){})});e(e.S+e.F*(l||h),"Reflect",{construct:function construct(t,n){o(t),u(n);var r=arguments.length<3?t:o(arguments[2]);if(h&&!l)return s(t,n,r);if(t==r){switch(n.length){case 0:return new t;case 1:return new t(n[0]);case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[1],n[2]);case 4:return new t(n[0],n[1],n[2],n[3])}var e=[null];return e.push.apply(e,n),new(a.apply(t,e))}var f=r.prototype,v=i(c(f)?f:Object.prototype),p=Function.apply.call(t,v,n);return c(p)?p:v}})},{16:16,3:3,32:32,34:34,38:38,49:49,66:66,7:7}],201:[function(t,n,r){var e=t(67),i=t(32),o=t(7),u=t(110);i(i.S+i.F*t(34)(function(){Reflect.defineProperty(e.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function defineProperty(t,n,r){o(t),n=u(n,!0),o(r);try{return e.f(t,n,r),!0}catch(t){return!1}}})},{110:110,32:32,34:34,67:67,7:7}],202:[function(t,n,r){var e=t(32),i=t(70).f,o=t(7);e(e.S,"Reflect",{deleteProperty:function deleteProperty(t,n){var r=i(o(t),n);return!(r&&!r.configurable)&&delete t[n]}})},{32:32,7:7,70:70}],203:[function(t,n,r){"use strict";var e=t(32),i=t(7),o=function(t){this._t=i(t),this._i=0;var n,r=this._k=[];for(n in t)r.push(n)};t(52)(o,"Object",function(){var t,n=this,r=n._k;do if(n._i>=r.length)return{value:void 0,done:!0};while(!((t=r[n._i++])in n._t));return{value:t,done:!1}}),e(e.S,"Reflect",{enumerate:function enumerate(t){return new o(t)}})},{32:32,52:52,7:7}],204:[function(t,n,r){var e=t(70),i=t(32),o=t(7);i(i.S,"Reflect",{getOwnPropertyDescriptor:function getOwnPropertyDescriptor(t,n){return e.f(o(t),n)}})},{32:32,7:7,70:70}],205:[function(t,n,r){var e=t(32),i=t(74),o=t(7);e(e.S,"Reflect",{getPrototypeOf:function getPrototypeOf(t){return i(o(t))}})},{32:32,7:7,74:74}],206:[function(t,n,r){function get(t,n){var r,u,a=arguments.length<3?t:arguments[2];return f(t)===a?t[n]:(r=e.f(t,n))?o(r,"value")?r.value:void 0!==r.get?r.get.call(a):void 0:c(u=i(t))?get(u,n,a):void 0}var e=t(70),i=t(74),o=t(39),u=t(32),c=t(49),f=t(7);u(u.S,"Reflect",{get:get})},{32:32,39:39,49:49,7:7,70:70,74:74}],207:[function(t,n,r){var e=t(32);e(e.S,"Reflect",{has:function has(t,n){return n in t; +}})},{32:32}],208:[function(t,n,r){var e=t(32),i=t(7),o=Object.isExtensible;e(e.S,"Reflect",{isExtensible:function isExtensible(t){return i(t),!o||o(t)}})},{32:32,7:7}],209:[function(t,n,r){var e=t(32);e(e.S,"Reflect",{ownKeys:t(80)})},{32:32,80:80}],210:[function(t,n,r){var e=t(32),i=t(7),o=Object.preventExtensions;e(e.S,"Reflect",{preventExtensions:function preventExtensions(t){i(t);try{return o&&o(t),!0}catch(t){return!1}}})},{32:32,7:7}],211:[function(t,n,r){var e=t(32),i=t(90);i&&e(e.S,"Reflect",{setPrototypeOf:function setPrototypeOf(t,n){i.check(t,n);try{return i.set(t,n),!0}catch(t){return!1}}})},{32:32,90:90}],212:[function(t,n,r){function set(t,n,r){var c,l,h=arguments.length<4?t:arguments[3],v=i.f(a(t),n);if(!v){if(s(l=o(t)))return set(l,n,r,h);v=f(0)}return u(v,"value")?!(v.writable===!1||!s(h))&&(c=i.f(h,n)||f(0),c.value=r,e.f(h,n,c),!0):void 0!==v.set&&(v.set.call(h,r),!0)}var e=t(67),i=t(70),o=t(74),u=t(39),c=t(32),f=t(85),a=t(7),s=t(49);c(c.S,"Reflect",{set:set})},{32:32,39:39,49:49,67:67,7:7,70:70,74:74,85:85}],213:[function(t,n,r){var e=t(38),i=t(43),o=t(67).f,u=t(72).f,c=t(50),f=t(36),a=e.RegExp,s=a,l=a.prototype,h=/a/g,v=/a/g,p=new a(h)!==h;if(t(28)&&(!p||t(34)(function(){return v[t(117)("match")]=!1,a(h)!=h||a(v)==v||"/a/i"!=a(h,"i")}))){a=function RegExp(t,n){var r=this instanceof a,e=c(t),o=void 0===n;return!r&&e&&t.constructor===a&&o?t:i(p?new s(e&&!o?t.source:t,n):s((e=t instanceof a)?t.source:t,e&&o?f.call(t):n),r?this:l,a)};for(var d=(function(t){t in a||o(a,t,{configurable:!0,get:function(){return s[t]},set:function(n){s[t]=n}})}),y=u(s),g=0;y.length>g;)d(y[g++]);l.constructor=a,a.prototype=l,t(87)(e,"RegExp",a)}t(91)("RegExp")},{117:117,28:28,34:34,36:36,38:38,43:43,50:50,67:67,72:72,87:87,91:91}],214:[function(t,n,r){t(28)&&"g"!=/./g.flags&&t(67).f(RegExp.prototype,"flags",{configurable:!0,get:t(36)})},{28:28,36:36,67:67}],215:[function(t,n,r){t(35)("match",1,function(t,n,r){return[function match(r){"use strict";var e=t(this),i=void 0==r?void 0:r[n];return void 0!==i?i.call(r,e):new RegExp(r)[n](String(e))},r]})},{35:35}],216:[function(t,n,r){t(35)("replace",2,function(t,n,r){return[function replace(e,i){"use strict";var o=t(this),u=void 0==e?void 0:e[n];return void 0!==u?u.call(e,o,i):r.call(String(o),e,i)},r]})},{35:35}],217:[function(t,n,r){t(35)("search",1,function(t,n,r){return[function search(r){"use strict";var e=t(this),i=void 0==r?void 0:r[n];return void 0!==i?i.call(r,e):new RegExp(r)[n](String(e))},r]})},{35:35}],218:[function(t,n,r){t(35)("split",2,function(n,r,e){"use strict";var i=t(50),o=e,u=[].push,c="split",f="length",a="lastIndex";if("c"=="abbc"[c](/(b)*/)[1]||4!="test"[c](/(?:)/,-1)[f]||2!="ab"[c](/(?:ab)*/)[f]||4!="."[c](/(.?)(.?)/)[f]||"."[c](/()()/)[f]>1||""[c](/.?/)[f]){var s=void 0===/()??/.exec("")[1];e=function(t,n){var r=String(this);if(void 0===t&&0===n)return[];if(!i(t))return o.call(r,t,n);var e,c,l,h,v,p=[],d=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),y=0,g=void 0===n?4294967295:n>>>0,b=new RegExp(t.source,d+"g");for(s||(e=new RegExp("^"+b.source+"$(?!\\s)",d));(c=b.exec(r))&&(l=c.index+c[0][f],!(l>y&&(p.push(r.slice(y,c.index)),!s&&c[f]>1&&c[0].replace(e,function(){for(v=1;v1&&c.index=g)));)b[a]===c.index&&b[a]++;return y===r[f]?!h&&b.test("")||p.push(""):p.push(r.slice(y)),p[f]>g?p.slice(0,g):p}}else"0"[c](void 0,0)[f]&&(e=function(t,n){return void 0===t&&0===n?[]:o.call(this,t,n)});return[function split(t,i){var o=n(this),u=void 0==t?void 0:t[r];return void 0!==u?u.call(t,o,i):e.call(String(o),t,i)},e]})},{35:35,50:50}],219:[function(t,n,r){"use strict";t(214);var e=t(7),i=t(36),o=t(28),u="toString",c=/./[u],f=function(n){t(87)(RegExp.prototype,u,n,!0)};t(34)(function(){return"/a/b"!=c.call({source:"a",flags:"b"})})?f(function toString(){var t=e(this);return"/".concat(t.source,"/","flags"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)}):c.name!=u&&f(function toString(){return c.call(this)})},{214:214,28:28,34:34,36:36,7:7,87:87}],220:[function(t,n,r){"use strict";var e=t(19);n.exports=t(22)("Set",function(t){return function Set(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function add(t){return e.def(this,t=0===t?0:t,t)}},e)},{19:19,22:22}],221:[function(t,n,r){"use strict";t(99)("anchor",function(t){return function anchor(n){return t(this,"a","name",n)}})},{99:99}],222:[function(t,n,r){"use strict";t(99)("big",function(t){return function big(){return t(this,"big","","")}})},{99:99}],223:[function(t,n,r){"use strict";t(99)("blink",function(t){return function blink(){return t(this,"blink","","")}})},{99:99}],224:[function(t,n,r){"use strict";t(99)("bold",function(t){return function bold(){return t(this,"b","","")}})},{99:99}],225:[function(t,n,r){"use strict";var e=t(32),i=t(97)(!1);e(e.P,"String",{codePointAt:function codePointAt(t){return i(this,t)}})},{32:32,97:97}],226:[function(t,n,r){"use strict";var e=t(32),i=t(108),o=t(98),u="endsWith",c=""[u];e(e.P+e.F*t(33)(u),"String",{endsWith:function endsWith(t){var n=o(this,t,u),r=arguments.length>1?arguments[1]:void 0,e=i(n.length),f=void 0===r?e:Math.min(i(r),e),a=String(t);return c?c.call(n,a,f):n.slice(f-a.length,f)===a}})},{108:108,32:32,33:33,98:98}],227:[function(t,n,r){"use strict";t(99)("fixed",function(t){return function fixed(){return t(this,"tt","","")}})},{99:99}],228:[function(t,n,r){"use strict";t(99)("fontcolor",function(t){return function fontcolor(n){return t(this,"font","color",n)}})},{99:99}],229:[function(t,n,r){"use strict";t(99)("fontsize",function(t){return function fontsize(n){return t(this,"font","size",n)}})},{99:99}],230:[function(t,n,r){var e=t(32),i=t(105),o=String.fromCharCode,u=String.fromCodePoint;e(e.S+e.F*(!!u&&1!=u.length),"String",{fromCodePoint:function fromCodePoint(t){for(var n,r=[],e=arguments.length,u=0;e>u;){if(n=+arguments[u++],i(n,1114111)!==n)throw RangeError(n+" is not a valid code point");r.push(n<65536?o(n):o(((n-=65536)>>10)+55296,n%1024+56320))}return r.join("")}})},{105:105,32:32}],231:[function(t,n,r){"use strict";var e=t(32),i=t(98),o="includes";e(e.P+e.F*t(33)(o),"String",{includes:function includes(t){return!!~i(this,t,o).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},{32:32,33:33,98:98}],232:[function(t,n,r){"use strict";t(99)("italics",function(t){return function italics(){return t(this,"i","","")}})},{99:99}],233:[function(t,n,r){"use strict";var e=t(97)(!0);t(53)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,n=this._t,r=this._i;return r>=n.length?{value:void 0,done:!0}:(t=e(n,r),this._i+=t.length,{value:t,done:!1})})},{53:53,97:97}],234:[function(t,n,r){"use strict";t(99)("link",function(t){return function link(n){return t(this,"a","href",n)}})},{99:99}],235:[function(t,n,r){var e=t(32),i=t(107),o=t(108);e(e.S,"String",{raw:function raw(t){for(var n=i(t.raw),r=o(n.length),e=arguments.length,u=[],c=0;r>c;)u.push(String(n[c++])),c1?arguments[1]:void 0,n.length)),e=String(t);return c?c.call(n,e,r):n.slice(r,r+e.length)===e}})},{108:108,32:32,33:33,98:98}],239:[function(t,n,r){"use strict";t(99)("strike",function(t){return function strike(){return t(this,"strike","","")}})},{99:99}],240:[function(t,n,r){"use strict";t(99)("sub",function(t){return function sub(){return t(this,"sub","","")}})},{99:99}],241:[function(t,n,r){"use strict";t(99)("sup",function(t){return function sup(){return t(this,"sup","","")}})},{99:99}],242:[function(t,n,r){"use strict";t(102)("trim",function(t){return function trim(){return t(this,3)}})},{102:102}],243:[function(t,n,r){"use strict";var e=t(38),i=t(39),o=t(28),u=t(32),c=t(87),f=t(62).KEY,a=t(34),s=t(94),l=t(92),h=t(114),v=t(117),p=t(116),d=t(115),y=t(57),g=t(31),b=t(47),x=t(7),m=t(107),w=t(110),S=t(85),_=t(66),E=t(71),O=t(70),F=t(67),P=t(76),A=O.f,M=F.f,I=E.f,j=e.Symbol,N=e.JSON,k=N&&N.stringify,R="prototype",T=v("_hidden"),L=v("toPrimitive"),C={}.propertyIsEnumerable,U=s("symbol-registry"),G=s("symbols"),D=s("op-symbols"),W=Object[R],B="function"==typeof j,V=e.QObject,z=!V||!V[R]||!V[R].findChild,K=o&&a(function(){return 7!=_(M({},"a",{get:function(){return M(this,"a",{value:7}).a}})).a})?function(t,n,r){var e=A(W,n);e&&delete W[n],M(t,n,r),e&&t!==W&&M(W,n,e)}:M,J=function(t){var n=G[t]=_(j[R]);return n._k=t,n},Y=B&&"symbol"==typeof j.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof j},q=function defineProperty(t,n,r){return t===W&&q(D,n,r),x(t),n=w(n,!0),x(r),i(G,n)?(r.enumerable?(i(t,T)&&t[T][n]&&(t[T][n]=!1),r=_(r,{enumerable:S(0,!1)})):(i(t,T)||M(t,T,S(1,{})),t[T][n]=!0),K(t,n,r)):M(t,n,r)},X=function defineProperties(t,n){x(t);for(var r,e=g(n=m(n)),i=0,o=e.length;o>i;)q(t,r=e[i++],n[r]);return t},$=function create(t,n){return void 0===n?_(t):X(_(t),n)},H=function propertyIsEnumerable(t){var n=C.call(this,t=w(t,!0));return!(this===W&&i(G,t)&&!i(D,t))&&(!(n||!i(this,t)||!i(G,t)||i(this,T)&&this[T][t])||n)},Z=function getOwnPropertyDescriptor(t,n){if(t=m(t),n=w(n,!0),t!==W||!i(G,n)||i(D,n)){var r=A(t,n);return!r||!i(G,n)||i(t,T)&&t[T][n]||(r.enumerable=!0),r}},Q=function getOwnPropertyNames(t){for(var n,r=I(m(t)),e=[],o=0;r.length>o;)i(G,n=r[o++])||n==T||n==f||e.push(n);return e},tt=function getOwnPropertySymbols(t){for(var n,r=t===W,e=I(r?D:m(t)),o=[],u=0;e.length>u;)!i(G,n=e[u++])||r&&!i(W,n)||o.push(G[n]);return o};B||(j=function Symbol(){if(this instanceof j)throw TypeError("Symbol is not a constructor!");var t=h(arguments.length>0?arguments[0]:void 0),n=function(r){this===W&&n.call(D,r),i(this,T)&&i(this[T],t)&&(this[T][t]=!1),K(this,t,S(1,r))};return o&&z&&K(W,t,{configurable:!0,set:n}),J(t)},c(j[R],"toString",function toString(){return this._k}),O.f=Z,F.f=q,t(72).f=E.f=Q,t(77).f=H,t(73).f=tt,o&&!t(58)&&c(W,"propertyIsEnumerable",H,!0),p.f=function(t){return J(v(t))}),u(u.G+u.W+u.F*!B,{Symbol:j});for(var nt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),rt=0;nt.length>rt;)v(nt[rt++]);for(var nt=P(v.store),rt=0;nt.length>rt;)d(nt[rt++]);u(u.S+u.F*!B,"Symbol",{for:function(t){return i(U,t+="")?U[t]:U[t]=j(t)},keyFor:function keyFor(t){if(Y(t))return y(U,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){z=!0},useSimple:function(){z=!1}}),u(u.S+u.F*!B,"Object",{create:$,defineProperty:q,defineProperties:X,getOwnPropertyDescriptor:Z,getOwnPropertyNames:Q,getOwnPropertySymbols:tt}),N&&u(u.S+u.F*(!B||a(function(){var t=j();return"[null]"!=k([t])||"{}"!=k({a:t})||"{}"!=k(Object(t))})),"JSON",{stringify:function stringify(t){if(void 0!==t&&!Y(t)){for(var n,r,e=[t],i=1;arguments.length>i;)e.push(arguments[i++]);return n=e[1],"function"==typeof n&&(r=n),!r&&b(n)||(n=function(t,n){if(r&&(n=r.call(this,t,n)),!Y(n))return n}),e[1]=n,k.apply(N,e)}}}),j[R][L]||t(40)(j[R],L,j[R].valueOf),l(j,"Symbol"),l(Math,"Math",!0),l(e.JSON,"JSON",!0)},{107:107,110:110,114:114,115:115,116:116,117:117,28:28,31:31,32:32,34:34,38:38,39:39,40:40,47:47,57:57,58:58,62:62,66:66,67:67,7:7,70:70,71:71,72:72,73:73,76:76,77:77,85:85,87:87,92:92,94:94}],244:[function(t,n,r){"use strict";var e=t(32),i=t(113),o=t(112),u=t(7),c=t(105),f=t(108),a=t(49),s=t(38).ArrayBuffer,l=t(95),h=o.ArrayBuffer,v=o.DataView,p=i.ABV&&s.isView,d=h.prototype.slice,y=i.VIEW,g="ArrayBuffer";e(e.G+e.W+e.F*(s!==h),{ArrayBuffer:h}),e(e.S+e.F*!i.CONSTR,g,{isView:function isView(t){return p&&p(t)||a(t)&&y in t}}),e(e.P+e.U+e.F*t(34)(function(){return!new h(2).slice(1,void 0).byteLength}),g,{slice:function slice(t,n){if(void 0!==d&&void 0===n)return d.call(u(this),t);for(var r=u(this).byteLength,e=c(t,r),i=c(void 0===n?r:n,r),o=new(l(this,h))(f(i-e)),a=new v(this),s=new v(o),p=0;e0?arguments[0]:void 0)}},d={get:function get(t){if(a(t)){var n=s(t);return n===!0?h(this).get(t):n?n[this._i]:void 0}},set:function set(t,n){return f.def(this,t,n)}},y=n.exports=t(22)("WeakMap",p,d,f,!0,!0);7!=(new y).set((Object.freeze||Object)(v),7).get(v)&&(e=f.getConstructor(p),c(e.prototype,d),u.NEED=!0,i(["delete","has","get","set"],function(t){var n=y.prototype,r=n[t];o(n,t,function(n,i){if(a(n)&&!l(n)){this._f||(this._f=new e);var o=this._f[t](n,i);return"set"==t?this:o}return r.call(this,n,i)})}))},{12:12,21:21,22:22,49:49,62:62,65:65,87:87}],256:[function(t,n,r){"use strict";var e=t(21);t(22)("WeakSet",function(t){return function WeakSet(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function add(t){return e.def(this,t,!0)}},e,!1,!0)},{21:21,22:22}],257:[function(t,n,r){"use strict";var e=t(32),i=t(11)(!0);e(e.P,"Array",{includes:function includes(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),t(5)("includes")},{11:11,32:32,5:5}],258:[function(t,n,r){var e=t(32),i=t(64)(),o=t(38).process,u="process"==t(18)(o);e(e.G,{asap:function asap(t){var n=u&&o.domain;i(n?n.bind(t):t)}})},{18:18,32:32,38:38,64:64}],259:[function(t,n,r){var e=t(32),i=t(18);e(e.S,"Error",{isError:function isError(t){return"Error"===i(t)}})},{18:18,32:32}],260:[function(t,n,r){var e=t(32);e(e.P+e.R,"Map",{toJSON:t(20)("Map")})},{20:20,32:32}],261:[function(t,n,r){var e=t(32);e(e.S,"Math",{iaddh:function iaddh(t,n,r,e){var i=t>>>0,o=n>>>0,u=r>>>0;return o+(e>>>0)+((i&u|(i|u)&~(i+u>>>0))>>>31)|0}})},{32:32}],262:[function(t,n,r){var e=t(32);e(e.S,"Math",{imulh:function imulh(t,n){var r=65535,e=+t,i=+n,o=e&r,u=i&r,c=e>>16,f=i>>16,a=(c*u>>>0)+(o*u>>>16);return c*f+(a>>16)+((o*f>>>0)+(a&r)>>16)}})},{32:32}],263:[function(t,n,r){var e=t(32);e(e.S,"Math",{isubh:function isubh(t,n,r,e){var i=t>>>0,o=n>>>0,u=r>>>0;return o-(e>>>0)-((~i&u|~(i^u)&i-u>>>0)>>>31)|0}})},{32:32}],264:[function(t,n,r){var e=t(32);e(e.S,"Math",{umulh:function umulh(t,n){var r=65535,e=+t,i=+n,o=e&r,u=i&r,c=e>>>16,f=i>>>16,a=(c*u>>>0)+(o*u>>>16);return c*f+(a>>>16)+((o*f>>>0)+(a&r)>>>16)}})},{32:32}],265:[function(t,n,r){"use strict";var e=t(32),i=t(109),o=t(3),u=t(67);t(28)&&e(e.P+t(69),"Object",{__defineGetter__:function __defineGetter__(t,n){u.f(i(this),t,{get:o(n),enumerable:!0,configurable:!0})}})},{109:109,28:28,3:3,32:32,67:67,69:69}],266:[function(t,n,r){"use strict";var e=t(32),i=t(109),o=t(3),u=t(67);t(28)&&e(e.P+t(69),"Object",{__defineSetter__:function __defineSetter__(t,n){u.f(i(this),t,{set:o(n),enumerable:!0,configurable:!0})}})},{109:109,28:28,3:3,32:32,67:67,69:69}],267:[function(t,n,r){var e=t(32),i=t(79)(!0);e(e.S,"Object",{entries:function entries(t){return i(t)}})},{32:32,79:79}],268:[function(t,n,r){var e=t(32),i=t(80),o=t(107),u=t(70),c=t(24);e(e.S,"Object",{getOwnPropertyDescriptors:function getOwnPropertyDescriptors(t){for(var n,r=o(t),e=u.f,f=i(r),a={},s=0;f.length>s;)c(a,n=f[s++],e(r,n));return a}})},{107:107,24:24,32:32,70:70,80:80}],269:[function(t,n,r){"use strict";var e=t(32),i=t(109),o=t(110),u=t(74),c=t(70).f;t(28)&&e(e.P+t(69),"Object",{__lookupGetter__:function __lookupGetter__(t){var n,r=i(this),e=o(t,!0);do if(n=c(r,e))return n.get;while(r=u(r))}})},{109:109,110:110,28:28,32:32,69:69,70:70,74:74}],270:[function(t,n,r){"use strict";var e=t(32),i=t(109),o=t(110),u=t(74),c=t(70).f;t(28)&&e(e.P+t(69),"Object",{__lookupSetter__:function __lookupSetter__(t){var n,r=i(this),e=o(t,!0);do if(n=c(r,e))return n.set;while(r=u(r))}})},{109:109,110:110,28:28,32:32,69:69,70:70,74:74}],271:[function(t,n,r){var e=t(32),i=t(79)(!1);e(e.S,"Object",{values:function values(t){return i(t)}})},{32:32,79:79}],272:[function(t,n,r){"use strict";var e=t(32),i=t(38),o=t(23),u=t(64)(),c=t(117)("observable"),f=t(3),a=t(7),s=t(6),l=t(86),h=t(40),v=t(37),p=v.RETURN,d=function(t){return null==t?void 0:f(t)},y=function(t){var n=t._c;n&&(t._c=void 0,n())},g=function(t){return void 0===t._o},b=function(t){g(t)||(t._o=void 0,y(t))},x=function(t,n){a(t),this._c=void 0,this._o=t,t=new m(this);try{var r=n(t),e=r;null!=r&&("function"==typeof r.unsubscribe?r=function(){e.unsubscribe()}:f(r),this._c=r)}catch(n){return void t.error(n)}g(this)&&y(this)};x.prototype=l({},{unsubscribe:function unsubscribe(){b(this)}});var m=function(t){this._s=t};m.prototype=l({},{next:function next(t){var n=this._s;if(!g(n)){var r=n._o;try{var e=d(r.next);if(e)return e.call(r,t)}catch(t){try{b(n)}finally{throw t}}}},error:function error(t){var n=this._s;if(g(n))throw t;var r=n._o;n._o=void 0;try{var e=d(r.error);if(!e)throw t;t=e.call(r,t)}catch(t){try{y(n)}finally{throw t}}return y(n),t},complete:function complete(t){var n=this._s;if(!g(n)){var r=n._o;n._o=void 0;try{var e=d(r.complete);t=e?e.call(r,t):void 0}catch(t){try{y(n)}finally{throw t}}return y(n),t}}});var w=function Observable(t){s(this,w,"Observable","_f")._f=f(t)};l(w.prototype,{subscribe:function subscribe(t){return new x(t,this._f)},forEach:function forEach(t){var n=this;return new(o.Promise||i.Promise)(function(r,e){f(t);var i=n.subscribe({next:function(n){try{return t(n)}catch(t){e(t),i.unsubscribe()}},error:e,complete:r})})}}),l(w,{from:function from(t){var n="function"==typeof this?this:w,r=d(a(t)[c]);if(r){var e=a(r.call(t));return e.constructor===n?e:new n(function(t){return e.subscribe(t)})}return new n(function(n){var r=!1;return u(function(){if(!r){try{if(v(t,!1,function(t){if(n.next(t),r)return p})===p)return}catch(t){if(r)throw t;return void n.error(t)}n.complete()}}),function(){r=!0}})},of:function of(){for(var t=0,n=arguments.length,r=Array(n);t1?arguments[1]:void 0,!1)}})},{100:100,32:32}],286:[function(t,n,r){"use strict";var e=t(32),i=t(100);e(e.P,"String",{padStart:function padStart(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},{100:100,32:32}],287:[function(t,n,r){"use strict";t(102)("trimLeft",function(t){return function trimLeft(){return t(this,1)}},"trimStart")},{102:102}],288:[function(t,n,r){"use strict";t(102)("trimRight",function(t){return function trimRight(){return t(this,2)}},"trimEnd")},{102:102}],289:[function(t,n,r){t(115)("asyncIterator")},{115:115}],290:[function(t,n,r){t(115)("observable")},{115:115}],291:[function(t,n,r){var e=t(32);e(e.S,"System",{global:t(38)})},{32:32,38:38}],292:[function(t,n,r){for(var e=t(130),i=t(87),o=t(38),u=t(40),c=t(56),f=t(117),a=f("iterator"),s=f("toStringTag"),l=c.Array,h=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],v=0;v<5;v++){var p,d=h[v],y=o[d],g=y&&y.prototype;if(g){g[a]||u(g,a,l),g[s]||u(g,s,d),c[d]=l;for(p in e)g[p]||i(g,p,e[p],!0)}}},{117:117,130:130,38:38,40:40,56:56,87:87}],293:[function(t,n,r){var e=t(32),i=t(104);e(e.G+e.B,{setImmediate:i.set,clearImmediate:i.clear})},{104:104,32:32}],294:[function(t,n,r){var e=t(38),i=t(32),o=t(44),u=t(83),c=e.navigator,f=!!c&&/MSIE .\./.test(c.userAgent),a=function(t){return f?function(n,r){return t(o(u,[].slice.call(arguments,2),"function"==typeof n?n:Function(n)),r)}:t};i(i.G+i.B+i.F*f,{setTimeout:a(e.setTimeout),setInterval:a(e.setInterval)})},{32:32,38:38,44:44,83:83}],295:[function(t,n,r){t(243),t(180),t(182),t(181),t(184),t(186),t(191),t(185),t(183),t(193),t(192),t(188),t(189),t(187),t(179),t(190),t(194),t(195),t(146),t(148),t(147),t(197),t(196),t(167),t(177),t(178),t(168),t(169),t(170),t(171),t(172),t(173),t(174),t(175),t(176),t(150),t(151),t(152),t(153),t(154),t(155),t(156),t(157),t(158),t(159),t(160),t(161),t(162),t(163),t(164),t(165),t(166),t(230),t(235),t(242),t(233),t(225),t(226),t(231),t(236),t(238),t(221),t(222),t(223),t(224),t(227),t(228),t(229),t(232),t(234),t(237),t(239),t(240),t(241),t(141),t(143),t(142),t(145),t(144),t(129),t(127),t(134),t(131),t(137),t(139),t(126),t(133),t(123),t(138),t(121),t(136),t(135),t(128),t(132),t(120),t(122),t(125),t(124),t(140),t(130),t(213),t(219),t(214),t(215),t(216),t(217),t(218),t(198),t(149),t(220),t(255),t(256),t(244),t(245),t(250),t(253),t(254),t(248),t(251),t(249),t(252),t(246),t(247),t(199),t(200),t(201),t(202),t(203),t(206),t(204),t(205),t(207),t(208),t(209),t(210),t(212),t(211),t(257),t(283),t(286),t(285),t(287),t(288),t(284),t(289),t(290),t(268),t(271),t(267),t(265),t(266),t(269),t(270),t(260),t(282),t(291),t(259),t(261),t(263),t(262),t(264),t(273),t(274),t(276),t(275),t(278),t(277),t(279),t(280),t(281),t(258),t(272),t(294),t(293),t(292),n.exports=t(23)},{120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,128:128,129:129,130:130,131:131,132:132,133:133,134:134,135:135,136:136,137:137,138:138,139:139,140:140,141:141,142:142,143:143,144:144,145:145,146:146,147:147,148:148,149:149,150:150,151:151,152:152,153:153,154:154,155:155,156:156,157:157,158:158,159:159,160:160,161:161,162:162,163:163,164:164,165:165,166:166,167:167,168:168,169:169,170:170,171:171,172:172,173:173,174:174,175:175,176:176,177:177,178:178,179:179,180:180,181:181,182:182,183:183,184:184,185:185,186:186,187:187,188:188,189:189,190:190,191:191,192:192,193:193,194:194,195:195,196:196,197:197,198:198,199:199,200:200,201:201,202:202,203:203,204:204,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,216:216,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,23:23,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,256:256,257:257,258:258,259:259,260:260,261:261,262:262,263:263,264:264,265:265,266:266,267:267,268:268,269:269,270:270,271:271,272:272,273:273,274:274,275:275,276:276,277:277,278:278,279:279,280:280,281:281,282:282,283:283,284:284,285:285,286:286,287:287,288:288,289:289,290:290,291:291,292:292,293:293,294:294}],296:[function(t,n,r){(function(t){!function(t){"use strict";function wrap(t,n,r,e){var i=Object.create((n||Generator).prototype),o=new Context(e||[]);return i._invoke=makeInvokeMethod(t,r,o),i}function tryCatch(t,n,r){try{return{type:"normal",arg:t.call(n,r)}}catch(t){return{type:"throw",arg:t}}}function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}function defineIteratorMethods(t){["next","throw","return"].forEach(function(n){t[n]=function(t){return this._invoke(n,t)}})}function AwaitArgument(t){this.arg=t}function AsyncIterator(t){function invoke(n,r,e,i){var o=tryCatch(t[n],t,r);if("throw"!==o.type){var u=o.arg,c=u.value;return c instanceof AwaitArgument?Promise.resolve(c.arg).then(function(t){invoke("next",t,e,i)},function(t){invoke("throw",t,e,i)}):Promise.resolve(c).then(function(t){u.value=t,e(u)},i)}i(o.arg)}function enqueue(t,r){function callInvokeWithMethodAndArg(){return new Promise(function(n,e){invoke(t,r,n,e)})}return n=n?n.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg()}"object"==typeof process&&process.domain&&(invoke=process.domain.bind(invoke));var n;this._invoke=enqueue}function makeInvokeMethod(t,n,e){var i=a;return function invoke(o,u){if(i===l)throw new Error("Generator is already running");if(i===h){if("throw"===o)throw u;return doneResult()}for(;;){var c=e.delegate;if(c){if("return"===o||"throw"===o&&c.iterator[o]===r){e.delegate=null;var f=c.iterator.return;if(f){var p=tryCatch(f,c.iterator,u);if("throw"===p.type){o="throw",u=p.arg;continue}}if("return"===o)continue}var p=tryCatch(c.iterator[o],c.iterator,u);if("throw"===p.type){e.delegate=null,o="throw",u=p.arg;continue}o="next",u=r;var d=p.arg;if(!d.done)return i=s,d;e[c.resultName]=d.value,e.next=c.nextLoc,e.delegate=null}if("next"===o)e.sent=e._sent=u;else if("throw"===o){if(i===a)throw i=h,u;e.dispatchException(u)&&(o="next",u=r)}else"return"===o&&e.abrupt("return",u);i=l;var p=tryCatch(t,n,e);if("normal"===p.type){i=e.done?h:s;var d={value:p.arg,done:e.done};if(p.arg!==v)return d;e.delegate&&"next"===o&&(u=r)}else"throw"===p.type&&(i=h,o="throw",u=p.arg)}}}function pushTryEntry(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function resetTryEntry(t){var n=t.completion||{};n.type="normal",delete n.arg,t.completion=n}function Context(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(pushTryEntry,this),this.reset(!0)}function values(t){if(t){var n=t[o];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,u=function next(){for(;++i=0;--r){var i=this.tryEntries[r],o=i.completion;if("root"===i.tryLoc)return handle("end");if(i.tryLoc<=this.prev){var u=e.call(i,"catchLoc"),c=e.call(i,"finallyLoc"); +if(u&&c){if(this.prev=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&e.call(i,"finallyLoc")&&this.prev=0;--n){var r=this.tryEntries[n];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),resetTryEntry(r),v}},catch:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc===t){var e=r.completion;if("throw"===e.type){var i=e.arg;resetTryEntry(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:values(t),resultName:n,nextLoc:r},v}}}("object"==typeof t?t:"object"==typeof window?window:"object"==typeof self?self:this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1]); diff --git a/7-ES6/final/script-transpiled.js b/7-ES6/final/script-transpiled.js new file mode 100644 index 0000000000..caee003ade --- /dev/null +++ b/7-ES6/final/script-transpiled.js @@ -0,0 +1,746 @@ +'use strict'; + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +///////////////////////////////// +// Lecture: let and const + +/* +// ES5 +var name5 = 'Jane Smith'; +var age5 = 23; +name5 = 'Jane Miller'; +console.log(name5); + +// ES6 +const name6 = 'Jane Smith'; +let age6 = 23; +name6 = 'Jane Miller'; +console.log(name6); + + +// ES5 +function driversLicence5(passedTest) { + + if (passedTest) { + console.log(firstName); + var firstName = 'John'; + var yearOfBirth = 1990; + } + + + console.log(firstName + ', born in ' + yearOfBirth + ', is now officially allowed to drive a car.'); +} + +driversLicence5(true); + + +// ES6 +function driversLicence6(passedTest) { + + //console.log(firstName); + let firstName; + const yearOfBirth = 1990; + + if (passedTest) { + firstName = 'John'; + } + + console.log(firstName + ', born in ' + yearOfBirth + ', is now officially allowed to drive a car.'); +} + +driversLicence6(true); + + + +var i = 23; + +for (var i = 0; i < 5; i++) { + console.log(i); +} + +console.log(i); +*/ + +///////////////////////////////// +// Lecture: Blocks and IIFEs + +/* +// ES6 +{ + const a = 1; + let b = 2; + var c = 3; +} + +//console.log(a + b); +console.log(c); + + +// ES5 +(function() { + var c = 3; +})(); + +//console.log(c); +*/ + +///////////////////////////////// +// Lecture: Strings + +/* +let firstName = 'John'; +let lastName = 'Smith'; +const yearOfBirth = 1990; + +function calcAge(year) { + return 2016 - year; +} + + +// ES5 +console.log('This is ' + firstName + ' ' + lastName + '. He was born in ' + yearOfBirth + '. Today, he is ' + calcAge(yearOfBirth) + ' years old.'); + +// ES6 +console.log(`This is ${firstName} ${lastName}. He was born in ${yearOfBirth}. Today, he is ${calcAge(yearOfBirth)} years old.`); + + + + +const n = `${firstName} ${lastName}`; +console.log(n.startsWith('j')); +console.log(n.endsWith('Sm')); +console.log(n.includes('oh')); +console.log(`${firstName} `.repeat(5)); +*/ + +///////////////////////////////// +// Lecture: Arrow functions + +/* +const years = [1990, 1965, 1982, 1937]; + +// ES5 +var ages5 = years.map(function(el) { + return 2016 - el; +}); +console.log(ages5); + + +// ES6 +let ages6 = years.map(el => 2016 - el); +console.log(ages6); + +ages6 = years.map((el, index) => `Age element ${index + 1}: ${2016 - el}.`); +console.log(ages6); + +ages6 = years.map((el, index) => { + const now = new Date().getFullYear(); + const age = now - el; + return `Age element ${index + 1}: ${age}.` +}); +console.log(ages6); +*/ + +///////////////////////////////// +// Lecture: Arrow functions 2 + +/* +// ES5 +var box5 = { + color: 'green', + position: 1, + clickMe: function() { + + var self = this; document.querySelector('.green').addEventListener('click', function() { + var str = 'This is box number ' + self.position + ' and it is ' + self.color; + alert(str); + }); + } +} +//box5.clickMe(); + + +// ES6 +const box6 = { + color: 'green', + position: 1, + clickMe: function() { + document.querySelector('.green').addEventListener('click', () => { + var str = 'This is box number ' + this.position + ' and it is ' + this.color; + alert(str); + }); + } +} +box6.clickMe(); + + +const box66 = { + color: 'green', + position: 1, + clickMe: () => { + document.querySelector('.green').addEventListener('click', () => { + var str = 'This is box number ' + this.position + ' and it is ' + this.color; + alert(str); + }); + } +} +box66.clickMe(); + + + + +function Person(name) { + this.name = name; +} + +// ES5 +Person.prototype.myFriends5 = function(friends) { + + var arr = friends.map(function(el) { + return this.name + ' is friends with ' + el; + }.bind(this)); + + console.log(arr); +} + +var friends = ['Bob', 'Jane', 'Mark']; +new Person('John').myFriends5(friends); + + +// ES6 +Person.prototype.myFriends6 = function(friends) { + + var arr = friends.map(el => `${this.name} is friends with ${el}`); + + console.log(arr); +} + +new Person('Mike').myFriends6(friends); +*/ + +///////////////////////////////// +// Lecture: Destructuring + +/* +// ES5 +var john = ['John', 26]; +//var name = john[0]; +//var age = john[1]; + + +// ES6 +const [name, age] = ['John', 26]; +console.log(name); +console.log(age); + +const obj = { + firstName: 'John', + lastName: 'Smith' +}; + +const {firstName, lastName} = obj; +console.log(firstName); +console.log(lastName); + +const {firstName: a, lastName: b} = obj; +console.log(a); +console.log(b); + + + + + +function calcAgeRetirement(year) { + const age = new Date().getFullYear() - year; + return [age, 65 - age]; +} + + +const [age2, retirement] = calcAgeRetirement(1990); +console.log(age2); +console.log(retirement); +*/ + +///////////////////////////////// +// Lecture: Arrays + +/* +const boxes = document.querySelectorAll('.box'); + +//ES5 +var boxesArr5 = Array.prototype.slice.call(boxes); +boxesArr5.forEach(function(cur) { + cur.style.backgroundColor = 'dodgerblue'; +}); + +//ES6 +const boxesArr6 = Array.from(boxes); +Array.from(boxes).forEach(cur => cur.style.backgroundColor = 'dodgerblue'); + + +//ES5 +for(var i = 0; i < boxesArr5.length; i++) { + + if(boxesArr5[i].className === 'box blue') { + continue; + } + + boxesArr5[i].textContent = 'I changed to blue!'; + +} + + +//ES6 +for (const cur of boxesArr6) { + if (cur.className.includes('blue')) { + continue; + } + cur.textContent = 'I changed to blue!'; +} + + + + +//ES5 +var ages = [12, 17, 8, 21, 14, 11]; + +var full = ages.map(function(cur) { + return cur >= 18; +}); +console.log(full); + +console.log(full.indexOf(true)); +console.log(ages[full.indexOf(true)]); + + +//ES6 +console.log(ages.findIndex(cur => cur >= 18)); +console.log(ages.find(cur => cur >= 18)); +*/ + +///////////////////////////////// +// Lecture: Spread operator + +/* +function addFourAges (a, b, c, d) { + return a + b + c + d; +} + +var sum1 = addFourAges(18, 30, 12, 21); +console.log(sum1); + +//ES5 +var ages = [18, 30, 12, 21]; +var sum2 = addFourAges.apply(null, ages); +console.log(sum2); + +//ES6 +const sum3 = addFourAges(...ages); +console.log(sum3); + + +const familySmith = ['John', 'Jane', 'Mark']; +const familyMiller = ['Mary', 'Bob', 'Ann']; +const bigFamily = [...familySmith, 'Lily', ...familyMiller]; +console.log(bigFamily); + + +const h = document.querySelector('h1'); +const boxes = document.querySelectorAll('.box'); +const all = [h, ...boxes]; + +Array.from(all).forEach(cur => cur.style.color = 'purple'); +*/ + +///////////////////////////////// +// Lecture: Rest parameters + +/* +//ES5 +function isFullAge5() { + //console.log(arguments); + var argsArr = Array.prototype.slice.call(arguments); + + argsArr.forEach(function(cur) { + console.log((2016 - cur) >= 18); + }) +} + + +//isFullAge5(1990, 1999, 1965); +//isFullAge5(1990, 1999, 1965, 2016, 1987); + + +//ES6 +function isFullAge6(...years) { + years.forEach(cur => console.log( (2016 - cur) >= 18)); +} + +isFullAge6(1990, 1999, 1965, 2016, 1987); + + + +//ES5 +function isFullAge5(limit) { + var argsArr = Array.prototype.slice.call(arguments, 1); + + argsArr.forEach(function(cur) { + console.log((2016 - cur) >= limit); + }) +} + + +//isFullAge5(16, 1990, 1999, 1965); +isFullAge5(1990, 1999, 1965, 2016, 1987); + + +//ES6 +function isFullAge6(limit, ...years) { + years.forEach(cur => console.log( (2016 - cur) >= limit)); +} + +isFullAge6(16, 1990, 1999, 1965, 2016, 1987); + +*/ + +///////////////////////////////// +// Lecture: Default parameters + +/* +// ES5 +function SmithPerson(firstName, yearOfBirth, lastName, nationality) { + + lastName === undefined ? lastName = 'Smith' : lastName = lastName; + nationality === undefined ? nationality = 'american' : nationality = nationality; + + this.firstName = firstName; + this.lastName = lastName; + this.yearOfBirth = yearOfBirth; + this.nationality = nationality; +} + + +//ES6 +function SmithPerson(firstName, yearOfBirth, lastName = 'Smith', nationality = 'american') { + this.firstName = firstName; + this.lastName = lastName; + this.yearOfBirth = yearOfBirth; + this.nationality = nationality; +} + + +var john = new SmithPerson('John', 1990); +var emily = new SmithPerson('Emily', 1983, 'Diaz', 'spanish'); +*/ + +///////////////////////////////// +// Lecture: Maps + +/* +const question = new Map(); +question.set('question', 'What is the official name of the latest major JavaScript version?'); +question.set(1, 'ES5'); +question.set(2, 'ES6'); +question.set(3, 'ES2015'); +question.set(4, 'ES7'); +question.set('correct', 3); +question.set(true, 'Correct answer :D'); +question.set(false, 'Wrong, please try again!'); + +console.log(question.get('question')); +//console.log(question.size); + + +if(question.has(4)) { + //question.delete(4); + //console.log('Answer 4 is here') +} + +//question.clear(); + + +//question.forEach((value, key) => console.log(`This is ${key}, and it's set to ${value}`)); + + +for (let [key, value] of question.entries()) { + if (typeof(key) === 'number') { + console.log(`Answer ${key}: ${value}`); + } +} + +const ans = parseInt(prompt('Write the correct answer')); +console.log(question.get(ans === question.get('correct'))); +*/ + +///////////////////////////////// +// Lecture: Classes + +/* +//ES5 +var Person5 = function(name, yearOfBirth, job) { + this.name = name; + this.yearOfBirth = yearOfBirth; + this.job = job; +} + +Person5.prototype.calculateAge = function() { + var age = new Date().getFullYear - this.yearOfBirth; + console.log(age); +} + +var john5 = new Person5('John', 1990, 'teacher'); + +//ES6 +class Person6 { + constructor (name, yearOfBirth, job) { + this.name = name; + this.yearOfBirth = yearOfBirth; + this.job = job; + } + + calculateAge() { + var age = new Date().getFullYear - this.yearOfBirth; + console.log(age); + } + + static greeting() { + console.log('Hey there!'); + } +} + +const john6 = new Person6('John', 1990, 'teacher'); + +Person6.greeting(); +*/ + +///////////////////////////////// +// Lecture: Classes and subclasses + +/* +//ES5 +var Person5 = function(name, yearOfBirth, job) { + this.name = name; + this.yearOfBirth = yearOfBirth; + this.job = job; +} + +Person5.prototype.calculateAge = function() { + var age = new Date().getFullYear() - this.yearOfBirth; + console.log(age); +} + +var Athlete5 = function(name, yearOfBirth, job, olymicGames, medals) { + Person5.call(this, name, yearOfBirth, job); + this.olymicGames = olymicGames; + this.medals = medals; +} + +Athlete5.prototype = Object.create(Person5.prototype); + + +Athlete5.prototype.wonMedal = function() { + this.medals++; + console.log(this.medals); +} + + +var johnAthlete5 = new Athlete5('John', 1990, 'swimmer', 3, 10); + +johnAthlete5.calculateAge(); +johnAthlete5.wonMedal(); + + +//ES6 +class Person6 { + constructor (name, yearOfBirth, job) { + this.name = name; + this.yearOfBirth = yearOfBirth; + this.job = job; + } + + calculateAge() { + var age = new Date().getFullYear() - this.yearOfBirth; + console.log(age); + } +} + +class Athlete6 extends Person6 { + constructor(name, yearOfBirth, job, olympicGames, medals) { + super(name, yearOfBirth, job); + this.olympicGames = olympicGames; + this.medals = medals; + } + + wonMedal() { + this.medals++; + console.log(this.medals); + } +} + +const johnAthlete6 = new Athlete6('John', 1990, 'swimmer', 3, 10); + +johnAthlete6.wonMedal(); +johnAthlete6.calculateAge(); +*/ + +///////////////////////////////// +// CODING CHALLENGE + +/* + +Suppose that you're working in a small town administration, and you're in charge of two town elements: +1. Parks +2. Streets + +It's a very small town, so right now there are only 3 parks and 4 streets. All parks and streets have a name and a build year. + +At an end-of-year meeting, your boss wants a final report with the following: +1. Tree density of each park in the town (forumla: number of trees/park area) +2. Average age of each town's park (forumla: sum of all ages/number of parks) +3. The name of the park that has more than 1000 trees +4. Total and average length of the town's streets +5. Size classification of all streets: tiny/small/normal/big/huge. If the size is unknown, the default is normal + +All the report data should be printed to the console. + +HINT: Use some of the ES6 features: classes, subclasses, template strings, default parameters, maps, arrow functions, destructuring, etc. + +*/ + +var Element = function Element(name, buildYear) { + _classCallCheck(this, Element); + + this.name = name; + this.buildYear = buildYear; +}; + +var Park = function (_Element) { + _inherits(Park, _Element); + + function Park(name, buildYear, area, numTrees) { + _classCallCheck(this, Park); + + var _this = _possibleConstructorReturn(this, (Park.__proto__ || Object.getPrototypeOf(Park)).call(this, name, buildYear)); + + _this.area = area; //km2 + _this.numTrees = numTrees; + return _this; + } + + _createClass(Park, [{ + key: 'treeDensity', + value: function treeDensity() { + var density = this.numTrees / this.area; + console.log(this.name + ' has a tree density of ' + density + ' trees per square km.'); + } + }]); + + return Park; +}(Element); + +var Street = function (_Element2) { + _inherits(Street, _Element2); + + function Street(name, buildYear, length) { + var size = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 3; + + _classCallCheck(this, Street); + + var _this2 = _possibleConstructorReturn(this, (Street.__proto__ || Object.getPrototypeOf(Street)).call(this, name, buildYear)); + + _this2.length = length; + _this2.size = size; + return _this2; + } + + _createClass(Street, [{ + key: 'classifyStreet', + value: function classifyStreet() { + var classification = new Map(); + classification.set(1, 'tiny'); + classification.set(2, 'small'); + classification.set(3, 'normal'); + classification.set(4, 'big'); + classification.set(5, 'huge'); + console.log(this.name + ', build in ' + this.buildYear + ', is a ' + classification.get(this.size) + ' street.'); + } + }]); + + return Street; +}(Element); + +var allParks = [new Park('Green Park', 1987, 0.2, 215), new Park('National Park', 1894, 2.9, 3541), new Park('Oak Park', 1953, 0.4, 949)]; + +var allStreets = [new Street('Ocean Avenue', 1999, 1.1, 4), new Street('Evergreen Street', 2008, 2.7, 2), new Street('4th Street', 2015, 0.8), new Street('Sunset Boulevard', 1982, 2.5, 5)]; + +function calc(arr) { + + var sum = arr.reduce(function (prev, cur, index) { + return prev + cur; + }, 0); + + return [sum, sum / arr.length]; +} + +function reportParks(p) { + + console.log('-----PARKS REPORT-----'); + + // Density + p.forEach(function (el) { + return el.treeDensity(); + }); + + // Average age + var ages = p.map(function (el) { + return new Date().getFullYear() - el.buildYear; + }); + + var _calc = calc(ages), + _calc2 = _slicedToArray(_calc, 2), + totalAge = _calc2[0], + avgAge = _calc2[1]; + + console.log('Our ' + p.length + ' parks have an average of ' + avgAge + ' years.'); + + // Which park has more than 1000 trees + var i = p.map(function (el) { + return el.numTrees; + }).findIndex(function (el) { + return el >= 1000; + }); + console.log(p[i].name + ' has more than 1000 trees.'); +} + +function reportStreets(s) { + + console.log('-----STREETS REPORT-----'); + + //Total and average length of the town's streets + + var _calc3 = calc(s.map(function (el) { + return el.length; + })), + _calc4 = _slicedToArray(_calc3, 2), + totalLength = _calc4[0], + avgLength = _calc4[1]; + + console.log('Our ' + s.length + ' streets have a total length of ' + totalLength + ' km, with an average of ' + avgLength + ' km.'); + + // CLassify sizes + s.forEach(function (el) { + return el.classifyStreet(); + }); +} + +reportParks(allParks); +reportStreets(allStreets); diff --git a/7-ES6/final/script.js b/7-ES6/final/script.js new file mode 100755 index 0000000000..b10cbbc42b --- /dev/null +++ b/7-ES6/final/script.js @@ -0,0 +1,730 @@ +///////////////////////////////// +// Lecture: let and const + +/* +// ES5 +var name5 = 'Jane Smith'; +var age5 = 23; +name5 = 'Jane Miller'; +console.log(name5); + +// ES6 +const name6 = 'Jane Smith'; +let age6 = 23; +name6 = 'Jane Miller'; +console.log(name6); + + +// ES5 +function driversLicence5(passedTest) { + + if (passedTest) { + console.log(firstName); + var firstName = 'John'; + var yearOfBirth = 1990; + } + + + console.log(firstName + ', born in ' + yearOfBirth + ', is now officially allowed to drive a car.'); +} + +driversLicence5(true); + + +// ES6 +function driversLicence6(passedTest) { + + //console.log(firstName); + let firstName; + const yearOfBirth = 1990; + + if (passedTest) { + firstName = 'John'; + } + + console.log(firstName + ', born in ' + yearOfBirth + ', is now officially allowed to drive a car.'); +} + +driversLicence6(true); + + + +var i = 23; + +for (var i = 0; i < 5; i++) { + console.log(i); +} + +console.log(i); +*/ + + + + +///////////////////////////////// +// Lecture: Blocks and IIFEs + +/* +// ES6 +{ + const a = 1; + let b = 2; + var c = 3; +} + +//console.log(a + b); +console.log(c); + + +// ES5 +(function() { + var c = 3; +})(); + +//console.log(c); +*/ + + + + +///////////////////////////////// +// Lecture: Strings + +/* +let firstName = 'John'; +let lastName = 'Smith'; +const yearOfBirth = 1990; + +function calcAge(year) { + return 2016 - year; +} + +// ES5 +console.log('This is ' + firstName + ' ' + lastName + '. He was born in ' + yearOfBirth + '. Today, he is ' + calcAge(yearOfBirth) + ' years old.'); + +// ES6 +console.log(`This is ${firstName} ${lastName}. He was born in ${yearOfBirth}. Today, he is ${calcAge(yearOfBirth)} years old.`); + + +const n = `${firstName} ${lastName}`; +console.log(n.startsWith('j')); +console.log(n.endsWith('Sm')); +console.log(n.includes('oh')); +console.log(`${firstName} `.repeat(5)); +*/ + + + + +///////////////////////////////// +// Lecture: Arrow functions + +/* +const years = [1990, 1965, 1982, 1937]; + +// ES5 +var ages5 = years.map(function(el) { + return 2016 - el; +}); +console.log(ages5); + + +// ES6 +let ages6 = years.map(el => 2016 - el); +console.log(ages6); + +ages6 = years.map((el, index) => `Age element ${index + 1}: ${2016 - el}.`); +console.log(ages6); + +ages6 = years.map((el, index) => { + const now = new Date().getFullYear(); + const age = now - el; + return `Age element ${index + 1}: ${age}.` +}); +console.log(ages6); +*/ + + + + +///////////////////////////////// +// Lecture: Arrow functions 2 + +/* +// ES5 +var box5 = { + color: 'green', + position: 1, + clickMe: function() { + + var self = this; document.querySelector('.green').addEventListener('click', function() { + var str = 'This is box number ' + self.position + ' and it is ' + self.color; + alert(str); + }); + } +} +//box5.clickMe(); + + +// ES6 +const box6 = { + color: 'green', + position: 1, + clickMe: function() { + document.querySelector('.green').addEventListener('click', () => { + var str = 'This is box number ' + this.position + ' and it is ' + this.color; + alert(str); + }); + } +} +box6.clickMe(); + + +const box66 = { + color: 'green', + position: 1, + clickMe: () => { + document.querySelector('.green').addEventListener('click', () => { + var str = 'This is box number ' + this.position + ' and it is ' + this.color; + alert(str); + }); + } +} +box66.clickMe(); + + +function Person(name) { + this.name = name; +} + +// ES5 +Person.prototype.myFriends5 = function(friends) { + + var arr = friends.map(function(el) { + return this.name + ' is friends with ' + el; + }.bind(this)); + + console.log(arr); +} + +var friends = ['Bob', 'Jane', 'Mark']; +new Person('John').myFriends5(friends); + + +// ES6 +Person.prototype.myFriends6 = function(friends) { + + var arr = friends.map(el => `${this.name} is friends with ${el}`); + + console.log(arr); +} + +new Person('Mike').myFriends6(friends); +*/ + + + + +///////////////////////////////// +// Lecture: Destructuring + +/* +// ES5 +var john = ['John', 26]; +//var name = john[0]; +//var age = john[1]; + + +// ES6 +const [name, age] = ['John', 26]; +console.log(name); +console.log(age); + +const obj = { + firstName: 'John', + lastName: 'Smith' +}; + +const {firstName, lastName} = obj; +console.log(firstName); +console.log(lastName); + +const {firstName: a, lastName: b} = obj; +console.log(a); +console.log(b); + + + +function calcAgeRetirement(year) { + const age = new Date().getFullYear() - year; + return [age, 65 - age]; +} + + +const [age2, retirement] = calcAgeRetirement(1990); +console.log(age2); +console.log(retirement); +*/ + + + + +///////////////////////////////// +// Lecture: Arrays + +/* +const boxes = document.querySelectorAll('.box'); + +//ES5 +var boxesArr5 = Array.prototype.slice.call(boxes); +boxesArr5.forEach(function(cur) { + cur.style.backgroundColor = 'dodgerblue'; +}); + +//ES6 +const boxesArr6 = Array.from(boxes); +Array.from(boxes).forEach(cur => cur.style.backgroundColor = 'dodgerblue'); + + +//ES5 +for(var i = 0; i < boxesArr5.length; i++) { + + if(boxesArr5[i].className === 'box blue') { + continue; + } + + boxesArr5[i].textContent = 'I changed to blue!'; + +} + + +//ES6 +for (const cur of boxesArr6) { + if (cur.className.includes('blue')) { + continue; + } + cur.textContent = 'I changed to blue!'; +} + + + + +//ES5 +var ages = [12, 17, 8, 21, 14, 11]; + +var full = ages.map(function(cur) { + return cur >= 18; +}); +console.log(full); + +console.log(full.indexOf(true)); +console.log(ages[full.indexOf(true)]); + + +//ES6 +console.log(ages.findIndex(cur => cur >= 18)); +console.log(ages.find(cur => cur >= 18)); +*/ + + + + +///////////////////////////////// +// Lecture: Spread operator + +/* +function addFourAges (a, b, c, d) { + return a + b + c + d; +} + +var sum1 = addFourAges(18, 30, 12, 21); +console.log(sum1); + +//ES5 +var ages = [18, 30, 12, 21]; +var sum2 = addFourAges.apply(null, ages); +console.log(sum2); + +//ES6 +const sum3 = addFourAges(...ages); +console.log(sum3); + + +const familySmith = ['John', 'Jane', 'Mark']; +const familyMiller = ['Mary', 'Bob', 'Ann']; +const bigFamily = [...familySmith, 'Lily', ...familyMiller]; +console.log(bigFamily); + + +const h = document.querySelector('h1'); +const boxes = document.querySelectorAll('.box'); +const all = [h, ...boxes]; + +Array.from(all).forEach(cur => cur.style.color = 'purple'); +*/ + + + + +///////////////////////////////// +// Lecture: Rest parameters + +/* +//ES5 +function isFullAge5() { + //console.log(arguments); + var argsArr = Array.prototype.slice.call(arguments); + + argsArr.forEach(function(cur) { + console.log((2016 - cur) >= 18); + }) +} + + +//isFullAge5(1990, 1999, 1965); +//isFullAge5(1990, 1999, 1965, 2016, 1987); + + +//ES6 +function isFullAge6(...years) { + years.forEach(cur => console.log( (2016 - cur) >= 18)); +} + +isFullAge6(1990, 1999, 1965, 2016, 1987); + + +//ES5 +function isFullAge5(limit) { + var argsArr = Array.prototype.slice.call(arguments, 1); + + argsArr.forEach(function(cur) { + console.log((2016 - cur) >= limit); + }) +} + + +//isFullAge5(16, 1990, 1999, 1965); +isFullAge5(1990, 1999, 1965, 2016, 1987); + + +//ES6 +function isFullAge6(limit, ...years) { + years.forEach(cur => console.log( (2016 - cur) >= limit)); +} + +isFullAge6(16, 1990, 1999, 1965, 2016, 1987); +*/ + + + + +///////////////////////////////// +// Lecture: Default parameters + +/* +// ES5 +function SmithPerson(firstName, yearOfBirth, lastName, nationality) { + + lastName === undefined ? lastName = 'Smith' : lastName = lastName; + nationality === undefined ? nationality = 'american' : nationality = nationality; + + this.firstName = firstName; + this.lastName = lastName; + this.yearOfBirth = yearOfBirth; + this.nationality = nationality; +} + + +//ES6 +function SmithPerson(firstName, yearOfBirth, lastName = 'Smith', nationality = 'american') { + this.firstName = firstName; + this.lastName = lastName; + this.yearOfBirth = yearOfBirth; + this.nationality = nationality; +} + + +var john = new SmithPerson('John', 1990); +var emily = new SmithPerson('Emily', 1983, 'Diaz', 'spanish'); +*/ + + + + +///////////////////////////////// +// Lecture: Maps + +/* +const question = new Map(); +question.set('question', 'What is the official name of the latest major JavaScript version?'); +question.set(1, 'ES5'); +question.set(2, 'ES6'); +question.set(3, 'ES2015'); +question.set(4, 'ES7'); +question.set('correct', 3); +question.set(true, 'Correct answer :D'); +question.set(false, 'Wrong, please try again!'); + +console.log(question.get('question')); +//console.log(question.size); + + +if(question.has(4)) { + //question.delete(4); + //console.log('Answer 4 is here') +} + +//question.clear(); + + +//question.forEach((value, key) => console.log(`This is ${key}, and it's set to ${value}`)); + + +for (let [key, value] of question.entries()) { + if (typeof(key) === 'number') { + console.log(`Answer ${key}: ${value}`); + } +} + +const ans = parseInt(prompt('Write the correct answer')); +console.log(question.get(ans === question.get('correct'))); +*/ + + + + +///////////////////////////////// +// Lecture: Classes + +/* +//ES5 +var Person5 = function(name, yearOfBirth, job) { + this.name = name; + this.yearOfBirth = yearOfBirth; + this.job = job; +} + +Person5.prototype.calculateAge = function() { + var age = new Date().getFullYear - this.yearOfBirth; + console.log(age); +} + +var john5 = new Person5('John', 1990, 'teacher'); + +//ES6 +class Person6 { + constructor (name, yearOfBirth, job) { + this.name = name; + this.yearOfBirth = yearOfBirth; + this.job = job; + } + + calculateAge() { + var age = new Date().getFullYear - this.yearOfBirth; + console.log(age); + } + + static greeting() { + console.log('Hey there!'); + } +} + +const john6 = new Person6('John', 1990, 'teacher'); + +Person6.greeting(); +*/ + + + + +///////////////////////////////// +// Lecture: Classes and subclasses + +/* +//ES5 +var Person5 = function(name, yearOfBirth, job) { + this.name = name; + this.yearOfBirth = yearOfBirth; + this.job = job; +} + +Person5.prototype.calculateAge = function() { + var age = new Date().getFullYear() - this.yearOfBirth; + console.log(age); +} + +var Athlete5 = function(name, yearOfBirth, job, olymicGames, medals) { + Person5.call(this, name, yearOfBirth, job); + this.olymicGames = olymicGames; + this.medals = medals; +} + +Athlete5.prototype = Object.create(Person5.prototype); + + +Athlete5.prototype.wonMedal = function() { + this.medals++; + console.log(this.medals); +} + + +var johnAthlete5 = new Athlete5('John', 1990, 'swimmer', 3, 10); + +johnAthlete5.calculateAge(); +johnAthlete5.wonMedal(); + + +//ES6 +class Person6 { + constructor (name, yearOfBirth, job) { + this.name = name; + this.yearOfBirth = yearOfBirth; + this.job = job; + } + + calculateAge() { + var age = new Date().getFullYear() - this.yearOfBirth; + console.log(age); + } +} + +class Athlete6 extends Person6 { + constructor(name, yearOfBirth, job, olympicGames, medals) { + super(name, yearOfBirth, job); + this.olympicGames = olympicGames; + this.medals = medals; + } + + wonMedal() { + this.medals++; + console.log(this.medals); + } +} + +const johnAthlete6 = new Athlete6('John', 1990, 'swimmer', 3, 10); + +johnAthlete6.wonMedal(); +johnAthlete6.calculateAge(); +*/ + + + + +///////////////////////////////// +// CODING CHALLENGE + +/* + +Suppose that you're working in a small town administration, and you're in charge of two town elements: +1. Parks +2. Streets + +It's a very small town, so right now there are only 3 parks and 4 streets. All parks and streets have a name and a build year. + +At an end-of-year meeting, your boss wants a final report with the following: +1. Tree density of each park in the town (forumla: number of trees/park area) +2. Average age of each town's park (forumla: sum of all ages/number of parks) +3. The name of the park that has more than 1000 trees +4. Total and average length of the town's streets +5. Size classification of all streets: tiny/small/normal/big/huge. If the size is unknown, the default is normal + +All the report data should be printed to the console. + +HINT: Use some of the ES6 features: classes, subclasses, template strings, default parameters, maps, arrow functions, destructuring, etc. + +*/ + + +class Element { + constructor(name, buildYear) { + this.name = name; + this.buildYear = buildYear; + } +} + + +class Park extends Element { + constructor(name, buildYear, area, numTrees) { + super(name, buildYear); + this.area = area; //km2 + this.numTrees = numTrees; + } + + treeDensity() { + const density = this.numTrees / this.area; + console.log(`${this.name} has a tree density of ${density} trees per square km.`); + } +} + + +class Street extends Element { + constructor(name, buildYear, length, size = 3) { + super(name, buildYear); + this.length = length; + this.size = size; + } + + classifyStreet () { + const classification = new Map(); + classification.set(1, 'tiny'); + classification.set(2, 'small'); + classification.set(3, 'normal'); + classification.set(4, 'big'); + classification.set(5, 'huge'); + console.log(`${this.name}, build in ${this.buildYear}, is a ${classification.get(this.size)} street.`); + } +} + + +const allParks = [new Park('Green Park', 1987, 0.2, 215), + new Park('National Park', 1894, 2.9, 3541), + new Park('Oak Park', 1953, 0.4, 949)]; + +const allStreets = [new Street('Ocean Avenue', 1999, 1.1, 4), + new Street('Evergreen Street', 2008, 2.7, 2), + new Street('4th Street', 2015, 0.8), + new Street('Sunset Boulevard', 1982, 2.5, 5)]; + + +function calc(arr) { + + const sum = arr.reduce((prev, cur, index) => prev + cur, 0); + + return [sum, sum / arr.length]; + +} + + +function reportParks(p) { + + console.log('-----PARKS REPORT-----'); + + // Density + p.forEach(el => el.treeDensity()); + + // Average age + const ages = p.map(el => new Date().getFullYear() - el.buildYear); + const [totalAge, avgAge] = calc(ages); + console.log(`Our ${p.length} parks have an average of ${avgAge} years.`); + + // Which park has more than 1000 trees + const i = p.map(el => el.numTrees).findIndex(el => el >= 1000); + console.log(`${p[i].name} has more than 1000 trees.`); + +} + + +function reportStreets(s) { + + console.log('-----STREETS REPORT-----'); + + //Total and average length of the town's streets + const [totalLength, avgLength] = calc(s.map(el => el.length)); + console.log(`Our ${s.length} streets have a total length of ${totalLength} km, with an average of ${avgLength} km.`); + + // CLassify sizes + s.forEach(el => el.classifyStreet()); +} + +reportParks(allParks); +reportStreets(allStreets); \ No newline at end of file diff --git a/7-ES6/starter/index.html b/7-ES6/starter/index.html new file mode 100755 index 0000000000..8bf6a167bd --- /dev/null +++ b/7-ES6/starter/index.html @@ -0,0 +1,33 @@ + + + + + Section 7: Get Ready for the Future: ES6 / ES2015 + + + + + + +

    Section 7: Get Ready for the Future: ES6 / ES2015

    + +
    I'm green!
    +
    I'm blue!
    +
    I'm orange!
    + + + + \ No newline at end of file diff --git a/17-Modern-JS-Modules-Tooling/starter/script.js b/7-ES6/starter/script.js old mode 100644 new mode 100755 similarity index 100% rename from 17-Modern-JS-Modules-Tooling/starter/script.js rename to 7-ES6/starter/script.js diff --git a/8-asynchronous-JS/.DS_Store b/8-asynchronous-JS/.DS_Store new file mode 100644 index 0000000000..7de13f06e3 Binary files /dev/null and b/8-asynchronous-JS/.DS_Store differ diff --git a/8-asynchronous-JS/final/asynchronous.html b/8-asynchronous-JS/final/asynchronous.html new file mode 100644 index 0000000000..c903011c6e --- /dev/null +++ b/8-asynchronous-JS/final/asynchronous.html @@ -0,0 +1,136 @@ + + + + + + + Asynchronous JavaScript + + +

    Asynchronous JavaScript

    + + + \ No newline at end of file diff --git a/8-asynchronous-JS/starter/asynchronous.html b/8-asynchronous-JS/starter/asynchronous.html new file mode 100644 index 0000000000..a94431c2c6 --- /dev/null +++ b/8-asynchronous-JS/starter/asynchronous.html @@ -0,0 +1,15 @@ + + + + + + + Asynchronous JavaScript + + +

    Asynchronous JavaScript

    + + + \ No newline at end of file diff --git a/9-forkify/.DS_Store b/9-forkify/.DS_Store new file mode 100644 index 0000000000..0cdc767bc2 Binary files /dev/null and b/9-forkify/.DS_Store differ diff --git a/9-forkify/.gitignore b/9-forkify/.gitignore new file mode 100644 index 0000000000..3c3629e647 --- /dev/null +++ b/9-forkify/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/9-forkify/.vscode/settings.json b/9-forkify/.vscode/settings.json new file mode 100644 index 0000000000..3b66410730 --- /dev/null +++ b/9-forkify/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "git.ignoreLimitWarning": true +} \ No newline at end of file diff --git a/9-forkify/final/.DS_Store b/9-forkify/final/.DS_Store new file mode 100644 index 0000000000..bf2c7a3e13 Binary files /dev/null and b/9-forkify/final/.DS_Store differ diff --git a/9-forkify/final/.babelrc b/9-forkify/final/.babelrc new file mode 100644 index 0000000000..822529e6c8 --- /dev/null +++ b/9-forkify/final/.babelrc @@ -0,0 +1,12 @@ +{ + "presets": [ + ["env", { + "targets": { + "browsers": [ + "last 5 versions", + "ie >= 8" + ] + } + }] + ] +} \ No newline at end of file diff --git a/9-forkify/final/dist/.DS_Store b/9-forkify/final/dist/.DS_Store new file mode 100644 index 0000000000..aac648b1e9 Binary files /dev/null and b/9-forkify/final/dist/.DS_Store differ diff --git a/9-forkify/final/dist/css/style.css b/9-forkify/final/dist/css/style.css new file mode 100644 index 0000000000..9ec5c35935 --- /dev/null +++ b/9-forkify/final/dist/css/style.css @@ -0,0 +1,492 @@ +* { + margin: 0; + padding: 0; } + +*, +*::before, +*::after { + box-sizing: inherit; } + +html { + box-sizing: border-box; + font-size: 62.5%; } + @media only screen and (max-width: 68.75em) { + html { + font-size: 50%; } } + +body { + font-family: 'Nunito Sans', sans-serif; + font-weight: 400; + line-height: 1.6; + color: #655A56; + background-image: linear-gradient(to right bottom, #FBDB89, #F48982); + background-size: cover; + background-repeat: no-repeat; + min-height: calc(100vh - 2 * 4vw); } + +.container { + max-width: 120rem; + margin: 4vw auto; + background-color: #fff; + border-radius: 6px; + overflow: hidden; + box-shadow: 0 2rem 6rem 0.5rem rgba(101, 90, 86, 0.2); + display: grid; + grid-template-rows: 10rem minmax(100rem, auto); + grid-template-columns: 1.1fr 2fr 1.1fr; + grid-template-areas: "head head head" "list recipe shopping"; } + @media only screen and (max-width: 68.75em) { + .container { + width: 100%; + margin: 0; + border-radius: 0; } } + +.btn, .btn-small, .btn-small:link, .btn-small:visited { + background-image: linear-gradient(to right bottom, #FBDB89, #F48982); + border-radius: 10rem; + border: none; + text-transform: uppercase; + color: #fff; + cursor: pointer; + display: flex; + align-items: center; + transition: all .2s; } + .btn:hover, .btn-small:hover { + transform: scale(1.05); } + .btn:focus, .btn-small:focus { + outline: none; } + .btn > *:first-child, .btn-small > *:first-child { + margin-right: 1rem; } + +.btn { + padding: 1.3rem 3rem; + font-size: 1.4rem; } + .btn svg { + height: 2.25rem; + width: 2.25rem; + fill: currentColor; } + +.btn-small, .btn-small:link, .btn-small:visited { + font-size: 1.3rem; + padding: 1rem 1.75rem; + text-decoration: none; } + .btn-small svg, .btn-small:link svg, .btn-small:visited svg { + height: 1.5rem; + width: 1.5rem; + fill: currentColor; } + +.btn-inline { + color: #F59A83; + font-size: 1.2rem; + border: none; + background-color: #F9F5F3; + padding: .8rem 1.2rem; + border-radius: 10rem; + cursor: pointer; + display: flex; + align-items: center; + transition: all .2s; } + .btn-inline svg { + height: 1.5rem; + width: 1.5rem; + fill: currentColor; + margin: 0 .2rem; } + .btn-inline span { + margin: 0 .4rem; } + .btn-inline:hover { + color: #F48982; + background-color: #F2EFEE; } + .btn-inline:focus { + outline: none; } + +.btn-tiny { + height: 1.75rem; + width: 1.75rem; + border: none; + background: none; + cursor: pointer; } + .btn-tiny svg { + height: 100%; + width: 100%; + fill: #F59A83; + transition: all .3s; } + .btn-tiny:focus { + outline: none; } + .btn-tiny:hover svg { + fill: #F48982; + transform: translateY(-1px); } + .btn-tiny:active svg { + fill: #F48982; + transform: translateY(0); } + .btn-tiny:not(:last-child) { + margin-right: .3rem; } + +.heading-2 { + font-size: 1.8rem; + font-weight: 600; + color: #F59A83; + text-transform: uppercase; + margin-bottom: 2.5rem; + text-align: center; + transform: skewY(-3deg); } + +.copyright { + color: #968B87; + font-size: 1.2rem; + margin-top: auto; } + +.link:link, +.link:visited { + color: #968B87; } + +.loader { + margin: 5rem auto; + text-align: center; } + .loader svg { + height: 5.5rem; + width: 5.5rem; + fill: #F59A83; + transform-origin: 44% 50%; + animation: rotate 1.5s infinite linear; } + +@keyframes rotate { + 0% { + transform: rotate(0); } + 100% { + transform: rotate(360deg); } } + +.header { + grid-area: head; + background-color: #F9F5F3; + display: flex; + align-items: center; + justify-content: space-between; } + .header__logo { + margin-left: 4rem; + height: 4.5rem; + display: block; } + +.search { + background-color: #fff; + border-radius: 10rem; + display: flex; + align-items: center; + padding-left: 3rem; + transition: all .3s; } + .search:focus-within { + transform: translateY(-2px); + box-shadow: 0 0.7rem 3rem rgba(101, 90, 86, 0.08); } + .search__field { + border: none; + background: none; + font-family: inherit; + color: inherit; + font-size: 1.7rem; + width: 30rem; } + .search__field:focus { + outline: none; } + .search__field::placeholder { + color: #DAD0CC; } + +.likes { + position: relative; + align-self: stretch; + padding: 0 !important; } + .likes__field { + cursor: pointer; + padding: 0 4rem; + display: flex; + align-items: center; + height: 100%; + transition: all .3s; } + .likes__field:hover { + background-color: #F2EFEE; } + .likes__panel:hover, + .likes__field:hover + .likes__panel { + visibility: visible; + opacity: 1; } + .likes__icon { + fill: #F59A83; + height: 3.75rem; + width: 3.75rem; } + .likes__panel { + position: absolute; + right: 0; + top: 10rem; + z-index: 10; + padding: 2rem 0; + width: 34rem; + background-color: #fff; + box-shadow: 0 0.8rem 5rem 2rem rgba(101, 90, 86, 0.1); + visibility: hidden; + opacity: 0; + transition: all .5s .2s; } + +.results, +.likes { + padding: 3rem 0; } + .results__list, + .likes__list { + list-style: none; } + .results__link:link, .results__link:visited, + .likes__link:link, + .likes__link:visited { + display: flex; + align-items: center; + padding: 1.5rem 3rem; + transition: all .3s; + border-right: 1px solid #fff; + text-decoration: none; } + .results__link:hover, + .likes__link:hover { + background-color: #F9F5F3; + transform: translateY(-2px); } + .results__link--active, + .likes__link--active { + background-color: #F9F5F3; } + .results__fig, + .likes__fig { + flex: 0 0 5.5rem; + border-radius: 50%; + overflow: hidden; + height: 5.5rem; + margin-right: 2rem; + position: relative; + backface-visibility: hidden; } + .results__fig::before, + .likes__fig::before { + content: ''; + display: block; + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; + background-image: linear-gradient(to right bottom, #FBDB89, #F48982); + opacity: .4; } + .results__fig img, + .likes__fig img { + display: block; + width: 100%; + height: 100%; + object-fit: cover; + transition: all .3s; } + .results__name, + .likes__name { + font-size: 1.3rem; + color: #F59A83; + text-transform: uppercase; + font-weight: 600; + margin-bottom: .3rem; } + .results__author, + .likes__author { + font-size: 1.1rem; + color: #968B87; + text-transform: uppercase; + font-weight: 600; } + .results__pages, + .likes__pages { + margin-top: 3rem; + padding: 0 3rem; } + .results__pages::after, + .likes__pages::after { + content: ""; + display: table; + clear: both; } + .results__btn--prev, + .likes__btn--prev { + float: left; + flex-direction: row-reverse; } + .results__btn--next, + .likes__btn--next { + float: right; } + +.recipe { + background-color: #F9F5F3; + border-top: 1px solid #fff; } + .recipe__fig { + height: 30rem; + position: relative; + transform: scale(1.04) translateY(-1px); + transform-origin: top; } + .recipe__fig::before { + content: ''; + display: block; + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; + background-image: linear-gradient(to right bottom, #FBDB89, #F48982); + opacity: .6; } + .recipe__img { + width: 100%; + display: block; + height: 100%; + object-fit: cover; } + .recipe__title { + position: absolute; + bottom: 0; + left: 50%; + transform: translate(-50%, 20%) skewY(-6deg); + color: #fff; + font-weight: 700; + font-size: 2.75rem; + text-transform: uppercase; + width: 70%; + line-height: 1.95; + text-align: center; } + .recipe__title span { + -webkit-box-decoration-break: clone; + box-decoration-break: clone; + padding: 1.3rem 2rem; + background-image: linear-gradient(to right bottom, #FBDB89, #F48982); } + .recipe__details { + display: flex; + align-items: center; + padding: 8rem 3rem 3rem 3rem; } + .recipe__info { + font-size: 1.5rem; + text-transform: uppercase; + display: flex; + align-items: center; } + .recipe__info:not(:last-child) { + margin-right: 4rem; } + .recipe__info-icon { + height: 2rem; + width: 2rem; + fill: #F59A83; + margin-right: 1rem; } + .recipe__info-data { + margin-right: .4rem; + font-weight: 600; } + .recipe__info-buttons { + display: flex; + margin-left: 1.5rem; + visibility: hidden; + opacity: 0; + transform: translateY(5px); + transition: all .4s; } + .recipe:hover .recipe__info-buttons { + visibility: visible; + opacity: 1; + transform: translateY(0); } + .recipe__love { + background-image: linear-gradient(to right bottom, #FBDB89, #F48982); + border-radius: 50%; + border: none; + cursor: pointer; + height: 4.5rem; + width: 4.5rem; + margin-left: auto; + transition: all .2s; + display: flex; + align-items: center; + justify-content: center; } + .recipe__love:hover { + transform: scale(1.07); } + .recipe__love:focus { + outline: none; } + .recipe__love svg { + height: 2.75rem; + width: 2.75rem; + fill: #fff; } + .recipe__ingredients { + padding: 4rem 5rem; + font-size: 1.5rem; + line-height: 1.4; + background-color: #F2EFEE; + display: flex; + flex-direction: column; + align-items: center; } + .recipe__ingredient-list { + display: grid; + grid-template-columns: 1fr 1fr; + grid-column-gap: 1.5rem; + grid-row-gap: 2.5rem; + list-style: none; + margin-bottom: 3rem; } + .recipe__item { + display: flex; } + .recipe__icon { + height: 1.8rem; + width: 1.8rem; + fill: #F59A83; + border: 1px solid #F59A83; + border-radius: 50%; + padding: 2px; + margin-right: 1rem; + flex: 0 0 auto; + margin-top: .1rem; } + .recipe__count { + margin-right: .5rem; + flex: 0 0 auto; } + .recipe__directions { + padding: 4rem; + padding-bottom: 5rem; + display: flex; + flex-direction: column; + align-items: center; } + .recipe__directions-text { + font-size: 1.5rem; + text-align: center; + width: 90%; + margin-bottom: 3rem; + color: #968B87; } + .recipe__by { + font-weight: 700; } + +.shopping { + padding: 3rem 4rem; + display: flex; + flex-direction: column; } + .shopping__list { + list-style: none; + max-height: 77rem; + overflow: scroll; } + .shopping__item { + display: flex; + align-items: flex-start; + padding: 1.3rem 0; + border-bottom: 1px solid #F2EFEE; + position: relative; } + .shopping__count { + flex: 0 0 7.5rem; + padding: .4rem .5rem; + border: 1px solid #F2EFEE; + border-radius: 3px; + margin-right: 2rem; + cursor: pointer; + display: flex; + justify-content: space-between; } + .shopping__count input { + color: inherit; + font-family: inherit; + font-size: 1.2rem; + text-align: center; + border: none; + width: 3.7rem; + border-radius: 3px; } + .shopping__count input:focus { + outline: none; + background-color: #F2EFEE; } + .shopping__count p { + font-size: 1.2rem; } + .shopping__description { + flex: 1; + font-size: 1.3rem; + margin-top: .4rem; + margin-right: 1.5rem; } + .shopping__delete { + margin-top: .5rem; + position: absolute; + right: 0; + background-image: linear-gradient(to right, transparent 0%, #fff 40%, #fff 100%); + width: 3.75rem; + padding-left: 2rem; + visibility: hidden; + opacity: 0; + transition: all .5s; } + .shopping__item:hover .shopping__delete { + opacity: 1; + visibility: visible; } diff --git a/9-forkify/final/dist/img/.DS_Store b/9-forkify/final/dist/img/.DS_Store new file mode 100644 index 0000000000..5008ddfcf5 Binary files /dev/null and b/9-forkify/final/dist/img/.DS_Store differ diff --git a/18-forkify/final/src/img/favicon.png b/9-forkify/final/dist/img/favicon.png similarity index 100% rename from 18-forkify/final/src/img/favicon.png rename to 9-forkify/final/dist/img/favicon.png diff --git a/9-forkify/final/dist/img/icons.svg b/9-forkify/final/dist/img/icons.svg new file mode 100755 index 0000000000..1ea46807f8 --- /dev/null +++ b/9-forkify/final/dist/img/icons.svg @@ -0,0 +1,60 @@ + diff --git a/18-forkify/final/src/img/logo.png b/9-forkify/final/dist/img/logo.png similarity index 100% rename from 18-forkify/final/src/img/logo.png rename to 9-forkify/final/dist/img/logo.png diff --git a/9-forkify/final/dist/img/test-1.jpg b/9-forkify/final/dist/img/test-1.jpg new file mode 100644 index 0000000000..a339e6e81e Binary files /dev/null and b/9-forkify/final/dist/img/test-1.jpg differ diff --git a/9-forkify/final/dist/img/test-10.jpg b/9-forkify/final/dist/img/test-10.jpg new file mode 100644 index 0000000000..9c83e0ea83 Binary files /dev/null and b/9-forkify/final/dist/img/test-10.jpg differ diff --git a/9-forkify/final/dist/img/test-2.jpg b/9-forkify/final/dist/img/test-2.jpg new file mode 100644 index 0000000000..656025359e Binary files /dev/null and b/9-forkify/final/dist/img/test-2.jpg differ diff --git a/9-forkify/final/dist/img/test-3.jpg b/9-forkify/final/dist/img/test-3.jpg new file mode 100644 index 0000000000..15f78df800 Binary files /dev/null and b/9-forkify/final/dist/img/test-3.jpg differ diff --git a/9-forkify/final/dist/img/test-4.jpg b/9-forkify/final/dist/img/test-4.jpg new file mode 100644 index 0000000000..3090b9a3f4 Binary files /dev/null and b/9-forkify/final/dist/img/test-4.jpg differ diff --git a/9-forkify/final/dist/img/test-5.jpg b/9-forkify/final/dist/img/test-5.jpg new file mode 100644 index 0000000000..35a8e7f8a9 Binary files /dev/null and b/9-forkify/final/dist/img/test-5.jpg differ diff --git a/9-forkify/final/dist/img/test-6.jpg b/9-forkify/final/dist/img/test-6.jpg new file mode 100644 index 0000000000..1f200ffaf5 Binary files /dev/null and b/9-forkify/final/dist/img/test-6.jpg differ diff --git a/9-forkify/final/dist/img/test-7.jpg b/9-forkify/final/dist/img/test-7.jpg new file mode 100644 index 0000000000..1f200ffaf5 Binary files /dev/null and b/9-forkify/final/dist/img/test-7.jpg differ diff --git a/9-forkify/final/dist/img/test-8.jpg b/9-forkify/final/dist/img/test-8.jpg new file mode 100644 index 0000000000..b63ad410a3 Binary files /dev/null and b/9-forkify/final/dist/img/test-8.jpg differ diff --git a/9-forkify/final/dist/img/test-9.jpg b/9-forkify/final/dist/img/test-9.jpg new file mode 100644 index 0000000000..b0b7ce5e88 Binary files /dev/null and b/9-forkify/final/dist/img/test-9.jpg differ diff --git a/9-forkify/final/dist/index.html b/9-forkify/final/dist/index.html new file mode 100644 index 0000000000..d567c8af65 --- /dev/null +++ b/9-forkify/final/dist/index.html @@ -0,0 +1,441 @@ + + + + + + + + + + + forkify // Search over 1,000,000 recipes + + + +
    +
    + + + +
    + + +
    +
      + +
    + +
    + +
    +
    + + + +
    + + +
    + + + + + +
    +

    My Shopping List

    + +
      + + +
    + + + +
    +
    + + + + \ No newline at end of file diff --git a/9-forkify/final/dist/js/bundle.js b/9-forkify/final/dist/js/bundle.js new file mode 100644 index 0000000000..4c1307d03c --- /dev/null +++ b/9-forkify/final/dist/js/bundle.js @@ -0,0 +1,8 @@ +!function(t){var n={};function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},e.p="",e(e.s=368)}([function(t,n,e){var r=e(2),i=e(27),o=e(13),u=e(12),c=e(21),a=function(t,n,e){var s,f,l,h,p=t&a.F,v=t&a.G,d=t&a.S,g=t&a.P,y=t&a.B,m=v?r:d?r[n]||(r[n]={}):(r[n]||{}).prototype,_=v?i:i[n]||(i[n]={}),b=_.prototype||(_.prototype={});for(s in v&&(e=n),e)l=((f=!p&&m&&void 0!==m[s])?m:e)[s],h=y&&f?c(l,r):g&&"function"==typeof l?c(Function.call,l):l,m&&u(m,s,l,t&a.U),_[s]!=l&&o(_,s,h),g&&b[s]!=l&&(b[s]=l)};r.core=i,a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,t.exports=a},function(t,n,e){var r=e(4);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,n){var e=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,n,e){var r=e(64)("wks"),i=e(41),o=e(2).Symbol,u="function"==typeof o;(t.exports=function(t){return r[t]||(r[t]=u&&o[t]||(u?o:i)("Symbol."+t))}).store=r},function(t,n,e){var r=e(24),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,n,e){var r=e(1),i=e(135),o=e(26),u=Object.defineProperty;n.f=e(8)?Object.defineProperty:function(t,n,e){if(r(t),n=o(n,!0),r(e),i)try{return u(t,n,e)}catch(t){}if("get"in e||"set"in e)throw TypeError("Accessors not supported!");return"value"in e&&(t[n]=e.value),t}},function(t,n,e){t.exports=!e(3)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,n,e){var r=e(25);t.exports=function(t){return Object(r(t))}},function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,n,e){var r=e(0),i=e(3),o=e(25),u=/"/g,c=function(t,n,e,r){var i=String(o(t)),c="<"+n;return""!==e&&(c+=" "+e+'="'+String(r).replace(u,""")+'"'),c+">"+i+""};t.exports=function(t,n){var e={};e[t]=n(c),r(r.P+r.F*i(function(){var n=""[t]('"');return n!==n.toLowerCase()||n.split('"').length>3}),"String",e)}},function(t,n,e){var r=e(2),i=e(13),o=e(14),u=e(41)("src"),c=Function.toString,a=(""+c).split("toString");e(27).inspectSource=function(t){return c.call(t)},(t.exports=function(t,n,e,c){var s="function"==typeof e;s&&(o(e,"name")||i(e,"name",n)),t[n]!==e&&(s&&(o(e,u)||i(e,u,t[n]?""+t[n]:a.join(String(n)))),t===r?t[n]=e:c?t[n]?t[n]=e:i(t,n,e):(delete t[n],i(t,n,e)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[u]||c.call(this)})},function(t,n,e){var r=e(7),i=e(42);t.exports=e(8)?function(t,n,e){return r.f(t,n,i(1,e))}:function(t,n,e){return t[n]=e,t}},function(t,n){var e={}.hasOwnProperty;t.exports=function(t,n){return e.call(t,n)}},function(t,n,e){"use strict";var r=e(100),i=e(162),o=Object.prototype.toString;function u(t){return"[object Array]"===o.call(t)}function c(t){return null!==t&&"object"==typeof t}function a(t){return"[object Function]"===o.call(t)}function s(t,n){if(null!==t&&void 0!==t)if("object"!=typeof t&&(t=[t]),u(t))for(var e=0,r=t.length;ew;w++)if((h||w in m)&&(g=_(d=m[w],w,y),t))if(e)x[w]=g;else if(g)switch(t){case 3:return!0;case 5:return d;case 6:return w;case 2:x.push(d)}else if(f)return!1;return l?-1:s||f?f:x}}},function(t,n,e){var r=e(0),i=e(27),o=e(3);t.exports=function(t,n){var e=(i.Object||{})[t]||Object[t],u={};u[t]=n(e),r(r.S+r.F*o(function(){e(1)}),"Object",u)}},function(t,n){var e=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:e)(t)}},function(t,n){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,n,e){var r=e(4);t.exports=function(t,n){if(!r(t))return t;var e,i;if(n&&"function"==typeof(e=t.toString)&&!r(i=e.call(t)))return i;if("function"==typeof(e=t.valueOf)&&!r(i=e.call(t)))return i;if(!n&&"function"==typeof(e=t.toString)&&!r(i=e.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,n){var e=t.exports={version:"2.5.3"};"number"==typeof __e&&(__e=e)},function(t,n,e){var r=e(114),i=e(0),o=e(64)("metadata"),u=o.store||(o.store=new(e(111))),c=function(t,n,e){var i=u.get(t);if(!i){if(!e)return;u.set(t,i=new r)}var o=i.get(n);if(!o){if(!e)return;i.set(n,o=new r)}return o};t.exports={store:u,map:c,has:function(t,n,e){var r=c(n,e,!1);return void 0!==r&&r.has(t)},get:function(t,n,e){var r=c(n,e,!1);return void 0===r?void 0:r.get(t)},set:function(t,n,e,r){c(e,r,!0).set(t,n)},keys:function(t,n){var e=c(t,n,!1),r=[];return e&&e.forEach(function(t,n){r.push(n)}),r},key:function(t){return void 0===t||"symbol"==typeof t?t:String(t)},exp:function(t){i(i.S,"Reflect",t)}}},function(t,n,e){"use strict";if(e(8)){var r=e(40),i=e(2),o=e(3),u=e(0),c=e(54),a=e(67),s=e(21),f=e(34),l=e(42),h=e(13),p=e(32),v=e(24),d=e(6),g=e(109),y=e(38),m=e(26),_=e(14),b=e(48),w=e(4),x=e(9),S=e(76),E=e(37),k=e(16),M=e(36).f,O=e(74),P=e(41),F=e(5),I=e(22),j=e(63),A=e(56),L=e(71),R=e(44),T=e(59),N=e(35),C=e(72),D=e(119),B=e(7),U=e(17),q=B.f,W=U.f,G=i.RangeError,V=i.TypeError,z=i.Uint8Array,H=Array.prototype,J=a.ArrayBuffer,Y=a.DataView,K=I(0),X=I(2),$=I(3),Z=I(4),Q=I(5),tt=I(6),nt=j(!0),et=j(!1),rt=L.values,it=L.keys,ot=L.entries,ut=H.lastIndexOf,ct=H.reduce,at=H.reduceRight,st=H.join,ft=H.sort,lt=H.slice,ht=H.toString,pt=H.toLocaleString,vt=F("iterator"),dt=F("toStringTag"),gt=P("typed_constructor"),yt=P("def_constructor"),mt=c.CONSTR,_t=c.TYPED,bt=c.VIEW,wt=I(1,function(t,n){return Mt(A(t,t[yt]),n)}),xt=o(function(){return 1===new z(new Uint16Array([1]).buffer)[0]}),St=!!z&&!!z.prototype.set&&o(function(){new z(1).set({})}),Et=function(t,n){var e=v(t);if(e<0||e%n)throw G("Wrong offset!");return e},kt=function(t){if(w(t)&&_t in t)return t;throw V(t+" is not a typed array!")},Mt=function(t,n){if(!(w(t)&> in t))throw V("It is not a typed array constructor!");return new t(n)},Ot=function(t,n){return Pt(A(t,t[yt]),n)},Pt=function(t,n){for(var e=0,r=n.length,i=Mt(t,r);r>e;)i[e]=n[e++];return i},Ft=function(t,n,e){q(t,n,{get:function(){return this._d[e]}})},It=function(t){var n,e,r,i,o,u,c=x(t),a=arguments.length,f=a>1?arguments[1]:void 0,l=void 0!==f,h=O(c);if(void 0!=h&&!S(h)){for(u=h.call(c),r=[],n=0;!(o=u.next()).done;n++)r.push(o.value);c=r}for(l&&a>2&&(f=s(f,arguments[2],2)),n=0,e=d(c.length),i=Mt(this,e);e>n;n++)i[n]=l?f(c[n],n):c[n];return i},jt=function(){for(var t=0,n=arguments.length,e=Mt(this,n);n>t;)e[t]=arguments[t++];return e},At=!!z&&o(function(){pt.call(new z(1))}),Lt=function(){return pt.apply(At?lt.call(kt(this)):kt(this),arguments)},Rt={copyWithin:function(t,n){return D.call(kt(this),t,n,arguments.length>2?arguments[2]:void 0)},every:function(t){return Z(kt(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return C.apply(kt(this),arguments)},filter:function(t){return Ot(this,X(kt(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return Q(kt(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return tt(kt(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){K(kt(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return et(kt(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return nt(kt(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return st.apply(kt(this),arguments)},lastIndexOf:function(t){return ut.apply(kt(this),arguments)},map:function(t){return wt(kt(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return ct.apply(kt(this),arguments)},reduceRight:function(t){return at.apply(kt(this),arguments)},reverse:function(){for(var t,n=kt(this).length,e=Math.floor(n/2),r=0;r1?arguments[1]:void 0)},sort:function(t){return ft.call(kt(this),t)},subarray:function(t,n){var e=kt(this),r=e.length,i=y(t,r);return new(A(e,e[yt]))(e.buffer,e.byteOffset+i*e.BYTES_PER_ELEMENT,d((void 0===n?r:y(n,r))-i))}},Tt=function(t,n){return Ot(this,lt.call(kt(this),t,n))},Nt=function(t){kt(this);var n=Et(arguments[1],1),e=this.length,r=x(t),i=d(r.length),o=0;if(i+n>e)throw G("Wrong length!");for(;o255?255:255&r),i.v[p](e*n+i.o,r,xt)}(this,e,t)},enumerable:!0})};_?(v=e(function(t,e,r,i){f(t,v,s,"_d");var o,u,c,a,l=0,p=0;if(w(e)){if(!(e instanceof J||"ArrayBuffer"==(a=b(e))||"SharedArrayBuffer"==a))return _t in e?Pt(v,e):It.call(v,e);o=e,p=Et(r,n);var y=e.byteLength;if(void 0===i){if(y%n)throw G("Wrong length!");if((u=y-p)<0)throw G("Wrong length!")}else if((u=d(i)*n)+p>y)throw G("Wrong length!");c=u/n}else c=g(e),o=new J(u=c*n);for(h(t,"_d",{b:o,o:p,l:u,e:c,v:new Y(o)});l_;_++)if((g=n?m(u(v=t[_])[0],v[1]):m(t[_]))===s||g===f)return g}else for(d=y.call(t);!(v=d.next()).done;)if((g=i(d,m,v.value,n))===s||g===f)return g}).BREAK=s,n.RETURN=f},function(t,n){t.exports=function(t,n,e,r){if(!(t instanceof n)||void 0!==r&&r in t)throw TypeError(e+": incorrect invocation!");return t}},function(t,n,e){"use strict";var r=e(2),i=e(7),o=e(8),u=e(5)("species");t.exports=function(t){var n=r[t];o&&n&&!n[u]&&i.f(n,u,{configurable:!0,get:function(){return this}})}},function(t,n,e){var r=e(133),i=e(89).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},function(t,n,e){var r=e(1),i=e(132),o=e(89),u=e(90)("IE_PROTO"),c=function(){},a=function(){var t,n=e(92)("iframe"),r=o.length;for(n.style.display="none",e(88).appendChild(n),n.src="/service/javascript:",(t=n.contentWindow.document).open(),t.write(" + + \ No newline at end of file diff --git a/9-forkify/starter/dist/js/bundle.js b/9-forkify/starter/dist/js/bundle.js new file mode 100644 index 0000000000..09550a5e07 --- /dev/null +++ b/9-forkify/starter/dist/js/bundle.js @@ -0,0 +1,8 @@ +!function(t){var n={};function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:r})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,n){if(1&n&&(t=e(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(e.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var i in t)e.d(r,i,function(n){return t[n]}.bind(null,i));return r},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},e.p="",e(e.s=137)}([function(t,n,e){var r=e(2),i=e(19),o=e(11),u=e(12),c=e(20),a=function(t,n,e){var s,f,l,h,p=t&a.F,v=t&a.G,d=t&a.S,g=t&a.P,y=t&a.B,m=v?r:d?r[n]||(r[n]={}):(r[n]||{}).prototype,_=v?i:i[n]||(i[n]={}),b=_.prototype||(_.prototype={});for(s in v&&(e=n),e)l=((f=!p&&m&&void 0!==m[s])?m:e)[s],h=y&&f?c(l,r):g&&"function"==typeof l?c(Function.call,l):l,m&&u(m,s,l,t&a.U),_[s]!=l&&o(_,s,h),g&&b[s]!=l&&(b[s]=l)};r.core=i,a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,t.exports=a},function(t,n,e){var r=e(4);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,n){var e=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,n,e){var r=e(51)("wks"),i=e(34),o=e(2).Symbol,u="function"==typeof o;(t.exports=function(t){return r[t]||(r[t]=u&&o[t]||(u?o:i)("Symbol."+t))}).store=r},function(t,n,e){t.exports=!e(3)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,n,e){var r=e(1),i=e(94),o=e(23),u=Object.defineProperty;n.f=e(6)?Object.defineProperty:function(t,n,e){if(r(t),n=o(n,!0),r(e),i)try{return u(t,n,e)}catch(t){}if("get"in e||"set"in e)throw TypeError("Accessors not supported!");return"value"in e&&(t[n]=e.value),t}},function(t,n,e){var r=e(25),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,n,e){var r=e(24);t.exports=function(t){return Object(r(t))}},function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,n,e){var r=e(7),i=e(33);t.exports=e(6)?function(t,n,e){return r.f(t,n,i(1,e))}:function(t,n,e){return t[n]=e,t}},function(t,n,e){var r=e(2),i=e(11),o=e(14),u=e(34)("src"),c=Function.toString,a=(""+c).split("toString");e(19).inspectSource=function(t){return c.call(t)},(t.exports=function(t,n,e,c){var s="function"==typeof e;s&&(o(e,"name")||i(e,"name",n)),t[n]!==e&&(s&&(o(e,u)||i(e,u,t[n]?""+t[n]:a.join(String(n)))),t===r?t[n]=e:c?t[n]?t[n]=e:i(t,n,e):(delete t[n],i(t,n,e)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[u]||c.call(this)})},function(t,n,e){var r=e(0),i=e(3),o=e(24),u=/"/g,c=function(t,n,e,r){var i=String(o(t)),c="<"+n;return""!==e&&(c+=" "+e+'="'+String(r).replace(u,""")+'"'),c+">"+i+""};t.exports=function(t,n){var e={};e[t]=n(c),r(r.P+r.F*i(function(){var n=""[t]('"');return n!==n.toLowerCase()||n.split('"').length>3}),"String",e)}},function(t,n){var e={}.hasOwnProperty;t.exports=function(t,n){return e.call(t,n)}},function(t,n,e){var r=e(47),i=e(24);t.exports=function(t){return r(i(t))}},function(t,n,e){var r=e(48),i=e(33),o=e(15),u=e(23),c=e(14),a=e(94),s=Object.getOwnPropertyDescriptor;n.f=e(6)?s:function(t,n){if(t=o(t),n=u(n,!0),a)try{return s(t,n)}catch(t){}if(c(t,n))return i(!r.f.call(t,n),t[n])}},function(t,n,e){var r=e(14),i=e(9),o=e(68)("IE_PROTO"),u=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),r(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},function(t,n,e){"use strict";var r=e(129),i=e(343),o=Object.prototype.toString;function u(t){return"[object Array]"===o.call(t)}function c(t){return null!==t&&"object"==typeof t}function a(t){return"[object Function]"===o.call(t)}function s(t,n){if(null!==t&&void 0!==t)if("object"!=typeof t&&(t=[t]),u(t))for(var e=0,r=t.length;e0?r:e)(t)}},function(t,n,e){var r=e(0),i=e(19),o=e(3);t.exports=function(t,n){var e=(i.Object||{})[t]||Object[t],u={};u[t]=n(e),r(r.S+r.F*o(function(){e(1)}),"Object",u)}},function(t,n,e){var r=e(20),i=e(47),o=e(9),u=e(8),c=e(85);t.exports=function(t,n){var e=1==t,a=2==t,s=3==t,f=4==t,l=6==t,h=5==t||l,p=n||c;return function(n,c,v){for(var d,g,y=o(n),m=i(y),_=r(c,v,3),b=u(m.length),w=0,x=e?p(n,b):a?p(n,0):void 0;b>w;w++)if((h||w in m)&&(g=_(d=m[w],w,y),t))if(e)x[w]=g;else if(g)switch(t){case 3:return!0;case 5:return d;case 6:return w;case 2:x.push(d)}else if(f)return!1;return l?-1:s||f?f:x}}},function(t,n,e){"use strict";if(e(6)){var r=e(31),i=e(2),o=e(3),u=e(0),c=e(62),a=e(91),s=e(20),f=e(40),l=e(33),h=e(11),p=e(42),v=e(25),d=e(8),g=e(120),y=e(36),m=e(23),_=e(14),b=e(49),w=e(4),x=e(9),S=e(82),E=e(37),k=e(17),M=e(38).f,O=e(84),P=e(34),F=e(5),I=e(27),j=e(52),A=e(59),L=e(87),R=e(45),T=e(56),N=e(39),C=e(86),D=e(110),B=e(7),U=e(16),q=B.f,W=U.f,G=i.RangeError,V=i.TypeError,z=i.Uint8Array,H=Array.prototype,J=a.ArrayBuffer,K=a.DataView,Y=I(0),X=I(2),$=I(3),Z=I(4),Q=I(5),tt=I(6),nt=j(!0),et=j(!1),rt=L.values,it=L.keys,ot=L.entries,ut=H.lastIndexOf,ct=H.reduce,at=H.reduceRight,st=H.join,ft=H.sort,lt=H.slice,ht=H.toString,pt=H.toLocaleString,vt=F("iterator"),dt=F("toStringTag"),gt=P("typed_constructor"),yt=P("def_constructor"),mt=c.CONSTR,_t=c.TYPED,bt=c.VIEW,wt=I(1,function(t,n){return Mt(A(t,t[yt]),n)}),xt=o(function(){return 1===new z(new Uint16Array([1]).buffer)[0]}),St=!!z&&!!z.prototype.set&&o(function(){new z(1).set({})}),Et=function(t,n){var e=v(t);if(e<0||e%n)throw G("Wrong offset!");return e},kt=function(t){if(w(t)&&_t in t)return t;throw V(t+" is not a typed array!")},Mt=function(t,n){if(!(w(t)&> in t))throw V("It is not a typed array constructor!");return new t(n)},Ot=function(t,n){return Pt(A(t,t[yt]),n)},Pt=function(t,n){for(var e=0,r=n.length,i=Mt(t,r);r>e;)i[e]=n[e++];return i},Ft=function(t,n,e){q(t,n,{get:function(){return this._d[e]}})},It=function(t){var n,e,r,i,o,u,c=x(t),a=arguments.length,f=a>1?arguments[1]:void 0,l=void 0!==f,h=O(c);if(void 0!=h&&!S(h)){for(u=h.call(c),r=[],n=0;!(o=u.next()).done;n++)r.push(o.value);c=r}for(l&&a>2&&(f=s(f,arguments[2],2)),n=0,e=d(c.length),i=Mt(this,e);e>n;n++)i[n]=l?f(c[n],n):c[n];return i},jt=function(){for(var t=0,n=arguments.length,e=Mt(this,n);n>t;)e[t]=arguments[t++];return e},At=!!z&&o(function(){pt.call(new z(1))}),Lt=function(){return pt.apply(At?lt.call(kt(this)):kt(this),arguments)},Rt={copyWithin:function(t,n){return D.call(kt(this),t,n,arguments.length>2?arguments[2]:void 0)},every:function(t){return Z(kt(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return C.apply(kt(this),arguments)},filter:function(t){return Ot(this,X(kt(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return Q(kt(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return tt(kt(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){Y(kt(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return et(kt(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return nt(kt(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return st.apply(kt(this),arguments)},lastIndexOf:function(t){return ut.apply(kt(this),arguments)},map:function(t){return wt(kt(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return ct.apply(kt(this),arguments)},reduceRight:function(t){return at.apply(kt(this),arguments)},reverse:function(){for(var t,n=kt(this).length,e=Math.floor(n/2),r=0;r1?arguments[1]:void 0)},sort:function(t){return ft.call(kt(this),t)},subarray:function(t,n){var e=kt(this),r=e.length,i=y(t,r);return new(A(e,e[yt]))(e.buffer,e.byteOffset+i*e.BYTES_PER_ELEMENT,d((void 0===n?r:y(n,r))-i))}},Tt=function(t,n){return Ot(this,lt.call(kt(this),t,n))},Nt=function(t){kt(this);var n=Et(arguments[1],1),e=this.length,r=x(t),i=d(r.length),o=0;if(i+n>e)throw G("Wrong length!");for(;o255?255:255&r),i.v[p](e*n+i.o,r,xt)}(this,e,t)},enumerable:!0})};_?(v=e(function(t,e,r,i){f(t,v,s,"_d");var o,u,c,a,l=0,p=0;if(w(e)){if(!(e instanceof J||"ArrayBuffer"==(a=b(e))||"SharedArrayBuffer"==a))return _t in e?Pt(v,e):It.call(v,e);o=e,p=Et(r,n);var y=e.byteLength;if(void 0===i){if(y%n)throw G("Wrong length!");if((u=y-p)<0)throw G("Wrong length!")}else if((u=d(i)*n)+p>y)throw G("Wrong length!");c=u/n}else c=g(e),o=new J(u=c*n);for(h(t,"_d",{b:o,o:p,l:u,e:c,v:new K(o)});ldocument.F=Object<\/script>"),t.close(),a=t.F;r--;)delete a.prototype[o[r]];return a()};t.exports=Object.create||function(t,n){var e;return null!==t?(c.prototype=r(t),e=new c,c.prototype=null,e[u]=t):e=a(),void 0===n?e:i(e,n)}},function(t,n,e){var r=e(96),i=e(69).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},function(t,n,e){"use strict";var r=e(2),i=e(7),o=e(6),u=e(5)("species");t.exports=function(t){var n=r[t];o&&n&&!n[u]&&i.f(n,u,{configurable:!0,get:function(){return this}})}},function(t,n){t.exports=function(t,n,e,r){if(!(t instanceof n)||void 0!==r&&r in t)throw TypeError(e+": incorrect invocation!");return t}},function(t,n,e){var r=e(20),i=e(108),o=e(82),u=e(1),c=e(8),a=e(84),s={},f={};(n=t.exports=function(t,n,e,l,h){var p,v,d,g,y=h?function(){return t}:a(t),m=r(e,l,n?2:1),_=0;if("function"!=typeof y)throw TypeError(t+" is not iterable!");if(o(y)){for(p=c(t.length);p>_;_++)if((g=n?m(u(v=t[_])[0],v[1]):m(t[_]))===s||g===f)return g}else for(d=y.call(t);!(v=d.next()).done;)if((g=i(d,m,v.value,n))===s||g===f)return g}).BREAK=s,n.RETURN=f},function(t,n,e){var r=e(12);t.exports=function(t,n,e){for(var i in n)r(t,i,n[i],e);return t}},function(t,n,e){var r=e(7).f,i=e(14),o=e(5)("toStringTag");t.exports=function(t,n,e){t&&!i(t=e?t:t.prototype,o)&&r(t,o,{configurable:!0,value:n})}},function(t,n,e){var r=e(0),i=e(24),o=e(3),u=e(72),c="["+u+"]",a=RegExp("^"+c+c+"*"),s=RegExp(c+c+"*$"),f=function(t,n,e){var i={},c=o(function(){return!!u[t]()||"​…"!="​…"[t]()}),a=i[t]=c?n(l):u[t];e&&(i[e]=a),r(r.P+r.F*c,"String",i)},l=f.trim=function(t,n){return t=String(i(t)),1&n&&(t=t.replace(a,"")),2&n&&(t=t.replace(s,"")),t};t.exports=f},function(t,n){t.exports={}},function(t,n,e){var r=e(4);t.exports=function(t,n){if(!r(t)||t._t!==n)throw TypeError("Incompatible receiver, "+n+" required!");return t}},function(t,n,e){var r=e(21);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,n){n.f={}.propertyIsEnumerable},function(t,n,e){var r=e(21),i=e(5)("toStringTag"),o="Arguments"==r(function(){return arguments}());t.exports=function(t){var n,e,u;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(e=function(t,n){try{return t[n]}catch(t){}}(n=Object(t),i))?e:o?r(n):"Object"==(u=r(n))&&"function"==typeof n.callee?"Arguments":u}},function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.elements={searchInput:document.querySelector(".search__field"),searchForm:document.querySelector(".search"),searchResList:document.querySelector(".results__list"),searchRes:document.querySelector(".results"),searchResPages:document.querySelector(".results__pages"),recipe:document.querySelector(".recipe"),shopping:document.querySelector(".shopping__list"),likesMenu:document.querySelector(".likes__field"),likesList:document.querySelector(".likes__list")};var r=n.elementStrings={loader:"loader"};n.renderLoader=function(t){var n='\n
    \n \n \n \n
    \n ';t.insertAdjacentHTML("afterbegin",n)},n.clearLoader=function(){var t=document.querySelector("."+r.loader);t&&t.parentElement.removeChild(t)}},function(t,n,e){var r=e(19),i=e(2),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(t.exports=function(t,n){return o[t]||(o[t]=void 0!==n?n:{})})("versions",[]).push({version:r.version,mode:e(31)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},function(t,n,e){var r=e(15),i=e(8),o=e(36);t.exports=function(t){return function(n,e,u){var c,a=r(n),s=i(a.length),f=o(u,s);if(t&&e!=e){for(;s>f;)if((c=a[f++])!=c)return!0}else for(;s>f;f++)if((t||f in a)&&a[f]===e)return t||f||0;return!t&&-1}}},function(t,n){n.f=Object.getOwnPropertySymbols},function(t,n,e){var r=e(21);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,n,e){var r=e(4),i=e(21),o=e(5)("match");t.exports=function(t){var n;return r(t)&&(void 0!==(n=t[o])?!!n:"RegExp"==i(t))}},function(t,n,e){var r=e(5)("iterator"),i=!1;try{var o=[7][r]();o.return=function(){i=!0},Array.from(o,function(){throw 2})}catch(t){}t.exports=function(t,n){if(!n&&!i)return!1;var e=!1;try{var o=[7],u=o[r]();u.next=function(){return{done:e=!0}},o[r]=function(){return u},t(o)}catch(t){}return e}},function(t,n,e){"use strict";var r=e(1);t.exports=function(){var t=r(this),n="";return t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.unicode&&(n+="u"),t.sticky&&(n+="y"),n}},function(t,n,e){"use strict";var r=e(11),i=e(12),o=e(3),u=e(24),c=e(5);t.exports=function(t,n,e){var a=c(t),s=e(u,a,""[t]),f=s[0],l=s[1];o(function(){var n={};return n[a]=function(){return 7},7!=""[t](n)})&&(i(String.prototype,t,f),r(RegExp.prototype,a,2==n?function(t,n){return l.call(t,this,n)}:function(t){return l.call(t,this)}))}},function(t,n,e){var r=e(1),i=e(10),o=e(5)("species");t.exports=function(t,n){var e,u=r(t).constructor;return void 0===u||void 0==(e=r(u)[o])?n:i(e)}},function(t,n,e){var r=e(2).navigator;t.exports=r&&r.userAgent||""},function(t,n,e){"use strict";var r=e(2),i=e(0),o=e(12),u=e(42),c=e(30),a=e(41),s=e(40),f=e(4),l=e(3),h=e(56),p=e(43),v=e(73);t.exports=function(t,n,e,d,g,y){var m=r[t],_=m,b=g?"set":"add",w=_&&_.prototype,x={},S=function(t){var n=w[t];o(w,t,"delete"==t?function(t){return!(y&&!f(t))&&n.call(this,0===t?0:t)}:"has"==t?function(t){return!(y&&!f(t))&&n.call(this,0===t?0:t)}:"get"==t?function(t){return y&&!f(t)?void 0:n.call(this,0===t?0:t)}:"add"==t?function(t){return n.call(this,0===t?0:t),this}:function(t,e){return n.call(this,0===t?0:t,e),this})};if("function"==typeof _&&(y||w.forEach&&!l(function(){(new _).entries().next()}))){var E=new _,k=E[b](y?{}:-0,1)!=E,M=l(function(){E.has(1)}),O=h(function(t){new _(t)}),P=!y&&l(function(){for(var t=new _,n=5;n--;)t[b](n,n);return!t.has(-0)});O||((_=n(function(n,e){s(n,_,t);var r=v(new m,n,_);return void 0!=e&&a(e,g,r[b],r),r})).prototype=w,w.constructor=_),(M||P)&&(S("delete"),S("has"),g&&S("get")),(P||k)&&S(b),y&&w.clear&&delete w.clear}else _=d.getConstructor(n,t,g,b),u(_.prototype,e),c.NEED=!0;return p(_,t),x[t]=_,i(i.G+i.W+i.F*(_!=m),x),y||d.setStrong(_,t,g),_}},function(t,n,e){for(var r,i=e(2),o=e(11),u=e(34),c=u("typed_array"),a=u("view"),s=!(!i.ArrayBuffer||!i.DataView),f=s,l=0,h="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l<9;)(r=i[h[l++]])?(o(r.prototype,c,!0),o(r.prototype,a,!0)):f=!1;t.exports={ABV:s,CONSTR:f,TYPED:c,VIEW:a}},function(t,n,e){"use strict";t.exports=e(31)||!e(3)(function(){var t=Math.random();__defineSetter__.call(null,t,function(){}),delete e(2)[t]})},function(t,n,e){"use strict";var r=e(0);t.exports=function(t){r(r.S,t,{of:function(){for(var t=arguments.length,n=new Array(t);t--;)n[t]=arguments[t];return new this(n)}})}},function(t,n,e){"use strict";var r=e(0),i=e(10),o=e(20),u=e(41);t.exports=function(t){r(r.S,t,{from:function(t){var n,e,r,c,a=arguments[1];return i(this),(n=void 0!==a)&&i(a),void 0==t?new this:(e=[],n?(r=0,c=o(a,arguments[2],2),u(t,!1,function(t){e.push(c(t,r++))})):u(t,!1,e.push,e),new this(e))}})}},function(t,n,e){var r=e(4),i=e(2).document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,n,e){var r=e(2),i=e(19),o=e(31),u=e(95),c=e(7).f;t.exports=function(t){var n=i.Symbol||(i.Symbol=o?{}:r.Symbol||{});"_"==t.charAt(0)||t in n||c(n,t,{value:u.f(t)})}},function(t,n,e){var r=e(51)("keys"),i=e(34);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,n){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,n,e){var r=e(2).document;t.exports=r&&r.documentElement},function(t,n,e){var r=e(4),i=e(1),o=function(t,n){if(i(t),!r(n)&&null!==n)throw TypeError(n+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,n,r){try{(r=e(20)(Function.call,e(16).f(Object.prototype,"__proto__").set,2))(t,[]),n=!(t instanceof Array)}catch(t){n=!0}return function(t,e){return o(t,e),n?t.__proto__=e:r(t,e),t}}({},!1):void 0),check:o}},function(t,n){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},function(t,n,e){var r=e(4),i=e(71).set;t.exports=function(t,n,e){var o,u=n.constructor;return u!==e&&"function"==typeof u&&(o=u.prototype)!==e.prototype&&r(o)&&i&&i(t,o),t}},function(t,n,e){"use strict";var r=e(25),i=e(24);t.exports=function(t){var n=String(i(this)),e="",o=r(t);if(o<0||o==1/0)throw RangeError("Count can't be negative");for(;o>0;(o>>>=1)&&(n+=n))1&o&&(e+=n);return e}},function(t,n){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,n){var e=Math.expm1;t.exports=!e||e(10)>22025.465794806718||e(10)<22025.465794806718||-2e-17!=e(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:e},function(t,n,e){var r=e(25),i=e(24);t.exports=function(t){return function(n,e){var o,u,c=String(i(n)),a=r(e),s=c.length;return a<0||a>=s?t?"":void 0:(o=c.charCodeAt(a))<55296||o>56319||a+1===s||(u=c.charCodeAt(a+1))<56320||u>57343?t?c.charAt(a):o:t?c.slice(a,a+2):u-56320+(o-55296<<10)+65536}}},function(t,n,e){"use strict";var r=e(31),i=e(0),o=e(12),u=e(11),c=e(45),a=e(79),s=e(43),f=e(17),l=e(5)("iterator"),h=!([].keys&&"next"in[].keys()),p=function(){return this};t.exports=function(t,n,e,v,d,g,y){a(e,n,v);var m,_,b,w=function(t){if(!h&&t in k)return k[t];switch(t){case"keys":case"values":return function(){return new e(this,t)}}return function(){return new e(this,t)}},x=n+" Iterator",S="values"==d,E=!1,k=t.prototype,M=k[l]||k["@@iterator"]||d&&k[d],O=M||w(d),P=d?S?w("entries"):O:void 0,F="Array"==n&&k.entries||M;if(F&&(b=f(F.call(new t)))!==Object.prototype&&b.next&&(s(b,x,!0),r||"function"==typeof b[l]||u(b,l,p)),S&&M&&"values"!==M.name&&(E=!0,O=function(){return M.call(this)}),r&&!y||!h&&!E&&k[l]||u(k,l,O),c[n]=O,c[x]=p,d)if(m={values:S?O:w("values"),keys:g?O:w("keys"),entries:P},y)for(_ in m)_ in k||o(k,_,m[_]);else i(i.P+i.F*(h||E),n,m);return m}},function(t,n,e){"use strict";var r=e(37),i=e(33),o=e(43),u={};e(11)(u,e(5)("iterator"),function(){return this}),t.exports=function(t,n,e){t.prototype=r(u,{next:i(1,e)}),o(t,n+" Iterator")}},function(t,n,e){var r=e(55),i=e(24);t.exports=function(t,n,e){if(r(n))throw TypeError("String#"+e+" doesn't accept regex!");return String(i(t))}},function(t,n,e){var r=e(5)("match");t.exports=function(t){var n=/./;try{"/./"[t](n)}catch(e){try{return n[r]=!1,!"/./"[t](n)}catch(t){}}return!0}},function(t,n,e){var r=e(45),i=e(5)("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||o[i]===t)}},function(t,n,e){"use strict";var r=e(7),i=e(33);t.exports=function(t,n,e){n in t?r.f(t,n,i(0,e)):t[n]=e}},function(t,n,e){var r=e(49),i=e(5)("iterator"),o=e(45);t.exports=e(19).getIteratorMethod=function(t){if(void 0!=t)return t[i]||t["@@iterator"]||o[r(t)]}},function(t,n,e){var r=e(230);t.exports=function(t,n){return new(r(t))(n)}},function(t,n,e){"use strict";var r=e(9),i=e(36),o=e(8);t.exports=function(t){for(var n=r(this),e=o(n.length),u=arguments.length,c=i(u>1?arguments[1]:void 0,e),a=u>2?arguments[2]:void 0,s=void 0===a?e:i(a,e);s>c;)n[c++]=t;return n}},function(t,n,e){"use strict";var r=e(32),i=e(111),o=e(45),u=e(15);t.exports=e(78)(Array,"Array",function(t,n){this._t=u(t),this._i=0,this._k=n},function(){var t=this._t,n=this._k,e=this._i++;return!t||e>=t.length?(this._t=void 0,i(1)):i(0,"keys"==n?e:"values"==n?t[e]:[e,t[e]])},"values"),o.Arguments=o.Array,r("keys"),r("values"),r("entries")},function(t,n,e){var r,i,o,u=e(20),c=e(101),a=e(70),s=e(66),f=e(2),l=f.process,h=f.setImmediate,p=f.clearImmediate,v=f.MessageChannel,d=f.Dispatch,g=0,y={},m=function(){var t=+this;if(y.hasOwnProperty(t)){var n=y[t];delete y[t],n()}},_=function(t){m.call(t.data)};h&&p||(h=function(t){for(var n=[],e=1;arguments.length>e;)n.push(arguments[e++]);return y[++g]=function(){c("function"==typeof t?t:Function(t),n)},r(g),g},p=function(t){delete y[t]},"process"==e(21)(l)?r=function(t){l.nextTick(u(m,t,1))}:d&&d.now?r=function(t){d.now(u(m,t,1))}:v?(o=(i=new v).port2,i.port1.onmessage=_,r=u(o.postMessage,o,1)):f.addEventListener&&"function"==typeof postMessage&&!f.importScripts?(r=function(t){f.postMessage(t+"","*")},f.addEventListener("message",_,!1)):r="onreadystatechange"in s("script")?function(t){a.appendChild(s("script")).onreadystatechange=function(){a.removeChild(this),m.call(t)}}:function(t){setTimeout(u(m,t,1),0)}),t.exports={set:h,clear:p}},function(t,n,e){var r=e(2),i=e(88).set,o=r.MutationObserver||r.WebKitMutationObserver,u=r.process,c=r.Promise,a="process"==e(21)(u);t.exports=function(){var t,n,e,s=function(){var r,i;for(a&&(r=u.domain)&&r.exit();t;){i=t.fn,t=t.next;try{i()}catch(r){throw t?e():n=void 0,r}}n=void 0,r&&r.enter()};if(a)e=function(){u.nextTick(s)};else if(!o||r.navigator&&r.navigator.standalone)if(c&&c.resolve){var f=c.resolve(void 0);e=function(){f.then(s)}}else e=function(){i.call(r,s)};else{var l=!0,h=document.createTextNode("");new o(s).observe(h,{characterData:!0}),e=function(){h.data=l=!l}}return function(r){var i={fn:r,next:void 0};n&&(n.next=i),t||(t=i,e()),n=i}}},function(t,n,e){"use strict";var r=e(10);t.exports.f=function(t){return new function(t){var n,e;this.promise=new t(function(t,r){if(void 0!==n||void 0!==e)throw TypeError("Bad Promise constructor");n=t,e=r}),this.resolve=r(n),this.reject=r(e)}(t)}},function(t,n,e){"use strict";var r=e(2),i=e(6),o=e(31),u=e(62),c=e(11),a=e(42),s=e(3),f=e(40),l=e(25),h=e(8),p=e(120),v=e(38).f,d=e(7).f,g=e(86),y=e(43),m="prototype",_="Wrong index!",b=r.ArrayBuffer,w=r.DataView,x=r.Math,S=r.RangeError,E=r.Infinity,k=b,M=x.abs,O=x.pow,P=x.floor,F=x.log,I=x.LN2,j=i?"_b":"buffer",A=i?"_l":"byteLength",L=i?"_o":"byteOffset";function R(t,n,e){var r,i,o,u=new Array(e),c=8*e-n-1,a=(1<>1,f=23===n?O(2,-24)-O(2,-77):0,l=0,h=t<0||0===t&&1/t<0?1:0;for((t=M(t))!=t||t===E?(i=t!=t?1:0,r=a):(r=P(F(t)/I),t*(o=O(2,-r))<1&&(r--,o*=2),(t+=r+s>=1?f/o:f*O(2,1-s))*o>=2&&(r++,o/=2),r+s>=a?(i=0,r=a):r+s>=1?(i=(t*o-1)*O(2,n),r+=s):(i=t*O(2,s-1)*O(2,n),r=0));n>=8;u[l++]=255&i,i/=256,n-=8);for(r=r<0;u[l++]=255&r,r/=256,c-=8);return u[--l]|=128*h,u}function T(t,n,e){var r,i=8*e-n-1,o=(1<>1,c=i-7,a=e-1,s=t[a--],f=127&s;for(s>>=7;c>0;f=256*f+t[a],a--,c-=8);for(r=f&(1<<-c)-1,f>>=-c,c+=n;c>0;r=256*r+t[a],a--,c-=8);if(0===f)f=1-u;else{if(f===o)return r?NaN:s?-E:E;r+=O(2,n),f-=u}return(s?-1:1)*r*O(2,f-n)}function N(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]}function C(t){return[255&t]}function D(t){return[255&t,t>>8&255]}function B(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]}function U(t){return R(t,52,8)}function q(t){return R(t,23,4)}function W(t,n,e){d(t[m],n,{get:function(){return this[e]}})}function G(t,n,e,r){var i=p(+e);if(i+n>t[A])throw S(_);var o=t[j]._b,u=i+t[L],c=o.slice(u,u+n);return r?c:c.reverse()}function V(t,n,e,r,i,o){var u=p(+e);if(u+n>t[A])throw S(_);for(var c=t[j]._b,a=u+t[L],s=r(+i),f=0;fK;)(z=J[K++])in b||c(b,z,k[z]);o||(H.constructor=b)}var Y=new w(new b(2)),X=w[m].setInt8;Y.setInt8(0,2147483648),Y.setInt8(1,2147483649),!Y.getInt8(0)&&Y.getInt8(1)||a(w[m],{setInt8:function(t,n){X.call(this,t,n<<24>>24)},setUint8:function(t,n){X.call(this,t,n<<24>>24)}},!0)}else b=function(t){f(this,b,"ArrayBuffer");var n=p(t);this._b=g.call(new Array(n),0),this[A]=n},w=function(t,n,e){f(this,w,"DataView"),f(t,b,"DataView");var r=t[A],i=l(n);if(i<0||i>r)throw S("Wrong offset!");if(i+(e=void 0===e?r-i:h(e))>r)throw S("Wrong length!");this[j]=t,this[L]=i,this[A]=e},i&&(W(b,"byteLength","_l"),W(w,"buffer","_b"),W(w,"byteLength","_l"),W(w,"byteOffset","_o")),a(w[m],{getInt8:function(t){return G(this,1,t)[0]<<24>>24},getUint8:function(t){return G(this,1,t)[0]},getInt16:function(t){var n=G(this,2,t,arguments[1]);return(n[1]<<8|n[0])<<16>>16},getUint16:function(t){var n=G(this,2,t,arguments[1]);return n[1]<<8|n[0]},getInt32:function(t){return N(G(this,4,t,arguments[1]))},getUint32:function(t){return N(G(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return T(G(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return T(G(this,8,t,arguments[1]),52,8)},setInt8:function(t,n){V(this,1,t,C,n)},setUint8:function(t,n){V(this,1,t,C,n)},setInt16:function(t,n){V(this,2,t,D,n,arguments[2])},setUint16:function(t,n){V(this,2,t,D,n,arguments[2])},setInt32:function(t,n){V(this,4,t,B,n,arguments[2])},setUint32:function(t,n){V(this,4,t,B,n,arguments[2])},setFloat32:function(t,n){V(this,4,t,q,n,arguments[2])},setFloat64:function(t,n){V(this,8,t,U,n,arguments[2])}});y(b,"ArrayBuffer"),y(w,"DataView"),c(w[m],u.VIEW,!0),n.ArrayBuffer=b,n.DataView=w},function(t,n,e){"use strict";(function(n){var r=e(18),i=e(345),o={"Content-Type":"application/x-www-form-urlencoded"};function u(t,n){!r.isUndefined(t)&&r.isUndefined(t["Content-Type"])&&(t["Content-Type"]=n)}var c={adapter:function(){var t;return"undefined"!=typeof XMLHttpRequest?t=e(131):void 0!==n&&(t=e(131)),t}(),transformRequest:[function(t,n){return i(n,"Content-Type"),r.isFormData(t)||r.isArrayBuffer(t)||r.isBuffer(t)||r.isStream(t)||r.isFile(t)||r.isBlob(t)?t:r.isArrayBufferView(t)?t.buffer:r.isURLSearchParams(t)?(u(n,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):r.isObject(t)?(u(n,"application/json;charset=utf-8"),JSON.stringify(t)):t}],transformResponse:[function(t){if("string"==typeof t)try{t=JSON.parse(t)}catch(t){}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],function(t){c.headers[t]={}}),r.forEach(["post","put","patch"],function(t){c.headers[t]=r.merge(o)}),t.exports=c}).call(this,e(130))},function(t,n){var e;e=function(){return this}();try{e=e||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(e=window)}t.exports=e},function(t,n,e){t.exports=!e(6)&&!e(3)(function(){return 7!=Object.defineProperty(e(66)("div"),"a",{get:function(){return 7}}).a})},function(t,n,e){n.f=e(5)},function(t,n,e){var r=e(14),i=e(15),o=e(52)(!1),u=e(68)("IE_PROTO");t.exports=function(t,n){var e,c=i(t),a=0,s=[];for(e in c)e!=u&&r(c,e)&&s.push(e);for(;n.length>a;)r(c,e=n[a++])&&(~o(s,e)||s.push(e));return s}},function(t,n,e){var r=e(7),i=e(1),o=e(35);t.exports=e(6)?Object.defineProperties:function(t,n){i(t);for(var e,u=o(n),c=u.length,a=0;c>a;)r.f(t,e=u[a++],n[e]);return t}},function(t,n,e){var r=e(15),i=e(38).f,o={}.toString,u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return u&&"[object Window]"==o.call(t)?function(t){try{return i(t)}catch(t){return u.slice()}}(t):i(r(t))}},function(t,n,e){"use strict";var r=e(35),i=e(53),o=e(48),u=e(9),c=e(47),a=Object.assign;t.exports=!a||e(3)(function(){var t={},n={},e=Symbol(),r="abcdefghijklmnopqrst";return t[e]=7,r.split("").forEach(function(t){n[t]=t}),7!=a({},t)[e]||Object.keys(a({},n)).join("")!=r})?function(t,n){for(var e=u(t),a=arguments.length,s=1,f=i.f,l=o.f;a>s;)for(var h,p=c(arguments[s++]),v=f?r(p).concat(f(p)):r(p),d=v.length,g=0;d>g;)l.call(p,h=v[g++])&&(e[h]=p[h]);return e}:a},function(t,n,e){"use strict";var r=e(10),i=e(4),o=e(101),u=[].slice,c={};t.exports=Function.bind||function(t){var n=r(this),e=u.call(arguments,1),a=function(){var r=e.concat(u.call(arguments));return this instanceof a?function(t,n,e){if(!(n in c)){for(var r=[],i=0;i>>0||(u.test(e)?16:10))}:r},function(t,n,e){var r=e(2).parseFloat,i=e(44).trim;t.exports=1/r(e(72)+"-0")!=-1/0?function(t){var n=i(String(t),3),e=r(n);return 0===e&&"-"==n.charAt(0)?-0:e}:r},function(t,n,e){var r=e(21);t.exports=function(t,n){if("number"!=typeof t&&"Number"!=r(t))throw TypeError(n);return+t}},function(t,n,e){var r=e(4),i=Math.floor;t.exports=function(t){return!r(t)&&isFinite(t)&&i(t)===t}},function(t,n){t.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},function(t,n,e){var r=e(75),i=Math.pow,o=i(2,-52),u=i(2,-23),c=i(2,127)*(2-u),a=i(2,-126);t.exports=Math.fround||function(t){var n,e,i=Math.abs(t),s=r(t);return ic||e!=e?s*(1/0):s*e}},function(t,n,e){var r=e(1);t.exports=function(t,n,e,i){try{return i?n(r(e)[0],e[1]):n(e)}catch(n){var o=t.return;throw void 0!==o&&r(o.call(t)),n}}},function(t,n,e){var r=e(10),i=e(9),o=e(47),u=e(8);t.exports=function(t,n,e,c,a){r(n);var s=i(t),f=o(s),l=u(s.length),h=a?l-1:0,p=a?-1:1;if(e<2)for(;;){if(h in f){c=f[h],h+=p;break}if(h+=p,a?h<0:l<=h)throw TypeError("Reduce of empty array with no initial value")}for(;a?h>=0:l>h;h+=p)h in f&&(c=n(c,f[h],h,s));return c}},function(t,n,e){"use strict";var r=e(9),i=e(36),o=e(8);t.exports=[].copyWithin||function(t,n){var e=r(this),u=o(e.length),c=i(t,u),a=i(n,u),s=arguments.length>2?arguments[2]:void 0,f=Math.min((void 0===s?u:i(s,u))-a,u-c),l=1;for(a0;)a in e?e[c]=e[a]:delete e[c],c+=l,a+=l;return e}},function(t,n){t.exports=function(t,n){return{value:n,done:!!t}}},function(t,n,e){e(6)&&"g"!=/./g.flags&&e(7).f(RegExp.prototype,"flags",{configurable:!0,get:e(57)})},function(t,n){t.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},function(t,n,e){var r=e(1),i=e(4),o=e(90);t.exports=function(t,n){if(r(t),i(n)&&n.constructor===t)return n;var e=o.f(t);return(0,e.resolve)(n),e.promise}},function(t,n,e){"use strict";var r=e(116),i=e(46);t.exports=e(61)("Map",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var n=r.getEntry(i(this,"Map"),t);return n&&n.v},set:function(t,n){return r.def(i(this,"Map"),0===t?0:t,n)}},r,!0)},function(t,n,e){"use strict";var r=e(7).f,i=e(37),o=e(42),u=e(20),c=e(40),a=e(41),s=e(78),f=e(111),l=e(39),h=e(6),p=e(30).fastKey,v=e(46),d=h?"_s":"size",g=function(t,n){var e,r=p(n);if("F"!==r)return t._i[r];for(e=t._f;e;e=e.n)if(e.k==n)return e};t.exports={getConstructor:function(t,n,e,s){var f=t(function(t,r){c(t,f,n,"_i"),t._t=n,t._i=i(null),t._f=void 0,t._l=void 0,t[d]=0,void 0!=r&&a(r,e,t[s],t)});return o(f.prototype,{clear:function(){for(var t=v(this,n),e=t._i,r=t._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete e[r.i];t._f=t._l=void 0,t[d]=0},delete:function(t){var e=v(this,n),r=g(e,t);if(r){var i=r.n,o=r.p;delete e._i[r.i],r.r=!0,o&&(o.n=i),i&&(i.p=o),e._f==r&&(e._f=i),e._l==r&&(e._l=o),e[d]--}return!!r},forEach:function(t){v(this,n);for(var e,r=u(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(r(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!g(v(this,n),t)}}),h&&r(f.prototype,"size",{get:function(){return v(this,n)[d]}}),f},def:function(t,n,e){var r,i,o=g(t,n);return o?o.v=e:(t._l=o={i:i=p(n,!0),k:n,v:e,p:r=t._l,n:void 0,r:!1},t._f||(t._f=o),r&&(r.n=o),t[d]++,"F"!==i&&(t._i[i]=o)),t},getEntry:g,setStrong:function(t,n,e){s(t,n,function(t,e){this._t=v(t,n),this._k=e,this._l=void 0},function(){for(var t=this._k,n=this._l;n&&n.r;)n=n.p;return this._t&&(this._l=n=n?n.n:this._t._f)?f(0,"keys"==t?n.k:"values"==t?n.v:[n.k,n.v]):(this._t=void 0,f(1))},e?"entries":"values",!e,!0),l(n)}}},function(t,n,e){"use strict";var r=e(116),i=e(46);t.exports=e(61)("Set",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return r.def(i(this,"Set"),t=0===t?0:t,t)}},r)},function(t,n,e){"use strict";var r,i=e(27)(0),o=e(12),u=e(30),c=e(99),a=e(119),s=e(4),f=e(3),l=e(46),h=u.getWeak,p=Object.isExtensible,v=a.ufstore,d={},g=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},y={get:function(t){if(s(t)){var n=h(t);return!0===n?v(l(this,"WeakMap")).get(t):n?n[this._i]:void 0}},set:function(t,n){return a.def(l(this,"WeakMap"),t,n)}},m=t.exports=e(61)("WeakMap",g,y,a,!0,!0);f(function(){return 7!=(new m).set((Object.freeze||Object)(d),7).get(d)})&&(c((r=a.getConstructor(g,"WeakMap")).prototype,y),u.NEED=!0,i(["delete","has","get","set"],function(t){var n=m.prototype,e=n[t];o(n,t,function(n,i){if(s(n)&&!p(n)){this._f||(this._f=new r);var o=this._f[t](n,i);return"set"==t?this:o}return e.call(this,n,i)})}))},function(t,n,e){"use strict";var r=e(42),i=e(30).getWeak,o=e(1),u=e(4),c=e(40),a=e(41),s=e(27),f=e(14),l=e(46),h=s(5),p=s(6),v=0,d=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},y=function(t,n){return h(t.a,function(t){return t[0]===n})};g.prototype={get:function(t){var n=y(this,t);if(n)return n[1]},has:function(t){return!!y(this,t)},set:function(t,n){var e=y(this,t);e?e[1]=n:this.a.push([t,n])},delete:function(t){var n=p(this.a,function(n){return n[0]===t});return~n&&this.a.splice(n,1),!!~n}},t.exports={getConstructor:function(t,n,e,o){var s=t(function(t,r){c(t,s,n,"_i"),t._t=n,t._i=v++,t._l=void 0,void 0!=r&&a(r,e,t[o],t)});return r(s.prototype,{delete:function(t){if(!u(t))return!1;var e=i(t);return!0===e?d(l(this,n)).delete(t):e&&f(e,this._i)&&delete e[this._i]},has:function(t){if(!u(t))return!1;var e=i(t);return!0===e?d(l(this,n)).has(t):e&&f(e,this._i)}}),s},def:function(t,n,e){var r=i(o(n),!0);return!0===r?d(t).set(n,e):r[t._i]=e,t},ufstore:d}},function(t,n,e){var r=e(25),i=e(8);t.exports=function(t){if(void 0===t)return 0;var n=r(t),e=i(n);if(n!==e)throw RangeError("Wrong length!");return e}},function(t,n,e){var r=e(38),i=e(53),o=e(1),u=e(2).Reflect;t.exports=u&&u.ownKeys||function(t){var n=r.f(o(t)),e=i.f;return e?n.concat(e(t)):n}},function(t,n,e){"use strict";var r=e(54),i=e(4),o=e(8),u=e(20),c=e(5)("isConcatSpreadable");t.exports=function t(n,e,a,s,f,l,h,p){for(var v,d,g=f,y=0,m=!!h&&u(h,p,3);y0)g=t(n,e,v,o(v.length),g,l-1)-1;else{if(g>=9007199254740991)throw TypeError();n[g]=v}g++}y++}return g}},function(t,n,e){var r=e(8),i=e(74),o=e(24);t.exports=function(t,n,e,u){var c=String(o(t)),a=c.length,s=void 0===e?" ":String(e),f=r(n);if(f<=a||""==s)return c;var l=f-a,h=i.call(s,Math.ceil(l/s.length));return h.length>l&&(h=h.slice(0,l)),u?h+c:c+h}},function(t,n,e){var r=e(35),i=e(15),o=e(48).f;t.exports=function(t){return function(n){for(var e,u=i(n),c=r(u),a=c.length,s=0,f=[];a>s;)o.call(u,e=c[s++])&&f.push(t?[e,u[e]]:u[e]);return f}}},function(t,n,e){var r=e(49),i=e(126);t.exports=function(t){return function(){if(r(this)!=t)throw TypeError(t+"#toJSON isn't generic");return i(this)}}},function(t,n,e){var r=e(41);t.exports=function(t,n){var e=[];return r(t,!1,e.push,e,n),e}},function(t,n){t.exports=Math.scale||function(t,n,e,r,i){return 0===arguments.length||t!=t||n!=n||e!=e||r!=r||i!=i?NaN:t===1/0||t===-1/0?t:(t-n)*(i-r)/(e-n)+r}},function(t,n,e){t.exports=e(342)},function(t,n,e){"use strict";t.exports=function(t,n){return function(){for(var e=new Array(arguments.length),r=0;r1)for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:17,e=[];return t.length>n?(t.split(" ").reduce(function(t,r){return t+r.length<=n&&e.push(r),t+r.length},0),e.join(" ")+" ..."):t}),o=function(t){var n='\n
  • \n \n
    \n Test\n
    \n
    \n

    '+i(t.title)+'

    \n

    '+t.publisher+"

    \n
    \n
    \n
  • \n ";r.elements.searchResList.insertAdjacentHTML("beforeend",n)},u=function(t,n){return'\n \n"};n.renderResults=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,i=(n-1)*e,c=n*e;t.slice(i,c).forEach(o),function(t,n,e){var i=Math.ceil(n/e),o=void 0;1===t&&i>1?o=u(t,"next"):t===i&&i>1?o=u(t,"prev"):ti;)J(t,e=r[i++],n[e]);return t},Y=function(t){var n=N.call(this,t=w(t,!0));return!(this===U&&i(D,t)&&!i(B,t))&&(!(n||!i(this,t)||!i(D,t)||i(this,R)&&this[R][t])||n)},X=function(t,n){if(t=b(t),n=w(n,!0),t!==U||!i(D,n)||i(B,n)){var e=P(t,n);return!e||!i(D,n)||i(t,R)&&t[R][n]||(e.enumerable=!0),e}},$=function(t){for(var n,e=I(b(t)),r=[],o=0;e.length>o;)i(D,n=e[o++])||n==R||n==a||r.push(n);return r},Z=function(t){for(var n,e=t===U,r=I(e?B:b(t)),o=[],u=0;r.length>u;)!i(D,n=r[u++])||e&&!i(U,n)||o.push(D[n]);return o};q||(c((j=function(){if(this instanceof j)throw TypeError("Symbol is not a constructor!");var t=h(arguments.length>0?arguments[0]:void 0),n=function(e){this===U&&n.call(B,e),i(this,R)&&i(this[R],t)&&(this[R][t]=!1),V(this,t,x(1,e))};return o&&G&&V(U,t,{configurable:!0,set:n}),z(t)}).prototype,"toString",function(){return this._k}),k.f=X,M.f=J,e(38).f=E.f=$,e(48).f=Y,e(53).f=Z,o&&!e(31)&&c(U,"propertyIsEnumerable",Y,!0),v.f=function(t){return z(p(t))}),u(u.G+u.W+u.F*!q,{Symbol:j});for(var Q="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),tt=0;Q.length>tt;)p(Q[tt++]);for(var nt=O(p.store),et=0;nt.length>et;)d(nt[et++]);u(u.S+u.F*!q,"Symbol",{for:function(t){return i(C,t+="")?C[t]:C[t]=j(t)},keyFor:function(t){if(!H(t))throw TypeError(t+" is not a symbol!");for(var n in C)if(C[n]===t)return n},useSetter:function(){G=!0},useSimple:function(){G=!1}}),u(u.S+u.F*!q,"Object",{create:function(t,n){return void 0===n?S(t):K(S(t),n)},defineProperty:J,defineProperties:K,getOwnPropertyDescriptor:X,getOwnPropertyNames:$,getOwnPropertySymbols:Z}),A&&u(u.S+u.F*(!q||s(function(){var t=j();return"[null]"!=L([t])||"{}"!=L({a:t})||"{}"!=L(Object(t))})),"JSON",{stringify:function(t){for(var n,e,r=[t],i=1;arguments.length>i;)r.push(arguments[i++]);if(e=n=r[1],(_(n)||void 0!==t)&&!H(t))return y(n)||(n=function(t,n){if("function"==typeof e&&(n=e.call(this,t,n)),!H(n))return n}),r[1]=n,L.apply(A,r)}}),j.prototype[T]||e(11)(j.prototype,T,j.prototype.valueOf),l(j,"Symbol"),l(Math,"Math",!0),l(r.JSON,"JSON",!0)},function(t,n,e){var r=e(35),i=e(53),o=e(48);t.exports=function(t){var n=r(t),e=i.f;if(e)for(var u,c=e(t),a=o.f,s=0;c.length>s;)a.call(t,u=c[s++])&&n.push(u);return n}},function(t,n,e){var r=e(0);r(r.S,"Object",{create:e(37)})},function(t,n,e){var r=e(0);r(r.S+r.F*!e(6),"Object",{defineProperty:e(7).f})},function(t,n,e){var r=e(0);r(r.S+r.F*!e(6),"Object",{defineProperties:e(97)})},function(t,n,e){var r=e(15),i=e(16).f;e(26)("getOwnPropertyDescriptor",function(){return function(t,n){return i(r(t),n)}})},function(t,n,e){var r=e(9),i=e(17);e(26)("getPrototypeOf",function(){return function(t){return i(r(t))}})},function(t,n,e){var r=e(9),i=e(35);e(26)("keys",function(){return function(t){return i(r(t))}})},function(t,n,e){e(26)("getOwnPropertyNames",function(){return e(98).f})},function(t,n,e){var r=e(4),i=e(30).onFreeze;e(26)("freeze",function(t){return function(n){return t&&r(n)?t(i(n)):n}})},function(t,n,e){var r=e(4),i=e(30).onFreeze;e(26)("seal",function(t){return function(n){return t&&r(n)?t(i(n)):n}})},function(t,n,e){var r=e(4),i=e(30).onFreeze;e(26)("preventExtensions",function(t){return function(n){return t&&r(n)?t(i(n)):n}})},function(t,n,e){var r=e(4);e(26)("isFrozen",function(t){return function(n){return!r(n)||!!t&&t(n)}})},function(t,n,e){var r=e(4);e(26)("isSealed",function(t){return function(n){return!r(n)||!!t&&t(n)}})},function(t,n,e){var r=e(4);e(26)("isExtensible",function(t){return function(n){return!!r(n)&&(!t||t(n))}})},function(t,n,e){var r=e(0);r(r.S+r.F,"Object",{assign:e(99)})},function(t,n,e){var r=e(0);r(r.S,"Object",{is:e(157)})},function(t,n){t.exports=Object.is||function(t,n){return t===n?0!==t||1/t==1/n:t!=t&&n!=n}},function(t,n,e){var r=e(0);r(r.S,"Object",{setPrototypeOf:e(71).set})},function(t,n,e){"use strict";var r=e(49),i={};i[e(5)("toStringTag")]="z",i+""!="[object z]"&&e(12)(Object.prototype,"toString",function(){return"[object "+r(this)+"]"},!0)},function(t,n,e){var r=e(0);r(r.P,"Function",{bind:e(100)})},function(t,n,e){var r=e(7).f,i=Function.prototype,o=/^\s*function ([^ (]*)/;"name"in i||e(6)&&r(i,"name",{configurable:!0,get:function(){try{return(""+this).match(o)[1]}catch(t){return""}}})},function(t,n,e){"use strict";var r=e(4),i=e(17),o=e(5)("hasInstance"),u=Function.prototype;o in u||e(7).f(u,o,{value:function(t){if("function"!=typeof this||!r(t))return!1;if(!r(this.prototype))return t instanceof this;for(;t=i(t);)if(this.prototype===t)return!0;return!1}})},function(t,n,e){var r=e(0),i=e(102);r(r.G+r.F*(parseInt!=i),{parseInt:i})},function(t,n,e){var r=e(0),i=e(103);r(r.G+r.F*(parseFloat!=i),{parseFloat:i})},function(t,n,e){"use strict";var r=e(2),i=e(14),o=e(21),u=e(73),c=e(23),a=e(3),s=e(38).f,f=e(16).f,l=e(7).f,h=e(44).trim,p=r.Number,v=p,d=p.prototype,g="Number"==o(e(37)(d)),y="trim"in String.prototype,m=function(t){var n=c(t,!1);if("string"==typeof n&&n.length>2){var e,r,i,o=(n=y?n.trim():h(n,3)).charCodeAt(0);if(43===o||45===o){if(88===(e=n.charCodeAt(2))||120===e)return NaN}else if(48===o){switch(n.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+n}for(var u,a=n.slice(2),s=0,f=a.length;si)return NaN;return parseInt(a,r)}}return+n};if(!p(" 0o1")||!p("0b1")||p("+0x1")){p=function(t){var n=arguments.length<1?0:t,e=this;return e instanceof p&&(g?a(function(){d.valueOf.call(e)}):"Number"!=o(e))?u(new v(m(n)),e,p):m(n)};for(var _,b=e(6)?s(v):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),w=0;b.length>w;w++)i(v,_=b[w])&&!i(p,_)&&l(p,_,f(v,_));p.prototype=d,d.constructor=p,e(12)(r,"Number",p)}},function(t,n,e){"use strict";var r=e(0),i=e(25),o=e(104),u=e(74),c=1..toFixed,a=Math.floor,s=[0,0,0,0,0,0],f="Number.toFixed: incorrect invocation!",l=function(t,n){for(var e=-1,r=n;++e<6;)r+=t*s[e],s[e]=r%1e7,r=a(r/1e7)},h=function(t){for(var n=6,e=0;--n>=0;)e+=s[n],s[n]=a(e/t),e=e%t*1e7},p=function(){for(var t=6,n="";--t>=0;)if(""!==n||0===t||0!==s[t]){var e=String(s[t]);n=""===n?e:n+u.call("0",7-e.length)+e}return n},v=function(t,n,e){return 0===n?e:n%2==1?v(t,n-1,e*t):v(t*t,n/2,e)};r(r.P+r.F*(!!c&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!e(3)(function(){c.call({})})),"Number",{toFixed:function(t){var n,e,r,c,a=o(this,f),s=i(t),d="",g="0";if(s<0||s>20)throw RangeError(f);if(a!=a)return"NaN";if(a<=-1e21||a>=1e21)return String(a);if(a<0&&(d="-",a=-a),a>1e-21)if(e=(n=function(t){for(var n=0,e=t;e>=4096;)n+=12,e/=4096;for(;e>=2;)n+=1,e/=2;return n}(a*v(2,69,1))-69)<0?a*v(2,-n,1):a/v(2,n,1),e*=4503599627370496,(n=52-n)>0){for(l(0,e),r=s;r>=7;)l(1e7,0),r-=7;for(l(v(10,r,1),0),r=n-1;r>=23;)h(1<<23),r-=23;h(1<0?d+((c=g.length)<=s?"0."+u.call("0",s-c)+g:g.slice(0,c-s)+"."+g.slice(c-s)):d+g}})},function(t,n,e){"use strict";var r=e(0),i=e(3),o=e(104),u=1..toPrecision;r(r.P+r.F*(i(function(){return"1"!==u.call(1,void 0)})||!i(function(){u.call({})})),"Number",{toPrecision:function(t){var n=o(this,"Number#toPrecision: incorrect invocation!");return void 0===t?u.call(n):u.call(n,t)}})},function(t,n,e){var r=e(0);r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},function(t,n,e){var r=e(0),i=e(2).isFinite;r(r.S,"Number",{isFinite:function(t){return"number"==typeof t&&i(t)}})},function(t,n,e){var r=e(0);r(r.S,"Number",{isInteger:e(105)})},function(t,n,e){var r=e(0);r(r.S,"Number",{isNaN:function(t){return t!=t}})},function(t,n,e){var r=e(0),i=e(105),o=Math.abs;r(r.S,"Number",{isSafeInteger:function(t){return i(t)&&o(t)<=9007199254740991}})},function(t,n,e){var r=e(0);r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(t,n,e){var r=e(0);r(r.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(t,n,e){var r=e(0),i=e(103);r(r.S+r.F*(Number.parseFloat!=i),"Number",{parseFloat:i})},function(t,n,e){var r=e(0),i=e(102);r(r.S+r.F*(Number.parseInt!=i),"Number",{parseInt:i})},function(t,n,e){var r=e(0),i=e(106),o=Math.sqrt,u=Math.acosh;r(r.S+r.F*!(u&&710==Math.floor(u(Number.MAX_VALUE))&&u(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:i(t-1+o(t-1)*o(t+1))}})},function(t,n,e){var r=e(0),i=Math.asinh;r(r.S+r.F*!(i&&1/i(0)>0),"Math",{asinh:function t(n){return isFinite(n=+n)&&0!=n?n<0?-t(-n):Math.log(n+Math.sqrt(n*n+1)):n}})},function(t,n,e){var r=e(0),i=Math.atanh;r(r.S+r.F*!(i&&1/i(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},function(t,n,e){var r=e(0),i=e(75);r(r.S,"Math",{cbrt:function(t){return i(t=+t)*Math.pow(Math.abs(t),1/3)}})},function(t,n,e){var r=e(0);r(r.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},function(t,n,e){var r=e(0),i=Math.exp;r(r.S,"Math",{cosh:function(t){return(i(t=+t)+i(-t))/2}})},function(t,n,e){var r=e(0),i=e(76);r(r.S+r.F*(i!=Math.expm1),"Math",{expm1:i})},function(t,n,e){var r=e(0);r(r.S,"Math",{fround:e(107)})},function(t,n,e){var r=e(0),i=Math.abs;r(r.S,"Math",{hypot:function(t,n){for(var e,r,o=0,u=0,c=arguments.length,a=0;u0?(r=e/a)*r:e;return a===1/0?1/0:a*Math.sqrt(o)}})},function(t,n,e){var r=e(0),i=Math.imul;r(r.S+r.F*e(3)(function(){return-5!=i(4294967295,5)||2!=i.length}),"Math",{imul:function(t,n){var e=+t,r=+n,i=65535&e,o=65535&r;return 0|i*o+((65535&e>>>16)*o+i*(65535&r>>>16)<<16>>>0)}})},function(t,n,e){var r=e(0);r(r.S,"Math",{log10:function(t){return Math.log(t)*Math.LOG10E}})},function(t,n,e){var r=e(0);r(r.S,"Math",{log1p:e(106)})},function(t,n,e){var r=e(0);r(r.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},function(t,n,e){var r=e(0);r(r.S,"Math",{sign:e(75)})},function(t,n,e){var r=e(0),i=e(76),o=Math.exp;r(r.S+r.F*e(3)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(i(t)-i(-t))/2:(o(t-1)-o(-t-1))*(Math.E/2)}})},function(t,n,e){var r=e(0),i=e(76),o=Math.exp;r(r.S,"Math",{tanh:function(t){var n=i(t=+t),e=i(-t);return n==1/0?1:e==1/0?-1:(n-e)/(o(t)+o(-t))}})},function(t,n,e){var r=e(0);r(r.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},function(t,n,e){var r=e(0),i=e(36),o=String.fromCharCode,u=String.fromCodePoint;r(r.S+r.F*(!!u&&1!=u.length),"String",{fromCodePoint:function(t){for(var n,e=[],r=arguments.length,u=0;r>u;){if(n=+arguments[u++],i(n,1114111)!==n)throw RangeError(n+" is not a valid code point");e.push(n<65536?o(n):o(55296+((n-=65536)>>10),n%1024+56320))}return e.join("")}})},function(t,n,e){var r=e(0),i=e(15),o=e(8);r(r.S,"String",{raw:function(t){for(var n=i(t.raw),e=o(n.length),r=arguments.length,u=[],c=0;e>c;)u.push(String(n[c++])),c=n.length?{value:void 0,done:!0}:(t=r(n,e),this._i+=t.length,{value:t,done:!1})})},function(t,n,e){"use strict";var r=e(0),i=e(77)(!1);r(r.P,"String",{codePointAt:function(t){return i(this,t)}})},function(t,n,e){"use strict";var r=e(0),i=e(8),o=e(80),u="".endsWith;r(r.P+r.F*e(81)("endsWith"),"String",{endsWith:function(t){var n=o(this,t,"endsWith"),e=arguments.length>1?arguments[1]:void 0,r=i(n.length),c=void 0===e?r:Math.min(i(e),r),a=String(t);return u?u.call(n,a,c):n.slice(c-a.length,c)===a}})},function(t,n,e){"use strict";var r=e(0),i=e(80);r(r.P+r.F*e(81)("includes"),"String",{includes:function(t){return!!~i(this,t,"includes").indexOf(t,arguments.length>1?arguments[1]:void 0)}})},function(t,n,e){var r=e(0);r(r.P,"String",{repeat:e(74)})},function(t,n,e){"use strict";var r=e(0),i=e(8),o=e(80),u="".startsWith;r(r.P+r.F*e(81)("startsWith"),"String",{startsWith:function(t){var n=o(this,t,"startsWith"),e=i(Math.min(arguments.length>1?arguments[1]:void 0,n.length)),r=String(t);return u?u.call(n,r,e):n.slice(e,e+r.length)===r}})},function(t,n,e){"use strict";e(13)("anchor",function(t){return function(n){return t(this,"a","name",n)}})},function(t,n,e){"use strict";e(13)("big",function(t){return function(){return t(this,"big","","")}})},function(t,n,e){"use strict";e(13)("blink",function(t){return function(){return t(this,"blink","","")}})},function(t,n,e){"use strict";e(13)("bold",function(t){return function(){return t(this,"b","","")}})},function(t,n,e){"use strict";e(13)("fixed",function(t){return function(){return t(this,"tt","","")}})},function(t,n,e){"use strict";e(13)("fontcolor",function(t){return function(n){return t(this,"font","color",n)}})},function(t,n,e){"use strict";e(13)("fontsize",function(t){return function(n){return t(this,"font","size",n)}})},function(t,n,e){"use strict";e(13)("italics",function(t){return function(){return t(this,"i","","")}})},function(t,n,e){"use strict";e(13)("link",function(t){return function(n){return t(this,"a","href",n)}})},function(t,n,e){"use strict";e(13)("small",function(t){return function(){return t(this,"small","","")}})},function(t,n,e){"use strict";e(13)("strike",function(t){return function(){return t(this,"strike","","")}})},function(t,n,e){"use strict";e(13)("sub",function(t){return function(){return t(this,"sub","","")}})},function(t,n,e){"use strict";e(13)("sup",function(t){return function(){return t(this,"sup","","")}})},function(t,n,e){var r=e(0);r(r.S,"Date",{now:function(){return(new Date).getTime()}})},function(t,n,e){"use strict";var r=e(0),i=e(9),o=e(23);r(r.P+r.F*e(3)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function(t){var n=i(this),e=o(n);return"number"!=typeof e||isFinite(e)?n.toISOString():null}})},function(t,n,e){var r=e(0),i=e(219);r(r.P+r.F*(Date.prototype.toISOString!==i),"Date",{toISOString:i})},function(t,n,e){"use strict";var r=e(3),i=Date.prototype.getTime,o=Date.prototype.toISOString,u=function(t){return t>9?t:"0"+t};t.exports=r(function(){return"0385-07-25T07:06:39.999Z"!=o.call(new Date(-5e13-1))})||!r(function(){o.call(new Date(NaN))})?function(){if(!isFinite(i.call(this)))throw RangeError("Invalid time value");var t=this,n=t.getUTCFullYear(),e=t.getUTCMilliseconds(),r=n<0?"-":n>9999?"+":"";return r+("00000"+Math.abs(n)).slice(r?-6:-4)+"-"+u(t.getUTCMonth()+1)+"-"+u(t.getUTCDate())+"T"+u(t.getUTCHours())+":"+u(t.getUTCMinutes())+":"+u(t.getUTCSeconds())+"."+(e>99?e:"0"+u(e))+"Z"}:o},function(t,n,e){var r=Date.prototype,i=r.toString,o=r.getTime;new Date(NaN)+""!="Invalid Date"&&e(12)(r,"toString",function(){var t=o.call(this);return t==t?i.call(this):"Invalid Date"})},function(t,n,e){var r=e(5)("toPrimitive"),i=Date.prototype;r in i||e(11)(i,r,e(222))},function(t,n,e){"use strict";var r=e(1),i=e(23);t.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return i(r(this),"number"!=t)}},function(t,n,e){var r=e(0);r(r.S,"Array",{isArray:e(54)})},function(t,n,e){"use strict";var r=e(20),i=e(0),o=e(9),u=e(108),c=e(82),a=e(8),s=e(83),f=e(84);i(i.S+i.F*!e(56)(function(t){Array.from(t)}),"Array",{from:function(t){var n,e,i,l,h=o(t),p="function"==typeof this?this:Array,v=arguments.length,d=v>1?arguments[1]:void 0,g=void 0!==d,y=0,m=f(h);if(g&&(d=r(d,v>2?arguments[2]:void 0,2)),void 0==m||p==Array&&c(m))for(e=new p(n=a(h.length));n>y;y++)s(e,y,g?d(h[y],y):h[y]);else for(l=m.call(h),e=new p;!(i=l.next()).done;y++)s(e,y,g?u(l,d,[i.value,y],!0):i.value);return e.length=y,e}})},function(t,n,e){"use strict";var r=e(0),i=e(83);r(r.S+r.F*e(3)(function(){function t(){}return!(Array.of.call(t)instanceof t)}),"Array",{of:function(){for(var t=0,n=arguments.length,e=new("function"==typeof this?this:Array)(n);n>t;)i(e,t,arguments[t++]);return e.length=n,e}})},function(t,n,e){"use strict";var r=e(0),i=e(15),o=[].join;r(r.P+r.F*(e(47)!=Object||!e(22)(o)),"Array",{join:function(t){return o.call(i(this),void 0===t?",":t)}})},function(t,n,e){"use strict";var r=e(0),i=e(70),o=e(21),u=e(36),c=e(8),a=[].slice;r(r.P+r.F*e(3)(function(){i&&a.call(i)}),"Array",{slice:function(t,n){var e=c(this.length),r=o(this);if(n=void 0===n?e:n,"Array"==r)return a.call(this,t,n);for(var i=u(t,e),s=u(n,e),f=c(s-i),l=new Array(f),h=0;h1&&(r=Math.min(r,o(arguments[1]))),r<0&&(r=e+r);r>=0;r--)if(r in n&&n[r]===t)return r||0;return-1}})},function(t,n,e){var r=e(0);r(r.P,"Array",{copyWithin:e(110)}),e(32)("copyWithin")},function(t,n,e){var r=e(0);r(r.P,"Array",{fill:e(86)}),e(32)("fill")},function(t,n,e){"use strict";var r=e(0),i=e(27)(5),o=!0;"find"in[]&&Array(1).find(function(){o=!1}),r(r.P+r.F*o,"Array",{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),e(32)("find")},function(t,n,e){"use strict";var r=e(0),i=e(27)(6),o="findIndex",u=!0;o in[]&&Array(1)[o](function(){u=!1}),r(r.P+r.F*u,"Array",{findIndex:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),e(32)(o)},function(t,n,e){e(39)("Array")},function(t,n,e){var r=e(2),i=e(73),o=e(7).f,u=e(38).f,c=e(55),a=e(57),s=r.RegExp,f=s,l=s.prototype,h=/a/g,p=/a/g,v=new s(h)!==h;if(e(6)&&(!v||e(3)(function(){return p[e(5)("match")]=!1,s(h)!=h||s(p)==p||"/a/i"!=s(h,"i")}))){s=function(t,n){var e=this instanceof s,r=c(t),o=void 0===n;return!e&&r&&t.constructor===s&&o?t:i(v?new f(r&&!o?t.source:t,n):f((r=t instanceof s)?t.source:t,r&&o?a.call(t):n),e?this:l,s)};for(var d=function(t){t in s||o(s,t,{configurable:!0,get:function(){return f[t]},set:function(n){f[t]=n}})},g=u(f),y=0;g.length>y;)d(g[y++]);l.constructor=s,s.prototype=l,e(12)(r,"RegExp",s)}e(39)("RegExp")},function(t,n,e){"use strict";e(112);var r=e(1),i=e(57),o=e(6),u=/./.toString,c=function(t){e(12)(RegExp.prototype,"toString",t,!0)};e(3)(function(){return"/a/b"!=u.call({source:"a",flags:"b"})})?c(function(){var t=r(this);return"/".concat(t.source,"/","flags"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)}):"toString"!=u.name&&c(function(){return u.call(this)})},function(t,n,e){e(58)("match",1,function(t,n,e){return[function(e){"use strict";var r=t(this),i=void 0==e?void 0:e[n];return void 0!==i?i.call(e,r):new RegExp(e)[n](String(r))},e]})},function(t,n,e){e(58)("replace",2,function(t,n,e){return[function(r,i){"use strict";var o=t(this),u=void 0==r?void 0:r[n];return void 0!==u?u.call(r,o,i):e.call(String(o),r,i)},e]})},function(t,n,e){e(58)("search",1,function(t,n,e){return[function(e){"use strict";var r=t(this),i=void 0==e?void 0:e[n];return void 0!==i?i.call(e,r):new RegExp(e)[n](String(r))},e]})},function(t,n,e){e(58)("split",2,function(t,n,r){"use strict";var i=e(55),o=r,u=[].push;if("c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length){var c=void 0===/()??/.exec("")[1];r=function(t,n){var e=String(this);if(void 0===t&&0===n)return[];if(!i(t))return o.call(e,t,n);var r,a,s,f,l,h=[],p=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),v=0,d=void 0===n?4294967295:n>>>0,g=new RegExp(t.source,p+"g");for(c||(r=new RegExp("^"+g.source+"$(?!\\s)",p));(a=g.exec(e))&&!((s=a.index+a[0].length)>v&&(h.push(e.slice(v,a.index)),!c&&a.length>1&&a[0].replace(r,function(){for(l=1;l1&&a.index=d));)g.lastIndex===a.index&&g.lastIndex++;return v===e.length?!f&&g.test("")||h.push(""):h.push(e.slice(v)),h.length>d?h.slice(0,d):h}}else"0".split(void 0,0).length&&(r=function(t,n){return void 0===t&&0===n?[]:o.call(this,t,n)});return[function(e,i){var o=t(this),u=void 0==e?void 0:e[n];return void 0!==u?u.call(e,o,i):r.call(String(o),e,i)},r]})},function(t,n,e){"use strict";var r,i,o,u,c=e(31),a=e(2),s=e(20),f=e(49),l=e(0),h=e(4),p=e(10),v=e(40),d=e(41),g=e(59),y=e(88).set,m=e(89)(),_=e(90),b=e(113),w=e(60),x=e(114),S=a.TypeError,E=a.process,k=E&&E.versions,M=k&&k.v8||"",O=a.Promise,P="process"==f(E),F=function(){},I=i=_.f,j=!!function(){try{var t=O.resolve(1),n=(t.constructor={})[e(5)("species")]=function(t){t(F,F)};return(P||"function"==typeof PromiseRejectionEvent)&&t.then(F)instanceof n&&0!==M.indexOf("6.6")&&-1===w.indexOf("Chrome/66")}catch(t){}}(),A=function(t){var n;return!(!h(t)||"function"!=typeof(n=t.then))&&n},L=function(t,n){if(!t._n){t._n=!0;var e=t._c;m(function(){for(var r=t._v,i=1==t._s,o=0,u=function(n){var e,o,u,c=i?n.ok:n.fail,a=n.resolve,s=n.reject,f=n.domain;try{c?(i||(2==t._h&&N(t),t._h=1),!0===c?e=r:(f&&f.enter(),e=c(r),f&&(f.exit(),u=!0)),e===n.promise?s(S("Promise-chain cycle")):(o=A(e))?o.call(e,a,s):a(e)):s(r)}catch(t){f&&!u&&f.exit(),s(t)}};e.length>o;)u(e[o++]);t._c=[],t._n=!1,n&&!t._h&&R(t)})}},R=function(t){y.call(a,function(){var n,e,r,i=t._v,o=T(t);if(o&&(n=b(function(){P?E.emit("unhandledRejection",i,t):(e=a.onunhandledrejection)?e({promise:t,reason:i}):(r=a.console)&&r.error&&r.error("Unhandled promise rejection",i)}),t._h=P||T(t)?2:1),t._a=void 0,o&&n.e)throw n.v})},T=function(t){return 1!==t._h&&0===(t._a||t._c).length},N=function(t){y.call(a,function(){var n;P?E.emit("rejectionHandled",t):(n=a.onrejectionhandled)&&n({promise:t,reason:t._v})})},C=function(t){var n=this;n._d||(n._d=!0,(n=n._w||n)._v=t,n._s=2,n._a||(n._a=n._c.slice()),L(n,!0))},D=function(t){var n,e=this;if(!e._d){e._d=!0,e=e._w||e;try{if(e===t)throw S("Promise can't be resolved itself");(n=A(t))?m(function(){var r={_w:e,_d:!1};try{n.call(t,s(D,r,1),s(C,r,1))}catch(t){C.call(r,t)}}):(e._v=t,e._s=1,L(e,!1))}catch(t){C.call({_w:e,_d:!1},t)}}};j||(O=function(t){v(this,O,"Promise","_h"),p(t),r.call(this);try{t(s(D,this,1),s(C,this,1))}catch(t){C.call(this,t)}},(r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=e(42)(O.prototype,{then:function(t,n){var e=I(g(this,O));return e.ok="function"!=typeof t||t,e.fail="function"==typeof n&&n,e.domain=P?E.domain:void 0,this._c.push(e),this._a&&this._a.push(e),this._s&&L(this,!1),e.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r;this.promise=t,this.resolve=s(D,t,1),this.reject=s(C,t,1)},_.f=I=function(t){return t===O||t===u?new o(t):i(t)}),l(l.G+l.W+l.F*!j,{Promise:O}),e(43)(O,"Promise"),e(39)("Promise"),u=e(19).Promise,l(l.S+l.F*!j,"Promise",{reject:function(t){var n=I(this);return(0,n.reject)(t),n.promise}}),l(l.S+l.F*(c||!j),"Promise",{resolve:function(t){return x(c&&this===u?O:this,t)}}),l(l.S+l.F*!(j&&e(56)(function(t){O.all(t).catch(F)})),"Promise",{all:function(t){var n=this,e=I(n),r=e.resolve,i=e.reject,o=b(function(){var e=[],o=0,u=1;d(t,!1,function(t){var c=o++,a=!1;e.push(void 0),u++,n.resolve(t).then(function(t){a||(a=!0,e[c]=t,--u||r(e))},i)}),--u||r(e)});return o.e&&i(o.v),e.promise},race:function(t){var n=this,e=I(n),r=e.reject,i=b(function(){d(t,!1,function(t){n.resolve(t).then(e.resolve,r)})});return i.e&&r(i.v),e.promise}})},function(t,n,e){"use strict";var r=e(119),i=e(46);e(61)("WeakSet",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return r.def(i(this,"WeakSet"),t,!0)}},r,!1,!0)},function(t,n,e){"use strict";var r=e(0),i=e(62),o=e(91),u=e(1),c=e(36),a=e(8),s=e(4),f=e(2).ArrayBuffer,l=e(59),h=o.ArrayBuffer,p=o.DataView,v=i.ABV&&f.isView,d=h.prototype.slice,g=i.VIEW;r(r.G+r.W+r.F*(f!==h),{ArrayBuffer:h}),r(r.S+r.F*!i.CONSTR,"ArrayBuffer",{isView:function(t){return v&&v(t)||s(t)&&g in t}}),r(r.P+r.U+r.F*e(3)(function(){return!new h(2).slice(1,void 0).byteLength}),"ArrayBuffer",{slice:function(t,n){if(void 0!==d&&void 0===n)return d.call(u(this),t);for(var e=u(this).byteLength,r=c(t,e),i=c(void 0===n?e:n,e),o=new(l(this,h))(a(i-r)),s=new p(this),f=new p(o),v=0;r=n.length)return{value:void 0,done:!0}}while(!((t=n[this._i++])in this._t));return{value:t,done:!1}}),r(r.S,"Reflect",{enumerate:function(t){return new o(t)}})},function(t,n,e){var r=e(16),i=e(17),o=e(14),u=e(0),c=e(4),a=e(1);u(u.S,"Reflect",{get:function t(n,e){var u,s,f=arguments.length<3?n:arguments[2];return a(n)===f?n[e]:(u=r.f(n,e))?o(u,"value")?u.value:void 0!==u.get?u.get.call(f):void 0:c(s=i(n))?t(s,e,f):void 0}})},function(t,n,e){var r=e(16),i=e(0),o=e(1);i(i.S,"Reflect",{getOwnPropertyDescriptor:function(t,n){return r.f(o(t),n)}})},function(t,n,e){var r=e(0),i=e(17),o=e(1);r(r.S,"Reflect",{getPrototypeOf:function(t){return i(o(t))}})},function(t,n,e){var r=e(0);r(r.S,"Reflect",{has:function(t,n){return n in t}})},function(t,n,e){var r=e(0),i=e(1),o=Object.isExtensible;r(r.S,"Reflect",{isExtensible:function(t){return i(t),!o||o(t)}})},function(t,n,e){var r=e(0);r(r.S,"Reflect",{ownKeys:e(121)})},function(t,n,e){var r=e(0),i=e(1),o=Object.preventExtensions;r(r.S,"Reflect",{preventExtensions:function(t){i(t);try{return o&&o(t),!0}catch(t){return!1}}})},function(t,n,e){var r=e(7),i=e(16),o=e(17),u=e(14),c=e(0),a=e(33),s=e(1),f=e(4);c(c.S,"Reflect",{set:function t(n,e,c){var l,h,p=arguments.length<4?n:arguments[3],v=i.f(s(n),e);if(!v){if(f(h=o(n)))return t(h,e,c,p);v=a(0)}if(u(v,"value")){if(!1===v.writable||!f(p))return!1;if(l=i.f(p,e)){if(l.get||l.set||!1===l.writable)return!1;l.value=c,r.f(p,e,l)}else r.f(p,e,a(0,c));return!0}return void 0!==v.set&&(v.set.call(p,c),!0)}})},function(t,n,e){var r=e(0),i=e(71);i&&r(r.S,"Reflect",{setPrototypeOf:function(t,n){i.check(t,n);try{return i.set(t,n),!0}catch(t){return!1}}})},function(t,n,e){"use strict";var r=e(0),i=e(52)(!0);r(r.P,"Array",{includes:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),e(32)("includes")},function(t,n,e){"use strict";var r=e(0),i=e(122),o=e(9),u=e(8),c=e(10),a=e(85);r(r.P,"Array",{flatMap:function(t){var n,e,r=o(this);return c(t),n=u(r.length),e=a(r,0),i(e,r,r,n,0,1,t,arguments[1]),e}}),e(32)("flatMap")},function(t,n,e){"use strict";var r=e(0),i=e(122),o=e(9),u=e(8),c=e(25),a=e(85);r(r.P,"Array",{flatten:function(){var t=arguments[0],n=o(this),e=u(n.length),r=a(n,0);return i(r,n,n,e,0,void 0===t?1:c(t)),r}}),e(32)("flatten")},function(t,n,e){"use strict";var r=e(0),i=e(77)(!0);r(r.P,"String",{at:function(t){return i(this,t)}})},function(t,n,e){"use strict";var r=e(0),i=e(123),o=e(60);r(r.P+r.F*/Version\/10\.\d+(\.\d+)? Safari\//.test(o),"String",{padStart:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},function(t,n,e){"use strict";var r=e(0),i=e(123),o=e(60);r(r.P+r.F*/Version\/10\.\d+(\.\d+)? Safari\//.test(o),"String",{padEnd:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!1)}})},function(t,n,e){"use strict";e(44)("trimLeft",function(t){return function(){return t(this,1)}},"trimStart")},function(t,n,e){"use strict";e(44)("trimRight",function(t){return function(){return t(this,2)}},"trimEnd")},function(t,n,e){"use strict";var r=e(0),i=e(24),o=e(8),u=e(55),c=e(57),a=RegExp.prototype,s=function(t,n){this._r=t,this._s=n};e(79)(s,"RegExp String",function(){var t=this._r.exec(this._s);return{value:t,done:null===t}}),r(r.P,"String",{matchAll:function(t){if(i(this),!u(t))throw TypeError(t+" is not a regexp!");var n=String(this),e="flags"in a?String(t.flags):c.call(t),r=new RegExp(t.source,~e.indexOf("g")?e:"g"+e);return r.lastIndex=o(t.lastIndex),new s(r,n)}})},function(t,n,e){e(67)("asyncIterator")},function(t,n,e){e(67)("observable")},function(t,n,e){var r=e(0),i=e(121),o=e(15),u=e(16),c=e(83);r(r.S,"Object",{getOwnPropertyDescriptors:function(t){for(var n,e,r=o(t),a=u.f,s=i(r),f={},l=0;s.length>l;)void 0!==(e=a(r,n=s[l++]))&&c(f,n,e);return f}})},function(t,n,e){var r=e(0),i=e(124)(!1);r(r.S,"Object",{values:function(t){return i(t)}})},function(t,n,e){var r=e(0),i=e(124)(!0);r(r.S,"Object",{entries:function(t){return i(t)}})},function(t,n,e){"use strict";var r=e(0),i=e(9),o=e(10),u=e(7);e(6)&&r(r.P+e(63),"Object",{__defineGetter__:function(t,n){u.f(i(this),t,{get:o(n),enumerable:!0,configurable:!0})}})},function(t,n,e){"use strict";var r=e(0),i=e(9),o=e(10),u=e(7);e(6)&&r(r.P+e(63),"Object",{__defineSetter__:function(t,n){u.f(i(this),t,{set:o(n),enumerable:!0,configurable:!0})}})},function(t,n,e){"use strict";var r=e(0),i=e(9),o=e(23),u=e(17),c=e(16).f;e(6)&&r(r.P+e(63),"Object",{__lookupGetter__:function(t){var n,e=i(this),r=o(t,!0);do{if(n=c(e,r))return n.get}while(e=u(e))}})},function(t,n,e){"use strict";var r=e(0),i=e(9),o=e(23),u=e(17),c=e(16).f;e(6)&&r(r.P+e(63),"Object",{__lookupSetter__:function(t){var n,e=i(this),r=o(t,!0);do{if(n=c(e,r))return n.set}while(e=u(e))}})},function(t,n,e){var r=e(0);r(r.P+r.R,"Map",{toJSON:e(125)("Map")})},function(t,n,e){var r=e(0);r(r.P+r.R,"Set",{toJSON:e(125)("Set")})},function(t,n,e){e(64)("Map")},function(t,n,e){e(64)("Set")},function(t,n,e){e(64)("WeakMap")},function(t,n,e){e(64)("WeakSet")},function(t,n,e){e(65)("Map")},function(t,n,e){e(65)("Set")},function(t,n,e){e(65)("WeakMap")},function(t,n,e){e(65)("WeakSet")},function(t,n,e){var r=e(0);r(r.G,{global:e(2)})},function(t,n,e){var r=e(0);r(r.S,"System",{global:e(2)})},function(t,n,e){var r=e(0),i=e(21);r(r.S,"Error",{isError:function(t){return"Error"===i(t)}})},function(t,n,e){var r=e(0);r(r.S,"Math",{clamp:function(t,n,e){return Math.min(e,Math.max(n,t))}})},function(t,n,e){var r=e(0);r(r.S,"Math",{DEG_PER_RAD:Math.PI/180})},function(t,n,e){var r=e(0),i=180/Math.PI;r(r.S,"Math",{degrees:function(t){return t*i}})},function(t,n,e){var r=e(0),i=e(127),o=e(107);r(r.S,"Math",{fscale:function(t,n,e,r,u){return o(i(t,n,e,r,u))}})},function(t,n,e){var r=e(0);r(r.S,"Math",{iaddh:function(t,n,e,r){var i=t>>>0,o=e>>>0;return(n>>>0)+(r>>>0)+((i&o|(i|o)&~(i+o>>>0))>>>31)|0}})},function(t,n,e){var r=e(0);r(r.S,"Math",{isubh:function(t,n,e,r){var i=t>>>0,o=e>>>0;return(n>>>0)-(r>>>0)-((~i&o|~(i^o)&i-o>>>0)>>>31)|0}})},function(t,n,e){var r=e(0);r(r.S,"Math",{imulh:function(t,n){var e=+t,r=+n,i=65535&e,o=65535&r,u=e>>16,c=r>>16,a=(u*o>>>0)+(i*o>>>16);return u*c+(a>>16)+((i*c>>>0)+(65535&a)>>16)}})},function(t,n,e){var r=e(0);r(r.S,"Math",{RAD_PER_DEG:180/Math.PI})},function(t,n,e){var r=e(0),i=Math.PI/180;r(r.S,"Math",{radians:function(t){return t*i}})},function(t,n,e){var r=e(0);r(r.S,"Math",{scale:e(127)})},function(t,n,e){var r=e(0);r(r.S,"Math",{umulh:function(t,n){var e=+t,r=+n,i=65535&e,o=65535&r,u=e>>>16,c=r>>>16,a=(u*o>>>0)+(i*o>>>16);return u*c+(a>>>16)+((i*c>>>0)+(65535&a)>>>16)}})},function(t,n,e){var r=e(0);r(r.S,"Math",{signbit:function(t){return(t=+t)!=t?t:0==t?1/t==1/0:t>0}})},function(t,n,e){"use strict";var r=e(0),i=e(19),o=e(2),u=e(59),c=e(114);r(r.P+r.R,"Promise",{finally:function(t){var n=u(this,i.Promise||o.Promise),e="function"==typeof t;return this.then(e?function(e){return c(n,t()).then(function(){return e})}:t,e?function(e){return c(n,t()).then(function(){throw e})}:t)}})},function(t,n,e){"use strict";var r=e(0),i=e(90),o=e(113);r(r.S,"Promise",{try:function(t){var n=i.f(this),e=o(t);return(e.e?n.reject:n.resolve)(e.v),n.promise}})},function(t,n,e){var r=e(29),i=e(1),o=r.key,u=r.set;r.exp({defineMetadata:function(t,n,e,r){u(t,n,i(e),o(r))}})},function(t,n,e){var r=e(29),i=e(1),o=r.key,u=r.map,c=r.store;r.exp({deleteMetadata:function(t,n){var e=arguments.length<3?void 0:o(arguments[2]),r=u(i(n),e,!1);if(void 0===r||!r.delete(t))return!1;if(r.size)return!0;var a=c.get(n);return a.delete(e),!!a.size||c.delete(n)}})},function(t,n,e){var r=e(29),i=e(1),o=e(17),u=r.has,c=r.get,a=r.key,s=function(t,n,e){if(u(t,n,e))return c(t,n,e);var r=o(n);return null!==r?s(t,r,e):void 0};r.exp({getMetadata:function(t,n){return s(t,i(n),arguments.length<3?void 0:a(arguments[2]))}})},function(t,n,e){var r=e(117),i=e(126),o=e(29),u=e(1),c=e(17),a=o.keys,s=o.key,f=function(t,n){var e=a(t,n),o=c(t);if(null===o)return e;var u=f(o,n);return u.length?e.length?i(new r(e.concat(u))):u:e};o.exp({getMetadataKeys:function(t){return f(u(t),arguments.length<2?void 0:s(arguments[1]))}})},function(t,n,e){var r=e(29),i=e(1),o=r.get,u=r.key;r.exp({getOwnMetadata:function(t,n){return o(t,i(n),arguments.length<3?void 0:u(arguments[2]))}})},function(t,n,e){var r=e(29),i=e(1),o=r.keys,u=r.key;r.exp({getOwnMetadataKeys:function(t){return o(i(t),arguments.length<2?void 0:u(arguments[1]))}})},function(t,n,e){var r=e(29),i=e(1),o=e(17),u=r.has,c=r.key,a=function(t,n,e){if(u(t,n,e))return!0;var r=o(n);return null!==r&&a(t,r,e)};r.exp({hasMetadata:function(t,n){return a(t,i(n),arguments.length<3?void 0:c(arguments[2]))}})},function(t,n,e){var r=e(29),i=e(1),o=r.has,u=r.key;r.exp({hasOwnMetadata:function(t,n){return o(t,i(n),arguments.length<3?void 0:u(arguments[2]))}})},function(t,n,e){var r=e(29),i=e(1),o=e(10),u=r.key,c=r.set;r.exp({metadata:function(t,n){return function(e,r){c(t,n,(void 0!==r?i:o)(e),u(r))}}})},function(t,n,e){var r=e(0),i=e(89)(),o=e(2).process,u="process"==e(21)(o);r(r.G,{asap:function(t){var n=u&&o.domain;i(n?n.bind(t):t)}})},function(t,n,e){"use strict";var r=e(0),i=e(2),o=e(19),u=e(89)(),c=e(5)("observable"),a=e(10),s=e(1),f=e(40),l=e(42),h=e(11),p=e(41),v=p.RETURN,d=function(t){return null==t?void 0:a(t)},g=function(t){var n=t._c;n&&(t._c=void 0,n())},y=function(t){return void 0===t._o},m=function(t){y(t)||(t._o=void 0,g(t))},_=function(t,n){s(t),this._c=void 0,this._o=t,t=new b(this);try{var e=n(t),r=e;null!=e&&("function"==typeof e.unsubscribe?e=function(){r.unsubscribe()}:a(e),this._c=e)}catch(n){return void t.error(n)}y(this)&&g(this)};_.prototype=l({},{unsubscribe:function(){m(this)}});var b=function(t){this._s=t};b.prototype=l({},{next:function(t){var n=this._s;if(!y(n)){var e=n._o;try{var r=d(e.next);if(r)return r.call(e,t)}catch(t){try{m(n)}finally{throw t}}}},error:function(t){var n=this._s;if(y(n))throw t;var e=n._o;n._o=void 0;try{var r=d(e.error);if(!r)throw t;t=r.call(e,t)}catch(t){try{g(n)}finally{throw t}}return g(n),t},complete:function(t){var n=this._s;if(!y(n)){var e=n._o;n._o=void 0;try{var r=d(e.complete);t=r?r.call(e,t):void 0}catch(t){try{g(n)}finally{throw t}}return g(n),t}}});var w=function(t){f(this,w,"Observable","_f")._f=a(t)};l(w.prototype,{subscribe:function(t){return new _(t,this._f)},forEach:function(t){var n=this;return new(o.Promise||i.Promise)(function(e,r){a(t);var i=n.subscribe({next:function(n){try{return t(n)}catch(t){r(t),i.unsubscribe()}},error:r,complete:e})})}}),l(w,{from:function(t){var n="function"==typeof this?this:w,e=d(s(t)[c]);if(e){var r=s(e.call(t));return r.constructor===n?r:new n(function(t){return r.subscribe(t)})}return new n(function(n){var e=!1;return u(function(){if(!e){try{if(p(t,!1,function(t){if(n.next(t),e)return v})===v)return}catch(t){if(e)throw t;return void n.error(t)}n.complete()}}),function(){e=!0}})},of:function(){for(var t=0,n=arguments.length,e=new Array(n);t2,i=!!r&&u.call(arguments,2);return t(r?function(){("function"==typeof n?n:Function(n)).apply(this,i)}:n,e)}};i(i.G+i.B+i.F*c,{setTimeout:a(r.setTimeout),setInterval:a(r.setInterval)})},function(t,n,e){var r=e(0),i=e(88);r(r.G+r.B,{setImmediate:i.set,clearImmediate:i.clear})},function(t,n,e){for(var r=e(87),i=e(35),o=e(12),u=e(2),c=e(11),a=e(45),s=e(5),f=s("iterator"),l=s("toStringTag"),h=a.Array,p={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},v=i(p),d=0;d=0;--o){var u=this.tryEntries[o],c=u.completion;if("root"===u.tryLoc)return r("end");if(u.tryLoc<=this.prev){var a=i.call(u,"catchLoc"),s=i.call(u,"finallyLoc");if(a&&s){if(this.prev=0;--e){var r=this.tryEntries[e];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--n){var e=this.tryEntries[n];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),F(e),d}},catch:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var e=this.tryEntries[n];if(e.tryLoc===t){var r=e.completion;if("throw"===r.type){var i=r.arg;F(e)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:j(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),d}}}function b(t,n,e,r){var i=n&&n.prototype instanceof x?n:x,o=Object.create(i.prototype),u=new I(r||[]);return o._invoke=function(t,n,e){var r=l;return function(i,o){if(r===p)throw new Error("Generator is already running");if(r===v){if("throw"===i)throw o;return A()}for(e.method=i,e.arg=o;;){var u=e.delegate;if(u){var c=O(u,e);if(c){if(c===d)continue;return c}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if(r===l)throw r=v,e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);r=p;var a=w(t,n,e);if("normal"===a.type){if(r=e.done?v:h,a.arg===d)continue;return{value:a.arg,done:e.done}}"throw"===a.type&&(r=v,e.method="throw",e.arg=a.arg)}}}(t,e,u),o}function w(t,n,e){try{return{type:"normal",arg:t.call(n,e)}}catch(t){return{type:"throw",arg:t}}}function x(){}function S(){}function E(){}function k(t){["next","throw","return"].forEach(function(n){t[n]=function(t){return this._invoke(n,t)}})}function M(t){function e(n,r,o,u){var c=w(t[n],t,r);if("throw"!==c.type){var a=c.arg,s=a.value;return s&&"object"==typeof s&&i.call(s,"__await")?Promise.resolve(s.__await).then(function(t){e("next",t,o,u)},function(t){e("throw",t,o,u)}):Promise.resolve(s).then(function(t){a.value=t,o(a)},u)}u(c.arg)}var r;"object"==typeof n.process&&n.process.domain&&(e=n.process.domain.bind(e)),this._invoke=function(t,n){function i(){return new Promise(function(r,i){e(t,n,r,i)})}return r=r?r.then(i,i):i()}}function O(t,n){var r=t.iterator[n.method];if(r===e){if(n.delegate=null,"throw"===n.method){if(t.iterator.return&&(n.method="return",n.arg=e,O(t,n),"throw"===n.method))return d;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var i=w(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,d;var o=i.arg;return o?o.done?(n[t.resultName]=o.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,d):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,d)}function P(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function F(t){var n=t.completion||{};n.type="normal",delete n.arg,t.completion=n}function I(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function j(t){if(t){var n=t[u];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function n(){for(;++r1&&(state.recipe.updateServings("dec"),a.updateServingsIngredients(state.recipe)):t.target.matches(".btn-increase, .btn-increase *")?(state.recipe.updateServings("inc"),a.updateServingsIngredients(state.recipe)):t.target.matches(".recipe__btn--add, .recipe__btn--add *")?(state.list||(state.list=new o.default),state.recipe.ingredients.forEach(function(t){var n=state.list.addItem(t.count,t.unit,t.ingredient);s.renderItem(n)})):t.target.matches(".recipe__love, .recipe__love *")&&function(){state.likes||(state.likes=new u.default);var t=state.recipe.id;if(state.likes.isLiked(t))state.likes.deleteLike(t),f.toggleLikeBtn(!1),f.deleteLike(t);else{var n=state.likes.addLike(t,state.recipe.title,state.recipe.author,state.recipe.img);f.toggleLikeBtn(!0),f.renderLikes(n)}f.toggleLikeMenu(state.likes.getNumLikes())}()})},function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function t(t,n){for(var e=0;e + * @license MIT + */ +t.exports=function(t){return null!=t&&(e(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&e(t.slice(0,0))}(t)||!!t._isBuffer)}},function(t,n,e){"use strict";var r=e(92),i=e(18),o=e(353),u=e(354);function c(t){this.defaults=t,this.interceptors={request:new o,response:new o}}c.prototype.request=function(t){"string"==typeof t&&(t=i.merge({url:arguments[0]},arguments[1])),(t=i.merge(r,{method:"get"},this.defaults,t)).method=t.method.toLowerCase();var n=[u,void 0],e=Promise.resolve(t);for(this.interceptors.request.forEach(function(t){n.unshift(t.fulfilled,t.rejected)}),this.interceptors.response.forEach(function(t){n.push(t.fulfilled,t.rejected)});n.length;)e=e.then(n.shift(),n.shift());return e},i.forEach(["delete","get","head","options"],function(t){c.prototype[t]=function(n,e){return this.request(i.merge(e||{},{method:t,url:n}))}}),i.forEach(["post","put","patch"],function(t){c.prototype[t]=function(n,e,r){return this.request(i.merge(r||{},{method:t,url:n,data:e}))}}),t.exports=c},function(t,n,e){"use strict";var r=e(18);t.exports=function(t,n){r.forEach(t,function(e,r){r!==n&&r.toUpperCase()===n.toUpperCase()&&(t[n]=e,delete t[r])})}},function(t,n,e){"use strict";var r=e(132);t.exports=function(t,n,e){var i=e.config.validateStatus;e.status&&i&&!i(e.status)?n(r("Request failed with status code "+e.status,e.config,null,e.request,e)):t(e)}},function(t,n,e){"use strict";t.exports=function(t,n,e,r,i){return t.config=n,e&&(t.code=e),t.request=r,t.response=i,t}},function(t,n,e){"use strict";var r=e(18);function i(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}t.exports=function(t,n,e){if(!n)return t;var o;if(e)o=e(n);else if(r.isURLSearchParams(n))o=n.toString();else{var u=[];r.forEach(n,function(t,n){null!==t&&void 0!==t&&(r.isArray(t)?n+="[]":t=[t],r.forEach(t,function(t){r.isDate(t)?t=t.toISOString():r.isObject(t)&&(t=JSON.stringify(t)),u.push(i(n)+"="+i(t))}))}),o=u.join("&")}return o&&(t+=(-1===t.indexOf("?")?"?":"&")+o),t}},function(t,n,e){"use strict";var r=e(18),i=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];t.exports=function(t){var n,e,o,u={};return t?(r.forEach(t.split("\n"),function(t){if(o=t.indexOf(":"),n=r.trim(t.substr(0,o)).toLowerCase(),e=r.trim(t.substr(o+1)),n){if(u[n]&&i.indexOf(n)>=0)return;u[n]="set-cookie"===n?(u[n]?u[n]:[]).concat([e]):u[n]?u[n]+", "+e:e}}),u):u}},function(t,n,e){"use strict";var r=e(18);t.exports=r.isStandardBrowserEnv()?function(){var t,n=/(msie|trident)/i.test(navigator.userAgent),e=document.createElement("a");function i(t){var r=t;return n&&(e.setAttribute("href",r),r=e.href),e.setAttribute("href",r),{href:e.href,protocol:e.protocol?e.protocol.replace(/:$/,""):"",host:e.host,search:e.search?e.search.replace(/^\?/,""):"",hash:e.hash?e.hash.replace(/^#/,""):"",hostname:e.hostname,port:e.port,pathname:"/"===e.pathname.charAt(0)?e.pathname:"/"+e.pathname}}return t=i(window.location.href),function(n){var e=r.isString(n)?i(n):n;return e.protocol===t.protocol&&e.host===t.host}}():function(){return!0}},function(t,n,e){"use strict";var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function i(){this.message="String contains an invalid character"}i.prototype=new Error,i.prototype.code=5,i.prototype.name="InvalidCharacterError",t.exports=function(t){for(var n,e,o=String(t),u="",c=0,a=r;o.charAt(0|c)||(a="=",c%1);u+=a.charAt(63&n>>8-c%1*8)){if((e=o.charCodeAt(c+=.75))>255)throw new i;n=n<<8|e}return u}},function(t,n,e){"use strict";var r=e(18);t.exports=r.isStandardBrowserEnv()?{write:function(t,n,e,i,o,u){var c=[];c.push(t+"="+encodeURIComponent(n)),r.isNumber(e)&&c.push("expires="+new Date(e).toGMTString()),r.isString(i)&&c.push("path="+i),r.isString(o)&&c.push("domain="+o),!0===u&&c.push("secure"),document.cookie=c.join("; ")},read:function(t){var n=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return n?decodeURIComponent(n[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(t,n,e){"use strict";var r=e(18);function i(){this.handlers=[]}i.prototype.use=function(t,n){return this.handlers.push({fulfilled:t,rejected:n}),this.handlers.length-1},i.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},i.prototype.forEach=function(t){r.forEach(this.handlers,function(n){null!==n&&t(n)})},t.exports=i},function(t,n,e){"use strict";var r=e(18),i=e(355),o=e(133),u=e(92),c=e(356),a=e(357);function s(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){return s(t),t.baseURL&&!c(t.url)&&(t.url=a(t.baseURL,t.url)),t.headers=t.headers||{},t.data=i(t.data,t.headers,t.transformRequest),t.headers=r.merge(t.headers.common||{},t.headers[t.method]||{},t.headers||{}),r.forEach(["delete","get","head","post","put","patch","common"],function(n){delete t.headers[n]}),(t.adapter||u.adapter)(t).then(function(n){return s(t),n.data=i(n.data,n.headers,t.transformResponse),n},function(n){return o(n)||(s(t),n&&n.response&&(n.response.data=i(n.response.data,n.response.headers,t.transformResponse))),Promise.reject(n)})}},function(t,n,e){"use strict";var r=e(18);t.exports=function(t,n,e){return r.forEach(e,function(e){t=e(t,n)}),t}},function(t,n,e){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},function(t,n,e){"use strict";t.exports=function(t,n){return n?t.replace(/\/+$/,"")+"/"+n.replace(/^\/+/,""):t}},function(t,n,e){"use strict";var r=e(134);function i(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var n;this.promise=new Promise(function(t){n=t});var e=this;t(function(t){e.reason||(e.reason=new r(t),n(e.reason))})}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var t;return{token:new i(function(n){t=n}),cancel:t}},t.exports=i},function(t,n,e){"use strict";t.exports=function(t){return function(n){return t.apply(null,n)}}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function t(t,n){for(var e=0;e-1){var arrCount=arrIngredient.slice(0,unitIndex),count=void 0;return count=1===arrCount.length?eval(arrIngredient[0].replace("-","+")):eval(arrIngredient.slice(0,unitIndex).join("+")),{count:count,unit:arrIngredient[unitIndex],ingredient:arrIngredient.slice(unitIndex+1).join(" ")}}if(-1===unitIndex);else if(parseInt(arrIngredient[0],10))return objIngredient={count:parseInt(arrIngredient[0],10),unit:"",ingredient:arrIngredient.slice(1).join(" ")},objIngredient;return ingredient});this.ingredients=newIngredients}},{key:"updateServings",value:function(t){var n=this,e="dec"===t?this.servings-1:this.servings+1;this.ingredients.forEach(function(t){t.count*=e/n.servings}),this.servings=e}}]),Recipe}();exports.default=Recipe},function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function t(t,n){for(var e=0;en?t:n+1}t.exports=t.exports.default=function(t){return(t||"")+""+e+r().toString(36)},t.exports.process=function(t){return(t||"")+e+r().toString(36)},t.exports.time=function(t){return(t||"")+r().toString(36)}}).call(this,e(130))},function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function t(t,n){for(var e=0;e\n

    \n '+t.title+'\n

    \n \n
    \n
    \n \n \n \n '+t.time+'\n minutes\n
    \n
    \n \n \n \n '+t.servings+'\n servings\n\n
    \n \n \n
    \n\n
    \n \n
    \n\n\n\n
    \n
      \n '+t.ingredients.map(function(t){return function(t){return'\n
    • \n \n \n \n
      '+u(t.count)+'
      \n
      \n '+t.unit+"\n "+t.ingredient+"\n
      \n
    • \n"}(t)}).join("")+'\n\n
    \n\n \n
    \n\n
    \n

    How to cook it

    \n

    \n This recipe was carefully designed and tested by\n '+t.author+'. Please check out directions at their website.\n

    \n \n Directions\n \n \n \n\n \n
    \n ';i.elements.recipe.insertAdjacentHTML("afterbegin",e)},n.updateServingsIngredients=function(t){document.querySelector(".recipe__info-data--people").textContent=t.servings,Array.from(document.querySelectorAll(".recipe__count")).forEach(function(n,e){n.textContent=u(t.ingredients[e].count)})}},function(t,n){Fraction=function(t,n){if(void 0!==t&&n)"number"==typeof t&&"number"==typeof n?(this.numerator=t,this.denominator=n):"string"==typeof t&&"string"==typeof n&&(this.numerator=parseInt(t),this.denominator=parseInt(n));else if(void 0===n)if(num=t,"number"==typeof num)this.numerator=num,this.denominator=1;else if("string"==typeof num){var e,r,i=num.split(" ");if(i[0]&&(e=i[0]),i[1]&&(r=i[1]),e%1==0&&r&&r.match("/"))return new Fraction(e).add(new Fraction(r));if(!e||r)return;if("string"==typeof e&&e.match("/")){var o=e.split("/");this.numerator=o[0],this.denominator=o[1]}else{if("string"==typeof e&&e.match("."))return new Fraction(parseFloat(e));this.numerator=parseInt(e),this.denominator=1}}this.normalize()},Fraction.prototype.clone=function(){return new Fraction(this.numerator,this.denominator)},Fraction.prototype.toString=function(){if("NaN"===this.denominator)return"NaN";var t=this.numerator/this.denominator>0?Math.floor(this.numerator/this.denominator):Math.ceil(this.numerator/this.denominator),n=this.numerator%this.denominator,e=this.denominator,r=[];return 0!=t&&r.push(t),0!=n&&r.push((0===t?n:Math.abs(n))+"/"+e),r.length>0?r.join(" "):0},Fraction.prototype.rescale=function(t){return this.numerator*=t,this.denominator*=t,this},Fraction.prototype.add=function(t){var n=this.clone();return t=t instanceof Fraction?t.clone():new Fraction(t),td=n.denominator,n.rescale(t.denominator),t.rescale(td),n.numerator+=t.numerator,n.normalize()},Fraction.prototype.subtract=function(t){var n=this.clone();return t=t instanceof Fraction?t.clone():new Fraction(t),td=n.denominator,n.rescale(t.denominator),t.rescale(td),n.numerator-=t.numerator,n.normalize()},Fraction.prototype.multiply=function(t){var n=this.clone();if(t instanceof Fraction)n.numerator*=t.numerator,n.denominator*=t.denominator;else{if("number"!=typeof t)return n.multiply(new Fraction(t));n.numerator*=t}return n.normalize()},Fraction.prototype.divide=function(t){var n=this.clone();if(t instanceof Fraction)n.numerator*=t.denominator,n.denominator*=t.numerator;else{if("number"!=typeof t)return n.divide(new Fraction(t));n.denominator*=t}return n.normalize()},Fraction.prototype.equals=function(t){t instanceof Fraction||(t=new Fraction(t));var n=this.clone().normalize();t=t.clone().normalize();return n.numerator===t.numerator&&n.denominator===t.denominator},Fraction.prototype.normalize=function(){var t=function(t){return"number"==typeof t&&(t>0&&t%1>0&&t%1<1||t<0&&t%-1<0&&t%-1>-1)},n=function(t,n){if(n){var e=Math.pow(10,n);return Math.round(t*e)/e}return Math.round(t)};return function(){if(t(this.denominator)){var e=n(this.denominator,9),r=Math.pow(10,e.toString().split(".")[1].length);this.denominator=Math.round(this.denominator*r),this.numerator*=r}if(t(this.numerator)){e=n(this.numerator,9),r=Math.pow(10,e.toString().split(".")[1].length);this.numerator=Math.round(this.numerator*r),this.denominator*=r}var i=Fraction.gcf(this.numerator,this.denominator);return this.numerator/=i,this.denominator/=i,(this.numerator<0&&this.denominator<0||this.numerator>0&&this.denominator<0)&&(this.numerator*=-1,this.denominator*=-1),this}}(),Fraction.gcf=function(t,n){var e=[],r=Fraction.primeFactors(t),i=Fraction.primeFactors(n);return r.forEach(function(t){var n=i.indexOf(t);n>=0&&(e.push(t),i.splice(n,1))}),0===e.length?1:function(){var t,n=e[0];for(t=1;t\n
    \n \n

    '+t.unit+'

    \n
    \n

    '+t.ingredient+'

    \n \n \n ';r.elements.shopping.insertAdjacentHTML("beforeend",n)},n.deleteItem=function(t){var n=document.querySelector('[data-itemid="'+t+'"]');n&&n.parentElement.removeChild(n)}},function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.deleteLike=n.renderLikes=n.toggleLikeMenu=n.toggleLikeBtn=void 0;var r=e(50),i=e(136);n.toggleLikeBtn=function(t){var n=t?"icon-heart":"icon-heart-outlined";document.querySelector(".recipe__love use").setAttribute("href","img/icons.svg#"+n)},n.toggleLikeMenu=function(t){r.elements.likesMenu.style.visibility=t>0?"visible":"hidden"},n.renderLikes=function(t){var n='\n
  • \n \n
  • \n ";r.elements.likesList.insertAdjacentHTML("beforeend",n)},n.deleteLike=function(t){var n=document.querySelector('.likes__link[href*="'+t+'"]').parentElement;n&&n.parentElement.removeChild(n)}}]); \ No newline at end of file diff --git a/9-forkify/starter/package-lock.json b/9-forkify/starter/package-lock.json new file mode 100644 index 0000000000..d08daf8618 --- /dev/null +++ b/9-forkify/starter/package-lock.json @@ -0,0 +1,6491 @@ +{ + "name": "forkify", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@webassemblyjs/ast": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", + "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", + "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", + "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", + "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", + "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", + "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", + "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", + "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", + "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", + "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", + "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/utf8": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", + "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", + "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/helper-wasm-section": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-opt": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", + "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", + "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", + "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", + "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/floating-point-hex-parser": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-code-frame": "1.7.11", + "@webassemblyjs/helper-fsm": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", + "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", + "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "^5.0.0" + } + }, + "ajv": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", + "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.0.tgz", + "integrity": "sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk=", + "dev": true + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "ansi-colors": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.1.tgz", + "integrity": "sha512-Xt+zb6nqgvV9SWAVp0EG3lRsHcbq5DDgqjPPz6pwgtj6RKz65zGXMNa82oJfOSBA/to6GmRP7Dr+6o+kbApTzQ==", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "axios": { + "version": "0.18.0", + "resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", + "requires": { + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-loader": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz", + "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==", + "dev": true, + "requires": { + "find-cache-dir": "^1.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "requires": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + } + } + }, + "babel-preset-env": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "binary-extensions": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", + "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "dev": true + }, + "bluebird": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz", + "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "http://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30000905", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000905.tgz", + "integrity": "sha512-cR6ICguvhRrkAjFfBoe54vJQMVOEz7vFmqrV6oor1a7GRg6DdswI40lkiV/QQvAMb4txzTkjSaLaJaiAtSuQzA==", + "dev": true + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", + "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "compressible": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", + "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", + "dev": true, + "requires": { + "mime-db": ">= 1.36.0 < 2" + } + }, + "compression": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", + "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==", + "dev": true + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "default-gateway": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz", + "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==", + "dev": true, + "requires": { + "execa": "^0.10.0", + "ip-regex": "^2.1.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.2.1.tgz", + "integrity": "sha512-SQVCLFS2E7G5CRCMdn6K9bIhRj1bS6QBWZfF0TUPh4V/BbqrQ619IdSS3/izn0FZ+9l+uODzaZjb08fjOfablA==", + "dev": true + }, + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "duplexify": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.83.tgz", + "integrity": "sha512-DqJoDarxq50dcHsOOlMLNoy+qQitlMNbYb6wwbE0oUw2veHdRkpNrhmngiUYKMErdJ8SJ48rpJsZTQgy5SoEAA==", + "dev": true + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "es-abstract": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", + "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "express": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.3", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.4", + "qs": "6.5.2", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.2", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "follow-redirects": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.9.tgz", + "integrity": "sha512-Bh65EZI/RU8nx0wbYF9shkFZlqLP+6WT/5FnA3cE/djNSuKNHJEinGGZgu/cQEkeeb2GdFOgenAmn8qaqYke2w==", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fractional": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fractional/-/fractional-1.0.0.tgz", + "integrity": "sha1-2rFnovn4BM+QOL3fR6qbp/IH6rw=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "global-modules-path": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.0.tgz", + "integrity": "sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==", + "dev": true + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", + "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-js": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "dev": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1" + } + } + } + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "1", + "domhandler": "2.1", + "domutils": "1.1", + "readable-stream": "1.0" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "http-parser-js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", + "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", + "dev": true + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.18.0", + "resolved": "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "dev": true, + "requires": { + "http-proxy": "^1.16.2", + "is-glob": "^4.0.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "internal-ip": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz", + "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==", + "dev": true, + "requires": { + "default-gateway": "^2.6.0", + "ipaddr.js": "^1.5.2" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "loader-runner": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz", + "integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "map-age-cleaner": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz", + "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", + "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "dev": true + }, + "mime-types": { + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "dev": true, + "requires": { + "mime-db": "~1.37.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "nan": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", + "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "dev": true + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "opn": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", + "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", + "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", + "dev": true, + "requires": { + "execa": "^0.10.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parse-asn1": { + "version": "5.1.1", + "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "portfinder": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.19.tgz", + "integrity": "sha512-23aeQKW9KgHe6citUrG3r9HjeX6vls0h713TAa+CwTKZwNIr/pD2ApaxYF4Um3ZZyq4ar+Siv3+fhoHaIwSOSw==", + "dev": true, + "requires": { + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", + "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", + "dev": true + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "http://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.2.tgz", + "integrity": "sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg==", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "~0.2", + "htmlparser2": "~3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", + "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "dev": true, + "requires": { + "node-forge": "0.7.5" + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + } + }, + "serialize-javascript": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "^2.6.8", + "handle-thing": "^1.2.5", + "http-deceiver": "^1.2.7", + "safe-buffer": "^5.0.1", + "select-hose": "^2.0.0", + "spdy-transport": "^2.0.18" + } + }, + "spdy-transport": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.1.tgz", + "integrity": "sha512-q7D8c148escoB3Z7ySCASadkegMmUZW8Wb/Q1u0/XBgDKMO880rLQDj8Twiew/tYi7ghemKUi/whSYOwE17f5Q==", + "dev": true, + "requires": { + "debug": "^2.6.8", + "detect-node": "^2.0.3", + "hpack.js": "^2.1.6", + "obuf": "^1.1.1", + "readable-stream": "^2.2.9", + "safe-buffer": "^5.0.1", + "wbuf": "^1.7.2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tapable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.0.tgz", + "integrity": "sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA==", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", + "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "uniqid": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.0.3.tgz", + "integrity": "sha512-R2qx3X/LYWSdGRaluio4dYrPXAJACTqyUjuyXHoJLBUOIfmMcnYOyY2d6Y4clZcIz5lK6ZaI0Zzmm0cPfsIqzQ==" + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", + "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", + "dev": true, + "requires": { + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", + "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webpack": { + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.25.1.tgz", + "integrity": "sha512-T0GU/3NRtO4tMfNzsvpdhUr8HnzA4LTdP2zd+e5zd6CdOH5vNKHnAlO+DvzccfhPdzqRrALOFcjYxx7K5DWmvA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/wasm-edit": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "acorn": "^5.6.2", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.1.0", + "uglifyjs-webpack-plugin": "^1.2.4", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + } + }, + "webpack-cli": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.1.2.tgz", + "integrity": "sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.0", + "global-modules-path": "^2.3.0", + "import-local": "^2.0.0", + "interpret": "^1.1.0", + "loader-utils": "^1.1.0", + "supports-color": "^5.5.0", + "v8-compile-cache": "^2.0.2", + "yargs": "^12.0.2" + } + }, + "webpack-dev-middleware": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", + "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==", + "dev": true, + "requires": { + "memory-fs": "~0.4.1", + "mime": "^2.3.1", + "range-parser": "^1.0.3", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.10.tgz", + "integrity": "sha512-RqOAVjfqZJtQcB0LmrzJ5y4Jp78lv9CK0MZ1YJDTaTmedMZ9PU9FLMQNrMCfVu8hHzaVLVOJKBlGEHMN10z+ww==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.0.0", + "compression": "^1.5.2", + "connect-history-api-fallback": "^1.3.0", + "debug": "^3.1.0", + "del": "^3.0.0", + "express": "^4.16.2", + "html-entities": "^1.2.0", + "http-proxy-middleware": "~0.18.0", + "import-local": "^2.0.0", + "internal-ip": "^3.0.1", + "ip": "^1.1.5", + "killable": "^1.0.0", + "loglevel": "^1.4.1", + "opn": "^5.1.0", + "portfinder": "^1.0.9", + "schema-utils": "^1.0.0", + "selfsigned": "^1.9.1", + "serve-index": "^1.7.2", + "sockjs": "0.3.19", + "sockjs-client": "1.3.0", + "spdy": "^3.4.1", + "strip-ansi": "^3.0.0", + "supports-color": "^5.1.0", + "webpack-dev-middleware": "3.4.0", + "webpack-log": "^2.0.0", + "yargs": "12.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } +} diff --git a/9-forkify/starter/package.json b/9-forkify/starter/package.json new file mode 100644 index 0000000000..b8e478b88a --- /dev/null +++ b/9-forkify/starter/package.json @@ -0,0 +1,28 @@ +{ + "name": "forkify", + "version": "1.0.0", + "description": "forkify project", + "main": "index.js", + "scripts": { + "dev": "webpack --mode development", + "build": "webpack --mode production", + "start": "webpack-dev-server --mode development --open" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "babel-core": "^6.26.3", + "babel-loader": "^7.1.5", + "babel-preset-env": "^1.7.0", + "html-webpack-plugin": "^3.2.0", + "webpack": "^4.25.1", + "webpack-cli": "^3.1.2", + "webpack-dev-server": "^3.1.10" + }, + "dependencies": { + "axios": "^0.18.0", + "babel-polyfill": "^6.26.0", + "fractional": "^1.0.0", + "uniqid": "^5.0.3" + } +} diff --git a/9-forkify/starter/src/.DS_Store b/9-forkify/starter/src/.DS_Store new file mode 100644 index 0000000000..30ffcb14ed Binary files /dev/null and b/9-forkify/starter/src/.DS_Store differ diff --git a/9-forkify/starter/src/index.html b/9-forkify/starter/src/index.html new file mode 100755 index 0000000000..27534440d8 --- /dev/null +++ b/9-forkify/starter/src/index.html @@ -0,0 +1,442 @@ + + + + + + + + + + + forkify // Search over 1,000,000 recipes + + + +
    +
    + + + +
    + + +
    +
      + +
    + +
    + +
    +
    + + + +
    + + +
    + + + + + +
    +

    My Shopping List

    + +
      + + +
    + + + +
    +
    + + + + + \ No newline at end of file diff --git a/9-forkify/starter/src/js/config.js b/9-forkify/starter/src/js/config.js new file mode 100644 index 0000000000..ba0d0fcc20 --- /dev/null +++ b/9-forkify/starter/src/js/config.js @@ -0,0 +1,4 @@ +// export const apiKey = '22432da2a6d7239dae83500fdf6a2655'; +// export const apiKey = '66f773c2948ad87597c628f5713a2a94'; +export const apiKey = '6bfe32f6c0ed3abd509206a63f66c661'; +export const proxy = 'https://cors-anywhere.herokuapp.com/'; \ No newline at end of file diff --git a/9-forkify/starter/src/js/index.js b/9-forkify/starter/src/js/index.js new file mode 100644 index 0000000000..e2260676b8 --- /dev/null +++ b/9-forkify/starter/src/js/index.js @@ -0,0 +1,161 @@ +import Search from './models/Search'; +import Recipe from './models/Recipe'; +import List from './models/List'; +import Likes from './models/likes'; +import * as searchView from './views/searchView'; +import * as recipeView from './views/recipeView'; +import * as listView from './views/listView'; +import * as likesView from './views/likesView'; +import { elements, renderLoader, clearLoader } from './views/base'; + +// global state of the app +// * Search object +// * current recipe object +// * shopping list object +// * linked recipes + +const controlSearch = async () => { + const query = searchView.getInput(); + + if (query) { + state.search = new Search(query); + + searchView.clearInput(); + searchView.clearResults(); + renderLoader(elements.searchRes); + + try { + await state.search.getResults(); + clearLoader(); + searchView.renderResults(state.search.result); + } catch (error) { + alert('Something went wrong'); + clearLoader(); + } + } +} + +elements.searchForm.addEventListener('submit', e => { + e.preventDefault(); + controlSearch(); +}); + +elements.searchRes.addEventListener('click', e => { + const btn = e.target.closest('.btn-inline'); + if (btn) { + const goToPage = parseInt(btn.dataset.goto, 10); + searchView.clearResults(); + searchView.renderResults(state.search.result, goToPage); + } +}); + + + +const controlRecipe = async () => { + const id = window.location.hash.replace('#', ''); + + if (id) { + recipeView.clearRecipe(); + renderLoader(elements.recipe); + + if (state.search) { + searchView.highlightSelected(id); + } + + state.recipe = new Recipe(id); + + // for testing expose recipe to global window + // window.r = state.recipe; + + + try { + await state.recipe.getRecipe(); + state.recipe.parseIngredients(); + state.recipe.calcServings(); + state.recipe.calcTime(); + + clearLoader(); + recipeView.renderRecipe(state.recipe, state.likes.isLiked(id)); + } catch (error) { + alert('Error processing recipe'); + } + } +}; + + + +['hashchange', 'load'].forEach(e => window.addEventListener(e, controlRecipe)); + + +const controlList = () => { + if (!state.list) { + state.list = new List(); + } + + state.recipe.ingredients.forEach(el => { + const item = state.list.addItem(el.count, el.unit, el.ingredient); + listView.renderItem(item); + }); +}; + +elements.shopping.addEventListener('click', e => { + const id = e.target.closest('.shopping__item').dataset.itemid; + if (e.target.matches('.shopping__delete, .shopping__delete *')) { + state.list.deleteItem(id); + listView.deleteItem(id); + } else if (e.target.matches('.shopping__count-value')) { + const val = parseFloat(e.target.value, 10); + state.list.updateCount(id, val); + } +}); + + + +const controlLike = () => { + if (!state.likes) state.likes = new Likes(); + + const currentID = state.recipe.id; + if (!state.likes.isLiked(currentID)) { + const newLike = state.likes.addLike( + currentID, + state.recipe.title, + state.recipe.author, + state.recipe.img + ); + likesView.toggleLikeBtn(true); + likesView.renderLikes(newLike); + + } else { + state.likes.deleteLike(currentID); + likesView.toggleLikeBtn(false); + likesView.deleteLike(currentID); + } + + likesView.toggleLikeMenu(state.likes.getNumLikes()); +} + +window.addEventListener('load', () => { + state.likes = new Likes(); + state.likes.readStorage(); + likesView.toggleLikeMenu(state.likes.getNumLikes()); + + state.likes.likes.forEach(like => { + likesView.renderLikes(like); + }) +}) + +elements.recipe.addEventListener('click', e => { + if (e.target.matches('.btn-decrease, .btn-decrease *')) { + if (state.recipe.servings > 1) { + state.recipe.updateServings('dec'); + recipeView.updateServingsIngredients(state.recipe); + } + } else if (e.target.matches('.btn-increase, .btn-increase *')) { + state.recipe.updateServings('inc'); + recipeView.updateServingsIngredients(state.recipe); + } else if (e.target.matches('.recipe__btn--add, .recipe__btn--add *')) { + controlList(); + } else if (e.target.matches('.recipe__love, .recipe__love *')) { + controlLike(); + }; +}); diff --git a/9-forkify/starter/src/js/models/Likes.js b/9-forkify/starter/src/js/models/Likes.js new file mode 100644 index 0000000000..53a8420700 --- /dev/null +++ b/9-forkify/starter/src/js/models/Likes.js @@ -0,0 +1,41 @@ +export default class Likes { + constructor() { + this.likes = []; + } + + addLike(id, title, author, img) { + const like = { id, title, author, img }; + this.likes.push(like); + + this.persistData() + + return like; + } + + deleteLike(id) { + const index = this.likes.findIndex(el => el.id === id); + this.likes.splice(index, 1); + + this.persistData() + } + + isLiked(id) { + // return this.likes.includes(id); + return this.likes.findIndex(el => el.id === id) !== -1; + } + + getNumLikes() { + return this.likes.length; + } + + persistData() { + localStorage.setItem('likes', JSON.stringify(this.likes)); + } + + readStorage() { + const storage = JSON.parse(localStorage.getItem('likes')); + if (storage) { + this.likes = storage; + } + } +} \ No newline at end of file diff --git a/9-forkify/starter/src/js/models/List.js b/9-forkify/starter/src/js/models/List.js new file mode 100644 index 0000000000..59d9004faa --- /dev/null +++ b/9-forkify/starter/src/js/models/List.js @@ -0,0 +1,28 @@ +import uniqid from 'uniqid'; + +export default class List { + constructor() { + this.items = []; + } + + addItem(count, unit, ingredient) { + const item = { + id: uniqid(), + count, + unit, + ingredient + } + + this.items.push(item); + return item; + } + + deleteItem(id) { + const index = this.items.findIndex(el => el.id === id); + this.items.splice(index, 1); + } + + updateCount(id, newCount) { + this.items.find(el => el.id === id).count = newCount; + } +} \ No newline at end of file diff --git a/9-forkify/starter/src/js/models/Recipe.js b/9-forkify/starter/src/js/models/Recipe.js new file mode 100644 index 0000000000..0c5aef9e1a --- /dev/null +++ b/9-forkify/starter/src/js/models/Recipe.js @@ -0,0 +1,92 @@ +import axios from 'axios'; +import { apiKey, proxy } from '../config'; + +export default class Recipe { + constructor(id) { + this.id = id; + } + + async getRecipe() { + try { + const res = await axios(`${proxy}https://www.food2fork.com/api/get?key=${apiKey}&rId=${this.id}`); + this.title = res.data.recipe.title; + this.author = res.data.recipe.publisher; + this.img = res.data.recipe.image_url; + this.url = res.data.recipe.source_url; + this.ingredients = res.data.recipe.ingredients; + } catch(error) { + // alert(error); + console.log(error); + } + } + + calcTime() { + const numIngredients = this.ingredients.length; + const periods = Math.ceil(numIngredients / 3); + this.time = periods * 15; + } + + calcServings() { + this.servings = 4; + } + + parseIngredients() { + const unitsLong = ['tablespoons', 'tablespoon', 'ounces', 'ounce', 'teaspoons', 'teaspoon', 'cups', 'pounds']; + const unitsShort = ['tbsp', 'tbsp', 'oz', 'oz', 'tsp', 'tsp', 'cup', 'pound']; + const units = [...unitsShort, 'kg', 'g']; + + const newIngredients = this.ingredients.map(el => { + let ingredient = el.toLowerCase(); + unitsLong.forEach((unit, i) => { + ingredient = ingredient.replace(unit, unitsShort[i]); + }); + ingredient = ingredient.replace(/ *\([^]*\) */g, ' '); + + const arrIngredient = ingredient.split(' '); + const unitIndex = arrIngredient.findIndex(elem => units.includes(elem)); + + let objIngredient = { + count: 1, + unit: '', + ingredient + }; + + if (unitIndex > -1) { + const arrCount = arrIngredient.slice(0, unitIndex); + let count; + if (arrCount.length === 1) { + count = eval(arrIngredient[0].replace('-', '+')); + } else { + count = eval(arrIngredient.slice(0, unitIndex).join('+')); + } + return objIngredient = { + count, + unit: arrIngredient[unitIndex], + ingredient: arrIngredient.slice(unitIndex + 1).join(' ') + } + } else if (unitIndex === -1) { + // + } else if (parseInt(arrIngredient[0], 10)) { + objIngredient = { + count: parseInt(arrIngredient[0], 10), + unit: '', + ingredient: arrIngredient.slice(1).join(' ') + } + return objIngredient + } + + return ingredient; + }); + this.ingredients = newIngredients; + } + + updateServings (type) { + const newServings = type === 'dec' ? this.servings - 1 : this.servings + 1; + + this.ingredients.forEach(ing => { + ing.count *= (newServings / this.servings); + }); + + this.servings = newServings; + } +} diff --git a/9-forkify/starter/src/js/models/Search.js b/9-forkify/starter/src/js/models/Search.js new file mode 100644 index 0000000000..dc8c071de4 --- /dev/null +++ b/9-forkify/starter/src/js/models/Search.js @@ -0,0 +1,18 @@ +import axios from 'axios'; +import { apiKey, proxy } from '../config'; + +export default class Search { + constructor(query) { + this.query = query; + } + + async getResults(query) { + try { + const result = await axios(`https://www.food2fork.com/api/search?key=${apiKey}&q=${this.query}`); + this.result = result.data.recipes; + + } catch(error) { + alert(error); + } + } +} diff --git a/9-forkify/starter/src/js/test.js b/9-forkify/starter/src/js/test.js new file mode 100644 index 0000000000..a188bd6c3d --- /dev/null +++ b/9-forkify/starter/src/js/test.js @@ -0,0 +1,2 @@ +console.log('Imported module'); +export default 20; \ No newline at end of file diff --git a/9-forkify/starter/src/js/views/base.js b/9-forkify/starter/src/js/views/base.js new file mode 100644 index 0000000000..c3dd6bfd4b --- /dev/null +++ b/9-forkify/starter/src/js/views/base.js @@ -0,0 +1,33 @@ +export const elements = { + searchInput: document.querySelector('.search__field'), + searchForm: document.querySelector('.search'), + searchResList: document.querySelector('.results__list'), + searchRes: document.querySelector('.results'), + searchResPages: document.querySelector('.results__pages'), + recipe: document.querySelector('.recipe'), + shopping: document.querySelector('.shopping__list'), + likesMenu: document.querySelector('.likes__field'), + likesList: document.querySelector('.likes__list') +}; + +export const elementStrings = { + loader: 'loader' +} + +export const renderLoader = parent => { + const loader = ` +
    + + + +
    + `; + parent.insertAdjacentHTML('afterbegin', loader); +}; + +export const clearLoader = () => { + const loader = document.querySelector(`.${elementStrings.loader}`); + if (loader) { + loader.parentElement.removeChild(loader); + } +} \ No newline at end of file diff --git a/9-forkify/starter/src/js/views/likesView.js b/9-forkify/starter/src/js/views/likesView.js new file mode 100644 index 0000000000..bd2011f737 --- /dev/null +++ b/9-forkify/starter/src/js/views/likesView.js @@ -0,0 +1,35 @@ +import { elements } from './base'; +import { limitRecipeTitle } from './searchView'; + +export const toggleLikeBtn = isLiked => { + const iconString = isLiked ? 'icon-heart' : 'icon-heart-outlined'; + document.querySelector('.recipe__love use').setAttribute('href', `img/icons.svg#${iconString}`); +}; + +export const toggleLikeMenu = numLikes => { + elements.likesMenu.style.visibility = numLikes > 0 ? 'visible' : 'hidden'; +}; + +export const renderLikes = like => { + const markup = ` +
  • + +
  • + `; + + elements.likesList.insertAdjacentHTML('beforeend', markup); +}; + +export const deleteLike = id => { + const el = document.querySelector(`.likes__link[href*="${id}"]`).parentElement; + if (el) el.parentElement.removeChild(el); + +} \ No newline at end of file diff --git a/9-forkify/starter/src/js/views/listView.js b/9-forkify/starter/src/js/views/listView.js new file mode 100644 index 0000000000..d161c565fc --- /dev/null +++ b/9-forkify/starter/src/js/views/listView.js @@ -0,0 +1,26 @@ +import { elements } from './base'; + +export const renderItem = item => { + const markup = ` +
  • +
    + +

    ${item.unit}

    +
    +

    ${item.ingredient}

    + +
  • + `; + elements.shopping.insertAdjacentHTML('beforeend', markup); +} + +export const deleteItem = id => { + const item = document.querySelector(`[data-itemid="${id}"]`); + if (item) { + item.parentElement.removeChild(item); + } +} \ No newline at end of file diff --git a/9-forkify/starter/src/js/views/recipeView.js b/9-forkify/starter/src/js/views/recipeView.js new file mode 100644 index 0000000000..4f860d9511 --- /dev/null +++ b/9-forkify/starter/src/js/views/recipeView.js @@ -0,0 +1,122 @@ +import { elements } from "./base"; +import { Fraction } from 'fractional'; + +export const clearRecipe = () => { + elements.recipe.innerHTML = ''; +} + +const formatCount = count => { + if (count) { + const newCount = Math.round(count * 10000) / 10000; + // just use modulus? + const [int, dec] = newCount.toString().split('.').map(el => parseInt(el, 10)); + if (!dec) return newCount; + if (int === 0) { + const fr = new Fraction(newCount); + return `${fr.numerator}/${fr.denominator}`; + } else { + const fr = new Fraction(newCount - int); + return `${int} ${fr.numerator}/${fr.denominator}` + } + } + return '?'; +} + +const createIngredient = ingredient => ` +
  • + + + +
    ${formatCount(ingredient.count)}
    +
    + ${ingredient.unit} + ${ingredient.ingredient} +
    +
  • +`; + +export const renderRecipe = (recipe, isLiked) => { + const markup = ` +
    + ${recipe.title} +

    + ${recipe.title} +

    +
    +
    +
    + + + + ${recipe.time} + minutes +
    +
    + + + + ${recipe.servings} + servings + +
    + + +
    + +
    + +
    + + + +
    +
      + ${recipe.ingredients.map(el => createIngredient(el)).join('')} + +
    + + +
    + +
    +

    How to cook it

    +

    + This recipe was carefully designed and tested by + ${recipe.author}. Please check out directions at their website. +

    + + Directions + + + + + +
    + `; + elements.recipe.insertAdjacentHTML('afterbegin', markup); +} + +export const updateServingsIngredients = recipe => { + document.querySelector('.recipe__info-data--people').textContent = recipe.servings; + const countElements = Array.from(document.querySelectorAll('.recipe__count')); + countElements.forEach((el, i) => { + el.textContent = formatCount(recipe.ingredients[i].count); + }); +}; \ No newline at end of file diff --git a/9-forkify/starter/src/js/views/searchView.js b/9-forkify/starter/src/js/views/searchView.js new file mode 100644 index 0000000000..169a2cc148 --- /dev/null +++ b/9-forkify/starter/src/js/views/searchView.js @@ -0,0 +1,84 @@ +import { elements } from './base'; + +export const getInput = () => elements.searchInput.value; + +export const clearInput = () => { + elements.searchInput.value = ''; +}; + +export const clearResults = () => { + elements.searchResList.innerHTML = ''; + elements.searchResPages.innerHTML = ''; +}; + +export const highlightSelected = (id) => { + const resultsArr = Array.from(document.querySelectorAll('.results__link')); + resultsArr.forEach(el => { + el.classList.remove('results__link--active'); + }); + document.querySelector(`.results__link[href*="${id}"]`).classList.add('results__link--active'); +} + +export const limitRecipeTitle = (title, limit = 17) => { + const newTitle = []; + if (title.length > limit) { + title.split(' ').reduce((acc, cur) => { + if (acc + cur.length <= limit) { + newTitle.push(cur); + } + return acc + cur.length; + }, 0); + return `${newTitle.join(' ')} ...`; + } + return title; +}; + +const renderRecipe = recipe => { + const markup = ` +
  • + +
    + Test +
    +
    +

    ${limitRecipeTitle(recipe.title)}

    +

    ${recipe.publisher}

    +
    +
    +
  • + `; + elements.searchResList.insertAdjacentHTML('beforeend', markup); +}; + +const createButton = (page, type) => ` + +`; + +const renderButtons = (page, numRes, resPerPage) => { + const pages = Math.ceil(numRes / resPerPage); + let btn; + if (page === 1 && pages > 1) { + btn = createButton(page, 'next'); + } else if (page === pages && pages > 1) { + btn = createButton(page, 'prev'); + } else if (page < pages) { + btn = ` + ${createButton(page, 'prev')} + ${createButton(page, 'next')} + ` + } + + elements.searchResPages.insertAdjacentHTML('afterbegin', btn); +}; + +export const renderResults = (recipes, page = 1, resPerPage = 10) => { + const start = (page - 1) * resPerPage; + const end = page * resPerPage; + recipes.slice(start, end).forEach(renderRecipe); + renderButtons(page, recipes.length, resPerPage); +}; \ No newline at end of file diff --git a/9-forkify/starter/webpack.config.js b/9-forkify/starter/webpack.config.js new file mode 100644 index 0000000000..3faf3d275b --- /dev/null +++ b/9-forkify/starter/webpack.config.js @@ -0,0 +1,30 @@ +const path = require('path'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); + +module.exports = { + entry: ['babel-polyfill', './src/js/index.js'], + output: { + path: path.resolve(__dirname, 'dist'), + filename: 'js/bundle.js' + }, + devServer: { + contentBase: './dist' + }, + plugins: [ + new HtmlWebpackPlugin({ + filename: 'index.html', + template: './src/index.html' + }) + ], + module: { + rules: [ + { + test: /\.js$/, + exclude: /node_modules/, + use: { + loader: 'babel-loader' + } + } + ] + } +}; \ No newline at end of file diff --git a/README.md b/README.md index fca076d690..2df146051d 100644 --- a/README.md +++ b/README.md @@ -1,73 +1,49 @@ # Course Material and FAQ for my Complete JavaScript Course -This branch of the repo contains starter files and final code for all sections and projects of the course, **exactly as shown in the videos**. +This repo contains starter files and the finished project files for all the projects contained in the course. -Use starter code to start each section, and **final code to compare it with your own code whenever something doesn't work**! +Plus, I made all the course slides available for download, to make it easier to follow along the conceptual videos. -There is also a the [updates-and-fixes](https://github.com/jonasschmedtmann/complete-javascript-course/tree/updates-and-fixes) branch which is kept up-to-date with **latest package updates and important bugfixes 🐛** - -🚨 **_Please read the following Frequently Asked Questions (FAQ) carefully before starting the course_** 🚨 +👇 ***Please read the following Frequently Asked Questions (FAQ) carefully before starting the course*** 👇 ## FAQ ### Q1: How do I download the files? -**A:** If you're new to GitHub and just want to download the entire code, hit the green button saying "Code", and then choose the "Download ZIP" option. If you can't see the button (on mobile), use [this link](https://github.com/jonasschmedtmann/complete-javascript-course/archive/master.zip) instead. - -### Q2: I'm stuck! Where do I get help? - -**A:** Have you actually tried to fix the problem on your own? **Have you compared your code to the final code?** If you failed fixing your problem, please **post a detailed description of the problem to the Q&A area of that video over at Udemy**, along with a [codepen](https://codepen.io/pen/) containing your code. You will get help there. Please don't send me a personal message or email to fix coding problems. - -### Q3: What VSCode theme are you using? - -**A:** I use Monokai Pro for all my coding and course production. It's a paid theme (I', **not** affiliated with them), but you can actually use the free demo version forever 😅 - -### Q4: Can I see a final version of the course projects? +**A:** If you're new to GitHub and just want to download the complete package, hit the green button saying "Clone or download", choose the "Download ZIP" option, and you're good to go. -**A:** Sure! Here you go: +### Q2: I'm stuck in one of the projects. Where do I get help? -- [Pig Game](https://pig-game-v2.netlify.app) (DOM Manipulation) -- [Bankist](https://bankist.netlify.app/) (Arrays, Numbers, Dates, Timers. Fake "log in" with user `js` and PIN `1111`) -- [Bankist Site](https://bankist-dom.netlify.app/) (Advanced DOM and Events) -- [Mapty](https://mapty.netlify.app/) (OOP, Geolocation, Project planning) -- [forkify](https://forkify-v2.jonas.io/) (Final advanced project) +**A:** Have you extensively tried fixing the problem on your own? If you failed at fixing it, please **post a detailled description of the problem to the Q&A area of that video over at Udemy**, along with a [codepen](https://codepen.io/pen/) containing your code. You will get help as fast as possible! Please don't send me a personal message or email to fix coding problems. -### Q5: Videos don't load, can you fix it? +### Q3: You keep mentioning your resources page. Where can I find it? -**A:** Unfortunately, there is nothing I can do about it. The course is hosted on Udemy, and sometimes they have technical issues like this. Please just come back a bit later or [contact their support team](https://support.udemy.com/hc/en-us). - -### Q6: Videos are blurred / have low quality, can you fix it? - -**A:** Please open video settings and change the quality from 'Auto' to another value, for example 720p. If that doesn't help, please [contact the Udemy support team](https://support.udemy.com/hc/en-us). - -### Q7: Are the videos downloadable? - -**A:** Videos used to be downloadable, but unfortunately, Udemy has disabled video downloads on all my courses in order to fight piracy. There is nothing I can do about this. +**A:** It's on my website at . You can subscribe for updates 😉 -### Q8: I want to put these projects in my portfolio. Is that allowed? +### Q4: What Brackets and VSCode themes are you using? -**A:** Absolutely! Just make sure you actually built them yourself by following the course, and that you understand what you did. What is **not allowed** is that you create your own course/videos/articles based on this course's content! +**A:** I use the theme "OS X Style | Flat & Dark" in Brackets and "Oceanic Next (dimmed bg)" in VSCode. [Here is the complete setup](editors-setup.md). -### Q9: You mentioned your resources page. Where can I find it? +### Q5: can I see a final version of the course projects? -**A:** It's on my website at . You can subscribe for updates 😉 +**A:** Sure, I have an online version of all three. Here they are: [Pig Game](https://piggame2.netlify.com/) (DOM manipulation), [Budgety](http://budgety2.netlify.com/) (advanced JavaScript) and [Forkify](https://forkify.netlify.com/) (modern JavaScript and AJAX). -### Q10: I love your courses and want to get updates on new courses. How? +### Q6: The videos don't load, can you fix it? -**A:** First, you can subscribe to my email list [at my website](http://codingheroes.io/resources). Plus, I make important announcements on twitter [@jonasschmedtman](https://twitter.com/jonasschmedtman), so you should definitely follow me there 🔥 +**A:** Unfortunately, there is nothing I can do about it. The course is hosted on Udemy's platform, and sometimes they have small technical issues like this one. Please just come back a bit later or [contact their support team](https://support.udemy.com/hc/en-us). Also, don't forget to select the HD option in the video player. -### Q11: How do I get my certificate of completion? +### Q7: Are the videos downloadable as well? -**A:** A certificate of completion is provided by Udemy after you complete 100% of the course. After completing the course, just click on the "Your progress" indicator in the top right-hand corner of the course page. If you want to change your name on the certificate, please [contact the Udemy support team](https://support.udemy.com/hc/en-us). +**A:** Yes, I made all videos downloadable on the Udemy platform so you can learn even without an internet connection. To download a video, use the settings icon in the right bottom corner of the video player. -### Q12: Can you add subtitles in my language? +### Q8: I love your courses and want to get updates on new courses. How? -**A:** No. I provide professional English captions, but Udemy is responsible for subtitles in all other languages (automatic translations). So please [contact the Udemy support team](https://support.udemy.com/hc/en-us) to request your own language. +**A:** First, you can subscribe to my email list [at my website](http://codingheroes.io/newsletter). Plus, I make important announcements on twitter [@jonasschmedtman](https://twitter.com/jonasschmedtman), so you should definitely follow me there 🔥 -### Q13: Do you accept pull requests? +### Q9: Can I connect with your other students in some way? -**A:** No, for the simple reason that I want this repository to contain the _exact_ same code that is shown in the videos. _However, please feel free to add an issue if you found one._ +**A:** Yep, I thought about this! I started quite an active Discord chatroom for you to chat with other students, help each other out or just hang out with like-minded people. You can [join using this invite](https://discord.gg/0ocsLcmnIZqxMSYD). -### Q14: I'm looking for the old course version (v1) files. Where can I find them? +### Q10: How do I get my certificate of completion? -**A:** They are in this same repo, but in the [v1 branch](https://github.com/jonasschmedtmann/complete-javascript-course/tree/v1). So just go to [v1](https://github.com/jonasschmedtmann/complete-javascript-course/tree/v1), and download the code from there. +**A:** A certificate of completion is provided by Udemy after you complete 100% of the course. After completing the course, just click on the small trophy icon on the course overview page. If you want to change your name on the certificate, please [contact the Udemy support team](https://support.udemy.com/hc/en-us). \ No newline at end of file diff --git a/budgety-planning-guide.pdf b/budgety-planning-guide.pdf new file mode 100644 index 0000000000..199fc9db5f Binary files /dev/null and b/budgety-planning-guide.pdf differ diff --git a/editors-setup.md b/editors-setup.md new file mode 100644 index 0000000000..4dc0f90a45 --- /dev/null +++ b/editors-setup.md @@ -0,0 +1,63 @@ +# Code editor setup used in the course + +## Brackets (First part of the course) + +### Theme + +I use the `OS X Style | Flat & Dark` Brackets theme throughout most of the course. + +### Extensions used in course videos + +`Autosave Files on Window Blur` to automatically save files when leaving the Brackets app. + +`Brackets Icons` to display colorful filetype icons in the filetree. + + +## VSCode (Second part of the course) + +### Theme + +I use the `Oceanic Next` theme with the dimmed bg option. [Link →](https://marketplace.visualstudio.com/items?itemName=naumovs.theme-oceanicnext) + +### Extensions used in course videos + +For each of the extensions, read the overview page in order to learn how to use it. + +`Auto Close Tag` to automatically close HTML tags. [Link →](https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-close-tag) + +`Auto Rename Tag` to automatically change matching HTML tags. [Link →](https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag) + +`Color Highlight` to, as the name says, highlight colors in CSS. [Link →](https://marketplace.visualstudio.com/items?itemName=naumovs.color-highlight) + +`Paste and Indent` to automatically indent pasted code. [Link →](https://marketplace.visualstudio.com/items?itemName=Rubymaniac.vscode-paste-and-indent) + +`Path Intellisense` to autocomplete filenames. [Link →](https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense) + +`Prettier` to automatically format code. [Link →](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) + +### Settings + +If you want your editor to work and look exactly the same way as mine does in the course videos, you can copy these settings to your own settings file. Just go to settings in VSCode, and on the right side, you can paste this code. + +``` +{ + "workbench.colorTheme": "Oceanic Next (dimmed bg)", + "files.autoSave": "onFocusChange", + "editor.minimap.enabled": true, + "workbench.statusBar.visible": true, + "workbench.activityBar.visible": true, + "editor.formatOnSave": false, + + "workbench.colorCustomizations": { + "statusBar.background": "#333333", + "statusBar.noFolderBackground": "#333333", + "statusBar.debuggingBackground": "#263238" + }, + "editor.fontSize": 16, + + "css.validate": false, + "scss.validate": false, + "less.validate": false, + "editor.wordWrap": "on" +} +``` \ No newline at end of file diff --git a/slides-students-C03.pdf b/slides-students-C03.pdf new file mode 100644 index 0000000000..49f168295f Binary files /dev/null and b/slides-students-C03.pdf differ